The other day I took the Amtrak Hiawatha into Chicago. I really love taking the train, because I don’t have to fight traffic, find a parking space, it gets me there at a predictable time (usually) and it allows me an hour and 15 minutes to get some work done on my laptop. Plus I think that train travel is kind of cool. They give the train routes cool names like the Hiawatha, Empire Builder and the City of New Orleans. It gives a little romance to train travel that has been beaten out of air travel.
One of the interesting things about the Hiawatha is that when you are in Wisconsin you are riding on the rails that belong to the Canadian Pacific Railway. I know this because on occasion you get behind a slow moving freight train, which will add a few minutes on to the trip. Once you get into the Chicago area, you switch from the CPR rails to rails that belong to Metra, the commuter train company that services the Chicago area. Most days you never notice the transition between the two rail systems, even though they are 2 completely separate entities. We take for granted the interoperability of railroads; but they were not always as interoperable as they are today, the issues were worked out long ago, but it took quite a bit of time.
The early days – a standard per company
Rail cars run on a gauge which is the width of the rails and also dictate the width of the cars that run on them. There are various reasons to have different size gauges – wider gauges allow for faster travel, smaller gauges are cheaper to construct and allow for sharper cornering. In the early days of rail travel in the United States, the individual railroad would decide on the gauge that they would use. This meant that the rail cars and the tracks were specific to the company. Did I mention that there were dozens of rail companies in the United States?
You can see the problems that this would create; rail cars where not interchangeable as an example. The real issues came when you reach a point where the gauge changed (called a Break of Gauge). There are a couple of solutions to this, one actually involves rails cars that can have their gauge changed (a time consuming operation) and another involves tracks that are dual gauged (a more expensive option). In the early days of train travel the solution was usually to unload the passengers or cargo and reload them onto a different train.
Over time the individual companies in the United States came to the conclusion that they should come to a consensus on one standard gauge. Which gauge was picked was spurred along by decision that the transcontinental railroad would use the standard gauge (4 feet, 8.5 inches). This same process was repeated in most countries. It is interesting to note that even today there is not a worldwide standard of track gauge.
Once the track gauges where standardized the next big interoperability leap forward was standardize on the stations in a town. Originally each rail line had their own stations where they stopped. For towns that were only served by one train this was not a big deal. For larger towns, it became a nightmare, especially for passengers that had to make their way from one station to another. The individual stations were replaced by the concept of a “Union Station“. A single facility that would serve more than one rail company. The first Union Station was in Indianapolis, IN, but the concept spread all over the United States (Did you ever wonder why do so many cities have a Union Station).
How important was interoperability?
I had a great, great, great grandfather, Theapolis Smith Hickman, who fought with the 33rd Tennessee Infantry (Confederate) at the Battle of Shiloh. Shiloh (also known as the Battle of Pittsburg Landing) was one of the bloodiest battles of the Civil War and was very decisive in deciding the outcome of the war. It also propelled Ulysses S. Grant to prominence and eventually into the presidency of the United States. What is barely mentioned as a footnote is the reason that they battle was fought at all. Grant had ordered his generals to seize the Memphis & Charleston Railroad, which was of strategic importance to the South. The Memphis and Charleston line was the only east to west line across the confederate states, which made it important just by itself. However at Shiloh was the intersection with a north to south line that was the same gauge as the east to west line, increasing the importance and hence the battle for an area that was otherwise unremarkable.
Interoperability in software
I hope you see the obvious parallels between the railroad industry and what we go through in adopting a standard in the software industry. Some or the parallels that I see are:
- Early on individual companies adopt a standard, often times these are in conflict, each standard has its own merits (usually), they are just different
- We often build hokey solutions to get the standards to work together (dual gauge like technologies – JNI Bridges come to mind)
- Sometimes it can take outside intervention to spur a standard on (Government intervention like in the transcontinental railroad)
- Over time the inefficiency starts to wear on everyone. Eventually a single standard emerges.
- Conflicts over standards can be unnecessarily bloody (the battle of Shiloh) 🙂