Patterns in static

Take my program---please!





navigational aids:
 




News ticker:





topics covered:





This site is listed on Blogwise, the DC Metro blog map, and (sort of) DC blogs.

the feedback logo. It rotates.

22 July 05.

You're sitting there thinking, `gee, I could use a program to do a certain nifty trick.' You go online, ask your favorite search engine for nifty-trick programs, and get a list of two hundred. You click on a few, watch them fill your hard drive with crap that you can't identify, and click a variety of setup programs which spew garbage all over a still wider range of hard drive. You find one you like, but then it starts popping up `buy my shareware' reminders. Eventually, the whole system crashes, and then you have to dig up lots of CDs to reinstall your office package, your stats package, your graphics package, &c. Six months later, all the cool kids have switched to new software, and you have to start all over to upgrade.

I think we can all agree that finding and installing software sucks, which is where the package managers come in.

Here's an oft-overlooked detail about free and open source software: it's free, in the sense that it doesn't cost anything. Not only are there no access restrictions keeping you from getting a program, but people veritably _push_ the stuff on you. I only partially understand the motivations, but the result has been a host of ways to get free software, all of which are extremely easy, because somebody went through great trouble to facilitate your free-riding.

Thanks, guys.

The idea behind all of the below is the package: a single unit of program with a self-executing installation program. There's a repository somewhere, run by the e-philanthropists of the world (usually universities like UNC) which has the packages; you have on your computer a package manager which queries the server for what's available and gives you a list. You search for nifty-trick program, click on it, it installs. Six months later, the package manager works out that nifty-trick has a new version out; you click update and suddenly you have more features.

No need to involve Google and sift and sift some more; no need to go through yet another installation program which requires endless clicking of the OK button only to find out that it's not quite what you wanted. Getting a new program takes about a minute of your attention and zero dollars, instead of hours of your life and who knows how much of your cash.

The systems
At this point, those readers who don't run a system with a package manager are hopefully thinking, `gee, I'm missing out.' So, here are some package systems which you may want to consider.

Windows people
Cygwin, which gives you a UNIX subsystem, including the X Window system, and loads of packages. The setup is package-based; just re-run the thing to pull more packages. I'm pretty sure the packages are basically RPMs (see below); you can also install some RPMs directly.

McPeople
Fink, which is a set of ports from Debian. Since all of OS X is a UNIX system, it is reasonably seamless to interoperate with your other OS X programs.

Linux
All linux distributions run a package manager of some sort, so it's just a question of which. The two competing styles are are the Debian APT packages, originally set up by Deb and Ian at Perdue University (I wonder if they're still together), and the Red Hat Package Manager (RPM) system. Those in the know tell us that the APT system is better written; my own experience to date with APT has been better as well. I'm using Ubuntu's distribution right now. But RPMs have improved over the years, and may work fine for you.

Another option, which I'm running on my badass number-cruncher, is Gentoo's portage. It downloads source code, and uses the GNU's autoconf system to work out how to compile the program from source on your computer. Very cool and very automated. Unfortunately, the installation system for Gentoo itself is currently underautomated, so it's only useful for things like dedicated badass number-crunching machines.

[The GNU autoconf system, by the way, is an absolute revolution in how the world of free computing works. The likelihood that you download something and it compiles and works the first time is exponentially higher if it's built using the autoconf system, and that's what allows everybody to just set a few switches and distribute different versions of the same program for so many systems.]



Why they work
There are a few reasons why this would only work in a unixy system and with free software.

There's the idea of the library, which all computing systems have. [Windows calls it a DLL: dynamically linked library. Microsoft employees refer to the problem of getting multiple DLLs to play nice together as `DLL Hell'.] The library is a bunch of functions to do something like paint pixels on a screen or read MP3s or calculate Fourier transforms. A full-blown program just gathers together lots of library functions and runs them in sequence.
[Really, a program is itself just a function library, with a function named main which will auto-execute.]


The Windows OS and McOS before version X never got the library thing right, for reasons I won't bore you with now. But on a unixy system, multiple versions of a library, and hundreds of `em, can live together in harmony.

When somebody wants to write a nifty program, they don't have to start from scratch, because they have the libraries at hand---which is a key difference from not-free software, where the WordPerfect people and Microsoft Word people wrote a host of identical libraries. Further, the communal libraries get better with time, since the author of each new program likely contributes a function or two to the library itself.

The package concept and the library concept correspond. For those who don't know the system, that's why your package manager insists on first installing a billion things named libwhtvr-0.4 when you try to install a single program.

There are few ways to calculate a Fourier transform, but there will always be differences in æsthetic tastes, so there are often many clicky front-end programs that call these libraries. They'll all coexist nicely, because unixy systems (mostly) get the sharing of libraries right. In short, there's competition where it matters, and cooperation where it would be a waste of time. There are a million papers about how this mix of cooperation and competition is delightfully interesting as an economic phenomenon, but those papers are generally not that great, and you don't care---all that matters is that the system has led to a unified scheme to let you load up your laptop effortlessly.

[Notice that stats packages don't follow this library-and-front-end standard. There are a hundred out there, and most of them write their own computational routines, and all of them write their own stats routines. Which is why the world needs apophenia.]



las quejas
There are a few problems with the package system. Instead of getting your search engine's list of a thousand competing titles of varying quality, you often get only one or two (which call the same libraries). The GNU postscript rendering library messes up landscape views, and will do the same if your front end is ghostview or the GNOME PDF viewer. The GIMP is the only full-scale image manipulation program in the free and packaged world, and if you don't like it, it's tough cookies for you. The converse is that if you do, a lot of people have all put their energies into it, and it gets better literally every day.

The package system is generally patriarchal, in that you're depending on the people who packaged the stuff to get around to it; e.g., I've been waiting for Gentoo's people to package GCC-4.0 for months now. Building stuff outside of the package manager is OK, but often causes problems, since dependencies get messed up, blah blah. [I couldn't do it with GCC-4]. A full upgrade when the base libraries like libstdc and the kernel change significantly is spotty---in my own experience, RPMs are the worst with this.

[And autoconf is a pain to work with on the developer side. Having attempted to autoconfiscate my own stuff, the documentation is hard to work through, and if your program worked with autoconf 1.7, you may have to rewrite all of your scripts to get them to work with autoconf 1.9. The price we pay for magic.]



So, there's the joy of the package system. Try it out.

[link] [No comments]
[Previous entry: "Rewiring your ethics"]
[Next entry: "How to free yourself of patriarchal fetters"]

Comment!
Yes, the comment box is tiny; write in a real text editor then just cut and paste here.
If you are a human, type the letter h in the first box.
h for human:
Name:
E-Mail:
Homepage: