Linux and OpenSource

On these pages I will try to explain what Linux is, describe my experience with different Linux-based systems, and explain why I find the world of OpenSource software so intriguing. Some other pages are concerned with different issues regarding the configuration of various software packages under Linux, and I also have a Linux security page, although it currently holds only a single report I have written on the subject.

What is Linux?

Linux is the kernel for a computer operating system, originally written by Linus Torvalds while he attended the University of Helsinki. Linus released the source code for his kernel under the terms of the GNU General Public License in 1991, and since then thousands of developers from all over the world has contributed, turning Linux into a huge achievement in OpenSource (and in the public, probably the most well known).

Although the term Linux mainly refers to the Linux kernel, it is now commonly used to describe entire Unix-like operating systems, consisting of the Linux kernel and an overwhelming amount of system utilities and libraries, a lot of which are developed by GNU, mainly for the GNU/Hurd operating system. Richard Stallman, founder of the Free Software Foundation, argues that these systems should be called GNU/Linux-systems.

If you want to run Linux, you will not get far by only downloading a kernel. What you need is a Linux distribution.

What is a Linux distribution?

A Linux distribution (also known as a distro) is an entire Linux-system, comprising the needed kernel, libraries, utilities and applications. To get your feet wet, you could try one of the LiveCD distributions, which can run off a bootable CD without the need to install anything on your computer. Examples of LiveCD distributions include Knoppix and the amazing Ubuntu which is becoming very popular due to the easy of use (and configuration).

Of course you can also install a Linux distribution on your harddrive, giving you all the benefits of these systems, and providing better support for customizing and saving work on your system.

Which distribution to choose is not always an easy question to answer. Some of the popular distributions are MandrivaLinux (previously known as Mandrake), Debian GNU/Linux, the Fedora Project (an offspring of RedHat Linux), SUSE Linux (which has been acquired by Novell), Ubuntu (which has been gaining a lot of popularity lately, due to the effort of making a Linux distribution with the emphasis on easy installation and configuration), and my personal favorite: Gentoo Linux. Although I have my own choices of distros for different occasions, I urge you to check out your options before choosing a particular distribution. You can find a lot of information regarding different Linux distros at http://distrowatch.com/.

My experience with Linux has taken me through a couple of different distributions. I started out using RedHat Linux, since this was the distribution of choice, both at Ostenfeld Kollegiet (dormitory), as well as at The Technical University of Denmark when I first started using Linux. At this time I was running RedHat 4.2. I also tried out Mandrake Linux, which was at that time based on RedHat, but provided some extra applications. When RedHat decided to focus their efforts on their Enterprise Linux, and dropping support for their 7.3-version, I decided to switch to Gentoo.

Gentoo is a little different from most other Linux distributions, in that it is a source-based distribution. In essence this means that you normally compile all (or most) of the software yourself, allowing it to be optimized for a particular hardware setup. Although this may sound like a lot of work, I think the Gentoo developers have done a fabulous job of making this kind of distribution easy to use. The installation and upgrading of the software is achieved with a few simple commands, but of course the work for the computer is a different story alltogether. The compilation of everything from source can easily take hours, or even days, when you setup a Gentoo system. I consider Gentoo a power-user Linux distribution, allowing extremely many aspects of the software compilation to be tweaked to your likings, but unfortunately this also occasionally means that you have to spend some time getting a few wrinkles ironed out when upgrading your system.

For this reason (as well as the compilation time), I prefer using Gentoo on desktop and other non-critical systems (such as my arcade machine SpiffMAME and my MythTV-based PVR SpiffPlayer), while I have gone with Debian as my distribution of choice for servers. Debian has a stable branch, which is extremely thoroughly tested, and although this means older versions of most of the software (and hence fewer features), I find that stability is of paramount importance on servers, so this is the way I have chosen to go. Although old versions may sound scary in terms of security updates, the Debian developers do an outstanding job of providing security updates, so this is not an issue.

Why is Linux better than other systems?

Well, first of all, who told you that Linux is better? I really think it depends on the situation. That being said, I do think Linux and other OpenSource-solutions can often provide a better system. I consider the main hurdle towards being able to use Linux and other open system everywhere to be mainly related to the interoperability. This is closely related to large software vendors success in locking in the users, and forcing them to rely on proprietary software solutions. I find it all too common to receive e-mails with attachments in Microsoft Word or Excel formats, although the information could just as easily have been in plain-text. In essence they are expecting me to pay several hundred dollars for an office application suite (or use pirated software), just so I can see how nicely they have changed the font of the title of a document.

In this respect the main problem is the education of other users, and the only thing that I can do about it is to tell those people that I prefer to use other alternatives, such at OpenOffice (which, by the way, has allowed me to open many of these documents anyway, but it is still quite annoying to be forced to start a word processor to get a simple "hi"-message). These problems of interoperability basically boils down to having people understand and support open standards, which is unfortunately not always possible, e.g. in companies etc.

