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.