But there's really nothing I want to say about that. As Hemos says, "It's just a kernel." As I look down the features list, there's nothing that stirs my soul. devfs? Ok, that's kind of cool. Nothing I'd go to war over. iptables? Great; I get to learn how to set up masquerading for the third time. I can mount my filesystems more than once now? Well, ok... S/390 support? Well...
I decided that instead of talking about my current relationship with the current kernel, I'd talk about the relationship between the kernel in general and the type of person I was a few years ago.
A few years ago, I was a computer handyman. I had a dozen regular customers who called me whenever they had a problem with their machines. When their pipes started flooding their basement, they called the plumber. When their printer stopped printing, they called me.
If I understand his various "It's the desktop, stupid" comments, I believe Linus is in favor of a penguin in every home. I don't think it's just the corporate desktop he wants to conquer with world domination, but the home and small office desktops as well. In the long run, that may mean Linux running in every refrigerator, but for the foreseeable future, it has to include more tradition Linux usage.
I've previously said that I think the plumbers of the computer world will be around for the foreseeable future. Network appliances may snowball, but the PC won't become extinct overnight. As long as those PCs are around, someone needs to maintain them. People who don't want to be bothered with learning to fix them (any more than I want to learn how to fix my furnace) will get the kid next door or, if it makes them feel better to pay someone and hope thereby to make him more accountable, someone like me.
As long as people use PCs, there will be a market for the skills of technophiles who can make housecalls at homes and small offices to fix quick problems. These people would like to be working with Linux, and I think it should be made as easy as possible for them to do so.
Let's set aside the matter of adoption, and just assume that I, the plumber, have convinced at least some of my clients to let me install Linux on their machines. What are my demands? What do I need from the kernel and the people who package it and the software surrounding it?
Be forewarned that some of these demands may be completely unreasonable. Sorry about that. I'm a user. Making unreasonable demands is our job.
Demand #1: I want a Linux driver available for every piece of hardware on sale at CompUSA.
A common request made to plumbers is "I bought this digital camera/PDA/modem/programmable toothbrush at CompUSA yesterday. Please install it on my computer."
Many times, a client will just say she needs x, and you can stop on the way to her home and buy y brand of it, making a choice based on known Linux support. Other times, the choice is already made for you, and you have to do what you can with it. Unfortunately, sometimes the best you can do is ask "Say, do you still have the receipt for this?..."
Doing this casts a lot of questions on your head. "Why do you have to take it back and exchange it? What's wrong with it? It's the same one my friend Buffy bought, and hers works fine. Are you sure you know what you're doing? Maybe installing Linux was a mistake... You're not going to buy a more expensive one, are you? What do you mean you have to buy another modem? What's wrong with this 'Winmodem' that came with the computer?"
Supporting Windows may be unending misery, but at least when you buy hardware, there's a floppy or CD in the box with a Windows driver. It may not work (e.g., the HP combo printer/fax/scanners), but at least it's there. A Linux driver should be readily available as well, either on the CD in the box or on the Net or in the kernel. (This is an application problem, as well. For digital cameras, the kernel team just has to make sure USB is working, then we have to make sure gphoto supports every camera in existence.)
Sometimes the problem is not getting the hardware to work under Linux, but to make it work as well as it does under Windows. I bought a Visor Deluxe a couple of weeks ago, and last night I learned that it is indeed necessary to back it up from time to time. Luckily, I had just checked off most of the items on my todo list before the Visor locked up. When it finally came back to life, it displayed a message something like "Press the Address Book button to delete all your data, any other button to continue." I did what I thought was the correct thing (I'd like to go back now and confirm exactly what that message said), but the list of applications appeared with only the factory-installed apps showing. ALL MY DATA ARE BELONG TO VISOR.
I went back to the Web, grabbed new copies of all the apps I had installed (and kept them this time), then tried to reconstruct the bits and pieces I could remember of the information I had lost. I reinstalled everything and it took just over five megs of the Visor's available space.
The big problem now (there is a point, and I'm coming to it soon) is that I'm using a serial cradle to connect to my Visor, which means that:
$ time visor-backup.sh [snip...] real 51m52.027s user 0m4.490s sys 0m0.210s
If you watch closely, you can see the battery life evaporating in tiny clouds puffing out of the top of the device.
Obviously, I need to get USB working. At least I can do that now without (hopefully) too much trouble. A couple of years ago, I would have had to say "Yes, you're going to have to wait 10 times as long to back up your PDA as Buffy does, and buy new batteries for it every few weeks." Not welcome news.
Demand #2: For every feature of the kernel that it's possible to make available as a module, I want it to be made available as a module. In fact, I want that when it's impossible, too.
Modules are good. I'll confess my supreme unl33tness and admit that I like to compile a kernel as seldom as possible. Just give me a distribution-supplied kernel that comes with a module for everything I might want to do. Doubly so when I have to go to someone's house and work on his Pentium 166. If he's paying me by the hour, I don't want to sit in his living room for 45 minutes playing solitaire while the kernel compiles, only to reboot and realize I forgot to enable PPP (or, worse yet, only find out I forgot it when I get home and he calls to ask why he can't get online). modprobe foo.o is much more pleasant.
Demand #3: I want every distribution to include every module.
Just as he would have to work on a variety of hardware, a Linux plumber would have to work on a variety of Linux distributions, and would want to be able to modprobe foo.o on every system he encounters.
A couple of months ago, I decided to use fbtv to turn virtual terminal 1 on my desktop machine into a screen for my DVD console. I put it off because I didn't want to have to recompile the kernel to include framebuffer support for my Matrox Millennium. One day, I stopped to look, and there was a nice gift Debian had placed on my system: /lib/modules/2.2.17/video/matroxfb.o. I modprobed, and was done.
If I went to someone's house to set up the same system on his FooDistro machine, I'd want to find the same gift waiting for me.
Demand #4: I want every distribution to include versions of the kernel patched with every important patch.
What is "important"? Someone on the distribution team will have to decide that, but take the Linux Progress Patch as an example. It seems both harmless and useful (for dealing with technophobes), but I'm not going to take up an hour of someone's time and money just to patch and compile to give him a pretty boot screen. If I could instead apt-get install kernel-image-2.2.17-lpp, I would do it.
I realize this quickly degenerates into kernel-image-2.2.17-lpp-ext3-foo-bar-baz. I'm being unreasonable again; so shoot me. Maybe kernel-image-2.2.17-patches would work if a) none of the "important" patches caused conflicts with one another and b) people were willing to use a kernel with all of them applied (i.e., none of them were considered stability/security risks), especially if the features they added went into modules (I think those are good) instead of into the kernel itself, so people wouldn't have to use what they didn't want.
Demand #5: I want to be able to upgrade my kernel without rebooting. :)
She may put it off as long as possible, but there will be times when a security problem is found and a plumber will need to upgrade all her clients' kernels. This means either:
How is #4 accomplished (the technical aspect, I mean)? I don't know. Maybe we run Linux inside a wrapper OS which is simpler (hopefully less susceptible to security problems) and can be controlled remotely to shutdown and reboot the system running under it. Don't ask me; I'm just an unreas... Well, I told you about that already.