Travelling through hyperspace

(yes, this does have to do with web services)

“Travelling through hyperspace ain’t like dusting crops, boy…without precise calculations you could fly right through a star or bounce too close to a supernova, and that would end your trip real quick, wouldn’t it?”
  – Han Solo, Captain, Millenium Falcon

I was folding my laundry the other day, and had the audio commentary for Episode IV on in the background (I get bored with radio, and don’t have cable at the moment). I like audio commentaries because every so often you learn something you didn’t know before.

True Star Wars geeks will know recognize the Millenium Falcon as “the ship that made the Kessel Run in less than 12 parsecs.” I never really understood this line, because a parsec is a measure of distance, not of time. It’s never really explained, but the Kessel Run sure sounds like some sort of race and as such the terms “parsec” seemed out of place. I always wrote this off to George Lucas munging his technical jargon and didn’t think much of it until I actually listened to the Episode IV commentary track where he talks about this a little bit.

It turns out that (at least in Star Wars), getting from Point A to Point B in the shortest possible amount of time is rarely what you really want to do. Sure, it’s really easy to just plot a straight-line course and jump to lightspeed. But if you do that, you’ll more often than not incur some sort of intergalactic trauma along the way and end up at your destination in a bajillion pieces. So the real trick is to minimize the distance you have to travel while steering around all the obstacles that sit between where you are and where you’re trying to go. Doing this in a really efficient way requires a very good navacomputer to do all those “precise calculations” that prevent you from being pulverized. Thus, Han Solo’s boast about being able to make the Kessel Run in less than 12 parsecs was more of a statement about the capabilities of his navacomputer than the size of his engines. I found this to be a very interesting rationalization explanation.

Of course, as I am wont to do, I found myself thinking about the implicit tradeoffs involved here and started drawing analogies to software and distributed systems development. There’s an open question: should building distributed systems be more like dusting crops or more like travelling through hyperspace?

Some people believe that the role of tools in XML messaging stacks is to make the whole experience a lot like dusting crops – that is, the tools should hide the underlying XML artifacts from the end user to such a degree that developers can be happily productive without knowing that things like WSDL, XSD, and angle brackets even exist. This seems like it would be a great thing for developers; They don’t have to learn about these unfamiliar technologies because the tools hide them completely. It lets them get from Point A (the problem) to Point B (the solution) as quickly as possible – which may or may not be optimizing for the right thing. 

Other people think that web services development should be like flying through hyperspace. They know that there are obstacles lying out there in the vast space between connected systems and that simply taking the shortest path from problem to solution might lead you smack into an interoperability supernova. They know that to avoid these obstacles, they need to do some precise calculations – which for them often means hand-writing WSDL docs and getting up close and personal with message schemas in XSD. It’s an approach that gets you there safely, but it’s not going to get you to Kessel in less than 12 parsecs if you catch my drift.

I don’t think you can get around the fact that building distributed systems is frankly a lot closer to travelling through hyperspace than dusting crops. By its very nature, it’s a complex problem domain. Making those complexities go away entirely is pretty much an impossibility1. I don’t think you can be an effective web service developer without a basic understanding of the what’s and why’s of WSDL, XSD, and SOAP. These concepts are important and contribute to an overall understanding of how the system works – if these concepts aren’t in your mental model of web services, then I think there’s an issue. However, I don’t think that developers should be forced to concentrate on the how’s of these technologies. Being able to hand-author WSDL documents should not be a requirement for building interoperable services. Being able to look at an XSD schema and tell if it violates UPA shouldn’t be a value-added skill for service developers (the world already has a human schema validator, and he’s doing quite well).

I want web services development to be like travelling through hyperspace on the Millenium Falcon. You still need someone to fly the ship, but that job is made a heck of a lot easier by the bad-ass navacomputer sitting in the back of the cockpit. On the Microsoft platform at least, that navacomputer is Indigo. I don’t think the goal of Indigo is to allow you to remain blissfully unaware of the existence of the underlying XML technologies. Rather, I think the goal is to dramatically reduce the level of concrete understanding you need to have about these things in order to be a productive user of the platform. WSDL, XSD, and SOAP are facts of life in the web services world, and you have to understand those things on some (hopefully high) level to be a successful services developer. However, acknowledging their existence is very different than knowing their inner workings. That’s where a toolset like Indigo can add a lot of value and remove a lot of complexity. Developers should focus on the what’s and why’s, and leave the how’s to the tools.

