CPAN is an awesome tool. First, this is a good way to avoid to reinvent the wheel. Second, it's companion, CpanTesters community platform, gives to the authors a damn simple way to test their modules on a huge variety of OS and architectures. These tests are public and will help people to choose distributions according to their needs and quality exigences. Third, it encourage to test and upload modules at early stages of the development: it makes possible to simplify the development process by retrieving test results, and be sure the modules will be usable on various OS, even if they are quite old or uncommon. It's almost disappointing sometimes how for any task you need to achieve, each time there is an existing module ready to be use.
Volunteers with lots of different perl versions and OSes run software that monitors CPAN for new uploads, and then automatically downloads them and runs their automated tests, and uploads the results.
Almost every perl module has a set of test scripts that can usually be called up by running make test. This happens by default when installing something with CPAN.pm. The output of this can be captured by CPAN.pm and sent on to a receiving server. Said server can be anything, but in almost all cases is the cpantesters metabase server, which integrates the result into a database which contains and summarizes the results of tests for libraries, by library version, operating system and perl version. In addition to people configuring their CPAN.pm that way and sending reports for everything installed, there are also many people who have set up servers that work on testing the newest version of every library uploaded to CPAN.
It looks less daunting when you don't make every item look like a replacement for itself. I notice that under Perl you don't list ".tar.gz" ".tgz" ".tar.bz2" and ".tar.xz" in the list of "ways to do it."
Also:
* Wheels are (at least officially) considered the way forward. Support for other formats is legacy. Yes, this is less ideal than keeping a simple package format for 20 some odd years, but Python also really didn't take off in popularity until ~2002 despite being almost as old as Perl. Also, it makes sense to improve the state of things when necessary (e.g. creating wheels vs. sticking with eggs) rather than doing nothing.
* distutils was a fork of setuptools that has since been merged back into setuptools. Counting it twice doesn't speak to the current state of things.
* easy_install is the installation command that is part of the setuptools package, so including it in the list is counting the same thing twice. (I'll notice that you didn't include any CPAN wrappers as "different ways to do it.")
> in Perl : there is really one way to do it, use CPAN.
Maybe I can clarify for the down voters because they haven't really responded with anything of substance (e.g. a comment):
* In the Python world, pip replaces/supplants/simplifies away easy_install much in the same way that cpanm/cpanminus made things much easier than the regular cpan command, or even cpanplus (at least in my experience). I feel like listing of "CPAN" as a whole, while breaking out "pip" and "easy_install" is disingenuous in light of this.
* CPAN is just the distribution network (plus all of the meta stuff like search.cpan.org, metacpan, cpantesters, etc). Python also has a single distribution network: The Python Package Index (aka PyPI / "the cheeseshop").
* Talking about distutils/setuptools/distribute is the same as talking about many of the tools that are used to manage Perl packages/modules (I can't recall their names off the top of my head, but there are at least 2 or 3 of them, and they all generate their own Makefiles/etc for doing things). It's possible that these have been simplified away in the last few years (since I've been in Perl-land), but the legacy is still there (much like the legacy of Python's various distribution/packaging setup libraries).
I will admit, that as a whole, I like CPAN better than PyPI, if only for the fact that it's easy to fetch the author/package/etc lists as a gzip-ed text file whereas most tools interacting with PyPI are basically screen-scraping the website (rather than having a simple/easy api).
`easy_install` is not a library per se, it's a binary offered by setuptools.
> distutils was a fork of setuptools
This is incorrect. Setuptools is an extension of distutils (it patches and extends distutils to have additional functionality). Distribute was a fork of Setuptools that has been merged back into Setuptools.
Also, `pth` is not a installation method - it's merely a way to customize the import system. It's a very scary feature as it allows one to execute arbitrary code (that can reside in the `.pth` file) when import paths are being set up (when the `site` module is being initialized).
> `easy_install` is not a library per se, it's a binary offered by setuptools.
I thought that I clarified that in my post, but if you could tell me what was confusing, I'll use that to inform future discussions I have on this.
> This is incorrect. Setuptools is an extension of distutils (it patches and extends distutils to have additional functionality). Distribute was a fork of Setuptools that has been merged back into Setuptools.
Correct, and one reason why the landscape has been confusing for a while (confusion between distutils/setuptools/distribute). Thankfully distribute has been merged back into setuptools.
> Also, `pth` is not a installation method
You're right. It's a way to customize the import system, but it's "main" usage in the wild is during installation/setup. The main place that I've seen it used is with easy_install + eggs (IIRC).
I think it was the first better done package managers. Saved the problem of installing modules on cross platforms. Most of the time it works without a hiccup. For a perl developer CPAN is a friend.
Congratulations! I recall when it debuted and it was a huge accomplishment. 20 years onward and it's still a huge accomplishment, especially testing on so many systems. Thank you to all the maintainers!
My experience from a decade ago was different than most here, I had not so much luck with CPAN.
Many libraries and projects, but most of them alpha or abandoned. It took a lot of time to find stuff that was built well enough for production and was still maintained.
What exactly were you looking for? Which libraries did you find that were alpha or abandoned?
It's highly likely that your experience was simply due to the problem domain you were looking at. If i were to look at something i work with, 3d graphics, my results would look much the same as what you said.
I prefer using libaries instead of developing everything on my own, so usually I use 10-20 libraries for a project beyond a web framework, e.g. credit card management, HTTP library,.... YMMV and if a web framework is all you need, hurray to you.
I asked for "What exactly were you looking for? Which libraries did you find that were alpha or abandoned?"
You only said "Web development."
Now you're addressing completely different problem domains, so if you don't like my answer, than that is because your initial answer to my question wasn't very clear. Were my questions unclear?
CPAN was also created after 1993, hence it being 20 years old :p
I don't know when the Debian package format was first created, but dpkg was rewritten in C back in '94[1], so it would predate CPAN. However the real genius of package managers is dependency resolution and the central software repositories - both of which likely came a little while after dpkg. I'd be interested to read more on the history of Debian's package management though - if anyone does find a reference.
We are a relatively young open source project. In November 2015, MetaCPAN will be 5 years old. It's old enough to have become an important and well utilized part of the Perl world, but it's also young enough to have lots of room to evolve. As you will see we have many ideas and encourage more suggestions.
Yep, that's correct. I still remember when I registered the name. It has grown far beyond anything I had imagined.
The whole CPAN ecosystem (CPAN, CPAN Testers, search.cpan.org, metacpan.org etc) involves a lot of people and a lot of resources. It's not just open source software -- it's open source "software as a service". So you get to push some code and also worry about uptime!
Lots of volunteers and more than a few sponsors make sure the ecosystem keeps on ticking. My thanks to all of them. :)