5 ms·
Physicists' job is to come up with "one overriding idea". But engineers know "one overriding idea" never works except in theory, and that the devil is in the de
by dude_abides 14y ago
Physicists' job is to come up with "one overriding idea". But engineers know "one overriding idea" never works except in theory, and that the devil is in the details.
Linus is not saying that microkernels are architecturally bad. He concedes that it is an architecturally superior idea but it is not a panacea when it comes to OS design. It merely shifts inefficiency outside the kernel.
- wissler 14y agoBut engineers know "one overriding idea" never works except in theory On the contrary, good engineers are not dogmatists. They're open to new ideas and strive for simplicity, which means striving for unified approaches based on empirical reasoning. See Newton.
- maratd 14y agoYour continued comparison of physics to software engineering is horribly flawed. Software engineering is about creating something for humans while working with other humans. It is a science that is primarily constrained by human nature. Physics is about describing reality. It is a science that is primarily constrained by reality. In software engineering, it is always better to choose a flawed technical solution that leads to less friction among humans. Because less friction among humans is the entire point of software engineering.
- wissler 14y agoYour continued comparison of physics to software engineering is horribly flawed. Your contrast of science and engineering is horribly naive. In science, we use Ockham's Razor regarding explaining phenomena; in engineering we use Ockham's razor regarding implementing requirements. Both follow the same logical, empirical process, and both strive for the same result: as simple as possible, but no simpler.
- astine 14y agoOccam's Razor says that we should prefer simpler explanations to more complex ones with the same explanatory power. That is, we should prefer explanations which don't raise more questions than they answer. This has nothing to do with the engineering 'KISS' principle which desires simpler architectures because they are easier to understand and thereby to debug and maintain. The point is to avoid astronaut architecture, which is what you get when you chase theoretical ideas rather practical solutions. Linus's whole point is that microkernels are a prime example of astronaut architecture.
- dxbydt 14y agoThere is nothing astronaut-ty or theoretical about microkernels. For eg, QNX is a fairly successful, practical microkernel, its what your BlackBerry runs on. If anything, microkernels are one of the most practical ways to approach OS design. You strip the kernel to its bare minimum and do everything else in usermode via IPC. It so turns out in practice that the performance costs of IPC is much more than making a direct syscall in a monolithic kernel, but that is just today's state of the art. As IPC performance improves & monolithic kernel KLOCs explode, you will see microkernels making a strong comeback, especially on mobile. Wait and see.
- jbooth 14y ago"As IPC performance improves & monolithic kernel KLOCs explode" 1991 called. They told you to keep waiting. If you have to write way more code to hack around the message passing performance, you haven't simplified anything.
- jbooth 14y agoHaving to hack up all your code to perform appropriately in the context of a message-passing system is not simpler than a monolithic kernel. That's the rub. If performance were not a concern, message-passing could be simpler.
- wissler 14y ago
- dxbydt 14y agoI am genuinely curious how anything technically superior ever gets a chance in this concocted world of yours. Clearly, you prize "less friction among humans" above all else. So given a choice between a clearly flawed technical solution ( say building an operating system in PHP) and alienating other humans ( specifically, an office full of PHP experts ), we should build the OS in PHP because that leads to less friction among humans...yeah ? Let me know how that goes... Back on point, In grad school, we read the Tenenbaum-Torvalds debates in OS class to get an idea of the current state of research. Tenenbaum's point, among other things, was that microkernels were an unsolved problem. Granted they pushed the problem space into communication, and you had to contend with latencies....but that was the whole prize, to solve this brand new problem space. Whereas big bad monolithic OSes were a solved problem. We know they could be done. As far as a CS researcher was concerned, there was no meat in that space...it was mostly implementation detail and optimizing. Whereas microkernels, despite being a cleaner, more elegant approach to OS design, clearly had tons of issues to be solved, and whoever took a stab at them would push the state of the art forward. That is the point => to find a superior technical solution, not minimizing friction among humans.
- maratd 14y ago> I am genuinely curious how anything technically superior ever gets a chance in this concocted world of yours. If it actually works, sure. Unfortunately, due to uncontrolled hipsterism most technologies touted as "technically superior" don't actually work. It's very easy to throw up a demo or a benchmark. It's very easy to write a paper that shows how amazing what you wrote happens to be. Integrating something into a production stack that doesn't cause more problems than it solves is really hard. And it very rarely happens. So yeah, while you're still at the office at midnight trying to track down what exactly in your stack exploded ... I'm sleeping ... because I decided to go with something that's proven, rather than the latest and greatest. > we should build the OS in PHP Bonus points for trolling.
- wissler 14y agoI'm glad to see someone getting the point, which is that we as scientists strive for simplified, unified explanations and systems, and that's a good thing. Linux is nice and practical, but try working with it as a systems programmer sometime. It's full of hacks and arbitrary complexity and all manner of nonsense that persists year after year.
- CrLf 14y agoAnd... Newton was also wrong. His theories ended up not "overarching" at all, but flawed for aspects of reality that he didn't know about/didn't think about/had little data for. CS has lots of similarities with physics, yes. But the devil is in the differences. Think of it this way: If Newton had been trying to solve problems that included objects moving near the speed of light, not caring for what that would imply, he would have failed miserably. Computer scientists were trying to use microkernels to solve problems that required performance, without caring for performance, and failed miserably. Microkernel research was useful, Linux actually implements a lot of concepts devised to improve microkernel performance. It just happens that these concepts work even better when applied to a monolithic/modular kernel. Though luck for microkernelists...
- davesims 14y agoGreat comment, basically a restatement of Christopher Alexander's philosophy of architecture, as applied to software. This to me is where top-down thinking like Design Patterns sometimes go wrong; The GOF and related literature never really emphasized or adopted at a fundamental level, Alexander's most essential insight: the discovery of patterns should be driven from the bottom up, from the essential goal of expressing how human beings live in buildings (software). I like and use patterns, but rarely according to 'textbook' implementations, and I always felt that the patterns literature never went deep enough into Alexander's fundamental principles, which I think you've paraphrased so well here. Less friction among humans is the entire point of software engineering. Should be on a banner over every CS department and software publishing house in the world.
- MartinCron 14y agoSee Newton Are you trying to imply that Newton was somehow an effective software engineer?
- comex 14y ago"One overriding idea" is a type of dogma. Working towards simplicity is a good thing, but being dogmatic about an architectural principle is not.
- Evbn 14y agoWhat would happen if Newton designed your spaceship? It would miss its target, because his simple idea was not precise enough.
- caycep 14y agoThat's when you hire a systems engineer!
- smegel 14y ago> Linus is not saying that microkernels are architecturally bad. He concedes that it is an architecturally superior idea This is what he actually said on Slashdot (my emphasis added): > I think microkernels are stupid. They push the problem space into communication, which is actually a much bigger and fundamental problem than the small problem they are purporting to fix. They also lead to horrible extra complexity as you then have to fight the microkernel model, and make up new ways to avoid the extra communication latencies etc. Hurd is a great example of this kind of suckiness, where people made up whole new memory mapping models just because the normal "just make a quick system call within the same context" model had been broken by the microkernel model.
- zanny 14y agoI really like how Plan 9 solved communication through sockets and files (which is how the OS doesn't care if any part of the system is remote or local). Just sayin, it has been done pretty elegantly.
- brian_cloutier 14y agoYou and Linus are working off different definitions of "solved". Sure they did it, he never said it can't be done. But does it run efficiently and quickly?
- zanny 14y agoIt isn't slow enough for me not to notice while tinkering with it. Of course, I'm running it a kvm vm and have 8 cores of 3.5 ghz going on. It would be hard for a terminal environment to be slow on that.
- zanny 14y agoIt isn't slow enough for me not to notice while tinkering with it. Of course, I'm running it a kvm vm and have 8 cores of 3.5 ghz going on. It would be hard for a terminal environment to be slow on that. I'd aruge: not slow enough not to be worth the benefits of userspace everything, the ability to have a completely distributed system, and not slow enough not to make the interaces with the kernel not wonderful. I much like how plan 9 skips the whole RPC and syscall nonsense and does almost straight file IO and socket communication for everything. It is like Java vs C - it isn't slow enough not to take the niceties in some circumstances. High performance computing might like the Linux kernel, but as a developer who wants working applications that are really easy to interface with OS features, Plan 9 has that nailed.