Wednesday, September 20, 2017

The commoditization of IT?

IT, so the story goes, is now a boring commodity. But is this true?

Let's first define what a commodity is. There are a range of definitions we could use, but I'm going to think of a commodity as something that is functionally undifferentiated and available from multiple sources. The key aspect here is that of interchangeability (aka fungibility).

As an example, most computer components fall into the commodity category. Memory DIMMS, disk drives, network interfaces - you can (in principle) use any vendor's disk drives or memory and your computer will still work. You can use a mouse, keyboard, or monitor from any vendor and things will work just fine. Vendors have to differentiate in other ways - performance, cost, reliability, service.

What about smartphones? I would say that the phone piece is a commodity. Whether for a mobile or a land line, you can switch your telephone for another make or model, and you can switch from one telephony provider to another.

But the smart part of smartphones isn't properly interchangeable. You can't simply swap an Apple handset for an Android and carry on as you were; you have to switch everything to a different domain. And the suppliers here are keen to enforce differentiation and prevent interchangeability. We live in a world of proprietary walled gardens.

In most non-trivial cases, databases aren't commodities. Big database companies rely on the fact that you couldn't migrate to another database vendor even if you wanted to.

Operating systems are clearly differentiated. You can't swap Solaris for Windows, or either for Linux or BSD. You can't even treat different distributions as commodities if you restrict yourself to the Linux domain.

Although the operating system landscape is changing a little, in that Docker and containerization offer the prospect of interchangeability - you could, in theory, run a Docker image anywhere and on anything.

Cloud computing definitely isn't a commodity. (Thinking of it as a utility might be slightly more accurate.) Heck, there are sufficient differences over what's available that migrating between different AWS regions isn't smooth, let alone migrating between cloud providers.

Vendor lock-in is the big thing, and it's diametrically opposed to being a commodity - what vendor wants to make it easy for its customers to leave? (Despite that being one of the key attractions of any vendor in practice.)

One of the requirements for interchangeability is standardization, and there's a tension here between standardizing things (thereby making things the same) and innovation, which necessarily implies change. I could (and probably will at some point) go on at length about innovation, but I see precious little innovation in practice, more constant reinvention of the square wheel. Meanwhile the standards we have are either efforts like POSIX, which is largely codifying accidental implementations from the 1970s, or ad-hoc emergence of initial implementations that were cobbled together with little or no thought for actual suitability.

Rather than commoditization being a standard base, with a rising tide lifting all boats, any commoditization chips away the good stuff to leave the lowest common denominator, while everyone deliberately introduces incompatibilities in the name of differentiation.

So it seems to me that, far from being commoditized, IT has been monopolized and mediocritized.


Bill S said...

I'm with you by and large.

Its a bit of a tangent but I work as the sole IT/sysadmin at an embedded software company with a Linux development environment and offices on almost opposite sides of the United States. It amazes me how often I get developers, many older than myself, asking why their shell scripts wont work. Well, you see by default on Ubuntu /bin/sh is dash. And your shell script seems to require bash. "Well fix it" they tell me. They are completely un-aware a shell other than bash exists, and that you might not want to write a shell script that calls /bin/sh to require non-bourne shell features. So I have to change every Ubuntu machine's /bin/sh symlink to bash or something someday will break and nobody can be bothered to actually fix it or even learn why its a problem. This past year I discovered what the agile development model is, something I was blissfully ignorant of before.

I've been a long time BSD user, and (to a lesser extent) a Solaris/Illumos user and the longer I spend in the Linux/GNU/GPL/linuxy-software (<-- can't pin it down exactly) world the more and more annoyed with the poor standards and poor ideas we're stuck with. Granted its not just a Linux problem but thats where I see it the most. From my experience any software written explicitly "for Linux" has a very good chance of being kind of crap. At least once a day I find myself having to do things the stupid way because thats what we're stuck with forever now.

Peter Tribble said...

We could file that in the "everything's broken and nobody cares" bucket. But it is also another example of lock-in that is working against commoditization - this time by users, not vendors.