I haven’t posted anything about Linux here for a while. Here’s a little piece I wrote on Slashdot about the virtual-memory-system mess going on in 2.4, with a segue into why 2.5/2.6 should have been started long before now.

original article

IMO both Rik’s code (RVM) and Andrea’s (AVM) were accepted prematurely, and Linus’s ADD is the root of the problem here. Everyone thought the 2.2 VM was broken, so he jumped on RVM when it really hadn’t received adequate testing with various workloads. Then, when that didn’t work out, he did something even worse by jumping on AVM in the middle of a “stable” kernel series when it was totally undocumented and even less thoroughly tested than RVM. That’s just bad software engineering, regardless of the quality of Rik’s or Andrea’s work.

Ideally, an “old-fashioned” alternative to RVM would have been maintained throughout the 2.3 process, as a fallback in case RVM turned out not to be ready for 2.4 – which was in fact the case. But this wasn’t done, there was no alternative, and so RVM became the basis for 2.4. Once that decision was made it should not have been unmade by replacing RVM with AVM. Andrea’s work should have been in the 2.5 tree, which should have been opened a long time ago to deal with precisely this sort of situation. 2.4 is not the last Linux kernel that will ever exist. We don’t need to make it perfect. It would be far better to admit its imperfections, band-aid them as best we can, and try to get a head start on creating something better for 2.6. What we have instead is error on top of error, “not ready” replaced with “even less ready”.

To clarify, I have nothing but the highest regard for both Rik’s and Andrea’s work. Obviously they have different ideas and attitudes. Rik has drawn on many sources in his design, resulting in a system that is both very advanced and very complicated. The process of reining in the complexity is still incomplete, but I still have hope that some day Rik will be able to come up with something that’s really awesome, and he has always documented his ideas thoroughly. Andrea, by contrast, is much more pragmatic; he wants something that works now even if it’s somewhat more limited in scope (e.g. by being almost impossible to reconcile with NUMA). The dark side of that “pragmatism” is that Andrea has skimped on non-code activities such as documenting or explaining the basic ideas on which his system is based. Nonetheless, both have done great work and should continue to do great work…in the 2.5 tree.