David Golden wrote:
CPAN is a core strength of Perl because it makes developer's lives
easier by not reinventing the wheel.

This is not necesarily the case.

Every language has ways of providing additional libraries that make developers lives easier by not reinventing the wheel.

CPAN is a core strength of Perl for the same reason .deb packages are a core strength of debian.

Not only do they fulfil the "not reinventing the wheel" role, but they do so in a way that makes the procurement and installation of those package dramatically easier than the alternatives.

And the ease of procurement of a piece of software is twice as important to success than the quality of the piece of software.

The person installing something from CPAN has ONLY two reasonable outcomes.

1. The module or application, and all the dependencies, install correctly.

2. The installation process fails, and the end-user cannot use that software.

Additionally, dealing with recursion-based issues is paramount.

One thing I keep repeating over and over is that for MOST cases, nobody will ever use the modules they are installing, nobody understands what they do, and nobody will ever read the documentation.

To use two examples here, Jifty developers install 50-100 packages that are Jifty dependencies, and primary use exactly two. Jifty and Jifty::DBI.

That's a couple of percent at best.

For a more extreme example, JSAN users often come from the Ruby of Python worlds. They aren't even Perl coders AT ALL.

They just want to install the JSAN client.

It is installation that has made CPAN successful, and the prioritisation of installation over all other use cases is paramount.

> More usage of modules means more
installs and points of dependency failure.  Modules which use lots of
dependencies that might fail to install will themselves fail to be
installed more often and may be passed over and the world goes on.  So
let's not start a "dependencies are bad" bandwagon -- let the market
figure out what dependencies are worth the risk.

A market is a bad analogy for CPAN. Markets require choice, and arbitrary layers of recursive dependencies makes for very little choice.

In my view, testing modules that make modules faster to develop and or
lead to better diagnostic output when failures do happen can make
author's lives easier, which leads to more development, which is a
good thing.  If that means some extra installs, well, OK.  Balance the
benefits to you against the likelihood that some people won't put up
with the extra dependencies.

Benefit: Improved quality of error reports for factors that do not impact the functional operation of a module.

Cost: A percentage of your users can cannot use the module at all, give up in disgust and avoid it in the future.

I see this balance as undermining the core functionality of CPAN for the benefit of the author in catching minor nits. It escalates a minor non-critical issue for an author into a critical issue for installers. It's selfish and wrong.

Dealing with errors in non-functional areas is what we have CPAN Testers for.

Functionality and installation always comes first.

Adam K

Reply via email to