Saturday, October 17, 2009
Wow. I have been swamped with other things lately and didn't notice that LispForum membership has grown to over 700 people. That's very cool. We also passed one year of life back in June 2009. Ah, well, I sometimes forget my wedding anniversary, too. Unfortunately, my wife doesn't hack Lisp or she probably would have reminded me.
Okay, so I decided to do a bit of hacking tonight that involved installing cffi. Before I started, for the first time in a long time, I actually upgraded SBCL and blew away my
~/.sbcl directory. Then I typed it:
(require 'asdf-install) (asdf-install:install 'cffi)
Those commands managed to pull down 21 different packages! In itself, that might be the right thing to do for something that has a lot of dependencies, but after looking in
~/.sbcl/systems I found that I had:
alexandria.asd babel.asd babel-streams.asd babel-tests.asd cffi.asd cffi-examples.asd cffi-grovel.asd cffi-tests.asd cffi-uffi-compat.asd iterate.asd lift.asd lift-documentation.asd lift-test.asd metabang-bind.asd metabang-bind-test.asd rt.asd stefil.asd swank.asd trivial-features.asd trivial-features-tests.asd trivial-gray-streams.asd
So, that included five different unit test packages, plus the three different unit test frameworks (Lift, RT, and Stefil) dedicated to running them. I also got Swank thrown in. Honestly, I was waiting for the free set of Ginsu knives. ("But wait, there's more...!")
Here's the thing, people. When I install a package, I don't want your unit tests. Or the unit test framework necessary to run them. That's all just cruft that takes time, space, energy, etc. I mean, I'm glad that people are using unit tests and all, but as a user of your package, I shouldn't have to care about unit tests. Presumably, when developing/releasing your package, you ran your tests. That's all good. But if they passed for you, they'll also pass for me. Unless I'm going to start hacking your package, they're just a nuisance for me. If I am going to start hacking your package, I'm probably going to pull the source directly from git or darcs or CVS or Subversion, not asdf-install. At a minimum, can we all agree to remove dependencies on Lift, RT, and Stefil.
If I really want to run your tests, and I have installed them using asdf-install, I'm perfectly willing to install those other packages using a separate asdf-install command.
As for Swank, while I love it, again, if I want it in my environment, I'll install it separately, thank you very much.
Summary: Please keep your package dependencies to a minimum. If you really need to have a package that pulls in a huge set of dependencies to create a full environment (e.g. Swank and such), please separate your core library functionality from the top-level environment package and allow those of us with minimal tastes to simply install your core library functionality by itself.