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. 😉
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.
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.
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.)
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.
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.
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:
- Follow the Unix philosophy
- Run inside the Unix architecture
- 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. 😉