-
-
Notifications
You must be signed in to change notification settings - Fork 76
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
How will you help decrease the number of open PRs in Nixpkgs? #84
Comments
I think one productive way to make sure large parts of the community are involved in solving this issue, and to reduce the pressure on individual heroic reviewers, would be spending time and effort on designing incentives that give us the results we want. For example: For sure any such proposal would be controversial to some degree, and a lot of discussion will happen in the community and with the SC. In the end I see the role of the SC as taking responsibility for this kind of decision. |
To address the challenge of reducing the number of open PRs in Nixpkgs, I would advocate for more automation within Nixpkgs, with a particular emphasis on expanding the capabilities of OfBorg. By automating more aspects of the package management process, we can significantly reduce the manual toil/workload on maintainers and committers, which is, in my opinion, critical for preventing burnout and retaining the bulk of our contributors. I will also push for the implementation of automated bumps for a carefully curated core set of packages, ensuring these packages remain consistently up-to-date with minimal manual input. These packages will be supported by a suite of automated test (including unit, integration, regression, and performance test) further decreasing the manual effort required from reviewers and allowing them to focus on more fulfilling tasks than mind-numbingly tasks that require lots of tedious manual labor. Furthermore, I recognize that many in the Nix community find it challenging to contribute back to the Nix ecosystem, according to recent Nix community surveys results. I will advocate for clearing away roadblocks that make it difficult to contribute, ensuring that the barriers to entry are minimized and that new contributors can more easily participate in the ecosystem. This will involve streamlining processes, improving documentation, and providing better onboarding resources. Additionally, I will actively seek feedback from the community on specific pain points and work collaboratively to address these issues. By making it easier for people to contribute, we can foster a more vibrant and inclusive community, ultimately strengthening the entire Nix ecosystem as a whole :). |
My thoughts on this are of course biased by my own frustration in getting PRs merged. These are some possible solutions to reduce frustration and improve the contribution process: Replace nitpick reviews with automationThe feedback loop for reviews that suggest small syntax changes is too long. It is wasting both the contributors' and reviewers' time. We can handle these with tools like nixf-tidy, leaving reviewers to concentrate on more substantive feedback. Define guidelines for PR reviewsIt's essential to define what makes a PR "merge-ready." Reviewers should avoid delaying merges over trivial issues, especially for PRs that have been open for a long time and have undergone multiple rounds of minor feedback. We should develop guidelines that outline what a constructive review looks like, focusing on significant improvements rather than perfection. Reviewers should communicate clearly about the necessary changes for a PR to be accepted and set appropriate expectations, especially for larger contributions that may require multiple review cycles. As a member of the steering committee, I would:
|
Our values include focusing on automation, and that is an obvious way to mitigate the problem. There are efforts such as the nixpkgs-merge-bot that can hep here as well as better contribution guidelines and onboarding additional contributors. A specific thing I would like to start a discussion about is the lack of formal Nixpkgs teams. The largest and most valuable portion of our ecosystem is Nixpkgs, and is has no clear ownership as a whole or in for many sub-areas. This also means that Nixpkgs contributors often have a less clear voice into the Foundation and organizational matters, when they should. It also means they have less access to resources. Due to much package management being non-conflicting, a lot of Nixpkgs does not need formal ownership by established teams (a good example of "distribute decsionmaking widely"), but certain core areas and people do serve as an escalation mechanism for when things become stalled, or need a decision, or to provide a technical conflict resolution. There are efforts to be more clear about ownership in the community. One can see a few teams that have already naturally coalesced, "staging", "darwin", "compilers", "pythonPackages", "CUDA" and so forth. The exact breakdown should be fluid, but the overall idea is to encourage self-organized groups to be identified and provide them with the support they need. This creates a situation where PRs have a clearer escalation mechanism if they are stalled, provides ownership (both authority and responsibility) to manage the problem, and helps break it down into a more manageable problem. |
Similar to many of the other responses here, I think the best solution in the long term for new PRs is automation. As a maintainer of ~70 packages, nixpkgs-merge-bot has been a godsend in getting updates for my packages into nixpkgs and I would love to see more work on this specifically to remove some of its limitations (like https://www,github.com/NixOS/nixpkgs-merge-bot/issues/95). As a somewhat frequent reviewer, I have greatly appreciated the work done to take some of the weight off my shoulders, such as https://github.com/NixOS/nixpkgs-vet, the introduction of Giving more power to non-committers is also a concept we should really continue with. One example I've seen recently that I believe has a lot of promise is allowing for people without push access to be CODEOWNERS, which would hopefully allow for faster (manual) reviews by ensuring those responsible for certain files are always pinged regardless of committer status Lastly, introducing more teams for more specific categories of nixpkgs would hopefully drive more attention to said categories from a group of people that have the time for and are passionate about them. As said by tomberek above, this has already developed naturally in some form, but should be expanded and made much more explicit. I also believe in the creation of a team dedicated to being a point of escalation for stalled PRs across the repository in the event of the aforementioned methods failing |
I'd prefer to focus on the open PRs part of this and avoid the Wayland protocol Nixpkgs has several issues that increase the time it takes for a PR to get
Slow CiCurrently, the CI for nixpkgs catches a lot of errors that makes a PR One thing that massively slows down a lot of merges is the lack of clarity This problem is exacerbated by unclear guidelines around CI. While it's Another problem that arises from unclear CI guidelines is that when people end Unclear guidelinesIn the same vein as above, nixpkgs in general suffers from a problem of unclear While a lot of the expectations for a good PR are codified in various markdown This leads to a situation where a lot is left up to the individual reviewer, and One of the points of guidelines and CI checks is that they reduce or eliminate Better guidelines will also mean that a contributor can ensure that their PR Discoverability problemsOften times, matching a reviewer with a PR that is of interests to them is done In many other projects, it's possible to simply watch a repository and just Solving this by dividing into topics would be a huge improvement for matching There are currently attempts at this being worked on, but I think they still Lack of ownershipIn cases where someone has maintained a package, module, or "subsystem", and Drive-by reviews with various expectations of additions, scope creep, and added In eza we have a similar concept of committers privilege. The person that Basically, by giving ownership to contributors, you ensure they're not alienated Commit bits are binaryA problem that has been attempted to address for a while is that currently, the However there is still a lot of room for improvement. Delegating and giving more This is one of the hardest problems to solve, and also one that is hard to solve More granular merge rights would be very useful, and we may be able to get far Still I think just with tooling we can get really far here. Review CultureA final point that could cause rapid improvement is to codify and disseminate a There is a bunch of literature on the subject[1], and we should absolutely [1]: There recently was an excellent talk on the subject, |
The current state of open Issues and PRs in Nixpkgs is frustrating, and I see the occasional self-merge as an expression of this frustration. This issue is perhaps the best example of why we simply need more resources to throw at these kinds of problems. Maintenance of any single package is a serious task - moreso when the dependency tree is deep or complicated, as we often see - and Nixpkgs is the largest repository by a large margin, so adequately dealing with this necessarily requires more from us than from other projects. As indicated by my answers to other questions, a major focus for me is finding ways to pay maintainers for their work. One way I'd aim to do this is by forming relationships in which commercial organizations could pay the Foundation to support some packages they care about, with the Foundation compensating the relevant maintainers accordingly. I believe that with enough planning and effort, we can eventually achieve "inbox zero" for open PRs, and we can do the same for the open Issues too. |
Question
With the whole Wayland-protocols debate going on, one cannot skip the parallel to Nixpkgs. Some users have a good friend committer to have their PRs reviewed and merged. But the frustration even hits some committers that sometimes are caught self-merging.
Practical solutions to end the frustration would (and will) take the entire community participation. How can you, as a lead, help both to accommodate all the opinions and to speed the adoption of solutions, taking down the number while caring about the health (consider burnout) of those involved on applying those measures?
Candidates I'd like to get an answer from
No response
Reminder of the Q&A rules
I'm following and will keep following the Q&A guidelines and rules
PS: Good job on everything related to this repo!
The text was updated successfully, but these errors were encountered: