Friday, October 9, 2009


The Importance of GNU

If you are a Linux fan, then you probably know something about the GNU utilities. In short, Linus Torvalds (and others later) used the GNU utilities to write the Linux kernel. But before that happened Richard Stallman realized back in the 80's that computer users needed a portable operating system.

What we see happening over and over again is any hardware system will eventually become obsolete. In Stallman's case it was the PDP-10 system. Over time the system became obsolete and for some reason a lot of Stallman's early programming work was lost, perhaps because it was written in assembly language. Stallman, or RMS as he is often called, realized for any operating system to survive the passage of time it needed to be a portable system.

RMS decided he would be the one to write this new portable system and not only would it be portable but it would be free as well. In this case the word free refers to freedom: the source code of the operating system would be free to modify and exchange with other programmers. RMS decided to base his new system on Unix and that at minimum the computer needed to be at least a 32-bit system. This was a task of Herculean proportions.

Unix was a good choice in that it was compartmentalized and it was relatively straightforward to replace each Unix component with it's GNU replacement. (For anyone who doesn't know: GNU is a recursive acronym that means 'GNU is Not Unix'). Bit by bit RMS worked and by the early 1990's he had almost a complete system. Only one major part was missing and that was the kernel.

As we know Linus Torvalds wrote a kernel and then people started to use the GNU utilities to create a complete operating system. Of course there were many contributions from different places, but the two most important parts were the GNU utilities and the Linux kernel.

It is important to remember Stallman's original objectives: to write a free operating system and insure that it is portable. Basically his objectives were met and we now have several free operating systems. But it is also important to remember that Linus needed a compiler to write the Linux kernel and that compiler was the GNU C compiler gcc.

We can see the critical importance of portability: Hardware will grow old and die and manufacturers will cease to make replacement parts. They will only concentrate on new hardware. So the time will come went one will need to port a program to a new architecture. Fortunately this is made somewhat easier with the GNU utilities. Using the GNU utilities I've started to port programs which I felt were missing from the Sharp Zaurus SL-5500 PDA.

Now even though I have a lot of ideas on how the GNU utilities could be made better I can easily see how valuable a toolset it makes for any programmer. I'm sure that given enough time I could port any GNU utility or any program under the GPL (although I admit it would be a ton of work in some cases). Once I started to port programs I felt quite liberated. So what if my PDA didn't have an IRC client, it couldn't be that hard to port one, and it wasn't :)

This page is powered by Blogger. Isn't yours?

Subscribe to Posts [Atom]