[ Monday, 4 February 2008, Keyto ]
This article might seem to be not serious, or even a little bit heretical. Well, so be it. I’ll write what I think I should write and what I see as true. Whether is it the same in your case — dear Reader — we’ll see. First of all, let me ask you a basic question: Which system do you use? What are the possible answers? Windows, Linux, Solaris or Mac OS X of course. But let us try to think different for a moment. Maybe it is possible, that this answer would be, for example KDE?
Let me get this straight — this idea seems a little bit odd at the first glance. Everybody knows that KDE is a graphical environment just like GNOME, Aqua or Aero are. Graphical environment, and that means only a part of an operating system. But the the fact is that 99.9 percent of users are interested only in this small part. Maybe you’ll say that this is just beating the bush, but I seriously think that what counts for an average user is not an operating system but rather an environment they use to work with. A graphical environment of course.
Please take a quick look at a picture below. It shows well known (and liked) GNOME desktop. What’s more, for a more experienced user it’ll look a little bit familiar — namely just like Ubuntu. Just like… because there’s only one little problem — it is not Ubuntu GNU/Linux. Especially it is not Linux at all. It is Nexenta GNU/OpenSolaris.
Generally speaking, the idea is quite simple. Computer system is a complex organism. There’s a module assigned to each task. One can exchange those modules as long as new modules guarantee the same functionality. If KDE is not good enough for a given user it can be exchanged for GNOME. You can replace vim editor by Emacs; bash interpreter by tcsh and so on. There’s nothing wrong with saying that even the kernel might be exchanged for a different one (but no one seems to state that this is simple). Nexenta is based on Ubuntu (that is the actual reason why it looks “a little bit like” Ubuntu), whereas Linux has been replaced by OpenSolaris. And what happened? From an average user’s perspective — nothing, completely nothing. You can still browse web sites using Firefox, GIMP is still the same good old GIMP and black terminal window still understands well known commands of the bash interpreter. If we don’t mind that Nexenta is still in its alpha phase (which means it is quite unstable) and that icons are a little bit different than in Ubuntu, we may take risk and say that an average GNU/Linux user will not notice any difference between (just installed) Nexenta GNU/OpenSolaris system and Ubuntu.
We owe OpenSolaris kernel to Sun Microsystems. Since opening the source code by Netscape in March 1998 appeared as a really great idea, some companies decided to transform commercial licenses of their products to open ones. In 2005 Sun had at least one great success in this field on its account. I think of StarOffice, whose open source version — OpenOffice.org — I am using just now writing these words. Last year (exactly on January 25th, 2007) Sun began opening of its greatest work, namely Solaris operating system. On June 14th, 2007 source code was finally published and a special kind of license has been used (similar to the license made by Mozilla) — Common Development and Distribution License (CDDL).
The in-depth description of Solaris is a good subject for a couple of separate articles, but I believe that most of readers at least heard something about this OS. For those who heard only the name and know nothing about the system I owe a few words of explanation. Solaris, just like Linux, belongs to the UNIX family. In fact I should state this differently: Linux belongs to the UNIX family, just like Solaris does, since Solaris is much older than Torvalds’s child. It is the most stable and well designed product of information science’s thought. It is enough to say that it is used by NASA for its space shuttles and International Space Station (ISS). As for construction we may say, that generally Linux and Solaris’ kernels are almost the same. This is because both are so called monolithic kernels. What does it means?
Kernel — technically speaking OS by itself — is a program that is active as long as computer runs. Kernel provides an environment for other applications to run. Abraham Silberschatz put this in the following way:
An operating system is similar to a government. Like a government, it performs no useful function by itself. It simply provides an environment within which other programs can do useful work.
The problem is that I don’t know exactly how I should understand this. You may choose any book you like on this subject and you’ll read there that operating system is something between hardware and software, managing the first one and the second one as well. But what does it really mean? Is OS a kind of semaphore, that just simply enables and disables the access to the resources, or is it the case that it can have some software to manage those resources? Let me illustrate this with a more precise example. Let us say, that GIMP wants to save an image. We have two options here.
- The first one: GIMP communicates to the kernel that it needs some hard disk resources, and when access is granted it transfers the task of saving the file to some hypothetical hard disc management program.
- In the second case, GIMP can manage hard disks on its own and just simply asks the kernel for permission to write a file and kernel does the rest (i.e. it saves the file).
The second example illustrates a monolithic kernel. Just like Linux, SunOS is exactly this kind of kernel. So replacing Linux by OpenSolaris was difficult, but possible (things go simpler if you remember that it is possible to run Linux apps on SunOS).
So to sum up this part: Nexenta’s authors “just replaced” one kernel by another. The rest of the system is based on GNU/Linux (namely Debian/Ubuntu), so there’s a chance that a user working with Nexenta will get the impression of dealing with Ubuntu. This is of course possible as long as our user will not come up with an idea of installing a new application. I shall tell later about this.
Indiana OpenSolaris, but not only…
OK, but one may ask whether Nexenta is the only such project? The answer is: no, but it seems to be the most advanced one. First of all I should mention the solution made by OpenSolaris. Works are still in progress, but you can see effect by downloading an ISO image of a system code named Indiana. We download it, run it and it appears that we’re dealing with GNOME again. TODO: And now for a little bit to much simplifying things. Imagine that we change wallpapers, icons and other look and feel stuff — our user still should not recognize the difference between Nexenta, Indiana or Ubuntu. Why? Because in each of these cases our user deals with GNOME interface, coreutils tools made by Free Software Foundation (and as for Indiana and Nexenta even with the same kernel).
It is worth mentioning that since a while there have been a few other projects based on OpenSolaris code. The most important ones are SchilliX and BeleniX.
SchilliX is the oldest one. It is based on a kernel prepared by Sun Microsystems. It is a Live CD distribution, that includes only free software. One interesting thing is that it was released (marked as 0.1 version) just three days after Sun published the source code.
BeleniX (developed by Indian Sun department) is also a Live CD (although it might be installed on a hard drive). When Indiana as the main product of OpenSolaris comes only with GNOME, in BeleniX we find KDE and XFCE environments as well. The name: BeleniX comes from the name of Celtic god Belenos, who was the god of sun. As for Sol it means sun of course. But let us leave Solaris for a while…
GNU/just simply GNU
The GNU system since its beginnings was meant to be an autonomous product. Software tools that we all well know, and which are used in distributions like OpenSolaris and Linux family distributions, were — according to the plans — supposed to be enabled to work by the Hurd kernel. To this day it is not so. But… Debian project includes a port of this system with Hurd kernel implemented. Differences between Sun’s child and the penguin OS are not so big, but when it comes to Hurd those differences become really huge.
First of all it has to be stressed that — from technical point of view — Hurd is a so called microkernel. Microkernel, just like the name suggests, is a minimalistic solution. It provides only the necessary functions like threads and processes management, inter-process communication and interrupts management. Other functionality is assured by servers. I only remind here that for programmer server is not “a huge computer with a lot of processors and hard disks”, but a program that enables resources sharing. So we have networking servers, display servers, process servers, device driver servers and so on. This idea is well expressed by Hurd’s logo — set of interconnected blocks. Hurd is often called “a server set”. One interesting feature of Hurd is that user can add his own servers, which influences operating system performance and functionality.
When we are talking of Debian we should mention that except GNU/Hurd there are also Debian GNU/FreeBSD and Debian GNU/NetBSD projects. Yes, you got it right — GNU systems with BSD kernels.
So, where’s the catch?
As you may see there are a lot of systems with kernels other than Linux. So it seems that — at least in theory — one might replace “Linux” with Nexenta or Indiana and a user would not even notice that. The question arises — where’s the catch here? Oh, here’s the catch: quite a big one, I assure. There’s nothing much to write on, one word should do the trick, and that word is: drivers. A plural from driver. All Linux users know this problem very well, because it looks like the greatest problem for GNU systems. The lack of drivers for some rare printers or scanners, TV cards, network cards and so on. When we talk of drivers for Linux we may say that there are some — kindly speaking — problems, but as for drivers compatible with OpenSolaris kernel the situation looks much worse. I was able to run every system described in this article. I had only few problems with Nexenta. I’ve installed it on several machines and it worked well. But with the rest I had some serious problems. I managed to install BeleniX only on one out of four computers that I gathered for testing, but neither network card nor modem worked out of the box. I still have no idea how to force USB to work, and there’s no floppy drive on the machine. That is why there’s no BeleniX screenshot in this article, actually. They disappeared as I turned the power off. Indiana had also its humors. I didn’t manage to run network on any of the tested systems. SchilliX seemed to work without problems, but only until it crashed randomly. On all computers. I had to stress that probably all those systems can be fixed and configured to work properly, but a specialist would be needed to do this. For and average user those distributions are out of range. And I predict this will be the case for a long long time from now.
As for Debian GNU/Hurd installation I’ll call it a real adventure. I had a lot of work installing it. And just a note for you, my Dear Reader, who want to try this system — don’t copy my mistake and do read the documentation before performing the installation. I was a little bit lazy and I haven’t read it, and as the consequence — after a few missed tries — I had to study documentation very carefully. There are some differences even in the installation process. Just a short example. At the beginning I got “caught”, since I haven’t noticed that GNU/Hurd had no default boot-manager, and — despite successful installation — the system refused to boot. What’s more, on my machine it is highly unstable and it takes a lot of hard work to change it.
Yes, drivers are the biggest problem. The second one is how much additional software can you get for your system. In theory you can run Linux software on OpenSolaris, but…
First of all sometimes it happens that the theory comes true (libraries, dependencies, configuration, licenses and so on). Further, programs should be compiled for the environment in which they work — e.g. efficiency might be a good reason for this. Since I still defend my thesis emphasized at the beginning of this article, I stress that it is not users who should care, but the developers. If Nexenta had repository at least similar to Ubuntu’s (as it is planned for the stable version), there will be no difference for “average user” in using Nexenta or Ubuntu — it is still good old GNOME.
By writing this article I wanted to achieve two goals. First of them you may call a semantic one. GNU/Linux is often called just simply Linux. Generally all users are aware that this is a mistake. Linux is just a kernel. My opinion is that it is not a mistake — it is a big mistake. GNU/Linux system is basically GNU and then Linux. As you may see Linux is replaceable and people involved in Free Software Foundation are right when claiming that when a name of a distribution based on the Linux kernel is shortened to eliminate the ‘GNU’ part, it depreciates their work. I want to make it clear, I don’t want Linux users to add GNU to the name every time and all the time. We all know GNU/Linux as Linux. “Name shortening” is an ongoing and irreversible process. In my opinion however we should speak and write this ‘GNU’ to stress the meaning of it. You want to shorten the name of your system to “Linux”, fine, but be aware that it is a semantic mistake.
Now I’ll repeat, what I’ve put in the introduction. Average computer user needs no knowledge about “Linux system”. This user needs knowledge about graphical environment only (GNOME or KDE). It is not all, after becoming familiar with this working environment it has an open way to many operating systems. Is it really a difficult task for a user of Ubuntu LTS to start using Solaris 10? After all Sun Java Desktop environment is based on GNOME and very similar to it. It looks just the same for Kubuntu and PC-BSD. I mean here only a normal, every day work with your computer. Of course there are differences between kernels of Linux, FreeBDS or SunOS. Well, they are rather big ones! But do you, my Dear User, know the differences — please, be honest answering — between, let us say, threads management in those projects? If you do know what thread is (without checking it in Wikipedia) — congratulations. If you don’t, it makes no harm. What do you need this knowledge for, anyway? I assume that you are a great specialist in your domain, and not knowing anything about threads doesn’t depreciate your position as the specialist, and does not make GNOME work different, either.
- A. Silberschatz, P. Galvin Podstawy Systemów Operacyjnych (Operating System Concepts) WNT
- OpenSolaris — http://www.opensolaris.org/os/
- Indiana — http://www.opensolaris.org/os/project/indiana/resources/getit/
- Nexenta — http://www.nexenta.org/http://www.genunix.org/distributions/belenix_site/belenix_home.html
- BeleniX — http://www.genunix.org/distributions/belenix_site/belenix_home.html
- SchilliX — http://schillix.berlios.de/
- GNU — http://www.gnu.org/home.pl.html
- Hurd — http://www.gnu.org/software/hurd/
- Debian GNU/Hurd — http://www.debian.org/ports/hurd/
- Debian GNU/kFreeBSD — http://www.debian.org/ports/kfreebsd-gnu/
- Debian GNU/NetBSD — http://www.debian.org/ports/netbsd/
- Free Software Foundation — http://www.fsf.org/
Translated by Paweł Łupkowski, Proof-read by michuk