The hardships of installing new software on Linux. Despite our enthusiasm, we must admit, we have all experienced them. Missing dependencies, strange compiling errors, old versions of installed packages … Is this the problem number one on the road to complete Linux globalization? Small debate might be adequate.
The time when UNIX-like systems were a privilege to the geek and hi-techie community is long gone. We have seen package management systems, graphic installers, improved GUI interface and so many other novelties. If we simply ask ourselves why all this has been done, the most reasonable answer would be – reach to more users and make the Linux more user-friendly. Therefore, we can easily conclude that the Linux OS has set its path to something that its most fierce counterpart, Windows, has it for a long time – acceptance of the masses, people of all technical background profiles.
The bare truth is that the hardcore Linux users and enthusiasts do not scream for the GUI, they are actually hooked to the old terminal. Just five, maybe six, years ago I remember installing Linux Gentoo using two PC’s – one which displayed the detailed (and excellent) manual made by the Gentoo developers instructing me about the installation steps and the other one the actual PC on which Gentoo was about to be installed. Yes, graphical installer was available but it was in its early development – it was simply buggy. Actually, if I remember correctly, even the developers have warned us the users about its possibility to crash. Despite all gunzipping, manual copying and moving files, I really enjoyed it. My mind was already set to love that sleek console that the installer offered and I felt that feeling of self-accomplishment when I saw the root prompt.
However, we must face it – globalization is not possible without attracting the masses. And masses are attracted by easy and smooth usage. They simply do not want to see cryptic messages, integer overflows and linker errors on their screens since they simply do not care about them. All they want is to install and run their software as soon as possible. Even I have found myself in that position. Let me demonstrate with a simple example.
13:00 – I was trying to install a desktop grid server on my fresh SUSE machine. I needed to download a .tar.gz archive and by following the manual I should have it installed in no time. I downloaded it.
13:03 – The archive is in my home folder. A quick tar –xvf gives me a fine folder in which I see the source files organized in folder. My eye looks for the famous configure script. I do not find it. Oh, autoconf!
13:05 – I think that I do not have autoconf installed. Command not found. By default, the installer did not install it. I have to use Yast now, autoconf has to be installed!
13:10 – Have I told you that I installed SUSE on my laptop, so I can use wireless internet. Oh, no! The wireless card is not recognized by the system, so Internet is out of the question. It took me five minutes to try different options in that Network Manager.
13:20 – After thorough searching through the CD’s I finally got that SUSE DVD which I burned yesterday.
13:25 – The DVD is mounted, now Yast again (I remember times when removable media was not automounted. Had to browse through the dev directory to find the proper device name so I can use the mount command for that USB memory stick.) Autoconf found, autoconf installed. Yast is perfect! Thank God package managers exist.
13:31 – Configure script created. I happily run it. Oh no, configure error. Missing library. I look through the output of the configure script to get the missing package name. Strange, the software documentation hasn’t mentioned anything about it. Anyway, that’s why configure script exists, isn’t that right? I look through the output of the configure script.
13: 40 – Hmm, the library, according to what the configure script says, does not seem to exist in the repo. Strange very strange! I try different keywords in Yast for another …
13:45 – five minutes. I just realized that. I was reading the package descriptions trying to find the facts that I needed. I need to go to my PC so I can use Google. No Internet, remember?
14:00 – It took me fifteen minutes of intensive browsing to find out that the package name was changed in the SUSE software repository. Yes, finding the solution was accompanied by delicate looking through tons of forum questions and responses. I realize that I started the installation one hour ago – the configure is not yet finished. I run back to my laptop.
14: 02 – The new package is found and installed. The new name did not correspond with the old one. Funny, but hey, it had to be done. Ok, now I run configure. New error!
14:12 – Yes, ten minutes. The package was not in the repository, so I had to find the source on the Internet. It had few dependencies of its own, one of them which was not in the repository. So, yet another installation directly from source. Fortunately enough, all dependencies were installed. So I run configure. Makefiles created.
14: 17 – The software has lots of source files. Compiling in process. I simply stare at the screen.
14: 18 – Compiling error. No header file found? Shouldn’t configure take care of that?
14: 25 – According to the header file I use Google and find the name of the library. Installed from source files. Running make again. Hopefully it will finish now.
14:35 – The compiling is finished. There, I have my server now. Oh no, I just open the manual, there are some steps which must be undertaken. I have to implement the web interface to the servers manually.
14:37 – I finished reading the manual carefully. I know that new problems can emerge. I start carefully.
14:38 – So far, everything is good. I finished installing apache2. Copying files from the source directory to the newly created directory in the htdocs folder.
14:39 – I run Firefox to test the web interface. All I can see is that Firefox is constantly in the loading phase. Intuitively, I open the manual. Nothing about that.
14:40 – I finally get it. I had to change ownership to the new folders. wwwrun has to have the proper rights. I wonder, could a new Linux user come up with this idea, or he would spend another half an hour browsing through forums? The web interface is up too.
14: 42 – I decide to run the software from the console. It runs fine for 30 seconds, then … segmentation fault! I quickly run and check the architecture – it fits! That created a short lasting sense of fear – can I possibly be so ignorant and download software for another architecture?
15:00 – Oh, this was exhausting. I rebuilt the application, again segmentation fault. Finally, I did something out of despair – I added cout in one of the base classes constructors. It was more a debugging attempt; I wanted to see if the software dies straight away. (Take note, this requires C++ knowledge, accompanied by some experience in writing software). I recompile. Miracle, the software works! I haven’t seen anything similar so far.
So I glance at the clock. I have spent two hours in an installation of server software. It is not a big deal for me, I have spent even more. As I happily remember my eight years of constant Linux usage, I wonder – What if I installed Linux today? Would I be able then to install this application?
The bare truth is – Windows users certainly are. I am claiming this because I performed a simple experiment for this purpose. I sit next to a ten year old kid who just bought his computer with Windows installed on it. All I told him is that he has to double click in order to activate the installation process. I told him the name of the software and I watched him work. He quickly found the icon on the desktop and according to my instructions he double clicked it. He was presented with the usual Windows message boxes which he followed intuitively. On the greeting window he pressed OK, and afterwards few times the Next button. The software was complex so it took about ten minutes of installing. He clicked Finish finally. The software was installed and running. By a ten year old kid. In ten minutes. The most interesting fact was that he installed the exactly same software as it took me 2 hours to do in Linux.
With facts laid down on the table, I asked him “Why did you click Next and finally Finish? You did now know what you were doing”. He quickly replied “I was not interrupted. Next and Finish were obvious choices”. Fair enough. In a second I thought how this kid had no idea about the inability to adjust his software to his own needs and his exemption of his freedom, but… I guess the time and company was not right for that kind of discussion.
Let us summarize few facts from my fiasco discussed before. First, let’s create the user Joe which will be representative of the most common user group – decent technical education and also decent number of required applications for his everyday work. We aim to attract him to our team, right? Therefore:
- Non-intuitive installation steps. Yes, there is INSTALL text file, but Joe does not have time to read. He wants to spend his time on using the application.
- Bad hardware support. This has been greatly improved in the last year. As Richard Stallman has said in a recent interview: “The main shortcoming of Linux is at the level of device support. The obstacle there isn’t a lack of ability among Linux developers, but rather the use of devices whose specs are secret.” Absolutely true. We have all seen laptops and all kinds of devices with “Designed for Microsoft Vista” stamped on them. Linux developers are craving to get their hands to those specs, but it seems that complete victory on this field is still nowhere near.
- Poor scripting. Linux heavily uses scripts of all kinds. Scripts are written by humans and the human error is inevitable. A small error like the one I’ve experienced with the configure script, can cost Joe a lot of time. And Joe does not want to lose time on reinstalling and search for libraries on forums. Actually, Joe might not have all the technical knowledge to manage situations like that.
- Poor documentation. Many installation processes on Linux does not strictly follow the well-known configure, make, make install process. It has also many bysteps which are very, very often poorly documented. In other words, user support can be fairly weak.
- Repository-centralized installation. Package managers have made the installation process much smoother. However, if you want them to guarantee seamless installation, package managers are tied to the system’s official software repository. It is obvious that not all software packages are located there. And because of that, Joe can spend a lot of time, both in browsing and manual installing. Somehow, this problem is also linked with the mentioned bad hardware support. If somehow you lose or damage your installation DVD, then the package manager searches for the packages on the Internet which might not always be possible due to hardware support failure.
- Distribution-related problems. Different package managers for different distributions. Different errors on different distributions. One piece of software can run reliable only on SUSE, other on Gentoo… Many things are different. The diversity in the different flavors is without doubt one of the greatest proofs of the freedom and customization offered by Linux. But as we can see, it can easily throw the whole thing in unwanted direction – rejection by the masses.
Few things are for sure. Linux is taking large steps towards wide acceptance. Many governments are using Linux as official OS for their administrative workforce, mainly to avoid the costs coming from Microsoft. However, how many of those peoples who use Linux at work will install Linux at home? Mass acceptance does not come from highly controlled and forced installation; it rather comes from the internal desire of the individual. Until Linux wins the hearts of the non-techie individuals, it will not be seen as a global wide-accepted system. Its reign will be limited to server platform as well as OS needed to run highly-specialized applications. This is where Windows has won, and Linux is struggling against it. Although the process of software installation may seem like a small part of the overall system workings, it certainly it’s a great impression maker. Not for me, or for the other die-hard users, but for Joe. What do you think?
by Aleksandar Milenkoski