Why I recommend using the "++" system of Metacpan

A few days ago I bought some Christmas tree lights from amazon.co.jp, the Japanese version of Amazon:


One of the words in the description of the item is パーティスマスツリー, which seems to be "party-mas-tree". You might think that is some kind of Japanese neologism, but there's no such word as "パーティスマスツリー" in Japanese. A google search just brings you back to Amazon.co.jp.


If you have an account on Amazon.co.jp, you can get messages in English by choosing "see this page in English". Amazon.co.jp has a fancy translation system, but even that is defeated by the "party-mas-tree". If I choose "see this page in English" for the product, the Japanese nonsense word comes out as "pa-texisumasuturi-". That, and many other romanisations on Amazon.co.jp, looks like the default work of my module Lingua::JA::Moji's routine kana2romaji. Perhaps Amazon is using my module to romanise untranslateable words, although I have never heard a toot from them to indicate that. Of course it might be a coincidence, but the romanisation they are using is rather odd, and it's exactly the same as my module's.

That reminded me of a topic I've been meaning to bring up here. How do we know who's using modules we release to CPAN? I have a number of experiences of both unexpected uses and non-uses of modules I've released to CPAN.

First of all let me mention Lingua::KO::Munja, a sister module to the above Japanese module. I released a version with bugs which would cause it to fail to operate, and yet received no bug reports in the entire year that the broken version was on CPAN, so apparently nobody even tried to use it, or anyone who tried to use it found it too broken and gave up. The effect that had on me was to make me think that it was very likely that nobody was using the modules I had released. However, that turned out to be wrong.

The next unexpected thing happened after I forked a module from CPAN called Encode::Detect which has a lot of failures on CPAN Testers. I forked it into "Encode::Detective", basically to see if I could get it to compile across CPAN testers better than Encode::Detect. It turned out to be a failure, so I deleted it, but surprisingly I got quite a lot of emails from people who had been using the module. Unfortunately the work involved in restoring that module into working order is beyond me, so it will remain deleted.

In another example, I deleted a module called Test::CGI::External, only to have one user wanting to restore it, so I've put it back on CPAN. I don't know if anyone other than the one user uses it, although it's actually a vital part of a web site that I run.

I really have no idea beyond things like bug reports and ++s on metacpan whether people are using the modules I've released or not. I doubt whether I am the only person who ends up feeling this way. There are quite a lot of fairly useful modules which people have deleted from CPAN, you might find them when Google searching for a way to solve a problem.

So what I took away from this is that if I'm using a module, since the author has no way of knowing whether I'm using it, I should at least ++ it on metacpan so that the author knows that someone is using his or her module. I'd like to strongly recommend doing that, not just as a way to flatter someone or make them feel good, but as a way to actually let them know that someone is using their module.


Is there no download reporting?

No; modules can be downloaded from any of hundreds of CPAN mirrors so they all could individually track downloads but nobody would have the full picture. The best you could do is track downloads at https://cpan.metacpan.org as that's a commonly used CPAN mirror, but I'm unaware of any such tracking.

@Ben: I agree it's nice to leave feedback for modules you use. But are you referring to the ++ system on metacpan or the stars from cpanratings (a separate site)? ++ is certainly a simpler way to show your appreciation/usage.

We could set up MetaCPAN to stream some anonymized download logs to S3, where people could analyze them, if that's helpful. It has been discussed before. It's a low priority for us, but it's possible. I can see that there's some value in having this available.

Interesting topic. We use ~100 CPAN modules for our closed source application and nobody has a clue. It would be beneficial to report usage and give authors some appreciation of the scale of usage.

We have a full list of modules in our test suite. If we could pass the full list to a module doing some reporting, we would add it immediately. Or maybe this job could be delegated to cpan/cpanm to report on install?

Obviously, this would mean there is a 'place' to report to. Maybe a cpan or metacpan service?

I wholeheartedly agree with this post.

Well said. I've gone and ++'ed all the modules I regularly install on every new Perl installation I create. Thanks for the reminder.

Leave a comment

About Ben Bullock

user-pic Perl user since about 2006, I have also released some CPAN modules.