Many Perl programmers have often said that the selling point for Perl is CPAN. And I’m inclined to agree that it is one of the major selling points. Having a large repository of third-party modules available makes building your own software that much easier.
Other languages have tried to emulate Perl’s success with CPAN, and who can blame them? There’s an article on use Perl; that outlines how CPAN came into existence.
Then on to the technical questions, a.k.a. “How did you do it?” Well, people always ask that from me and I go speechless… “Errrr, ummm, I kind of pulled all this stuff together and organized it a bit, and put it on a ftp server”. After this a brooding silence always falls… “And…?” … “And what?” … “That’s it?” “That’s it.”
Evidently, other languages have tried and not had the same success as Perl. A former ActiveState employee explains why the others have failed.
The Python folks wanted to make an Zope-based archive that was maintained by experts who precompiled modules for various platforms. So there would be no compilation or building step for the users. Installation would happen with web services trickery and so on.
These experts would also exercise their judgment about which modules were good, which modules to approve upgrades for, etc.
Too much design seems to be the problem that affects most of these efforts. PHP (a language that doesn’t seem to suffer from the same amount of “there is only one right way” thinking as Python) has a similar over-design problem with PEAR.
As the use Perl; story shows, less is more. But Pear tries to make more with more and ends up with less. They throw up barriers to entry (CVS access, coding standards, documentation standards, etc.). Contrast this with CPAN. To put code on CPAN, you have to get a CPAN account and an FTP client. That’s it.
Lessons to learn from all this? Try to solve one problem at a time. CPAN was born as a way make Perl modules easy to find. That’s it. Other people built on it, making it easy to install modules, making it easy to search, and fixing the quality of the modules.