June 21, 2010
In the good old days, before fancy modern package managers like apt-get
and
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 netcat
(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
programs crashed.
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 apt-get
install
that would install from source Gentoo-style and keep the whole thing
in your home directory where you could muck with it.