In 2000, Rob Pike wrote Systems Software Research is Irrelevant (aka utah2000 or utah2k), on the decline in operating system research. It included a chart lamenting the stagnation in software and programming languages over the ten years from 1990 to 2000. I've updated it for 2014, which supports his point even more strongly:
1990 | 2000 | 2014 |
---|---|---|
colspan=3 style="text-align:center;" | Hardware | |
style="vertical-align:top;" | 33 MHz MIPS R3000 32 MB of RAM 10 Mbps Ethernet |
600 MHz Alpha or Pentium III 512 MBb of RAM 100 Mbps Ethernet |
colspan=3 style="text-align:center;" | Software | |
style="vertical-align:top;" | Unix X Emacs TCP/IP |
Unix X Emacs TCP/IP Netscape |
colspan=3 style="text-align:center;" | Language | |
style="vertical-align:top;" | C C++ |
C C++ Java Perl (a little) |
As someone who used to develop operating systems for supercomputers, this is a really discouraging chart.
A quote that still holds true, "There has been much talk about component architectures but only one true success: Unix pipes. It should be possible to build interactive and distributed applications from piece parts.". Some of the new Unix system management tools are trying to break this, unfortunately, and Poul-Henning Kamp writes in "Step away from the ASR-33" to encourage us to think beyond the VT100 world of ASCII, although Unix's plain-text config files and plan9's use of plain-text protocols is a great way to keep things easily parseable and scriptable. And I don't just argue that as an occasional ASR-33 user.
But is "Worse is Better" the real reason that Linux is winning and plan9 failed to garner widespread adoption? ESR's "The Way the Future Was" makes that claim:
it looks like Plan 9 failed simply because it fell short of being a compelling enough improvement on Unix to displace its ancestor. Compared to Plan 9, Unix creaks and clanks and has obvious rust spots, but it gets the job done well enough to hold its position. There is a lesson here for ambitious system architects: the most dangerous enemy of a better solution is an existing codebase that is just good enough.
While I ran plan9, had a source license and ported it to a supercomputer in the 1990s, today I run mostly Linux and OSX. Some of the ideas like /proc
/sys
and FUSE live on, but no where near as convenient as 9p from nearly twenty years ago. And user-level namespacing still hasn't materialized in Linux.
So what happened to our OS research and innovation? Maybe Pike's answers still hold today.
2014 Unix Retrocomputing Essays