Question

I have an open-source library that provides multiple services around a particular domain. I would like to know how the various components are being used so that I can prioritize updates and new features.

The primary way of collecting that data in applications is usually through anonymous stats collection. But as a user of libraries in my other work, I don't think I'd appreciate that kind of data collection. Also there is a whole rat's nest of issues (legal and otherwise) I can get into when I'm trying to retrieve the data. See this and this for reasons not to implement anonymous data tracking.

The only other option I can think of is creating an online poll and linking to it in the documentation, but that doesn't seem like it'd be very effective to me because it takes time for the user to complete.

Are there any other ways to collect anonymous usage stats for my library that I'm not considering?

Was it helpful?

Solution

There are several ways to collect statistics automatically, but the problem is how to get that information back. If you choose to collect statistics automatically, then I recommend the following:

  • Have the statistic gathering easily turned on or off.
  • Allow the user to control where the statistics are stored.
  • Provide the tools for users to inspect and make use of that data themselves. Chances are that people who use your library are just as interested in how much it is used as you are. This keeps you in the open source mentality
  • Make the submission of that information voluntary, or part of your bug reporting

Things that will severely limit who can use your library are:

  • Automatic transmission to an undisclosed server
  • Assumption that the library will even be used on a network that can connect to the internet

Security audits look for things like that, and if your library is considered a risk, you gain a very bad reputation that is hard to shake.


All that said, the most reliable way to determine if you have users that use a particular feature is to threaten to remove it. It won't make you popular, but the silent users will speak up. If no-one says anything, it's a safe bet to remove. If they do, then you have the option to start a dialog to see what the real needs are and if there is a better way to resolve it.

Licensed under: CC-BY-SA with attribution
scroll top