-
Notifications
You must be signed in to change notification settings - Fork 395
Description
While thinking on this RFC, please keep in mind that this project is relatively small and maintained by a small number of people without consistent amounts of time available to put towards Idris2 at any given point in time. It's good to have processes but my goal is not to add a ton of overhead that isn't realistic for this project. I just admit there could be a bit more clarity and consistency.
- I have read CONTRIBUTING.md.
- I have checked that there is no existing PR/issue about my proposal.
Summary
This proposal is to modify the CONTRIBUTING document to more accurately and clearly reflect PR requirements at the same time as updating any supporting materials (like the PR template) and even get suggestions for potential CI automations that could help enforce guidelines if any come to mind.
Motivation
It has become apparent that the requirements in the CONTRIBUTING document are either (a) not all relevant or not all relevant all the time or (b) not followed all the time for lack of thinking of them or lack of motivation or lack of perceived importance.
While one response to this could be to just renew the sense of importance of such guidelines, it also seems clear that the guidelines could say more and be louder about some things while also being clear about what exceptions are made and when.
The proposal
I'd like to open this up to community input for the most part but there are a few suggestions from comments on #3565 that I will mention here for starters.
- We should re-emphasize the following sections of the contribution guidelines. [My take: Perhaps a more explicit section on Pull Request reviewing for some but not all of these; That would serve both to let submitters know how their PRs are reviewed and also reviewers know what they are expected to take into consideration].
Many contributions will require accompanying tests and documentation updates. Bugfixes in particular should be accompanied by tests, to avoid future regressions.
In all cases, a pull request must have a short description (one sentence is usually enough) that explains its purpose. However obvious you think it might be, it really helps when reviewing the changes.
Changes to prelude and base libraries
'prelude' and 'base' are, in some sense, part of the language. There are a lot of trade offs to be made in the design of the prelude especially - such as interface hierarchies - and while you may not agree with the way it looks, by and large these decisions have already been made so there must be a compelling reason for them to be changed.
-
We should merge CI changes similar to these that make it easier for us to be cognizent of the impact of breaking changes to libraries for which we have already stated we would like to have relative stability.
-
We should adopt a self-merge and merge-without-comment policy and follow it. I suggest the policy say that PRs will not be merged without any review comments or approval prior to a specified review window. Perhaps a few days or a work week. PRs that receive approval need not wait out that full window before merging. There would likely need to be other exemptions: hot fixes to bugs and fixes to CI issues may deserve mention as exempt from the review period limitation. This limitation isn't intended to artificially slow down progress, just give community and other maintainers adequate time to chime in even during an otherwise busy week. Self merging should be explicitly allowed given the size of our maintainer team but the aforementioned limitations on it seem reasonable to me.
-
We should consider adding a check box to our PR template for adding code documentation to any new library contributions (base, contrib, test, linear, etc) as a friendly reminder.
Now I cede the floor to you. Have I missed good suggestions? Do you object to any of the suggestions above? I don't think we need to wait for some sort of formal approval of this RFC as a whole to act. At some point in the future, someone will take points from this issue that were not objected to and act on them with changes to the CONTRIBUTING.md file or the PR template or the README as feels most appropriate.