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
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
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.
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.
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
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?
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