Wednesday, March 08, 2006

On Linux

Or, why GNU/Linux isn't going to take over the world just yet.

I just spent a gruelling weekend installing the excellent open source Player/Stage/Gazebo robot simulation suite of programs. I know... sad or what. But Player/Stage/Gazebo is really essential toolkit for hard-core roboticists.

Now I'm no Linux virgin. I first installed Linux on some real lab robots early in 1998. It was quite a challenge to shoehorn Linux into a 25MHx 386 processor with 4MB RAM and a first generation 80MB solid-state disk drive. We had first generation wireless LAN cards (well before the IEEE 802.11 aka WiFi specification was established), and the Linux drivers were somewhat experimental and needed a good deal of tender loving care to compile, install and coax into reliable operation. More by luck than judgement I used the excellent and highly respected Slackware distribution of Linux. Slackware's organisation into (floppy) disk sets made it very easy to install just the parts I needed. For example, the robots have no keyboard or display. Access is wirelessly via telnet/ftp/http so there is no need for X-windows or any of the usual GUI superstructure that desktop installations need. So Slackware lent itself to a lean, mean stripped-down embedded installation.

The other thing I liked (and still do) about Slackware is that it is not at the bleeding edge of Linux, but takes a very cautious and conservative approach to keeping up with new versions of Linux kernel, libraries and so on. For this reason and deservedly so Slackware has a reputation for reliability. It's an operating system you can install and forget. It was a good decision because the LinuxBots, as they then became known, have been used since in many multi-robot projects with very high reliability.

Having said all of that you may be surprised that it was only about two years ago that I switched from MS Windows to Linux on my trusty workhorse laptop. I tried with Windows, I really did. On my previous Toshiba Libretto Windows 95 was fine and reliable, but this HP laptop came with Windows 98 pre-installed. Hopeless. I migrated fairly quickly to Windows ME (even more hopeless) then to XP. It crashed inexplicably on average about once a week. I got used to that. I got used to having to worry about up-to-date virus checkers, and then windows security updates, and then spyware checkers. In retrospect it was amazing - I was nurse-maiding my computer's operating system! (Mostly because of one killer application: MS Outlook.) Finally after one crash that proved unrecoverable (FAT table corrupted) I gave up and installed Slackware.

Bliss. It boots in a quarter of the time. Gone are the inexplicable flurries of disk or network activity that happen when you've done nothing. Gone is the paranoia of worrying about viruses or spyware or security updates. Running Linux my laptop is sweeter, cooler, more responsive and, best of all, in two years it has never, yes never, crashed.

So why am I complaining?

Well the achilles heel of Linux is that installing new software is not as straightforward as it should be. I should first explain that in Linux it's quite normal to download source code then compile and install; actually that's the easy part, since there are very simple command line scripts to automate the process. The problem is deeper. In fact there are two problems: pre-requisites and version dependencies.

Now Player, Stage and Gazebo are complex packages. Not-surprisingly therefore they require other software (toolkits, libraries, and so on) to be installed first. These are the pre-requisites. Gazebo, for instance (which provides a 3 dimensional world, with physics modelling, in which the simulated robots run) required me to first install no less than five packages: the Geo-spatial Data Abstraction Library (GDAL), the Open Dynamics Engine (ODE), the Simplified Wrapper and Interface Generator (SWIG), the Python GUI wxPython and the open GL utilities library GLUT. Phew! But wxPython is itself a complex package, with its own pre-requisites. The pre-requisites have pre-requisites!

And as if that isn't enough to contend with when I tried to install Stage I discover that it needs the GIMP toolkit GTK+ of at least version 2.4. My GTK+ is only version 2.2. That's a version dependency.

These are the reasons Linux (marvellous as it is) isn't about to take over the world just yet.

What GNU/Linux needs is a distribution independent universal installer that will analyse your existing system, figure out the pre-requisites and version dependencies for the new package you want to install (and do that recursively), then get on and do it while you take the weekend off. Maybe there's already a sourceforge project to do just that, in which case I say 'huzzah!'.

But was it all worth the effort? As Keanu Reeves would say "hell yeah!". Player/Stage/Gazebo is a robot simulator of truly awesome power and versatility.