My Unix is a general purpose operating system

January 23, 2013

When you start thinking about the present and future of Unix, one of the questions you are confronted with is what Unix is for.

One vision of Unix is that its focus is text-mode or headless servers that have a basically static location (in both physical and network terms) and exist to run daemons and services; websites, databases, disk storage nodes, fileservers, and so on. Let me be blunt: this is a very popular thing to do with Unix and is probably the dominant use of Unix today. It runs all the way from a devops organization virtualized in the cloud to one person running a single do-it-all server machine under their desk in a small organization.

My view of Unix is broader than this. For me, Unix is a general purpose operating system, one that is not just for servers but also for simple graphical environments (such as mine), full blown fancy desktops, laptops whether minimal or fancy, little simple machines, and many other places. I keep an open mind and feel that what is fundamentally Unix is capable of wide scope and applicability. In short, it scales in many directions.

(I will skip trying to summarize my reasons for why, but part of it is I feel that Unix has turned out to be a pretty good framework for interacting with computers.)

By Unix I mean more than the kernel and the core APIs. I mean, well, the metaphors and the framework and in general everything that makes Unix a familiar environment for general use. A machine can run a Unix kernel and have Unix-like APIs without being Unix; where the line is between Unix and non-Unix is ultimately one of feel (and varies from person to person).

There are environments where it's not clear if Unix fits. For example, I'm not sure much of the Unix framework really works in smartphones and it may not work well with tablets; we're going to have to see. Part of this is that the Unix framework is a general framework and is not necessarily a good fit to a very specialized, narrow device. Part of it is that the Unix metaphors may not be a good fit for some environments.

Sidebar: my views on some not-quite-Unixes

From what I know of it so far, Android seems clearly not a Unix in this sense although it uses a Unix kernel (yes, Linux is a Unix). Since I have low exposure to Android I may be wrong (and I'm open to having my mind changed).

Mac OS X is a fuzzy case but I consider it mostly not a Unix. If you use OS X as Apple intends you to, its Unix is simply a substrate for what it really is (in the same way its kernel uses Mach as a substrate without actually being Mach in any meaningful way). You can use an OS X box as a Unix machine but in some ways doing so seems to be swimming upstream.

(Part of this perception is based on the history of Apple and of Mac OS. To put it one way, I don't think that Apple has any interest in making Unix machines with a nice Apple desktop; that they arguably do is just a side effect, not a goal.)

Comments on this page:

From at 2013-01-23 21:23:11:

I definitely agree that trying to use OS X as a Unix is swimming upstream. I have two Macs at home and both of them are maintenance headaches compared to my Linux boxes, because Apple wants you to do everything The Apple Way and it gets fussy when you try to do it the Unix way. Even simple stuff like crontab is being phased out in favor of having to write launchd PList files.

From at 2013-01-23 22:03:35:

How are smartphones and tablets "specialized, narrow device"s? Sure, the human physical interface is a bit different, but not radically so. The difference between a pc and a headless server is just as big.

Smartphone-sized devices will soon enough be all we need for personal computing and there's no reason why unix can't be extended to this form factor as well. There's no reason not to have a unix environment and to interact with it either over the network or by connecting a larger monitor/keyboard to a device.

- Jeremy

By cks at 2013-01-23 23:15:50:

Jeremy: I wrote that section badly; I meant to have specialized, narrow devices as a third category (along with tablets and smartphones). As a completely arbitrary example, would it make sense to make a smart TV a Unix system? It's not there for general purpose computing and the Unix framework doesn't seem like it really fits specialized tasks.

(You might base a smart TV on a Unix kernel with various userland tools, but I don't think that particularly makes it a Unix system; it'd just be using convenient bits of Unix as a substrate.)

I think of tablets and smartphones as more an issue of user interface and fundamental (mental) model rather than an issue of form factor. One way of putting this is the more you can imagine swapping out the Unix substrate of a system for a different one without fundamentally or even materially changing how you interact with it, the less I think of the system as a Unix system as such. My impression is that the current smartphone and tablet way of doing things does not cause Unix to show through this way, and I'm not sure there ever will be a good interface that does. Hence my view that Unix just may not fit here.

(I've just realized that this is part of my view of Mac OS X. Apple very visibly did swap out the substrate under Mac OS for another one, and I can imagine them doing it again.)

From at 2013-01-24 05:50:17:

Even if the actual user interface is not unixish, e.g. on a smartphone or TV (although I question that there could not be a smartphone with a more unixish feel...), there still is a benefit for these devices to run a network-accessible Unix, and if it's only to rsync around stuff, run backups or deploy configuration.

From at 2013-01-24 09:59:20:

I understand what you're saying re tablets and phones and it makes sense if you only interact with them in phone/tablet ways. Personally I'm wondering what my personal (software development) machine will be like in 5-10 years. The hardware will probably be phone or tablet sized and the primary ui will probably descend from current designs, but I'm going to be pretty unhappy if I don't have access to a proper shell and a package manager. That said, OS X is enough for me at the moment so I guess my unixy-requirements aren't that strict.

- Jeremy

From at 2013-02-13 14:30:57:

I was seduced over to Mac OS X from Linux, largely due to wanting a reliable laptop OS, and gradually finding that with some additions (e.g., other packages from MacPorts, Fink, or homebrew), I could do pretty much every command-line task I would want to do, as well as have access to various bits of shiny GUIed software (including, at one point, things like Adobe Photoshop and Illustrator).

Most of my department's faculty have also moved over to Macs from Linux or Windows, following much the same path (laptop first), although we maintain a Linux lab (until this summer) and run several Linux servers (including compute servers).

I do worry about whether Apple might decide to drop some or all of the tools I rely on, and they sure seem determined to dumb things down a bit more with each OS release, but in the meantime it's a pretty nice OS to work in. As long as things don't get too iOSy, and I can still run multiple terminals and Emacs, it will probably remain a good option. (Especially given the way that some of the Linux distros seem to be trying to out-Apple Apple with their desktop environments.)


Written on 23 January 2013.
« What I want to know about kernel security updates
Unix needs to grow and a consequence of that »

Page tools: View Source, View Normal, Add Comment.
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Wed Jan 23 15:41:50 2013
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.