Hi all,

I propose to improve the code review process across the Jenkins GitHub
organization. TL;DR: Let's introduce CODEOWNERS in repositories and
automatically request reviews from maintainer teams.

*Motivation:* In a number of plugins we have issues with pull requests
which do not get timely reviews from the maintainers. It slows down
delivery of fixes and impacts contributor experience, especially for
newcomers who have to wait and to ping maintainers. Finally it impacts our
ability to attract and retain contributors, and also causes frustration
among maintainers and Jenkins users who see the desired PRs unmerged.

*Why does it happen?* We have well known issues with abandoned plugins, and
there we cannot do much except promoting the adoption process
<https://jenkins.io/doc/developer/plugin-governance/adopt-a-plugin/>. But
lack of reviews also happens in other plugins. In many cases it is just
caused by maintainers missing GitHub notifications (I am guilty of that
too) and/or forgetting to follow-up. It is normal, because many plugins are
maintained by volunteers. Life happens, work happens, etc. But we could
help maintainers to keep track of review requests.

*Current state:*

   - In recent years GitHub introduced support of code review requests.
   GitHub offers built-in dashboards so that every user can see the pending
   reviews (link <https://github.com/pulls/review-requested>). There are
   also tools like In recent years GitHub introduced support of code review
   requests. Pull reminders <https://pullreminders.com/> which can
   integrate with corporate environments. For example, it allows to notify
   about new PRs and to periodically remind about stale review requests in
   Slack.
   - How do we use GitHub? For each plugin we already have a GitHub team (
   ${reponame}-developers) which could be used to request reviews (see GitHub
   permissions management
   
<https://jenkins.io/doc/developer/plugin-governance/managing-permissions/#github-permissions>).
   jenkinsci organization members can request reviews inside the organization
   - External contributors cannot request reviews if they are not a part of
   the organization or repository collaborators. They can only CC maintainers
   in comments, and they won/t be able to see developer teams and request
   reviews from them

*Proposed solution:* GitHub now offers Code Owners metadata file
<https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners>
for
repos. It allows to specify owners of particular sections of code and to
automatically request reviews from them in pull requests. Such reviews will
be requested even if the submitter is not a member of the GitHub
organization. It would also help organization members, because they will
not need to manually request reviews and spend time on it. In order to
implement that for a repo, we just need to add a string like "*
@jenkinsci/pluginId-plugin-developers " in to .github/CODEOWNERS (example
<https://github.com/jenkinsci/role-strategy-plugin/blob/master/.github/CODEOWNERS>
).

*Scope of changes: *Plugin repositories inside the jenkinsci GitHub
organizations. Other organizations (e.g. jenkins-infra) or non-plugin
repositories are out of the scope.

*Risks:*

   - "${reponame}-developers" team is a common practice, put it is not a
   case for all plugin repositories.
      - Solution: We skip repositories with a different permission model
   - Not every maintainer may want to be requested in such way. Some people
   do not like to receive too many notifications, and prefer to look at the
   repository periodically.
      - Solution: the process should be opt-in
   - Ownership changes in plugin? How they will impact the process
      - Solution: we use a "${reponame}-developers" team, so that the
      process is not bounded to individuals. Once a new contributor
added to the
      list of plugin maintainers, he/she will receive review requests for newly
      created PRs and review re-requests

*Rollout plan:*

   - Jenkins project recommends setting CODEOWNERS in the repositories
   - We add CODEOWNERS template to plugin archetypes
   <https://github.com/jenkinsci/archetypes>
   - We submit pull requests to plugin repositories which have associated
   "${reponame}-developers" teams. Due to the number of repositories it will
   likely require a bot, similar to how Daniel Beck handled the Plugin POM
   HTTP/HTTPs mess cleanup
   
<https://groups.google.com/forum/#!msg/jenkinsci-dev/fc8xSQXift4/GlZZQR5lDAAJ>
   - Each plugin maintainer or maintainer team will decide on their own
   whether they accept the process or not. Merging or closing the pull request
   will indicate the decision

I think that such change could greatly improve contributor experience
across the  in the project. What do you think?

Thanks in advance,
Oleg Nenashev

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jenkinsci-dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-dev/CAPfivLDCPCEb3oE_4uynf%2BE8KcFcSaY5pxy3MR6wveR%2BdtijBw%40mail.gmail.com.

Reply via email to