Kamis, 25 Februari 2010

The problems with the older CPAN clients

Thank God for cpanminus. Now that I'm free from having to use them, allow me to rant, no, bitch about them.

1. Bad defaults. Some default values might make sense 10-15 years ago, but not so much nowadays. For example, I'd argue that "follow" should now be default. See #2.

2. Too developer-oriented. For example, I believe "notest" should be on by default. This is compounded by the fact that installing Perl modules is so damn-slow already. See #3.

3. Too slow. Startup takes around 10-30 seconds or more. Installing Moose usually takes minutes (but with cpanminus, it only takes about 1 minute with --notest on my PC). Autocomplete takes one to a couple of seconds.

4. Too interactive, too verbose. The older clients are getting better but not quiet enough, cpanminus is such a breathe of fresh air.

5. Too bloated (which is the reason why cpanminus was developed in the first place).

The older CPAN clients are an embarassment if we compare it to "apt-get", "yum", "urpmi", which are way faster, way quieter, way less interactive. There's no reason why a CPAN client cannot be like those. And fortunately cpanminus proves it.

3 komentar:

  1. Glad you like it!

    Re: 2 -- the testing should still be enabled by default, because running a successful 'make' on modules doesn't really mean if it was successful. Especially if it's a C/XS libraries. Build could result in a success but could fail on runtime with dl symbol loading errors and what not. But I tried hard (and will continue to do so) to keep the default options as sane as possible and make it so silent to not annoy you.

    Hope everybody loves that :)

    BalasHapus
  2. But if you really know what you do, i.e. You won't complain when your XS module is installed in a half-assed state, you will be able to say PERL_CPANM_OPT="--notest" in your shell rc file. (The environment var is not implemented but will be in the next release)

    BalasHapus
  3. @miyagawa: How about enabling test only for XS modules?

    Will be looking forward to using PERL_CPANM_OPT.

    BalasHapus