Hacker News new | past | comments | ask | show | jobs | submit login

This got really long. Sorry for that, TL;DR answer is "To understand design choices in OS design."

Now for the full answer, with more than a bit of historical perspective ...

It is a subjective topic of course. In "theory" there are 2.5 forms of mainstream operating systems; Windows, UNIX, and Microkernel UNIX (Mach derivatives).

Microsoft has invested in Windows.

Apple has invested in Mach/UNIX in the form of MacOS after the purchase of Next. (prior versions of MacOS are essentially dead).

Then there is UNIX.

UNIX was a product of AT&T, later it became the property of Novell and then the OpenGroup. Because it was a research OS originally (before System V was released) its source code was shared to other researchers and the folks at Berkeley Computer Science Research Group (CSRG)) created a their version of UNIX which they called the Berkeley Standard Distribution (BSD). Sun Microsystems worked with CSRG to turn BSD into a commercially successful OS (SunOS) while AT&T struggled to turn their distribution into a commercially successful OS (System V). This got ugly and legal fights ensued and AT&T paid Sun about a billion dollars to merge their successful OS with the unsuccessful OS. It also resulted in the Regents of California working to rewrite/remove any "AT&T proprietary code" from their distribution which left them with a research OS that they controlled and didn't have to worry about getting sued over. That OS, called FreeBSD, is pretty much as close as you can get to being a UNIX OS without owning the trademark (which OpenGroup now owns).

Then there is Linux. Andrew Tannenbaum wrote a "toy" OS that could be used to teach operating systems principles to college students and based it loosely on UNIX. He called it "Minix" for "minimum UNIX". Tannenbaum is, and this is putting it nicely, off-putting. He is one of those people who seem to rub people the wrong way. He got into an online fight with a teenager named Linus who had written his own "toy" OS that ran on the PC/AT computers at the time. He called it "Linux" and in his Usenet post suggested he didn't think it would amount to much.

A satellite player, who becomes important later, is Richard Stallman. Who was so affronted by the legal shennanigans that AT&T was pulling, the increased restrictions on access to SunOS that Sun was pulling (mirroring DEC before them) that he decided he was going do his own thing and nobody would have any way of hiding any of it. He called it "GNU" for, "GNU is Not UNIX." He took a lot of pleasure in the recursive acronym, it is the kind of thing folks in the MIT AI lab would chortle at. He was explicitly calling out "Not UNIX" not because UNIX was bad, but because everyone wanted to run UNIX and AT&T was being a huge pain about people calling things UNIX when they weren't paying taxes to AT&T. So the joke was it is EXACTLY LIKE UNIX but we're "saying" it is NOT UNIX. See? Fun joke. We get to use all your cool OS abstractions and knowledge and you can't sue us, nyah, nyah, hee, hee! Step one was "We need a C compiler" and so that was the first thing they built, gcc, binutils, and make.

At the time it was created, Linux, and the people who contributed code to Linux, were all UNIX fanbois. That is they loved "sticking it to the man" by building their own version of something that they wanted that someone else told them they couldn't have unless they paid them. At the same time Windows was a computer science joke. It was for "stupid people who didn't understand multi-tasking" and only lived in a single address space where random things could crash the system, and every tiny change required you reboot the thing from scratch. The joke was "did you try rebooting it" and used with much derision.

Now here we get to an interesting fork. The Regents of California could not abide the "copyleft" ideas of Stallman and the nascent Free Software movement. It wasn't because they wanted things to be proprietary, rather it was because they had gone through a protracted legal battle and knew their their licensing had been litigated and would hold up. As a result, the CSRG was not going to use anything like gcc with its GPL license and stuck with their portable C compiler and later variants. Meanwhile the rebuffed Stallman found a lot of people who were willing to use their stuff and contribute to Linux[1]. Writing as user land to mimic the UNIX tools was "easy" and done quickly, X was already open source from MIT and so that came too, and many people started writing the myriad of small device drivers that were needed to have this new OS boot on different systems. Many hands make for light work, and it flourished.

In 1996 I had to choose between using FreeBSD 2.x or Linux 2.x in an Internet Appliance our company was building. While we loved that new drivers were appearing regularly for Linux, the entire environment churned with change. There was no discipline in the userland between release to release. Command line options changed or were added, behaviors varied, and every new release had to be scoured for random "wouldn't it be neat if ..." kinds of change that someone had thrown in. FreeBSD on the other hand didn't get drivers as quickly but it evolved in an easy to comprehend way that didn't involve a lot of churn and it never changed important things in a "dot" (or worse dot dot) release.

So the environment was that the "cool" companies, Sun, SGI, Next->Apple, HP, were using UNIX so the open source community worked to make Linux as UNIX-like as possible. And of the UNIXes (BSD 4.x, FreeBSD, NetBSD, OpenBSD) moved along more slowly but with a very UNIX direction.

Jump ahead now 5 - 6 years. And Sun, SGI, and HP are all dead. The "cool" companies (FAANG) are using Linux in their data centers (or as in Apple's case still a UNIX derived OS) but Microsoft has upped their game and now they have a fully multi-tasking OS that a bunch of teenagers spent their formative years using and learning to tweak. Those same teenagers would love to have an "open source" version of Windows but Microsoft is not going to accommodate them.

So once again, you've got the "BSDs" which have a disciplined, ordered integration schedule. And you have Linux with its free-for-all user land. And these same folks decide they are going to start integrating features that they like about the Windows OS into Linux, in part because they can, and in part because Windows is no longer the lame besmirched OS that "only losers" use. And as a result of that activity, Linux begins to turn toward a new "north star" which is now Windows rather than UNIX.

We can argue all day and all night if operating system configuration is best done with a registry or a series of text files, and never get anywhere. They are subjective choices and so, like policy choices, arguing them is not going to get you anywhere. There are a lot of such choices that go into OS implementation. But as a result of the new influx of contributors to the Linux user land, and their early computer experiences, Linux is now mimicking Windows design philosophies rather than UNIX design philosophies.

So to answer your question about "Why should anyone use them?" the answer is to broaden your understanding of OS design philosophies so that you might better understand the tradeoffs and make better choices about which OS you might choose to support or not support in the future.

Phew.

[1] Linus has a similarly cautious attitude about the GPL as evidenced by his messaging over the years.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: