Three weeks ago, I decided to give up on my Windows operating system and try again using Linux (the Ubuntu release). Windows had been running fine for a while, but it ended up becoming very, very slow, and just too unreliable. I had been using Linux before in order to work on my previous laptop, and I thought I could give it a try again.
Now what happened of course is that I spent a lot of time configuring the OS. I eventually succeeded (though I am not completely sure yet, surprises keep arising as I go). During the process, I also had to send back my laptop to Lenovo (I own a Thinkpad T43) because the computer was overheating (but nevermind, this was another issue that I may be writing about later).
Useless to say, this configuration work was a pain. First off, it takes a terrible lot of time, and it involves trying to get the same thing to work over and again. In my case the biggest issue was (is?) the video card (or drivers), which would either get too hot, or render too slow, or bring in other troubles (such as disabling the ability of suspending the computer, which is quite annoying in the case of a laptop). Then, it also brings some frustration to see how many people desperately try to achieve the same thing as you do, by reading many various forum topics. And eventually one of those provides help.
I realised that all this Linux configuration business (HOWTOs, FAQs, forums, …) contains quite a bit of distributed knowledge on the topic, which would be worth reusing one way or another. Had I known how to install git or had hands-on experience on similar web application frameworks, I could have reduced half of the frustration with the configuration. However, while waiting for the semantic web to organise itself and eventually, in some time, being able to achieve this in a semi-automated way, another idea may be to automate the reproduction of the configuration steps another desperate user was trying to do. The way I see this happening would be to be able to record a configuration process: the modified files and downloaded packages would be recorded into a sort of script which could be shared. Other users could download and try it, and if it didn’t work, undo the changes.
The problem here is that in most cases, the configuration is very specific to one distribution and the existing configuration. Hence the idea of having a Configuration Abstraction Layer for Linux. After all, there is a Hardware Configuration Layer, why couldn’t the same thing exist for Configuration matters?
This way, each distribution would have its specific profile, so that the Layer knows about it, and can handle its configuration in a transparent fashion. Package managers (such as aptitude, emerge, …) have the same purpose, so there should be a way to abstract them. And abstracting the rest of the configuration of a Linux distributions should be possible too.
Now the only problem is: what is the business value of implementing this? It is some considerable work, and perhaps creating a cross-distribution abstraction layer is not something that distribution editors would be supporting. But maybe I am wrong, and someone with a lot of time out there will eventually pick up this post, and start implementing something.
Already the “record configuration and play it back” idea is something quite interesting, I believe it would be a great thing to have for Ubuntu users.
As a conclusion, if I had enough money, I would go for an Apple computer. At the moment, I am less interested in the free aspect of Linux than in the comfort of not having to bother with configuration work, which is a performance-killer for work. Yet I truly hope that Linux will one day make it to a user-friendly OS, that does not require lots of hacking knowledge or knowledge-seeking.