RubyGems Contribution Data with Homebrew's Tooling

There’s ongoing discussion about recent changes to access in the RubyGems GitHub organisation. If you need context, first read Open Source Turmoil: RubyGems Maintainers Kicked Off GitHub. My goal is to share contribution data to help inform the conversation.

🍺 Homebrew Contributions

Hi, I’m Mike McQuaid 👋. I’ve spent most of the last 13 years working on Ruby on Rails applications you may have used such as GitHub, AllTrails, Workbrew, and Strap. I’ve maintained Homebrew (mostly written in Ruby) for 16 years and have been the Project Leader since the position was created in 2019. Some of my responsibilities include assessing whether Homebrew maintainers’ contributions make them eligible for:

This is partly a matter of security (principle of least privilege), partly a matter of responsible use of our funds and partly a matter of fair recognition, making “Homebrew maintainer” reflect those doing the actual work.

We built a command for this in Homebrew: brew contributions. If I run it on myself for the last year, I get this output:

$ brew contributions --user=mikemcquaid --from=2024-09-24 --organisation=Homebrew --csv
mikemcquaid contributed >=100 times (merged PR author), >=100 times (approved PR reviewer), 1787 times (commit author or committer), 35 times (commit coauthor) and >=2022 times (total) after 2024-09-24.

user,repository,merged_pr_author,approved_pr_review,committer,coauthor,total
mikemcquaid,all,100,100,1787,35,2022

This means that in the last year I:

  • authored >=100 merged PRs
  • ✅ reviewed >=100 merged PRs
  • authored (I created it) or committed (I modified/rebased/committed it) 1,787 commits
  • co-authored (someone accepted my GitHub suggestion) 35 commits

Note: the >=100 or >=1000 in the output is to make things quicker and avoid hitting GitHub API rate limits.

This excludes actions like commenting on issues, which don’t require write access. Remember: principle of least privilege.

These are the core metrics that I use to evaluate whether someone is maintaining Homebrew. The tools and data are open. Also, because we use OpenCollective, the money coming into and out of Homebrew is open.

💎 RubyGems Contributions

Ok Mike, that’s a lot about Homebrew: what about RubyGems? Sorry, I’m getting to that.

Homebrew has open tooling to analyse GitHub contributions. RubyGems has a GitHub organisation. Let’s combine the two.

First, who are the owners, maintainers, contributors and members of the RubyGems organisation? It’s not an easy question to answer, so I’ve built a list based on the people who either participated or were CCd by indirect on the Proposal for RubyGems Organizational Governance. I’ve also included the current members of the RubyGems organisation


Let’s look at contributions for the year preceding the removals:

