The next thing CPAN needs...

Purdy on 2007-11-29T14:39:14

I had a recent experience that gave me pause (pun intended!) and inspiration for a helpful CPAN tool: a categorical tabulation of module popularity.

My example: about a year ago (maybe more), I first dabbled into AJAX and went looking for a module that would import/export native Perl objects in JSON format. So a CPAN search pointed me to the JSON module.

Fast forward to yesterday, where I'm pointed to JSON::Syck, which fits my simple needs, but more importantly (and objectively), is faster & more memory efficient.

So I wish there was something where I could search for JSON, CSV, DBI, CGI, etc and then search.cpan.org would recognize that as a category and present objective data that would better direct me (and other developers) to the most popular (and often best) selection.

An initial objection would be flamewars, but if we kept it to pure numbers and tied it to BitCard logins, the numbers would be objective themselves. Of course, people will probably want to make comments and that's where it could get awkward.

Another objection might be something already exists, whether it be the rating system or this wiki page, but they both don't fit this need, IMO, basically because a sense of popularity isn't thrown behind the modules.

Another objection might be upstart modules would find it harder to be adopted, but if we allow people to change their "allegiance", upstart modules' new votes would become more substantial quickly.

Maybe even simpler would be a download tracker in CPAN to tell how many times a CPAN module has been downloaded/installed. Then put those #'s in the search results.

Now who's going to put the perspiration behind the inspiration? ;)

Peace,

Jason

PS: I highly recommend Daft Punk Alive 2007 - score it for < $9 in MP3 format. It's awesome coding music!


tags or recommendations?

mpeters on 2007-11-29T15:30:58

I think the problem you're trying to solve is an important and useful one. In Perl6 it will not be as big of an issue because we will have Roles, so multiple JSON modules can implement the JSON role using whatever backend then like. Although this isn't perfect since some JSON modules might want a completely different interface so they won't provide that Role per-se.

Maybe we should have something tied to Bit-Card accounts where people can say "Hey this other module does the same basic thing better" then. We could solve the upstart problem just by listing all recoomendations with but with the total number of votes each received and listed in order of popularity. So an upstart will start at the bottom, but will at least be seen.

And for those who want to leave comments they can be left and for those who want to view them they can be viewed, but the primary view is just a list of the ordered recommendations.

Re:tags or recommendations?

Alias on 2007-11-30T02:20:52

You just described cpanratings.

There's quite a number of comments there that say "This is not very good, use Blah::Blah instead".

But first...

Alias on 2007-11-30T02:26:46

Please provide a popularity metric.

Re:But first...

hex on 2007-12-04T11:46:11

I don't know about that, but I *would* like to see a scoreboard of the most used modules. Perhaps DrHyde's could extract that information from his cpandeps tool.

Hmmm

acme on 2007-11-30T10:23:37

If we had this already you'd know that JSON::XS rocks much more ;-)

The rockstar option

Yanick on 2007-12-01T18:09:09

In the same frame of mind, there's an idea I've been toying with for some time... It's not rare to have the music instruments used by a band listed in a CD booklet. As programmers aren't that different from rock stars, it'd be nifty to be able to do the same thing. I mean, if Nick Krachmeister can say that he's playing exclusively Howling Kitty Stratocasters then, by Joves, I should be able to say that I use XML::LibXML to craft my masterpieces! :-)

The implementation could be as simple as putting a file called, say, 'module.recommendations' in your CPAN directory listing all the modules you use and recommend (also maybe modules you tried and will never touch again without a EVA-suit). Something like:

XML::LibXML
Catalyst
-Something::God::Awful # stay clear, it'll frob your noggle!

After that, you put a little spider to work and, hop!, you get an idea of what other peeps are using to get the job done. That could lead to educating results.

Re:The rockstar option

Aristotle on 2007-12-02T02:58:14

That idea has been tossed around for years. The JFDI suggestion was for people to upload personal bundles (ie. you’d stick Bundle::YANICK in your CPAN directory). You don’t need a lot of new machinery to accommodate that. But we’d probably need a web interface or something to make managing that bundle very easy before people will do it in significant numbers – or at the very least it would need to be widely advertised as a social convention among module authors.

Re:The rockstar option

Yanick on 2007-12-08T18:54:53

Hmmm... yeah. I didn't think about it, but piggy-backing the Bundle:: mechanism isn't a bad idea at all. All that is needed after that is a back-end mechanism that harvests that information, and a snazzy web interface to display the results.

Well, looks like there's one more cool project I have to throw at the top of the Holiday Hacking pile.:-)