Thursday, January 03, 2008

The times they are a changin' ...

I was asked by a friend of mine Mark Fowler, the following question:

"You use software as a service. In particular, you use service providers who provide email, blog hosting, and instant messaging. However, for all three of these you choose service providers with zero portability"

Good question; so why do I?

When I talk about the XaaS field and the need for portability between providers, I'm normally talking from the perspective of a business.

I agree that the personal services I use are not very portable and I could have set things up differently. However I suspect that most users don't even have a choice and just accept the risk that at some point in the future all their data may be lost.

Why? Well, in order have portability you need to know a small amount about networks and the terminology used. Unfortunately, to many novice users:

  • DNS sounds like the name of a governmental department.
  • CNAME and NS Records are probably something to do with healthcare.
  • MX is a type of car.
  • IP address sounds like some sort of public speech.

The language and terminology used create an artificial barrier to achieving a task. Whilst most of the concepts behind network administration, software engineering, IT architecture and databases are simple, we often dress them up in obscure terminology, poor documentation and unfriendly user interfaces.

Common arguments for doing this include:-

  • by the time you learn the terminology you'll know enough not to cause any harm.
  • well written code doesn't need documentation.
  • what do you mean you don't know what a subquery is?
  • int *ptr = malloc(50 * sizeof (int));
  • I understand it.
  • I don't like writing documentation.

Compare the sequential and ordered world of most computer programs to the complex biological systems of your average eukaryotic cell, let alone a nematode. Explaining gene expression to someone unfamiliar with the concepts is a fairly demanding task as it is complex and the processes are barely understood. DNS is only complex because we make it so.

There is a pattern here though.

At one point electricity was a completely novel and new field. To explain how to use it to, say, "boil water for a cup of tea" would have been a conceptually demanding activity. Today you can solve this problem with the instruction "plug a kettle in", and without having to mention impedance, inductance, conduction or discuss generator design. Power generation is a much more defined field than it once was and it is more amenable to use.

Many inventions and discoveries make this transition from uncertain and new to standard and commonplace. However, it is during that transition that we often find an awkward phase where the field is shrouded in arcane obscurity and the proponents of it are the proverbial rock stars of their time (cf. electrical engineers, railway men, shipwrights, aviators, leech farmers ... ).

This is where we are with IT at the moment. Some in IT are also in the grips of the grand delusion that we are somehow special and our field is an unique craft which will always remain so.

Software is merely the instrument through which other stories are told. The building of a software system is more akin to creating the first of any product, for example the first pen. Such a pen can be used to write all manner of different stories, some good and some bad, but as more pens are demanded we eventually end up with the mass produced biro.

The technology is just a commodity we use to achieve other goals. It's what you do with it that really matters. Do you choose which blog to read based upon its software features or because of its content?

We are not yet in the mass produced world of software services but we will eventually get there. Software systems and data will eventually become portable, mashable and amenable to our purposes. You'll also be able to change provider without metaphorically rewiring your house.

As Harry Kim would say "computer, display a holographic simulation of Krell Mosset ... transfer all reference medical files to the simulation ... install personality subroutines and voice approximation."

That's real programming.

It's only when something that is potentially widely useful becomes common, ubiquitous and amenable to use by everyone that it really becomes powerful.

I've been going on about portability issues for sometime. In reality the issue we should be looking at is wider than that - it's whether such a system is "amenable to use". This includes the concepts of portability which requires standards but also necessitates a lack of obscurity and an ease of use.

There are many ways I can create lock-in and I don't expect to get any agreement from the horde of arcane terminologists who make their living from this. Fortunately commoditisation is a powerful force and whilst it is inevitable it also leads to new opportunities for those willing to adapt.

In order to live in the future you have to be willing to leave the past. So with that in mind I've decided to take an old lost word, Gardeviance, as the new name for my blog. I wanted to say "Computer, new log name - Gardeviance - make it so" unfortunately we're in the arcane obscurity phase so I have to know my CNAMEs from my MXs.

Roll on 2008 and the further commoditisation of IT

"your old road is rapidly agein'.

Happy New Year.