5 ms·
It seems to me this pattern recurs over and over. The pragmatics roll up their sleeves and get the job done today, in some messy format (real kernels). The acad
by jerf 7y ago
It seems to me this pattern recurs over and over. The pragmatics roll up their sleeves and get the job done today, in some messy format (real kernels). The academics decry them as making a mess and doing terrible things, and declare that some solution is obviously correct and the practicals should be doing this instead (microkernels).
Ten to thirty years later, what happens is that both of them turn out to be correct in ways that neither of them could have foreseen at the beginning. It is true that what the practicals were doing was messy and it did blow up, and they did end up taking academic ideas into their code, but not quite as the academics would have thought at the beginning either.
Yeah, this is not a "real" microkernel. But if this process continues as described, you'll have a small hardcoded inner kernel, a whole bunch of sandboxed kernel code running in the kernel level of privilege but still essentially like "microkernel" components, suitably modified for the modern world, and a sane and safe sandbox to add more. And it'll be better than the original concept of "microkernels" were, and might as well co-opt the name, because we won't be going back to those ideas. The difference is that if we're getting to the point we can write sandboxes that actually work, the microkernel idea should be updated to account for that. The original microkernel ideas didn't expect that was a reasonable possibility, because at the time it wasn't. (Whether it is yet, we'll have to see, but we're at least getting closer.)
- bityard 7y agoEver heard the phrase, "don't let perfect be the enemy of good?" I tend to think of Linux as "good" and GNU Hurd as "perfect".
- arpa 7y agoI believe that 2020 is the year of windows server, linux desktop and GNU Hurd 1.0
- znpy 7y agoConsidering how 2020 has gone so far...
- yellowapple 7y agoI believe it's only a matter of time before we figure out how to get Intel ME to directly access the UEFI framebuffer and expose it as an X server, thus ushering in the Year of the Minix Desktop instantaneously on all PCs with Intel CPUs manufactured in the last decade.
- deleted 7y ago[deleted]
- kqr 7y agoAlso known as "worse is better" software. Create a program that is as small as possible, fast, simple in implementation, and reliable. Then build more on top of that. Even if the interfaces to this program have some rough edges, it will knock the "perfect design" or even the "good enough" version out of the park.
- SkyMarshal 7y agoIt’s the “reliable” part in your list that’s been problematic with monolithic kernels. Cramming the entire OS into the kernel was fast and simple, but exposed attack vectors and enabled bugs in drivers and other stuff to freeze the kernel. Not reliable.
- loeg 7y agoI tend to think of Hurd as "bad."
- SkyMarshal 7y agoOr you could think of Minix as perfect. Or SEL4 as perfect. Or QNX as perfect. No need to cherry pick Hurd for your example when there are shipping microkernels.
- rurban 7y agoHurd and Mach did the Microkernel thing wrong. L4 did it right, and it's colleagues. No receiver mailboxes. Either the reveicer is ready to pick it up the message, or it is lost. Just like with signals. Huge mistake. Though I do know other permissive real-time kernels with mailboxes. Which do work fine in the industry, like in automobile and airplanes/rockets. Or even darwin. So maybe there's a second big problem in the Hurd design I'm not aware of.