Politics in Software

The use of which software technology to do which job is actually a trick of politics. The truth is that any Turing Complete language can naturally do the same job that any other Turing complete language can do. This means that the choice of a particular technology or suite of technologies is not based on some formal rigor but on some politically motivated choice.

Developers want portable skills, so they have the security of a selection of employers. Businesses want easily replaceable employees for various reasons including keeping wages lower. The result is that the market will likely force a single programming language to the fore-front even if it doesn't deserve this placement on technical merit.

The similar forces work on operating systems and hardware too. The push for commodity parts forces us into architectures like the PC and it's x86 instruction set. Today there are no real competitors to PC architecture. There are no real competitors for the desktop metaphor either.

Even if I mention Linux on the desktop I'm not really mentioning anything all that radical. Even Linux bends to a windows-esque operating metaphor. When GUI designers make GUI for Linux, the go back to windows-keyboard-mouse (can I call it "wikemo" and not get snickered at?)

That mono-culture means that the window-keyboard-mouse paradigm is even further locked in. But so are other paradigms that are equally arbitrary and equally locked into the computing psyche. The questions that need to be asked as we start to see more and more internet enabled devices are:

* Do these paradigms work for us still?
* Is there a better way to represent program structure for these devices?
* Is the better way worth the effort of changing everyone's mind?