In his article The internet: Everything you ever need to know, John Naughton lists nine key concepts about the Internet to help us understand that profound impact it is having, and will continue to have, on our lives. Reading number 3 “DISRUPTION IS A FEATURE, NOT A BUG” I found myself drawing parallels to the design of the Internet and the design of the Unix operating system. The similarities are no accident, as the history of Unix and the Internet became closely intertwined after DARPA’s 1980 decisions that the BSD Unix team would implement the brand new TCP/IP stack which controls how data packets are routed between machines on the Internet.
Of the design of the Internet, Naughton says
It was based on two axioms. Firstly, there should be no central ownership or control – no institution which would decide who could join or what the network could be used for. Secondly, the network should not be optimised for any particular application. This led to the idea of a “simple” network that did only one thing – take in data packets at one end and do its best to deliver them to their destinations.
The result of this was a general purpose network from which sprang a diverse collection of services and applications (including the World Wide Web, see item number 2), some of which began disrupting established industries. This disruption, Naughton argues, is a desirable effect, though not necessarily to the existing music labels and media distributor behemoths such Warner Music Group and others that are having to drastically rethink their business models to remain relevant in the era of peer-to-peer data networks.
Like the Internet, Unix was designed around a number of axioms, the relevant ones being that the system should provide a core set of well defined, simple system calls for interacting with hardware and data, and that passing data between processes should be as easy as possible. As a result of these design choices an environment of diverse programs, each of which “do one thing and one thing well” and can easily share data with other programs has developed. The end result of this can be thought of as a direct contrast to this description by Eric Raymond in his book The Art of Unix Programming:
Many operating systems touted as more ‘modern’ or ‘user friendly’ than Unix achieve their surface glossiness by locking users and developers into one interface policy, and offer an application-programming interface that for all its elaborateness is rather narrow and rigid. On such systems, tasks the designers have anticipated are very easy — but tasks they have not anticipated are often impossible or at best extremely painful.
Unix users, on the other hand, have consistently been able to complete tasks that were never anticipated by the original designers, a key factor in its continued relevance. As technology changes and users demand new tools and applications developers on other systems have to work a lot harder and are at the mercy of the system developers to make changes to the underlying system to continue to produce cutting edge software solutions. On a Unix system it is just as easy to copy a file from your USB flash drive to your hard drive as it is to copy a file from your harddrive to a machine on the other side of the world and it is just as easy to stream video data from a local file as it is from a server on the internet. The design has lead to a remarkable, even surprising degree of flexibility and usefulness:
Unix has supported a mind-bogglingly wide spectrum of uses. No other operating system has shone simultaneously as a research vehicle, a friendly host for technical custom applications, a platform for commercial-off-the-shelf business software, and a vital component technology of the Internet.
– Eric Raymond,
The Art of Unix Programming
Like the Internet, the simple infrastructure layer by Unix (and its present-day incarnations such as BSD and GNU/Linux) provides an environment for nearly unlimited creativity, one which continues to surprise users and non-users alike with its ability to solve problems and implement ideas that a year ago didn’t even exist. And likewise, the disruption it has caused has been a boon to individuals: The Linux based Android operating system is running on over half the world’s smart phones and quickly overtoke more established contenders such as Apple’s iOS. Linux has already disrupted the server market, the embedded market and most recently the phone market. It remains to be seen whether or not it will have a noticeable impact on Microsoft’s stranglehold on the desktop market, unless you consider Apple’s Unix derived OS X as an example.
the end.
I enjoyed reading this (like all your posts), but I wanted to question why you’re setting up an opposition between OS X and Linux if it’s *nix (rather than just Linux) that you’re singing the praises of here. For example:
“It remains to be seen whether or not [*nix] will have a noticeable impact on Microsoft’s stranglehold on the desktop market, unless you consider Apple’s Unix derived OS X as an example.”
Why would anyone not consider OS X to be an example of a *nix? It’s not Unix-derived, or even Unix-like: it’s an actual, certified Unix. Of course, most OS X users don’t know what “*nix” means, and never dip into the shell. But if a Linux distro ever reaches anything approaching OS X’s share of the general computer market, the same will be true for most of its users. Which brings me to the next point…
“The Linux based Android operating system is running on over half the world’s smart phones and quickly overtoke more established contenders such as Apple’s iOS. ”
iOS is based on OS X, so the big change happened when iOS overtook BlackBerry OS, not when Android overtook iOS. Yes, iOS is crippled in that you need to have your phone jailbroken to get root access, but the same is true of Android – and necessarily so, because most people quite legitimately don’t want what you (correctly) identify as the great thing about *nix, i.e. the power “to complete tasks that were never anticipated by the original designers”.
Just sayin’.
Thanks for your comment! I think if you had asked this a couple weeks ago I wouldn’t have been able to come up with a satisfying response and I’d come off as a Linux fanboy or something. Luckily I was just having a conversation about some of these themes, notably the Internet vs. the web vs. Facebook, and it all relates. That being said, you are exactly right about pointing out my inconsistent view regarding Android vs. iOS because…
I think of *nix both as an actual class of operating systems which share a number of technical features, but also as a philosophy. I strongly believe that certain core elements of the philosophy are what have allows *nix systems to adapt and expand and thrive in today’s tech environment. One of those critical elements is the openness of the technology, both in terms of source code (as very early Unix was by nature of the legal environment surrounding AT&T at the time) and as Linux continues to be, but also in terms of the openness of the environment itself as seen by the user.
OS X is an example of a “technically *nix but not philosophically *nix” system. Apple took built OS X on top of a base system that owed its existence and maturity to a philosophy of openness, but did embody the same philosophy.
Yes, OS X, iOS and Android all provide “walled garden” access to the machine, and as you mentioned in some cases this is a good thing, but the Android project itself does contribute back to the community originally responsible for enabling Android.
Many hardcore Linux users have negative issues associated with the Walled Garden approach Ubuntu is taking, but I tend to agree, if Linux is ever going to reach widespread desktop use, it will be in a form more similar to Ubuntu than Gentoo. That being said, while Ubuntu doesn’t advertise it, it is still fairly straight forward to experiment with it like any other distribution, presenting the same type of flexibility for choosing which graphical environment to use (although I’ve heard that completely removing Unity from the system can cause issues with future software updates being applied correctly), and how to interact with the system (you can still work entirely from the shell, if you wanted to).
I do recall reading some article stating that Android wasn’t as “open” as it pretended to be, if I can find it I’ll link it here for a “fair and balanced” perspective… I’m also interested to see how the upcoming Ubuntu phone fairs.
“OS X is an example of a ‘technically *nix but not philosophically *nix’ system.”
That’s a really interesting way of looking at it – thanks for explaining.
I guess I’m unconcerned about not having the sources for OS X because it already works the way I want it to work, which leaves me to tinker with things I want to tinker with. I used Linux for a while, and it gave me the good habit of working from the shell, which I’ve kept up since my return to OS X. But it’s a huge relief not to have to worry any more about hardware drivers (I had issues with my graphics card, with my sound card, with wifi etc). From a hacker’s point of view, I know this is the wrong attitude.
I feel the opposite way about my Android phone. It doesn’t work the way I want it to, so I’d love to tinker with it – but I can’t. I could get the source for the kernel, but it’s not the kernel I have issues with: it’s all the garbage that Samsung dumped on top. Maybe this is the sort of thing discussed in the article you mention?
Anyway, I too am very interested in the Ubuntu phone. It sounds like a much, much better idea than Android – but I worry that it’s come to the party too late.