The CPAN Unknown Usage problem
To help CPAN authors keep track of who is using their modules, we could introduce two concepts: "follow module" and "I'm using this module". Both would be similar to the 'following' and +1 features found in nearly all social media services, and ++ in MetaCPAN.
One of the problems for most CPAN authors is that you've no idea how many people, if any, are using your module. This can be an issue if you're thinking of changing the interface, or perhaps thinking of just deleting it from CPAN.
I've seen a number of suggestions saying that the number of downloads should be shared, but there are a number of problems with this, not least that the CPAN testers would skew your figures, and plenty of people download modules but then never use them.
"I'm using module Foo::Bar"
You would mark a module as being used (for example MetaCPAN could display an "I'm using this" link next to the module). All modules would have a "registered user count" tally held for them, which would be public.
- You would explicitly say that you're using particular modules.
- Their dependencies would be marked as implicitly used by you. These can change as the dependencies change.
- Marking a module as "being used" would implicitly "follow" the module, as described below.
Having recorded that you're using a module, you could specify communication preferences: whether you're happy to receive email from the module author. The author would be able to send email to everyone who's signed up for this, for example with suggestions for an API change, soliciting feedback. By default the author wouldn't know the individual email addresses.
Following a module
Following a module would be similar, but you wouldn't be counted as a user:
- Following would not be inherited by dependencies, unlike Using.
- Maybe you could ask to be emailed the relevant section from Changes whenever a new version is released, but perhaps more useful would be including this in a personal MetaCPAN RSS feed.
How is this different from MetaCPAN's ++? I think the ++ is more of a "I like this module", but doesn't imply usage, and doesn't necessarily imply interest in following.
The downside of "follow" and "I'm using" as buttons displayed against a module is that they'd muddy the concept of ++, and people might be more likely to bother clicking on ++, but not on "follow" or "I'm using". The upside is that they give data with a much clearer interpretation, even though you'd miss a lot of users.
For all the reviews I've written, I generally end up using one or two of the modules, but would follow all of the others.
Following a CPAN Author
Olaf suggested we might want to think about following an author as well.
Following an author would trigger an automatic follow on any modules released by the author.
This needs a bit of thought with respect to the PAUSE permissions model: if you follow someone, and they're the owner of a module, then you probably want to be informed. But what if they're co-maint on a module owned by someone else, and do a release of that — should you be informed? Probably. Should you be informed if someone else subsequently does a release? Probably not.
This would essentially let you configure a personal RSS feed for CPAN. This would include news related to the modules and authors you're following.
Other things I'd like to be able to include in my CPAN news feed:
- Optionally include all new modules. Even better would be the ability to say "but don't include anything in Acme::* or Take::BeLike::*
- When following an author, if the author has told MetaCPAN about their perl blog, then this could be included as well. That way you could follow a bunch of module authors, and if they start blogging, then you'd transparently start seeing their posts.
This would be a single RSS feed for CPAN news. Perhaps going beyond the scope of MetaCPAN, but I think this would be a real hook.
Where does this fit?
MetaCPAN is the obvious place to put this, but another option is a separate service queried by MetaCPAN and used by the CPAN shell, cpanm, etc.