$ brew contributions --csv --from 2024-08-18 --org=rubygems --user=aellispierce,amatsuda,andremedeiros,arthurnn,arunagw,bai,bronzdoc,colby-swandale,deivid-rodriguez,djberg96,drbrain,duckinator,dwradcliffe,ecnelises,evanphx,farukaydin,hsbt,indirect,jenshenny,ktheory,landongrindheim,lauragift21,luislavena,martinemde,mensfeld,mghaught,olleolleolle,qrush,segiddins,sferik,simi,skottler,sonalkr132
...
User Merged PRs Approved PRs Commits Total
deivid-rodriguez 100 13 1303 1416
hsbt 57 3 379 439
simi 36 100 254 390
segiddins 93 77 194 364
colby-swandale 45 55 77 177
martinemde 49 59 64 172
landongrindheim 48 55 54 157
lauragift21 14 4 32 50
duckinator 12 0 36 48
olleolleolle 2 18 7 27
mghaught 7 8 12 27
indirect 1 7 3 11
qrush 0 1 1 2
mensfeld 0 1 0 1
ktheory 0 0 0 0
luislavena 0 0 0 0
sferik 0 0 0 0
skottler 0 0 0 0
sonalkr132 0 0 0 0
jenshenny 0 0 0 0
farukaydin 0 0 0 0
evanphx 0 0 0 0
ecnelises 0 0 0 0
dwradcliffe 0 0 0 0
drbrain 0 0 0 0
djberg96 0 0 0 0
bronzdoc 0 0 0 0
bai 0 0 0 0
arunagw 0 0 0 0
arthurnn 0 0 0 0
andremedeiros 0 0 0 0
amatsuda 0 0 0 0
aellispierce 0 0 0 0
Full brew contributions Output
$ brew contributions --csv --from 2024-08-18 --org=rubygems --user=aellispierce,amatsuda,andremedeiros,arthurnn,arunagw,bai,bronzdoc,colby-swandale,deivid-rodriguez,djberg96,drbrain,duckinator,dwradcliffe,ecnelises,evanphx,farukaydin,hsbt,indirect,jenshenny,ktheory,landongrindheim,lauragift21,luislavena,martinemde,mensfeld,mghaught,olleolleolle,qrush,segiddins,sferik,simi,skottler,sonalkr132
aellispierce contributed 0 times (total) after 2024-08-18.
amatsuda contributed 0 times (total) after 2024-08-18.
andremedeiros contributed 0 times (total) after 2024-08-18.
arthurnn contributed 0 times (total) after 2024-08-18.
arunagw contributed 0 times (total) after 2024-08-18.
bai contributed 0 times (total) after 2024-08-18.
bronzdoc contributed 0 times (total) after 2024-08-18.
colby-swandale contributed 45 times (merged PR author), 55 times (approved PR reviewer), 77 times (commit author or committer) and 177 times (total) after 2024-08-18.
deivid-rodriguez contributed >=100 times (merged PR author), 13 times (approved PR reviewer), 1303 times (commit author or committer) and >=1416 times (total) after 2024-08-18.
djberg96 contributed 0 times (total) after 2024-08-18.
drbrain contributed 0 times (total) after 2024-08-18.
duckinator contributed 12 times (merged PR author), 36 times (commit author or committer) and 48 times (total) after 2024-08-18.
dwradcliffe contributed 0 times (total) after 2024-08-18.
ecnelises contributed 0 times (total) after 2024-08-18.
evanphx contributed 0 times (total) after 2024-08-18.
farukaydin contributed 0 times (total) after 2024-08-18.
hsbt contributed 57 times (merged PR author), 3 times (approved PR reviewer), 379 times (commit author or committer) and 439 times (total) after 2024-08-18.
indirect contributed 1 time (merged PR author), 7 times (approved PR reviewer), 3 times (commit author or committer) and 11 times (total) after 2024-08-18.
jenshenny contributed 0 times (total) after 2024-08-18.
ktheory contributed 0 times (total) after 2024-08-18.
landongrindheim contributed 48 times (merged PR author), 55 times (approved PR reviewer), 54 times (commit author or committer) and 157 times (total) after 2024-08-18.
lauragift21 contributed 14 times (merged PR author), 4 times (approved PR reviewer), 32 times (commit author or committer) and 50 times (total) after 2024-08-18.
luislavena contributed 0 times (total) after 2024-08-18.
martinemde contributed 49 times (merged PR author), 59 times (approved PR reviewer), 64 times (commit author or committer) and 172 times (total) after 2024-08-18.
mensfeld contributed 1 time (approved PR reviewer) and 1 time (total) after 2024-08-18.
mghaught contributed 7 times (merged PR author), 8 times (approved PR reviewer), 12 times (commit author or committer) and 27 times (total) after 2024-08-18.
olleolleolle contributed 2 times (merged PR author), 18 times (approved PR reviewer), 7 times (commit author or committer) and 27 times (total) after 2024-08-18.
qrush contributed 1 time (approved PR reviewer), 1 time (commit author or committer) and 2 times (total) after 2024-08-18.
segiddins contributed 93 times (merged PR author), 77 times (approved PR reviewer), 194 times (commit author or committer) and 364 times (total) after 2024-08-18.
sferik contributed 0 times (total) after 2024-08-18.
simi contributed 36 times (merged PR author), >=100 times (approved PR reviewer), 254 times (commit author or committer) and >=390 times (total) after 2024-08-18.
skottler contributed 0 times (total) after 2024-08-18.
sonalkr132 contributed 0 times (total) after 2024-08-18.

user,repository,merged_pr_author,approved_pr_review,committer,coauthor,total
deivid-rodriguez,all,100,13,1303,0,1416
hsbt,all,57,3,379,0,439
simi,all,36,100,254,0,390
segiddins,all,93,77,194,0,364
colby-swandale,all,45,55,77,0,177
martinemde,all,49,59,64,0,172
landongrindheim,all,48,55,54,0,157
lauragift21,all,14,4,32,0,50
duckinator,all,12,0,36,0,48
olleolleolle,all,2,18,7,0,27
mghaught,all,7,8,12,0,27
indirect,all,1,7,3,0,11
qrush,all,0,1,1,0,2
mensfeld,all,0,1,0,0,1
ktheory,all,0,0,0,0,0
luislavena,all,0,0,0,0,0
sferik,all,0,0,0,0,0
skottler,all,0,0,0,0,0
sonalkr132,all,0,0,0,0,0
jenshenny,all,0,0,0,0,0
farukaydin,all,0,0,0,0,0
evanphx,all,0,0,0,0,0
ecnelises,all,0,0,0,0,0
dwradcliffe,all,0,0,0,0,0
drbrain,all,0,0,0,0,0
djberg96,all,0,0,0,0,0
bronzdoc,all,0,0,0,0,0
bai,all,0,0,0,0,0
arunagw,all,0,0,0,0,0
arthurnn,all,0,0,0,0,0
andremedeiros,all,0,0,0,0,0
amatsuda,all,0,0,0,0,0
aellispierce,all,0,0,0,0,0

The month preceding the removals:

$ brew contributions --csv --from 2025-08-18 --org=rubygems --user=aellispierce,amatsuda,andremedeiros,arthurnn,arunagw,bai,bronzdoc,colby-swandale,deivid-rodriguez,djberg96,drbrain,duckinator,
...
User Merged PRs Approved PRs Commits Total
deivid-rodriguez 22 0 99 121
landongrindheim 7 27 10 44
hsbt 5 0 31 36
simi 2 8 17 27
colby-swandale 4 5 6 15
martinemde 1 2 6 9
segiddins 0 4 2 6
lauragift21 1 0 2 3
duckinator 1 0 1 2
olleolleolle 0 0 1 1
mghaught 0 0 1 1
jenshenny 0 0 0 0
ktheory 0 0 0 0
luislavena 0 0 0 0
mensfeld 0 0 0 0
qrush 0 0 0 0
sferik 0 0 0 0
skottler 0 0 0 0
sonalkr132 0 0 0 0
indirect 0 0 0 0
farukaydin 0 0 0 0
evanphx 0 0 0 0
ecnelises 0 0 0 0
dwradcliffe 0 0 0 0
drbrain 0 0 0 0
djberg96 0 0 0 0
bronzdoc 0 0 0 0
bai 0 0 0 0
arunagw 0 0 0 0
arthurnn 0 0 0 0
andremedeiros 0 0 0 0
amatsuda 0 0 0 0
aellispierce 0 0 0 0
Full brew contributions Output
$ brew contributions --csv --from 2025-08-18 --org=rubygems --user=aellispierce,amatsuda,andremedeiros,arthurnn,arunagw,bai,bronzdoc,colby-swandale,deivid-rodriguez,djberg96,drbrain,duckinator,dwradcliffe,ecnelises,evanphx,farukaydin,hsbt,indirect,jenshenny,ktheory,landongrindheim,lauragift21,luislavena,martinemde,mensfeld,mghaught,olleolleolle,qrush,segiddins,sferik,simi,skottler,sonalkr132

aellispierce contributed 0 times (total) after 2025-08-18.
amatsuda contributed 0 times (total) after 2025-08-18.
andremedeiros contributed 0 times (total) after 2025-08-18.
arthurnn contributed 0 times (total) after 2025-08-18.
arunagw contributed 0 times (total) after 2025-08-18.
bai contributed 0 times (total) after 2025-08-18.
bronzdoc contributed 0 times (total) after 2025-08-18.
colby-swandale contributed 4 times (merged PR author), 5 times (approved PR reviewer), 6 times (commit author or committer) and 15 times (total) after 2025-08-18.
deivid-rodriguez contributed 22 times (merged PR author), 99 times (commit author or committer) and 121 times (total) after 2025-08-18.
djberg96 contributed 0 times (total) after 2025-08-18.
drbrain contributed 0 times (total) after 2025-08-18.
duckinator contributed 1 time (merged PR author), 1 time (commit author or committer) and 2 times (total) after 2025-08-18.
dwradcliffe contributed 0 times (total) after 2025-08-18.
ecnelises contributed 0 times (total) after 2025-08-18.
evanphx contributed 0 times (total) after 2025-08-18.
farukaydin contributed 0 times (total) after 2025-08-18.
hsbt contributed 5 times (merged PR author), 31 times (commit author or committer) and 36 times (total) after 2025-08-18.
indirect contributed 0 times (total) after 2025-08-18.
jenshenny contributed 0 times (total) after 2025-08-18.
ktheory contributed 0 times (total) after 2025-08-18.
landongrindheim contributed 7 times (merged PR author), 27 times (approved PR reviewer), 10 times (commit author or committer) and 44 times (total) after 2025-08-18.
lauragift21 contributed 1 time (merged PR author), 2 times (commit author or committer) and 3 times (total) after 2025-08-18.
luislavena contributed 0 times (total) after 2025-08-18.
martinemde contributed 1 time (merged PR author), 2 times (approved PR reviewer), 6 times (commit author or committer) and 9 times (total) after 2025-08-18.
mensfeld contributed 0 times (total) after 2025-08-18.
mghaught contributed 1 time (commit author or committer) and 1 time (total) after 2025-08-18.
olleolleolle contributed 1 time (commit author or committer) and 1 time (total) after 2025-08-18.
qrush contributed 0 times (total) after 2025-08-18.
segiddins contributed 4 times (approved PR reviewer), 2 times (commit author or committer) and 6 times (total) after 2025-08-18.
sferik contributed 0 times (total) after 2025-08-18.
simi contributed 2 times (merged PR author), 8 times (approved PR reviewer), 17 times (commit author or committer) and 27 times (total) after 2025-08-18.
skottler contributed 0 times (total) after 2025-08-18.
sonalkr132 contributed 0 times (total) after 2025-08-18.

user,repository,merged_pr_author,approved_pr_review,committer,coauthor,total
deivid-rodriguez,all,22,0,99,0,121
landongrindheim,all,7,27,10,0,44
hsbt,all,5,0,31,0,36
simi,all,2,8,17,0,27
colby-swandale,all,4,5,6,0,15
martinemde,all,1,2,6,0,9
segiddins,all,0,4,2,0,6
lauragift21,all,1,0,2,0,3
duckinator,all,1,0,1,0,2
olleolleolle,all,0,0,1,0,1
mghaught,all,0,0,1,0,1
jenshenny,all,0,0,0,0,0
ktheory,all,0,0,0,0,0
luislavena,all,0,0,0,0,0
mensfeld,all,0,0,0,0,0
qrush,all,0,0,0,0,0
sferik,all,0,0,0,0,0
skottler,all,0,0,0,0,0
sonalkr132,all,0,0,0,0,0
indirect,all,0,0,0,0,0
farukaydin,all,0,0,0,0,0
evanphx,all,0,0,0,0,0
ecnelises,all,0,0,0,0,0
dwradcliffe,all,0,0,0,0,0
drbrain,all,0,0,0,0,0
djberg96,all,0,0,0,0,0
bronzdoc,all,0,0,0,0,0
bai,all,0,0,0,0,0
arunagw,all,0,0,0,0,0
arthurnn,all,0,0,0,0,0
andremedeiros,all,0,0,0,0,0
amatsuda,all,0,0,0,0,0
aellispierce,all,0,0,0,0,0

I’m not going to make any value judgements about these data. Remember that open source maintainers owe you nothing.

My only observation is that, if I were deciding based on the principle of least privilege for access control in the Homebrew organisation, based only on this data and our process, there would be people in all the groups of:

  • appear they should have been removed, were removed
  • appear they should have been removed, were not removed
  • appear they should not have been removed, were removed
  • appear they should not have been removed, were not removed

As Homebrew’s Governance has been cited as a good basis, I “stress tested” it here. I wanted to contribute data to a conversation that currently lacks it. That’s not to say who should or shouldn’t be in the RubyGems or any other GitHub organisation.

I wish we had data like Homebrew’s OpenCollective budget to similarly analyse finances, but it doesn’t seem to be public.

This situation also highlights how funding and transparency can shape open source dynamics. I’ve long believed that money is not the solution to every problem in open source. In some cases, it can create problems that wouldn’t exist otherwise.


If you’d like to talk more about this post, the RubyGems situation, Homebrew, or would like my help as a Fractional CTO/Principal Engineer/open source expert through my consulting business, please reach out.

If you want to financially support and encourage more of my work on Homebrew instead, consider sponsoring me on GitHub Sponsors or Patreon.