Unix is both a technology and an idea

August 20, 2023

The thing we call Unix is both a technology (really a set of them) and an idea (really a set of them). Of course the two sides aren't unrelated to each other; in Research Unix through V7, clearly two mutually reinforced each other, with the technology being developed to support the ideas and also, I think, with the technology enabling some further ideas. However, even historically the two were not glued together. People took the Unix ideas and implemented them on other systems (that was part of what made Unix so powerful as an agent of change and a source of ideas), and even in the 1970s and 1980s other people took the technology and used it in contexts where the ideas were not really expressed or exposed.

The ideas of Unix are not just about how things work; they're also about how people should interact with the system. For example, consider Rob Pike's thread about the Unix file model over on the Fediverse, which is at its core all about how people interact with 'files', rather than how the technology works. The ideas of Unix admit a wide variety of ways to interact with Unix, not necessarily through a command line, but the ideas tend to shine through all of them; see, for example, Russ Cox's "A Tour of Acme" (YT). I suspect you can readily see various Unix ideas in GUI form in Acme, although it's a GUI program.

When people talk about 'Unix', they generally mean the technology plus some varying amount of the ideas; how much of the ideas depends on who exactly is talking. When some people talk about Unix, they care very much about all of the ideas, especially including the ideas of how people use and interact with Unix systems (this is Rob Pike's thread again). However sometimes people talking about Unix mean only the technology, or even only really the basic kernel and low level API.

(If we mean just the ideas without the technology, I feel that this is usually phrased in terms of 'inspired by Unix' or the like; 'Unix' as such requires the technology, for all that a system can theoretically be POSIX compliant without being very much Unix.)

Getting confused about which of these two we mean by 'Unix' is one way to have big discussions about whether Android, iOS, or macOS are 'Unix'. In terms of technology, these are all clearly significantly or entirely Unix. In terms of ideas, especially the ideas of how you interact with them, they are often not particularly 'Unix'. Two people can easily talk past each other about whether, eg, Android is Unix; the person meaning Unix in a technology sense says yes, while the person meaning Unix in the ideas plus technology sense says no, and both are right.

(You can also have an argument about how much of the technology is required for something to be Unix in technology. Is using a Unix kernel with a completely custom userland sufficient? The result will have processes and many other Unix technologies, which pushes it to have certain features like an 'init' PID 1 equivalent. How does your view change if there are a bunch of strange new system calls grafted into the kernel and the userland does much of its work with these syscalls? Bear in mind that eg Solaris grafted in doors and significantly used them in its userland.)

Written on 20 August 2023.
« CLAs create different issues than making (small) open source contributions
Packaging software is something that takes work »

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

Last modified: Sun Aug 20 21:19:26 2023
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.