Using Linux on the desktop is still a bit difficult for many individuals. They seem to think that using a desktop environment on Linux is very different from using Windows. Several attempts have been made to make this transition easy, such as the XPDE desktop environment and the Linspire distribution. I really believe anyone could use a Linux desktop system if they would just try. Configuring and administering a Linux-box is a separate issue. I hold Microsoft responsible for teaching people than anyone can administer their own machine, installing whatever software they think they need, and I believe this is one of the major issues in regard to computer security. The average person is just not conscious enough about computer security. They seem to think that nothing happens if their computer is compromised. Although they may not have sensitive information (such as passwords for home-banking applications) on their computer, they forget that if their computer is compromised it may be used by evil crackers to mount other attacks or to send unsolicited junk e-mail (spam). For this reason I still think there is a need to differentiate between a user of a computer and an administrator (who would need to be security conscious). I don't know if the new easy-to-install Linux distributions will cause problems with users who are not thinking about security, and if this could make Linux systems just as "insecure" as Windows is (at least when running Windows 98 with an always-on connection to the Internet, and the owner never heard about windowsupdate). Hopefully we will be able to provide systems that are easy to use, yet secure, and teaching the users why some features are not available because of security issues.

What is Free Software, copyleft and OpenSource

The term "free software" was coined by Richard Stallman who also founded the Free Software Foundation. It is important to note that in this sense the term "free" is related to freedom, not price. Or in a phrase that has become quite used: "Think free as in free speech, not as in free beer". The terms under which a piece of software must be released to be free software can be found in The Free Software Definition. Basically Free Software means the availability of the source code to anyone, allowing the study of how the program works, allowing free distribution of the software, and allowing you to improve the software and release your improvements.

A lot of free software is released under the terms of the GNU GPL, which is a copyleft-license. The copyleft (apart from being a word-play on the term copyright) means that in addition to the rights mentioned above, there is a restriction that the software once under a copyleft license cannot be "closed". In other words, if you make improvements to a copyleft piece of software, you are not only allowed to release the source code, you are actually forced to do so. This is a way of ensuring that developed software which is based on free software will return to the free software community for the benefit of anyone who may need these features or wish to improve it further. So basically copyleft is a subset of free software, and the GNU GPL is a copyleft license. The free software foundation has a nice list of licenses with a description of each, and whether it is free software, copyleft or compatible with the GNU GPL.

The Open Source Initiative (OSI) is a non-profit organization that promote Open Source as defined in the Open Source Definition. This is quite similar to free software, but has been created to give commercial software vendors a better opportunity to release their software. As Eric Raymond puts it in his The Revenge of the Hackers (also in his excellent book The Cathedral & the Bazaar):

"In conventional marketing terms, our job was to rebrand the product, and build its reputation into one the corporate world would hasten to buy."

So why is OpenSource better?

In essence, the ability to find software that does most of what you want and being able to tailor it to your needs is the main philosophy behind Open Source software. While some people say that they rely on proprietary software products because it makes them feel that there are someone they can hold accountable for problems that may arise, the reality is that this is a false sense of security. As Eric Raymond points out:

"One thing many people think the traditional mode buys you is somebody to hold legally liable and potentially recover compensation from if the project goes wrong. But this is an illusion; most software licenses are written to disclaim even warranty of merchantability, let alone performance - and cases of successful recovery for software nonperformance are vanishingly rare. Even if they were common, feeling comforted by having somebody to sue would be missing the point. You didn't want to be in a lawsuit; you wanted working software."

Open Source software is all about options: Say you need a particular function in some software package. If you use proprietary software, you are at the mercy of the software vendor to add the feature that you need, which in turn means you have to persuade the software vendor into thinking that the work put into implementing and supporting the feature will be beneficial to the software vendor (not to you). On the other hand, if you are basing your solution on Open Source, you have the choice of adding the feature you need in-house, or paying a third party to implement the feature. In either case you have control over the developed software, and you can choose to port this to other platforms etc. if the need should arise. You are therefore better protected against the software no longer being supported, or even worse, no longer being able to function properly because of changes in other software packages or libraries.

Also, once you have made an enhancement to an Open Source software product, it makes a lot of sense to release this back to the community (of course if the original software product is under a copyleft license, you are forced to do so). You have already paid to have this feature developed, so there is no cost in sharing this with the community. Actually you will most likely save yourself a lot of work by doing so, since others will use your code and build even greater enhancements, and you do not have to worry about re-merging your additional features into the software each time a new version is released.

A lot of the points presented here are based on Eric Raymonds The Cathedral & the Bazaar, and I share many other points from this essay (but I am too lazy to copy all of his work). I highly recommend reading this essay (and the other writings Eric has done), either online or in his book by the same name.

Last updated: 2012.04.30