Lou's Views: It's Magic Wand Time for LinuxJan 05, 2001, 13:52 (57 Talkback[s])
(Other stories by Lou Grinzo)
Here we stand, at the beginning of a new year, awash in the hopes and good intentions that flipping the last digit of the date always instills in people. And on the Linux front, there's even more reason than ever to be optimistic. In the last year Linux has turned into a binary juggernaut, kicking virtual butt and taking names in the server segment and getting ready to do the same in the embedded market. Even better, the 2.4 kernel which is just oozing with hardware support goodies has just been released. It's no exaggeration to say that Linux is coming of age right before our eyes, and maturing from a precocious and conspicuously talented teenager into a more than capable adult eager to take on the world. Heady stuff, indeed, and reason enough for us all to stop and give the responsible developers a raucous standing ovation.
Of course, this success also brings along with it some unforeseen "opportunities" (read: challenges); Linux's success means it's outgrowing its niche faster than a teenage boy can outgrow shoes. And that in turn means it's continuing to expand into venues that play by very different rules. Put simply, hackers and server admins have very different needs in an operating system. Stretching Linux to the mainstream desktop is even more precarious, and is likely to induce vertigo and should not be done while operating heavy equipment.
All of which made it a perfect time for me to survey people I know who take Linux very seriously, and ask them what they'd do if they had a magic wand that was able to make just one change to Linux. These people are programmers, project managers, consultants, and journalists, and they all have two things in common: They like Linux, and they make all or part of their income with it. I intentionally restricted myself to this more mainstream crowd simply because it makes no sense to find out what the hacker or hobbyist community wants--they're not Linux's new turf. The H&H crowd will continue to use Linux as long as it's still recognizably Linux.
One of the ground rules of my survey was that by "Linux" I meant not just the kernel, but everything someone gets in a current distribution, including X, window managers, browsers, programming and system maintenance tools, etc. But I didn't specify the use for Linux--server, embedded, desktop, laptop, etc. I also promised my faithful correspondents anonymity; but I will say that every one of them is either known to LinuxToday readers by name or works for a company you'd all recognize instantly.
As expected, the people I asked weren't shy, and not one said anything close to "Linux is fine as is." Here's a slightly annotated summary of the responses:
* A friend and long-time programmer and consultant said: "Get rid of the root/user dichotomy. If Linux is ever to make it as a widespread desktop OS (i.e. Win9x), it must be made easier for Joe Layman to use, and I think the root/user split is a huge obstacle to that. When you can't change startup scripts, install/uninstall packages, etc. without switching to root, it simply places one more obstacle in the path of the user, who is usually the only person on the machine, and it's the only computer. These are, after all, personal computers." Yes, you can make lots of arguments about why the root/user thing is a Good Idea for security purposes, but my friend has a point: It often has too high a cost for the individual user.
* As expected there were numerous pleas for standardizing Linux. I've heard this many times over the years from professional developers who are driven nuts by the difficulty of building a mass-market product for Linux systems, no two of which are alike. As one person put it, "In short: LSB" [Linux Standard Base], while another observed, "When you are writing a Linux program, what platform are you writing for? The Linux OS needs to be defined."
I couldn't agree more. In fact, I've considered this issue at great length and talked to many people in the Linux area about it, but I have no idea how to make this happen. The biggest obstacles are the open/free nature of Linux and developers' penchant for spinning off new distros and hacks at the drop of a mouse pad. One can only wonder if the level of cooperation needed to create a meaningful Linux standard is inherently incompatible with our chosen development processes.
* A developer at a distro company wanted "more documentation on differences between Linux and UNIX, for the experienced UNIX programmer who wants to start developing for Linux." The same developer also said: "More documentation on differences between Linux and Windows (don't laugh!). Some people criticize how Linux does things compared to Microsoft Windows (e.g. no registry). But ever more critical many people don't know what we do instead. They don't find what they are familiar with so they give up. Not enough orientation hints and examples are available for non-UNIX programmers. Portable (platform-independent) libraries like Qt are of big help here. It's really easy for someone using Qt under Windows to port his app to Qt under Linux. There are also good standards very few people know about, like the UDI model for writing device drivers. Linux does start to support that API. We have to make more people aware of that. Also kdevelop has become a quite powerful tool for GUI developers but people don't know about it so they don't search for it."
In a similar mindset, a professional developer and teacher said: "It would have to be the documentation. Not documentation on how individual programs work, but system documentation: Well-written manuals (online or printed) that tell where things are, and how to perform common tasks. Things like 'how to set the system clock' (something that took me an hour to figure out, what with having to set the system clock and the hardware clock). Different distros put things in different places (the FHS [Filesystem Hierarchy Standard] is, after all, only a guideline that not everybody follows), and some even have different names for the same things. Linux distributions typically assume way too much knowledge on the part of the user."
I strongly agree with all these documentation comments. In particular, bridging the gap between Windows and Linux for developers has been a concern of mine for some time, and something we'll be actively working to accomplish. Watch for the upcoming announcement of the SourceLib project on LinuxProgramming.com for one way we can all help jump-start developers (both newbies and Windows converts) in their Linux work.
* Another distro developer added: "If I could change one thing it would be to have one uniform object model system on the level of Microsoft's DCOM."
I'm honestly not sure about this one, and I wonder how important it will be. My gut instinct is that it would help, as the object-level interface is likely to become the de facto system API over time. What's your opinion?
* From a distro company came the wish for "a top notch web browser, fully compatible with MS IE". Hey, I like Netscape Navigator as much as the next person it mysteriously crashes on, but once again I have to agree. I'm tired of Linux users being second-rate citizens on the net.
* A developer at another large and very well known project (but not a distro) wanted to "fix the command line experience of Linux-based operating systems so that using a term window would be an option, a choice--not a requirement as it is now. Technically this involves a lot of work both on the graphical front and application level, to make applications, devices, and hardware easier to install and configure, and to provide the appropriate instructions and tools for doing so. Linux needs to be accessible to more people if it is going to succeed down the road."
Everyone who disagrees with this one will now sprout wings and fly to the moon. But this reminds me: Once and for all can we please put to rest the bizarre (and just plain silly) notion that making Linux easier to use necessarily means "dumbing it down"? Eliminating the need to use a command line in no way means the command line will disappear; I'm quite sure it will always be there in Linux, and I'm equally convinced that Linux will always be infinitely configurable by hand. Linux currently is a perfect example of "one person's feature is another's barrier to entry", to coin a phrase, and the sooner we eliminate that barrier, the better.
* From the "we'll create perpetual motion right after lunch" dept. came: "That's easy: Run all Windows programs at least as well as Windows does."
Sure, I'd like to see this happen, too, but I'm not holding my breath waiting for it to happen.
* There were numerous complaints about X, which seems to be everyone's favorite scapegoat lately. Some people want better configuration, some wanted to replace it entirely, and one developer simply wanted to unify the user base on a recent version that wasn't "a remnant of the 80's" and included first-rate TrueType font support and anti-aliasing. On a related note, someone else wanted a unified typeface engine, another point I certainly can't argue with.
* To no one's surprise, system configuration popped up several times in the responses. A consultant and writer said: "I'd eliminate the reliance upon all kinds of crazy text files for system configuration and move to a database-driven system like NT uses." Another had a less Windows-esque and probably more palatable solution, even if far more ambitious:
"I'd wave the wand, and suddenly all of the configuration utilities would merge into one no-brainer ease of use utility that worked dependably and covered the entire system (and all subsystems). It would use mom and pop terminology and run from a web browser as well across a network. Something like Yast + Lisa + LinuxConf + the Red Hat control panel. It would be standards based, but write to the normal text config files and know when or what daemons to stop/start to make the magic happen. It would put the Windows 'out of control panel' to shame.
It would be extensible in other words, and easy to find, in exactly the same place on the menus in all distributions. It would also run in a terminal window (curses based) from a command like 'setup'."
* Before I imposed the "just one wish" rule, one person, a very experienced programmer and full-time Linux user, asked for the whole nine yards: "I'd get rid of both X (which sucks badly) and the init/runlevel stuff Linux inherited from Unix. Linux (and other *nixes) badly need a better init/security/authentication mechanism. I'd also can the stupid lpr/lpq dinosaur and its derivatives, and give Linux a real printing API (GNOME-print is coming close, but it's still pretty weak in a lot of ways, and the same applies to CUPS).
Nothing too major, right? ;-)"
Nope, nothing too major, but more important, nothing that's easy too argue against, either.
As for my magic wand wish, I'd fix the endless "shared misery" library issues that plague Linux users. To some extent this overlaps with the standardization issue, but not entirely. In my opinion, the current practice of how libraries are built, distributed, and used under Linux is a mess that only makes everyone's life tougher than it has to be. Installing a custom library (or a special version of a standard one required by a particular app) should require no more work than copying the library to /usr/lib (or some other special directory), period.
Obviously, there's quite of bit of renovation and expansion work to be done on Hotel Linux before the rest of our would-be guests move in. Some is just minor repair and paint work, some involves major construction like knocking out walls, installing an atrium, or adding an in-ground swimming pool or an entire wing. I'm confident the Linux developers up to the task, though. (I wonder if there's anywhere online we can get yellow construction helmets with Tux on them. Hmm...)
Finally, my sincere thanks go out to everyone who responded to my survey e-mail. You know who you are.