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:
https://www.amazon.co.jp/gp/product/B076WTG77B/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1
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.
https://encrypted.google.com/search?hl=en&q=%22%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E3%82%B9%E3%83%9E%E3%82%B9%E3%83%84%E3%83%AA%E3%83%BC%22
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.
> I agree it's nice to leave feedback for modules you use.
I think it goes beyond being nice, as I've given some examples where I had no idea whether anyone was using a module until I deleted it from CPAN. There just isn't any way to know if people are using something except if they release another CPAN module which depends on it. That can't really give you a good picture without turning CPAN into a huge pyramid scheme, or adding lots of BELIKE type modules.
> 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.
I'm referring to the ++ system on metacpan.
I've altered the blog post to change "star" to "++".
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.
I think that would be useful. In this blog post I'm suggesting that if people actively rely on someone else's module it makes sense, out of self-interest, to ++ the module so that the maintainer has an idea that people are putting it to use. But people might be downloading the module and then not finding it suitable, for example.
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?
> We use ~100 CPAN modules for our closed source application and nobody has a clue.
Yup. I'm using many people's modules which the maintainers of the modules don't have a clue about. The Encode::Detective experience taught me that sometimes people might even be using something I thought of as an experiment. Sometimes I have had the odd experience of sending a bug report to a maintainer of something and they don't respond at all or they think it's not important, whereas it's actually something causing a crippling fault in a running system. Or sometimes they have added "playful" or "amusing" features to a module which turn out to open security holes, or cause endless bugs. My previous blog post about the \d in regular expressions was quite related to that:
https://blogs.perl.org/users/ben_bullock/2017/05/d-does-not-validate-numbers.html
It's frustrating that people validate numbers using \d in Perl modules because it causes bugs down the road. I have no idea what the actual intended use of something like \d is. I don't think it does any useful work at all. The discussion got even worse on Reddit where some Perl 6 people started describing how Perl 6 is great because it converts all these things into digits willy-nilly.
> Obviously, this would mean there is a 'place' to report to. Maybe a cpan or metacpan service?
You'll have to ask the metacpan people about the best way to ++ modules automatically. If I was doing it I would look at using the metacpan api.
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.