When I get on a plane to Seattle (preferably the scenic route via Vancouver), I can state with a reasonable degree of certainty that I will get off at the other end at some point in the future. Moreover, I can guarantee that only one of me will get off at the other end, and that some strange clone of myself will not spontaneously materialize at another airport somewhere else in the world. Even if, heaven forbid, my plane blows up in mid-Atlantic, it will in theory be possible to recover all my atoms and prepare them for a decent burial (no flowers, please — donations to the home for distressed Netscape programmers).
All this is a direct consequence of the principle of conservation of mass. However convoluted the flight, you can’t end up with more or less than you started with. (Having said that, I feel that I should point out that it is a well-known fact that aircraft baggage is subject to entirely different laws, in which chance has a significance that is usually only found at the subatomic level.)
At the risk of attempting to sound like a low-budget imitation of Nicholas Negroponte, when you start looking at bits rather than atoms, things get very different. I’ll state something very obvious, which has an enormous impact on the design of loosely-coupled systems:
There is no principle of data conservation
If you send a packet of data over a wire, there is no earthly reason why, depending on the nature and quality of the systems at the other end, you may not end up with two copies of it, a thousand copies of it or indeed none at all. This principle (or lack of it) is, of course, the reason why digital systems are so amazingly cheap and powerful compared with physical ones, but it’s also why they are so much more difficult to manage. If we are to develop loosely-coupled systems that work in a sensible, manageable way, we’re going to have to make data behave more like a physical substance. And that’s where guaranteed messaging systems come in.
Let’s try a little falconry…