Saturday, December 17, 2005

Linux Packaging and Autopackage

I got a comment on my previous little quip about the problems with Linux-based operating systems. It was just a link to the Autopackage website. I find it odd, as I had just got wind of Kyle Brooks response to some of the negative commentary about Autopackage. So, basically I agree with everything Kyle said and I know things like Autopackage exist. But, the user still needs to know how to run the .package, which is more difficult on some systems than others. Of course, a quick google of autopackage will tell them, but how will they know to google for autopackage? Now, some distros might be able to configure KDE or GNOME to look at the first line of the file and see its actually a shell script, but I believe most would not. Of course, doing so might open up some security holes, but if the user is running as the root user, they're screwed anyway.

Now, why do we even need things like Autopackage and why is there such controversy over it. (Yes, there is controversy) Quoting mike from the Autopackage forums:

As you may have realized, many Linux developers are very conservative. Some feel autopackage is bad, others just feel that software installation is not their problem.

The culture of "my responsibility ends once I upload a tarball" is very deeply ingrained in the open source landscape I'm afraid - over a decade of distros controlling everything has made any true innovation in this field nearly impossible.

In the beginning there was source code in a tarball and it wasn't good. Programmers would release a tarball, and maybe some compiling tips, and others would acquire the code from an FTP server at 150 baud or mail-order a copy of the code on magnetic tape storage. Systems were varied and different and often a user would work hard to build the program for his (or her) particular setup. Some did this so much, that they developed little scripts and tools and practices to make the whole thing a little easier, and organizations and businesses that adopted this software would follow the same lines. These evolved into the idea of distributions, which made it easier to do all this work.

Free Software/Open Source operating system distributions can be traced back to the three major BSD derivatives: FreeBSD, NetBSD, and OpenBSD. These used the Ports system to control the compiling of software for the system. Guidelines about library locations and configuration files were created and software intended for a particular distribution would follow those guidelines. However, due to the days before real distributions, the developers were not directly targeting these distributions. As many distributions came to be, their volunteers and employees would port useful software, making just enough changes to get it to work on their distribution. Sometimes this would make it to the main source, but usually it would be bundled in some way, such as a tarball, along with installation scripts for their distribution, like Ports for the BSDs. These were called packages. The users were happy because they had good software, the distros were happy because they had users, and the developers were happy because they didn't have to do the work to make the software run on all those different distros.

Fast forward twenty years or so and we haven't come far. Developers find it hard to package for so many targets and many refuse to do so, even believing they have no such responsibility. And, why should they? Most are working for free, anyway. Reducing the number of targets is an option, but anyone is free to make more and that is a large portion of the value of free software.

Through these years, those standards and guidelines have converged in many ways. Something like autopackage was finally possible and perhaps we need it.

Let me tell you what bugs the crap out of me. I hate finding a good program on-line and then having to open up a terminal and typing "emerge search foobar" to find this app. I hate having to tell my roommate, who uses an extra computer of mine, how he has to go through Mandriva's software management app to find out if that game has a package available or not.

I welcome Autopackage, but we need cooperation from the community and the distributions to make it work. Perhaps work like Autopackage can converge the much repeated work of packaging all this software and we can reduce distributions to installation auxiliary scripts.

All I know is I am tired of waiting for a package after the tarball is released.

No comments: