gopasspw / gopass

The slightly more awesome standard unix password manager for teams
https://www.gopass.pw/
MIT License
5.88k stars 492 forks source link

gopass usage numbers #1848

Open dominikschulz opened 3 years ago

dominikschulz commented 3 years ago

Gopass does not contain any kind of telemetry by design. This is a core principle and we will not change that.

But still it is very interesting to us developers to get some understanding about it's usage, e.g. how many users we have, on which platforms and so on. One example why this matters are the - planned and now shelved - breaking changes which were discussed in e.g. #1365 . Before starting that discussion I had the impression that gopass had at most a few hundred users.

But if we look at homebrew for example we see that we had at least 12k install of the official gopass formula in the last year. That is at least an order of magnitude more than I anticipated.

More users means we should be much more careful wrt. breaking changes, documentation etc.

So my proposal is that we use the usage numbers that already exist (e.g. from GitHub, Homebrew, maybe some distros have numbers) and create a little bit of tooling retrieve these on a regular basis. That would help us prioritize our (very) limited time better between different platforms / features.

dominikschulz commented 3 years ago

Any others we could use?

AnomalRoil commented 3 years ago

It's fun you're asking that.

I've started a while ago with some bash scripts to gather some stats about Gopass from Github API and recently moved to a Google sheet with a GApps script.

On 2021-02-04:

$ curl -s https://api.github.com/repos/gopasspw/gopass/releases/tags/v1.11.0 | grep "download_count" | head -n -2 | awk '{s+=$2} END {print s}'
1026
$ curl -s https://api.github.com/repos/gopasspw/gopass/releases/tags/v1.10.1 | grep "download_count" |awk '{s+=$2} END {print s}'
10572
$ curl -s https://api.github.com/repos/gopasspw/gopass/releases/tags/v1.10.0 | grep "download_count" |awk '{s+=$2} END {print s}'
397
$ curl -s https://api.github.com/repos/gopasspw/gopass/releases/tags/v1.9.2 | grep "download_count" |awk '{s+=$2} END {print s}'
5441

On 2021-02-25:

$ curl -s https://api.github.com/repos/gopasspw/gopass/releases/tags/v1.12.0 | grep "download_count" |
awk '{s+=$2} END {print s}'
448
$ curl -s https://api.github.com/repos/gopasspw/gopass/releases/tags/v1.12.1 | grep "download_count" |
awk '{s+=$2} END {print s}'
399

On 2021-03-12:

$ curl -s https://api.github.com/repos/gopasspw/gopass/releases/tags/v1.12.1 | grep "download_count" | head -n -2 | awk '{s+=$2} END {print s}'
894
$ curl -s https://api.github.com/repos/gopasspw/gopass/releases/tags/v1.12.0 | grep "download_count" | head -n -2 | awk '{s+=$2} END {print s}'
483
$ curl -s https://api.github.com/repos/gopasspw/gopass/releases/tags/v1.11.0 | grep "download_count" | head -n -2 | awk '{s+=$2} END {print s}'
1562
$ curl -s https://api.github.com/repos/gopasspw/gopass/releases/tags/v1.10.1 | grep "download_count" |awk '{s+=$2} END {print s}'
14906
$ curl -s https://api.github.com/repos/gopasspw/gopass/releases/tags/v1.10.0 | grep "download_count" |awk '{s+=$2} END {print s}'
499
$ curl -s https://api.github.com/repos/gopasspw/gopass/releases/tags/v1.9.2 | grep "download_count" |awk '{s+=$2} END {print s}'
5556

And here is the Google sheet: https://docs.google.com/spreadsheets/d/1kfEG8jZ2LfvF6arOAbsYu9uiiV_KZ2n5xtHKfa31_O4/edit?usp=sharing

But a better tooling (Grafana for graphs? A Jupyter notebook?) would be nice :D

AnomalRoil commented 3 years ago

Running my curl stuff again today (2021-03-19) gives:

$ curl -s https://api.github.com/repos/gopasspw/gopass/releases/tags/v1.12.2 | grep "download_count" | head -n -2 | awk '{s+=$2} END {print s}'
284
$ curl -s https://api.github.com/repos/gopasspw/gopass/releases/tags/v1.12.1 | grep "download_count" | head -n -2 | awk '{s+=$2} END {print s}'
1002
$ curl -s https://api.github.com/repos/gopasspw/gopass/releases/tags/v1.12.0 | grep "download_count" | head -n -2 | awk '{s+=$2} END {print s}'
530
$ curl -s https://api.github.com/repos/gopasspw/gopass/releases/tags/v1.11.0 | grep "download_count" | head -n -2 | awk '{s+=$2} END {print s}'
1695
$ curl -s https://api.github.com/repos/gopasspw/gopass/releases/tags/v1.10.1 | grep "download_count" |awk '{s+=$2} END {print s}'
15465
$ curl -s https://api.github.com/repos/gopasspw/gopass/releases/tags/v1.10.0 | grep "download_count" |awk '{s+=$2} END {print s}'
500
$ curl -s https://api.github.com/repos/gopasspw/gopass/releases/tags/v1.9.2 | grep "download_count" |awk '{s+=$2} END {print s}'
5574
AnomalRoil commented 3 years ago

v1.10.1 must be linked somewhere or used by some distro or automated process since it has got a lot of new downloads.

dominikschulz commented 3 years ago

I have to admit your comments about the download numbers got me thinking about this. A curl script is nice, but I was looking for something more structured. A Google Sheet is nice and might hit a sweet spot.

Another option would be a script that can be run - manually or as a GHA - to update that info either on gopass.pw or on a GH wiki page.

As always this shouldn't require complex custom infrastructure since I'd like to avoid liabilities as much as possible.

dominikschulz commented 3 years ago
dominikschulz commented 3 years ago

But the numbers look extremely low (even for very popular packages).

stale[bot] commented 2 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

AnomalRoil commented 2 years ago

Should we maybe also consider including a user survey in one release? It could prompt the user maybe once to complete it... That could be a lovely experience, I'd be curious to know more about our users.

dominikschulz commented 2 years ago

I did think about this before, too. But I wasn't sure if that would maybe feel to invasive?

dominikschulz commented 1 year ago

I still don't think we should do a survey.

But I'd like to automate stats aggregation a bit and publish that when we update the website.

SubOptimal commented 1 year ago

Maybe querying the GraphQL API with following could be a starting point

{
  repository(owner: "gopasspw", name: "gopass") {
    releases(first: 100, orderBy: {field: CREATED_AT, direction: DESC}) {
      nodes {
        releaseAssets(first: 60) {
          nodes {
            downloadCount
            name
          }
          totalCount
        }
        name
      }
      totalCount
      pageInfo {
        endCursor
        hasNextPage
      }
    }
  }
}
{
  "data": {
    "repository": {
      "releases": {
        "nodes": [
          {
            "releaseAssets": {
              "nodes": [
                {
                  "downloadCount": 1,
                  "name": "gopass-1.15.4-linux-armv7.tar.gz"
                },
                {
                  "downloadCount": 1,
                  "name": "gopass-1.15.4-windows-armv6.zip"
                },
                {
                  "downloadCount": 1,
                  "name": "gopass-1.15.4-openbsd-armv7.tar.gz"
                },
                {
                  "downloadCount": 39,
                  "name": "gopass-1.15.4-linux-amd64.tar.gz"
                },
...
AnomalRoil commented 1 year ago

Found this page:

https://tooomm.github.io/github-release-stats/?username=gopasspw&repository=gopass