Introducing metacpan.org - A better search for the CPAN

I'm very excited to announce the front end for MetaCPAN: metacpan.org. This is what you can expect from the new interface to the CPAN:


  • New uploads instantly available
    New uploads to the CPAN are indexed within seconds. No more waiting for new upload to appear on the search site. Check out /recent

  • Modern site layout
    The page layout leverages the extra space you have on widescreen displays. Instead of having all the information in a top-down manner, the page's layout is made up of up to three columns. Each is filled with information about the main resource.

  • Limit search to distributions or authors
    Using the distribution: syntax, you can limit your search to a given distribution. Example: distribution:Moose around. The same works for the author: tag. This functionality is embedded on various pages across MetaCPAN.

  • Search snippets preview
    Search results include text fragments which contain the query. This helps to identify the results you were looking for.

  • Search for mirrors near you
    The /mirrors page includes a map of all mirrors and allows for a for a search of mirrors close to you. Clicking on the "nearest" link will ask you browser for your current position and then sort the mirrors accordingly. You can also filter by protocol.

  • Activity indicators
    Author and release pages contain an activity graph that shows the number of uploads by a given author or a given distribution over the past 24 month. This is very useful for evaluating whether a release is well maintained or if an author stopped releasing modules.

  • Author's page includes metadata
    Each user can add additional metadata to her PAUSE account id by uploading a author-1.0.json file to her PAUSE directory. A good example is the page of DWHEELER. The page includes links to all of his online profiles and more.

  • Advanced source code view
    Code snippets in the documentation are highlighted and names of modules are linked to its documentation. POD sections are collapsed and can be expanded. See the source of Hash::Util for an example.

  • Feeling lucky?
    Generally users are only interested in the first result of a search. Clicking on the "I'm Feeling Lucky" button or hitting shift + enter will bring you directly to the first result. You can use this to add a search keyword to Firefox and others using this url: beta.metacpan.org/search?lucky=%s.

  • Open Source
    Yes, it's open source. The github repository can be found here. Patches are greatly appreciated. If you need any help to get started hacking, join us on #metacpan (irc.perl.org).

There are still a lot of new features to come (icebox) but the API as well as the front-end are now stable enough to be used by everyone else. Also, we've finally moved to a server that can hold the whole index in memory. We'd like to thank our first sponsor, speedchilli, who are generously sponsoring our hosting and providing some seriously beefy hardware:

"We are a web solutions company providing hosting and open source consultancy. We provide reliable, cost effective hosting for customers who require anything from a single dedicated server to a fully managed hosting solution. Being a business based around open source we feel it is important to give back to the community and are very happy to support the metacpan.org project." - Stewart Hunt

Please help us improve the CPAN experience

We will track searches and analyze them to optimize the search results. If you come across odd search results, such as modules that shouldn't appear because they are outdated or modules that are missing from the results, please report them to us. We will do our best to fix them.

You can also contribute directly by forking the project. Running the front-end doesn't require any heavy dependencies and is installed in less than a minute. You should also join #metacpan on irc.perl.org. It's a very active channel and new input is highly appreciated.

19 Comments

Looks great! I'm also glad to see this on github so that people can pitch in as they have time (something that was not easy to do with previous iterations of cpan searching.)

What, if any, is the relationship between this project and the one at "http://search.metacpan.org/"? The latter seems to be more ajaxy, based on backbone.js but otherwise has somewhat similar functionality.

Thanks!

Excellent work! Using this now and look forward to sending you patches, running a version locally for speed, and all kinds of neat stuff!

POD documentation seems a lot less readable than on search.cpan.org.

Font size is smaller, colour scheme for literal section is much lower contrast (grey text on grey background?), there's a lot of excessive vertical separation within text and between headers and the body text they're associated with.

Not using full browser-width on the actual content is also a pain when I'm scrolling down through a long POD document: having the sidebar info available is nice, but having it get in the way of the content I'm trying to _use_ is not so nice.

Everything about the main content in the central column feels cramped, squeezed and washed out to me.

A higher contrast colour scheme and not such a small font would probably clean that up, but as it stands search.cpan.org is much more legible.

I like some of the extra features though.

One big improvement since the JavaScript version is the ability to look at all of the source code of the module, like search.cpan.org's "browse" capacity.

I looked at the formatting for some modules' documentation and it looks pretty good to me.