Update: William's got some good background as to the origins of this rather sideways metaphor here. It all stemmed from IM convo I had with him where he made the statement that "companies just want to get from Point A to Point B as quickly as possible", to which I retorted "well, travelling through hyperspace ain't like dusting crops, boy...". After a couple of additional conversations with TShak on the way to and from our friend Mike's place on the hood canal, this is what resulted...

1 "Life is pain, your highness...anyone who tells you differently is selling something."
      – The Dread Pirate Roberts
#1 William T on 5.22.2005 at 3:39 AM

Heh ~http://www.softwaremaker.net/blog/PermaLink,guid,7e031d74-8336-4077-9a63-575b92dae704.aspx

#2 Chui Tey on 6.07.2005 at 6:52 PM

Jumping through hyperspace is not the first thing people do when people leave their safe shores. They look around, do short trips, chart meticulously, talk to the natives. Trying to design a navacomputer before the space is charted is courting disaster.I believe a closer analogy wrt interoperability is learning to talk with people from another country. Some might have a different concept of time, currencies, or even no concept of time at all. You'd also have different ideas about precision, units of measurement. It is a collision of cultures. No amount of WSDL is going to help the programmer or business analyst navigate the different semantics. Creating a legal contract between parties is not the solution here, unless you are a lawyer. In the interoperability world, where new peoples are meeting, it's more important to define ways were parties can attempt to communicate, or probe each other's services politely. On top of it, provide infrastructure for error recovery... with this, I mean the services definition should include a real person whom the other organisation could talk to, when things fall over.Instead of XSD, web services definition should be more like monkey-see-monkey-do. More concrete examples, and less abstract definitions. After all, deriving a concrete example from the abstract definition is a sure-fire way of finding implementation bugs. Here is an example:Books -> 1 .. * BookThe services old accounting system might choke if you tried ordering 100,000 books. Hence..Books -> 1 .. 50 BookCode has been verified to work under that range of numbers.

#3 ivy on 6.11.2005 at 12:39 PM

In the interoperability world, where new peoples are meeting, it's more important to define ways were parties can attempt to communicate, or probe each other's services politely. On top of it, provide infrastructure for error recovery... with this, I mean the services definition should include a real person whom the other organisation could talk to, when things fall over.

#4 sfw on 6.11.2005 at 8:59 PM

www.chinasmsdownload.comhttp/.../www.caishowdown http://www.shoujisms78.com http://www.smsxiaba.com http://www.chinashoujisms.com http://www.smschina.org http://www.xiazaisms8.org http://www.downsmsok.org http://www.mycaishow.com http://www.mycaishow.net http://www.mycaishow.comhttp://www.mycaixin.com http://www.mycaixin.net

#5 sfw on 6.11.2005 at 9:00 PM

[url]http://www.chinasmsdownload.com[/url][url]http://www.lingsheng888.com[/url][url]http://www.15365.com[/url][url]http://www.8lingsheng.com[/url][url]http://www.caishowdown.com[/url][url]http://www.shoujisms78.com[/url] [url]http://www.smsxiaba.com [/url][url]http://www.chinashoujisms.com [/url][url]http://www.smschina.org [/url][url]http://www.xiazaisms8.org [/url][url]http://www.downsmsok.org [/url][url]http://www.mycaishow.com [/url][url]http://www.mycaishow.net [/url][url]http://www.mycaishow.com[/url][url]http://www.mycaixin.com [/url][url]http://www.mycaixin.net[/url]

#6 travel on 11.02.2005 at 4:12 AM

Protect yourself and your family from unexpected occurrences that can happen before or during your trip. Travel insurance is offering worldwide travel protection for country residents.

#7 travel on 11.02.2005 at 4:16 AM

"It is very comfortable if you have only 2 weeks vocation; why spend 2 days in the train if you can take only 2houres of plane. Now all depend only to your choice. Take a nice air travel!!"