Live data from Hacker News

CPAN is 20

blogs.perl.org

21–30 of 39 posts

Re: CPAN is 20

#21
post #5

A good time to acknowledge that CPAN was a very influential example for internet libraries that came afterward. I got a lot out of it for years, time to say thanks! You guys in the Perl community were awesome and still are! A shout out to CTAN too!

Also CRAN, which is still meant to be pronounced C-RAN as an homage.

Re: CPAN is 20

#22
I have used CPAN for years, its amazing. I finally gave back three years ago, and I contributed a module.

Re: CPAN is 20

#24

Are there package formats older than CPAN? Which is the oldest one? I did some digging and it seems that RPM, DEB etc were created after 1993 so perhaps CPAN could be father of packaging formats.

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.

[1] https://anonscm.debian.org/cgit/dpkg/dpkg.git/plain/main/mai...

Re: CPAN is 20

#25
post #23

For libraries: in Perl : there is really one way to do it, use CPAN. in Python : there's more than one way to do it : pth, eggs, setuptools, pip, wheel, distutils, easy_install,... http://lucumr.pocoo.org/2012/6/22/hate-hate-hate-everywhere/

> in Python : there's more than one way to do it : pth, eggs, setuptools, pip, wheel, distutils, easy_install,...

> pip, wheel

Package formats: egg, wheel

Packaging/Install libraries: setuptools (incl. easy_install), pip, distutils

Install method: pth

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.

http://search.cpan.org/~miyagawa/App-cpanminus-1.7039/bin/cp...

https://github.com/chromatic/CPAN-Dark

http://search.cpan.org/~jhthorsen/App-git-ship-0.19/lib/App/...

http://www.perlmonks.org/?node_id=1028999

http://search.cpan.org/~sunnavy/Shipwright-2.4.41/lib/Shipwr...

http://perlbrew.pl/

Re: CPAN is 20

#26
post #25
post #23

For libraries: in Perl : there is really one way to do it, use CPAN. in Python : there's more than one way to do it : pth, eggs, setuptools, pip, wheel, distutils, easy_install,... http://lucumr.pocoo.org/2012/6/22/hate-hate-hate-everywhere/

> in Python : there's more than one way to do it : pth, eggs, setuptools, pip, wheel, distutils, easy_install,... > pip, wheel Package formats: egg, wheel Packaging/Install libraries: setuptools (incl. easy_install), pip, distutils Install method: pth 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.…

`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).

Re: CPAN is 20

#27

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.

That doesn't mean all of CPAN's like that though.

Re: CPAN is 20

#29
post #26
post #25

Earlier quoted context omitted.

> in Python : there's more than one way to do it : pth, eggs, setuptools, pip, wheel, distutils, easy_install,... > pip, wheel Package formats: egg, wheel Packaging/Install libraries: setuptools (incl. easy_install), pip, distutils Install method: pth 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.…

`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…

> `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).

Re: CPAN is 20

#30

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. That doesn't mean all of CPAN's like that though.

Web development.
Post reply on HN