The Fremantle Correction

, Jul 19, 2007

Paul Fremantle left a brilliant comment on an SCA thread at InfoQ:

Building distributed systems is hard enough, which is why EJBs, RMI, WS and even REST aren’t simple. Unfortunately, adding a layer of indirection doesn’t help. It might make is seem simpler for a while, but in fact you end up with three problems:

  1. Its harder to understand what is going on: As we’ve seen with the move towards REST, programmers like to see the relation between their code and the wire. They like to understand what happens when they code a line of Java (or C or PHP or JavaScript).
  2. Its harder to debug: because its harder to trace back from the low levels through the layers of indirection.
  3. Its harder to really understand - to grok, to know inside out: the layers of indirection don’t remove the difficulties of the problem, they just hide them. So predicting what will happen in difficult situations becomes harder.

I think the complexity of the SCA specifications backs up this point completely. Something that was designed to simplify and unify programming models should have a simple description. Unfortunately, because of the above reasons, that just isn’t possible.