Showing first time contributors some love ❤️

tldr: You can now filter by the label 12. first-time contribution to show new community members some love, all you have to do is click this link and start reviewing.

I basically had the idea of doing some webpage thing that just lists all PRs of first time contributors, I talked to @qyliss and @hexa about this and they said that it sounds like a good idea but instead of self hosting something I can just use GitHub labels. GitHub knows who is a first time contributor but they don’t expose it in their api. So for every new pr we have to loop through every earlier pr until we find one with the same author and if we don’t find one we can add the label. With 200k+ PRs in the nixpkgs repo that takes a while and GitHubs api only allows pages with 100 results per page. So to do this efficiently we want to use a cache with already known Authors and PRs. As far as I’m aware GitHub Actions don’t allow persistent state so I wrote a small script scraping all the prs and adding labels for new contributors that has built-in caching, you can find the source code here.

Feel free to ask questions and to tell me your opinions, I also gladly accept PRs and sensible ideas :smiley:

32 Likes

Thank you for doing this.

Was this a one-time action or is it automated now?

2 Likes

I wrote a NixOS module and will deploy it on my infra in a bit, it’s currently only running on my laptop. You find instructions on how to set it up your self in the readme. It uses a systemd timer to run in a specified interval

2 Likes

Isn’t that similar to GitHub - nix-community/label-approved: a program to label approved PRs in nixpkgs [maintainer=@Artturin, @delroth] ?

@Artturin

I guess, but the biggest part of my program is the logic off finding out “efficiently” if a PR was created by a first time contributor. And I didn’t spend much time on writing this, it was a nice project for Monday and Tuesday evening ^^

Also to be honest I didn’t know about the tool you linked to.

Aw this is so sweet!

3 Likes

Shouldn’t this be running on official infra?

1 Like

Probably, and I would like it to but the Nix infra situation in the current state seems to be difficult at best. I would be happy to help and provide support if you find someone that has the permissions and time to deploy the flake on official infra.

Would you consider contacting the relevant team?

If you tell me how to reache them I can give it a try.

1 Like

Just FYI, I filter out PRs that are in draft by adding draft:false in the Github filter input box so it becomes: is:open is:pr label:"12. first-time contribution" draft:false

Link: Pull requests · NixOS/nixpkgs · GitHub

1 Like

Let us know how it goes.

You can watch the issue for updates Running first-time-contribution-tagger on community hardware · Issue #634 · nix-community/infra · GitHub

I was curious if it would go back and get old, open PRs and it did get mine from March so thanks!

1 Like

It should have gotten every pr even already closed ones :smiley:

Just wanted to jump in here and say that this is an awesome thing to do!
Any thoughts on if this can be extended further to empower folks to become first time contributors?

1 Like

Extending this script further probably won’t help much. But there are definitively some other things we can do to improve the experience of first time contributors.

In general: improving the documentation and make available a few more learning resources, f.e. a step by step guide on how to write your first package which covers different things from the really easy packages that “just work” like most of the rust stuff and some harder stuff that has to get patched and explains how to look for examples in nixpkgs with grep.

I think the starship prompter is quite a good example regarding the onboarding of new contributors. They have a label to tag easy to resolve issues which in my opinion is just a really nice way to get new comers some challenges.

Also stuff like a default formatter and linter would help a lot. I know there are currently people writing a rfc for the formatter part.

There are probably a lot of things we can do, I just wanted to start with something rather then nothing, “perfect is the enemy of good” or something. And now people that have the time and energy to give first time contribs a through review can easily do this and other people that don’t like explaining a lot of basic stuff can avoid that kind of pr. We

1 Like

This is deployed now!

You can help people make feel welcome by filtering by the tag: Pull requests · NixOS/nixpkgs · GitHub

5 Likes

This is deployed now!

Just to clarify, it was also running before but now it’s deployed on official NixOS org infra.

2 Likes

For posterity, there are currently 374 open first-time contributions. If you sort by the oldest first:

  • resolving the first page of entries (each page lists 25) would catch us up through April 2021
  • resolving 2 more pages would catch us up through April 2022
  • 3 more pages + 3 would catch up through 2022
  • catching up through 2022 would leave 221 first-time contributions opened this year

General stats:

  • 1065 first contrib prs opened so far in 2023
  • 1194 in 2022
  • 1013 in 2021
  • 885 in 2020
  • 663 in 2019
  • 559 in 2018
  • 484 in 2017
  • 389 in 2016
  • 379 in 2015
  • 258 in 2014
  • 77 in 2013
  • 64 in 2012 (* PR #1 was opened on Jun 4 2012)
1 Like