June 21, 2010
In the good old days, before fancy modern package managers like
yum, if you wanted an open-source program you had to download the source
tarball, compile it, and install it. I kept the source around under my
download directory. Several times I had an itch, and it was easy to go into
the source, tweak something, and install it again. A few times I submitted the
changes back to the maintainer of the program. (Vim’s
incsearch option was
one of these.)
With package managers life is vastly better. I was recently reminded of this when I tried to install the code-review tool Review Board, which was too young to be in any package and depended on cutting-edge version of other libraries, also not in any package. I spent two full days failing to get all the related software installed properly.
And yet by removing the initial hurdle to installing a program, packages create
a large hurdle to scratching an itch. Today if I want to add a flag to
(which I did years ago to add a delay), it would be enough work that I wouldn’t
bother. Before package managers we were forced to do the work, which then
made it easy to tweak the code. It also made it easy to examine core dumps when
I was excited to try the Linux distribution Gentoo years ago because everything is compiled from scratch, but I found that they weren’t keeping the source around in a way that you could easily go in and mess with. Perhaps I missed a configuration setting somewhere.
I suspect that package managers have substantially hurt the open source
movement. They’ve raised the bar of the commitment needed to contribute. As
Wikipedia has shown, it’s critical to have a large number of people who just
want to fix small things here and there. I wish Ubuntu had a flag to
install that would install from source Gentoo-style and keep the whole thing
in your home directory where you could muck with it.