Jerod Santo changelog.com/posts

A very brief history of Unix

according to me (with some help from Wikipedia)

This is a fancified excerpt from The Changelog #451 where we discussed modern Unix tooling like bat, exa, curlie, and more. If you’d prefer not to read, the audiogram is embedded at the end.


This is just going completely off the top of my head. I didn’t read it off Wikipedia, but if I was gonna write a Wikipedia… I might say a few of these sentences. 😉

AT&T Unix

So the original Unix is AT&T Unix and that was started in the late ’60s early ‘70s at Bell Labs. So that’s the O.G. It wasn’t even open source. It was proprietary. AT&T licensed Unix to various parties in the ‘70s and that led to the different Unix variants like UC Berkeley’s BSD, Sun’s Solaris, IBM’s AIX, and there’s more than just those.

UNIX®

Now, all-caps UNIX… that’s the trademark which AT&T owned until the ‘90s. Then it sold it to Novell, which then sold their Unix Business Group to somebody else, but then they kept the copyright which eventually ended up at the Open Group, which is like a consortium of different entities. No idea if they still hold it or what. So all-caps UNIX - that’s UNIX the trademark. Of course, there were legal disputes along the way, but those are not interesting.

GNU

Back in the ‘80s the GNU Project began, which was an effort to create a free software Unix-like system. You’ve probably heard of GNU. It stands for “GNU’s Not Unix”. It’s not Unix, but it’s Unix-like and it’s famous for many things. (Not just the invention of the recursive acronym which is pretty rad and has been copied over and over again.)

What else does GNU do? The GPL (GNU General Public License), GCC (GNU’s Compiler Collection). They’ve got GCC… and of course the coreutils like ls, rm, etc. and more.

So GNU had a lot of things going, but they didn’t really have a working kernel. There was GNU Hurd, which was being worked on back in the early ‘90s, but didn’t totally work yet when Linux came around.

Linux

Linus Torvalds released Linux back in 1991. That’s a kernel. So the Linux kernel is an operating system kernel, which means it’s not an entire operating system. He released that as GPL, so it got integrated with a bunch of other GPL stuff.

And then there’s also the BSD Unix effort which was released in 1992. That led to NetBSD, FreeBSD, later on OpenBSD, and I think DragonFly… A few others

So Linux and BSD: they have more in common than they have in difference. They’re very similar, but the differences are what we focus on (of course) because those are the interesting bits. That’s what makes it unique. That’s why we should even have more than one in the first place. But what they have in common is the Unix philosophy and the Unix architecture.

The Unix philosophy

The Unix philosophy is something we talk about on the show all the time. In fact we’ve just talked about it with Mat Ryer with his tool xbar and how it accidentally followed some of the Unix philosophy and had some awesome results from that.

The Unix philosophy includes ideas like:

  • “Make each program do one thing well”
  • “Write programs that work together”
  • “write programs that handle text streams”

So everything is text. If you can assume it’s text then you can write more simple programs that work with more things.

The Unix architecture

Then there’s the Unix architecture which has the unified file system that uses inter-process communication through pipes. We’ve already talked a little bit about pipes which serve as the primary means of communication. It also includes a shell scripting and command syntax called the Unix shell, which kind of brings us full circle, right?

So when we talk about Unix tools or “modern Unix” we are mostly referring to programs that:

  1. Follow the Unix philosophy
  2. Run inside the Unix architecture
  3. Are executed from a Unix shell

This could be on BSD, this could be on a Linux distro, or it could be on macOS… all of which are Unix-like systems.

Just off the top of my head. 😉



Discussion

Sign in or Join to comment or subscribe

0:00 / 0:00