Here are some of the ways I’d like to see Linux evolve in the near future:
- Better modularity. There’s still way too much interdependency between what should be separate subsystems. Sometimes this is in the form of explicit references to each others’ data or functions, but just as often it’s a more subtle but still undocumented reliance on “X never does this so I won’t even check for it, and God help the guy who comes after me if X ever changes”.
- A better VFS layer. Just having one isn’t enough because, to be blunt, some folks did a pretty piss-poor job of specifying, implementing, or testing it. This fact is the primary reason 2.4 isn’t out yet.
- A mature persistent-module-data interface. We don’t need anything as overburdened as the Windows registry or AIX ODM, but we do need something and recent steps in this direction are a very good sign.
- Journaled, soft-update, and atomic-update filesystems. Not one, but several. Let them compete. This is an area where Linux can be the foundation for significant improvements in the state of the art.
- Better testing. We need a serious test suite for each of the major kernel components, and one for the whole system as well. We should be beyond the point where the current near-total lack of unit or regression tests is acceptable.
- Better performance management and monitoring tools. How many of you have used PerfMon on NT? The way it’s implemented is kind of crufty, but the flexibility and functionality it provides makes Linux look really bad by comparison. It should be a standard part of Linux kernel or major-subsystem (e.g. database, webserver) development to define and export counters for a general tool like PerfMon to use. A lot of the bickering on linux-kernel about where the bottlenecks are would be neatly settled by a five-minute session with such a tool.
- ACLs? I’m still not 100% convinced we need them, but they are more powerful than the current system and there seems to be a demand. In any case they’re likely to become a checklist item for a lot of folks soon.
Lastly, there’s one more thing I think Linux needs, but explaining why takes more than should go into a single list item. Linux needs a good forking. Seriously. Competition is good. The cabal – yes, there is one in effect, even if its exact membership is debatable – generally has good ideas and provides incredible value in bringing order to chaos. On the other hand, the Powers That Be sometimes suffer from severe Not Invented Here syndrome, and sometimes they use their bully pulpit to shout down perfectly good ideas that conflict with their own biases (or even projects that would compete with what they want to work on). Several have recently seemed to start believing that they’re omniscient, as though merely being a genius wasn’t good enough. Linus and the others deserve our gratitude, and our respect, but not worship or unquestioning obedience. They need a wakeup call, in the form of someone defying their wishes and achieving superior results in the process.
This will happen, sooner or later, one way or another. We have two choices:
- Embrace the possibility as a generator of innovation and healthy competition, and as a way to keep everyone honest and humble.
- Let it become a source of chaos and dissension, until someone else eats our lunch for us.
That’s it. There are no other choices. I know this will probably not “resonate” with the younger members of the audience, but I would compare the situation to a divorce. The most amicable divorces, where people still remain friends, occur when the people accept the reality and work together on making necessary change go smoothly. The messiest, most destructive divorces happen when people have stayed together long after their interests diverged and they’ve spent years learning how to hate each other. I don’t want Linux to turn into War of the Roses.