Some things I noticed:

★ It has the same "messed up" version of perlapi as search.cpan.org:

http://beta.metacpan.org/module/perlapi

just like

http://search.cpan.org/~jesse/perl-5.14.0/autodoc.pl

It looks like this page needs some special attention. It is working on perldoc.perl.org:

http://perldoc.perl.org/perlapi.html

★ It's missing links to cpanratings.perl.org, the CPAN forum site, and annotated cpan.

★ According to

http://www.whatsmyip.org/http_compression/

the website doesn't send content gzipped, which will end up wasting a lot of bandwidth.

★ The JavaScript flickers the page each time something is loaded.

★ Instead of "Dependencies" on the right side, how about saying "This depends on..."?

★ Why show the odd graphic when there is no gravatar? I think it's not useful. If someone doesn't want a gravatar then just leave it blank.

Fantastic work guys.

To others above...

feedback = useful.

negativity = a waste of time, if you don't like it either contribute or stay on search.cpan.org.

One small comment: the sidebar doesn't work well on small screens. I can't see the lower part of it ("activity") on my laptop because it doesn't have enough vertical pixels. Can you please disable this locking thingie you're doing?

Regarding the page flickering, can you tell me on which OS/browser this is happening? I don't see it with Firefox or Chrome.
I'm not sure "flickers" is the right word, but the bits of the page wobble about as the page is being loaded.

This happens on Chrome on Windows and Ubuntu Linux.

Good stuff, I can see a lot of work has gone into it. I really like it - particularly the new source view features.

One visual cue I might miss from search.cpan is the boxes around the code snippets.

Also, does the site have some kind of affiliation with google? Using the same styling for the nav and buttons certainly gives that impression.

A big issue I have with search.cpan.org is the way it orders search results. For example a very old module from 1999 comes near the top of a search for "robots.txt":

http://search.cpan.org/search?query=robots.txt&mode=all

Looking at beta.metacpan.org, the ordering of the search results is a bit different,

http://beta.metacpan.org/search?q=robots.txt

but it doesn't really make more sense, the "obvious" module WWW::RobotRules is only third down, there are lots of duplicates, and I can't see what ordering is being imposed.

I noticed similar kinds of things with other search terms, the rationale for the ordering is not very clear to me.

Also, is there any plan to integrate these improvements back into search.cpan.org?

If you only want positive "feedback", you will find it hard to improve your site.

Wow, you think that was "negativity" and not "feedback"? You must have had a sheltered life so far.

The site as it stands is not as usable to me as search.cpan.org, I listed the reasons why, and I gave suggestions. That is constructive feedback. Why is it constructive? Because I explained why I held that opinion. No-one has to agree with me, but the reasons are there should the authors feel the concerns are an issue to them and want to act for address them.

Saying "site is teh sux" or "site is teh rox0r" is not constructive feedback. It's an expression of preference, and provides no useful explanation to the authors to act on.

As for the "put up or shut up" attitude: you don't get to dictate what I do with the time I give to the open source community, that's my right and my right alone.

I'm going to assume that everyone participating in this discussion has the best of intentions. If you took the time to comment with praise or suggestions for improvements, your feedback is welcome. :) This project is full of friendly faces. If you want to go over any of your suggestions in detail, please join us at #metacpan on irc.perl.org

There's something I've always wanted on CPAN search and which also seems to be missing on the new metacpan.org: sorting by last release date.

This would be awesome to have. Often, the most recent module ends up being the best module implementing a given functionality.

Excellent point. You can sort by release date on http://search.metacpan.org/#/search/dist/moose I expect that functionality will be added to http://beta.metacpan.org in the near future.

There is some kind of encoding bug at the moment:

http://beta.metacpan.org/search?q=%E5%90%8D%E5%89%8D

Looks like doubly-encoded UTF-8.

If you want to go over any of your suggestions in detail, please join us at #metacpan on irc.perl.org
I'd rather just send in a bug report by email if possible.

Thanks for pointing that out.


There's no email reporting at this point, but creating new issues is almost as easy: https://github.com/CPAN-API/metacpan-web/issues

It would be keen if the results page had a quick indicator of “dependency weight”, some kind of dot or bullet that is bigger and darker the “heavier” a distribution is. You’d have to recurse on dependencies, mind. Basically CPANDeps built in.

Leave a comment

About mo

user-pic I blog about Perl.