CPAN (was Re: [Israel.pm] The future of Perl)

Jason Elbaum Jason.Elbaum at motorola.com
Thu Jan 22 06:30:04 PST 2004


Offer Kaye wrote:

 > Here's a nice article regarding the future of Perl. What I found 
refreshing
 > is that it wasn't the old "Perl 6 and Ponie" show ;-), the article 
actually
 > manages to talk about Perl 5 and make some very strong points for its
 > future, separately of the success (or failure) of Perl 6. So read and 
enjoy
 > :-)
 > http://www.perl.com/pub/a/2004/01/09/survey.html


Thanks for this link. I was particularly interested in the discussion of 
CPAN. Some excerpts:

<quote>

One way to get a glimpse how Perl is used in the wild is to look at 
CPAN. I recently took a look at the modules list 
(www.cpan.org/modules/01modules.index.html) and counted module 
distributions by the year of their most recent release. These statistics 
are not perfect, but they do give a reasonable first approximation of 
the age of CPAN distributions currently available.

         1995:   30 ( 0.51%)
         1996:   35 ( 0.59%)
         1997:   68 ( 1.16%)
         1998:  189 ( 3.21%)
         1999:  287 ( 4.88%)
         2000:  387 ( 6.58%)
         2001:  708 (12.03%)
         2002: 1268 (21.55%)
         2003: 2907 (49.40%)
         cpan: 5885 (100.00%)

Interestingly, about half of the distributions on CPAN were created or 
updated in 2003. A little further analysis shows that nearly 85% of 
these distributions were created or updated since the Perl 6 
announcement in July 2000. Clearly, interest in developing in Perl is 
not on the wane. If anything, Perl development, as measured by CPAN 
activity, is quite healthy.

....

How much of this code is production-quality? It's quite difficult to 
say, actually. These modules cover a stunningly diverse range of problem 
domains, including, but not limited to:

     * Application servers
     * Artificial intelligence algorithms
     * Astronomy
     * Audio
     * Bioinformatics
     * Compression and encryption
     * Content management systems (for both small and large scale web sites)
     * Database interfaces
     * Date/Time Processing
     * eCommerce
     * Email processing
     * GUI development
     * Generic algorithms from computer science
     * Graphing and charting
     * Image processing
     * Mathematical and statistical programming
     * Natural language processing (in English, Chinese, Japanese, and 
Finnish, among others)
     * Network programming
     * Operating-system integration with Windows, Solaris, Linux, Mac 
OS, etc.
     * Perl development support
     * Perl/Apache integration
     * Spam identification
     * Software testing
     * Templating systems
     * Text processing
     * Web services, web clients, and web servers
     * XML/HTML processing

...and that's a very incomplete sample of the kinds of distributions 
available on CPAN today. Suffice it to say that hundreds, if not 
thousands, of CPAN modules are actively used on a daily basis to solve 
the kinds problems that we regularly face.

</quote>


Here's my problem: How can I possibly make effective use of a library of 
nearly 6000 Perl modules? Especially as I have no way of evaluating the 
quality of a CPANmodule without downloading, installing and testing it? 
Most of the subject categories above overlap, and modules aren't always 
catalogued where I might expect to find them. By the time I figure out 
whether the functionality I need exists in CPAN, and where it is, and 
which version of which module to try, and whether in fact it actually 
does what I need - often I might as well write it myself!

Add to that a further problem: I sometimes write Perl code to be 
exported to remote installation sites. I can't necessarily rely on which 
subversion of Perl is available there, let alone expect them to install 
CPAN modules just to run my code. They're users, not sysadmins. Result: 
I rarely use CPAN in my release code.

Surely I can't be the only one with these problems! Suggestions are 
welcome...


Regards,

Jason Elbaum




More information about the Perl mailing list