PolishLinux has an editorial on program installation on Linux systems, and even though it’s a bit hard to wade through (the author’s native language sure isn’t English) it does make a number of very good points in favour of the way most Linux systems handle things. Still, as always in the discussion on program installation, it always feels a bit like listening to a discussion between a deaf and a blind man about whose condition is the easiest to live with.
For the sake of discussion, I usually identify three major ways of installing programs. First, we have the Linux method, using package management tools like dpkg and yum to install .deb and .rpm packages. Then there’s the Windows method, using built-in installers and uninstallers that install a program in the desired location. Lastly, we have the Mac OS X method of using application bundles (but mingled with programs using an installer that cannot be uninstalled).
All of these methods are inherently flawed, are evil, and have front-row seats in hell (and I know because they stood behind me in the queue). I’ve already discussed this in great detail in my article on the utopia of program management, but let me repeat the segment on what’s wrong with current implementations of package management:
Mac users are always quick to point out the benefits of their self-contained applications; one package to download, no installation procedures, easy to remove. While this seems ideal, there are many problems with the actual Mac OS X implementation of this idea. Applications in Mac OS X are generally not easy to remove at all, because they leave a trail of files around outside of /Applications that normal users rarely encounter. Over the course of time, this can amount to quite the mess. In addition, Mac OS X provides no way of updating applications in a central way, resulting in each application in OS X having its own updater application; hardly the user-friendly and consistent image Apple tries to adhere to.
The Windows world is not much better off – in fact, it is probably worse. Not only does it have to deal with the same problems as OS X, it also has too deal with dreadful installers. Some of them are such usability disasters they make me want to curl up in foetal position and cry. And then, when I’m done crying, I can start all over again because the uninstallation procedure is just as dreadful.
This leaves us with the Linux world. They have the centralised, easy updating application – the update application in for instance Ubuntu is an excellent example of proper balance between providing enough technical information for experts, but still hiding all that fluff from normal users. However, Linux suffers from other problems. Dependency hell, while not nearly as huge a problem as it used to be, still exists to this day. Downloading a package outside of the repositories is a risky business, but it really shouldn’t be. You are completely dependent on your distributor updating his repositories and keeping them clean – nothing is as annoying as knowing there is a new version of Super Awesome Garden Designer Ultimate Edition, only to realise all the distributions except yours already packaged it.
These limitations still stand. Defending one method over the other comes across to me as a deaf man trying convince a blind man that being deaf is less of a problem than being blind; while he may be right, it’s a rather pointless discussion for those that are blind nor deaf.
What I’m trying to say is this: sure, Mac OS X, Windows, and Linux users can chest thump over who has the best method of program management, but it’s all for nought: none of those methods will get better this way. The only way to truly move program management out of the dark ages is to start from scratch, and implement something that has been thought through in a way that it incorporates the needs of the many (easy to use, no fuss), but also caters to the needs of the few who need more advanced functionality.
My utopia of program management (be sure to read the comments, lots of interesting stuff in there as well as more information on the CLI side of my system) is just one way of doing that (Haiku is working on a system quite like what I have in mind), but I’m sure there are others. The point, however, is that arguing over the current method of management is kind of pathetic. They are all either blind, deaf, or paraplegic.