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

An oft-quoted phrase that applies here is "the enemy of good is 'better'".

Clearly RMS wanted his idea of perfection, and almost 30 years on, perfection remains out of reach while "good enough" rules the world on Linux.

An important lesson to learn.




It's easy (and legitimate) to blame the failure of Hurd on poor design and management choices.

I think it's also instructive, though, to observe how no "better than Unix" project has really attained any success. Some of them have delivered more workable code than Hurd, but Plan 9, Inferno, Amoeba - none of them have really caught on.


Interestingly unix derivatives are now some of the most popular operating systems for modern devices, as iOS, Mac OS, and Android are unix/linux based.


I thought XNU was considered a micro-kernel because of the Mach part.


To quote that bastion of Jimmy Wales:

"Although Mach is often mentioned as one of the earliest examples of a microkernel, not all versions of Mach are microkernels.

The project at Carnegie Mellon ran from 1985 to 1994, ending in apparent failure with Mach 3.0, which was finally a true microkernel.

Mach and its derivatives are in use in a number of commercial operating systems, … most notably Mac OS X using the XNU operating system kernel which incorporates an earlier (non-microkernel) Mach as a major component.

Neither Mac OS X nor FreeBSD maintain the microkernel structure pioneered in Mach."[0]

[0]: https://en.wikipedia.org/wiki/Mach_(kernel)


I was one of the last Mach people at CMU. The BSD emulation on Mach 3.0 was implemented by stubs that made IPCs to the BSD emulation server, which then made additional Mach API calls to implement the UNIX semantics. This design was generally half as fast as an in-kernel implementation (e.g. Mach 2.5 or a commercial UNIX kernel). In the mid-90's we figured out how to make up the performance gap by refactoring the BSD emulation to put some code in the same address space as each application (ie in the libc .so), which allowed you to avoid the RPC to the emulation server in most cases (eg http://dl.acm.org/citation.cfm?id=168639). So I don't think it's fair to say that microkernel implementations of UNIX are inherently slow; instead I would argue that the simpleminded approach to UNIX emulation was the real problem.

None of this technology made it into a mainstream Mach distribution because the band broke up: Rick Rashid and his staff and students went off to work at Microsoft Research. Brian Bershad took over the project and then moved to University of Washington. It was also becoming clear in the mid-90's that the OS didn't really matter much anymore, since the big money was being made in Internet applications. So most of the hackers who might have worked on new operating systems during this time ended up working on application servers and web apps instead.


Anonymous HN readers, why the downvotes? I feel like Mach's wikipedia page succinctly answers the parent's question and gives some interesting background. Am I crazy?


It's not a microkernel; it just happens to implement the Mach APIs.


More specifically, OS X and iOS run what is essentially a fork of Mach 2.5, a version of Mach that came out before the BSD code was split out of the kernel into userspace (that happened in Mach 3).

A few "merges" (to use source control terminology) of newer Mach stuff into xnu (the OS X kernel), but the BSD-in-userspace stuff never came over.


But those are worse than UNIX, not better.


Some of the Plan9 people comment on and off how backwards going back to Linux seems: all these warts they had fixed decades ago, back from the grave! But a bunch of them work at Google now, so have to use Linux, since Google doesn't use Plan9 systems.


Actually the mistake that set the project back the most was the opposite, from the article:

Stallman later admitted, “I take full responsibility for the technical decision to develop the GNU kernel based on Mach, a decision which seems to have been responsible for the slowness of the development. I thought using Mach would speed the work by saving us a large part of the job, but I was wrong.”

He made what he thought was a pragmatic choice that ended up being wrong, not the "perfect" kernel.



This is from Voltaire. "Le mieux est l'ennemi du bien"




Consider applying for YC's Spring batch! Applications are open till Feb 11.

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

Search: