Indigo and Star Trek

Whenever I’m coming to grips with a new body of knowledge, I usually try to find a defining analogy to help me frame that new knowledge in terms of stuff I already understand. When I was taking AP chemistry in high school, I explained energy flow in and out of chemical reactions in terms of the behavior of little imaginary “heat people”. Analogies are really helpful when understanding new things, because they tend to cement knowledge in your head (to this day, I still remember the difference between exothermic and endothermic reactions – in exothermic reactions, the heat people run away…).

Anyway, I think I’ve settled on my Indigo analogy: it’s all about Star Trek. I arrived at this conclusion when I was debating the role of Channels in the Indigo architecture with some coworkers. Whenever I hear the word “channel” in the context of Indigo, I think of Kirk, Uhura, and Romulans. In Star Trek, whenever Kirk wanted to talk to somebody, he’d say something like “Quick! Uhura, open up a channel to the Romulans!” and up would pop the Romulan commander on the view screen. The two captains would have some sort of meaningful conversation, and then the channel would be closed. All the underlying complexities involved in moving messages across that channel (negotiating subspace frequencies and marshalling the content through the Universal Translator) was totally abstracted and transparent to Kirk. He asked for a channel to talk to the Romulans, and Uhura gave him one. The management of that channel was Uhura’s responsibility – Kirk’s job was to talk to the Romulans. So Indigo is sort of like a .NET implementation of Lt. Uhura…

Star Trek characters could use communication channels to support a variety of messaging patterns, transport mechanisms, and wire formats. The view screen example is a Dialog channel in Indigo-speak. Hailing frequencies are sort of a request-response channel. Some times, Kirk would put the view screen on “mute” so he could confer privately with his officers, creating a Receive channel. Each one of these channels was transport and wire-format agnostic (if you think of the native language of the Romulans as the wire format, then the Universal Translator plays the same role as the Serialization framework). Most of the time, communications used subspace radio as a transport, but they might use other mechanisms. For example, in ST:TNG, characters could ask the computer for a channel to somebody elsewhere on the Enterprise – using the Star Trek equivalent of the In-proc transport.

In the context of Star Trek, the Romulans are like a Port. They’re this message destination floating out in literal space, whereas an Indigo port is a message destination somewhere in network space. Even though a hailing channel might be used to support a different conversation mode than a view screen channel, they still use the same fundamental transport mechanism and wire format. The hailing frequencies still operate via subspace and go through the English-to-Romulan component of the Universal Translator, even though they enable a different conversational pattern than the view screen. Similarly, in Indigo, transports and wire formats are bound to Ports, while the channel determines the messaging pattern.

The analogy to Messages is pretty obvious: it’s the verbal exchange of information between Kirk and his Romulan counterpart. Something like “honestly, we didn’t mean to park in the Neutral Zone. Our bad.” In Indigo, messages are the semantic content exchanged between two services. ‘Nuff said.

From that, I think it follows that the Star Trek analogy to a Service is the Romulan commander himself. He’s the guy who actually receives the messages sent to the Romulan space ship and acts upon them. He is exposed to the outside world via a Port, and receives messages via a Channel.  Based upon the contents of the messages exchanged, he decides whether or not to blow the Enterprise to smithereens. In Indigo, Services are exposed via Ports, communicate via Channels, and take action based upon the messages they receive.

The funny thing is, now that I’ve mapped Indigo into the Star Trek domain, I’ll have a hard time disassociating the two ideas until the analogy decays to the point where it’s totally unworkable. Even as I learn more things about Indigo that will inevitably illustrate weaknesses in the original analogy, I will probably still use Star Trek as a point of contrast. I guess that means that whenever I think about Indigo from now on, I’ll have this mental image of Nichelle Nichols with that crazy silver thing sticking out of her ear floating around in the back of my head…