public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Michael D Kinney" <michael.d.kinney@intel.com>
To: "devel@edk2.groups.io" <devel@edk2.groups.io>,
	"rfc@edk2.groups.io" <rfc@edk2.groups.io>,
	"Kinney, Michael D" <michael.d.kinney@intel.com>
Cc: "Zhang, Chao B" <chao.b.zhang@intel.com>,
	Julien Grall <julien@xen.org>,
	"marcandre.lureau@redhat.com" <marcandre.lureau@redhat.com>,
	"stefanb@linux.ibm.com" <stefanb@linux.ibm.com>,
	"liran.alon@oracle.com" <liran.alon@oracle.com>,
	"nikita.leshchenko@oracle.com" <nikita.leshchenko@oracle.com>
Subject: Re: [edk2-rfc] GitHub Pull Request based Code Review Process
Date: Mon, 11 May 2020 17:27:35 +0000	[thread overview]
Message-ID: <MN2PR11MB4461CB72DC128A56EB05C786D2A10@MN2PR11MB4461.namprd11.prod.outlook.com> (raw)
In-Reply-To: <MN2PR11MB446135275482094CDD3BA273D2A30@MN2PR11MB4461.namprd11.prod.outlook.com>

Hello,

I have added the following repository to TianoCore to
support the evaluation of the GitHub pull request based
code review process and the email archive webbook.  This
is a copy of tianocore/edk2 repo as of May 10, 2020. 

	https://github.com/tianocore/edk2-codereview

I have updated Maintainers.txt in this repo to add
GitHub IDs for the maintainers and reviewers.  Please
review these updates to make sure they are correct.

    https://github.com/tianocore/edk2-codereview/blob/master/Maintainers.txt

There are a few maintainers and reviewers that I need
GitHub IDs.  Please send me your GitHub IDs and I will
complete the update of Maintainers.txt.

    M: Chao Zhang <chao.b.zhang@intel.com>
    R: Julien Grall <julien@xen.org>
    R: Marc-André Lureau <marcandre.lureau@redhat.com>
    R: Stefan Berger <stefanb@linux.ibm.com>
    R: Liran Alon <liran.alon@oracle.com>
    R: Nikita Leshenko <nikita.leshchenko@oracle.com>

Thanks,

Mike


> -----Original Message-----
> From: Kinney, Michael D <michael.d.kinney@intel.com>
> Sent: Friday, May 8, 2020 8:00 PM
> To: devel@edk2.groups.io; rfc@edk2.groups.io; Kinney,
> Michael D <michael.d.kinney@intel.com>
> Subject: [edk2-rfc] GitHub Pull Request based Code
> Review Process
> 
> Hello,
> 
> This is a proposal to change from the current email-
> based code review process to
> a GitHub pull request-based code review process for all
> repositories maintained
> in TianoCore.  The current email-based code review
> process and commit message
> requirements are documented in Readme.md or Readme.rst
> at the root of
> repositories along with a few Wiki pages:
> 
> *
> https://github.com/tianocore/edk2/blob/master/ReadMe.rs
> t
> *
> https://github.com/tianocore/tianocore.github.io/wiki/E
> DK-II-Development-Process
> *
> https://github.com/tianocore/tianocore.github.io/wiki/L
> aszlo's-unkempt-git-guide-for-edk2-contributors-and-
> maintainers
> *
> https://github.com/tianocore/tianocore.github.io/wiki/C
> ommit-Message-Format
> *
> https://github.com/tianocore/tianocore.github.io/wiki/C
> ommit-Signature-Format
> 
> The goal is to post changes by opening a GitHub pull
> request and perform all
> code review activity using the GitHub web interface.
> This proposal does not
> change any licenses or commit message requirements.  It
> does require all
> developers, maintainers, and reviewers to have GitHub
> accounts.
> 
> One requirement that was collected from previous
> discussions on this topic is
> the need for an email archive of all patches and code
> review activities.  The
> existing GitHub features to produce an email archive
> were deemed insufficient.
> A proof of concept of a GitHub webhook has been
> implemented to provide the email
> archive service.  This email archive is read-only.  You
> will not be able to send
> emails to this archive or reply to emails in the
> archive.
> 
> The sections below provide more details on the proposed
> GitHub pull request
> based code review process, details on the email archive
> service, and a set of
> remaining tasks make the email archive service
> production quality.  It does not
> make sense to support both the existing email-based
> code review and the GitHub
> pull request-based code review at the same time.
> Instead, this proposal is to
> switch to the GitHub pull request-based code review and
> retire the email based
> code review process on the same date.
> 
> The edk2 repository is using GitHub pull requests today
> to run automated
> CI checks on the code changes and allows a maintainer
> to set the `push` label to
> request the changes to be merged if all CI checks pass.
> With this proposal,
> once the code review is complete and the commit
> messages have been updated, the
> same pull request can be used to perform a final set of
> CI checks and merge the
> changes into the master branch.
> 
> I would like to collect feedback on this proposal and
> the email archive service
> over the next two weeks with close of comments on
> Friday May 22, 2020.  If all
> issues and concerns can be addressed, then I would like
> to see the community
> agree to make this change as soon as all remaining
> tasks are completed.
> 
> # TianoCore Repositories to enable
> 
> * [edk2](https://github.com/tianocore/edk2)
> * [edk2-platforms](https://github.com/tianocore/edk2-
> platforms)
> * [edk2-non-osi](https://github.com/tianocore/edk2-non-
> osi)
> * [edk2-test](https://github.com/tianocore/edk2-test)
> * [edk2-libc](https://github.com/tianocore/edk2-libc)
> * [edk2-staging](https://github.com/tianocore/edk2-
> staging)
> 
> # GitHub Pull Request Code Review Process
> 
> **NOTE**: All steps below use
> [edk2](https://github.com/tianocore/edk2) as an
> example.  Several repositories are supported.
> 
> ## Author/Developer Steps
>   * Create a personal fork of
> [edk2](https://github.com/tianocore/edk2)
> 
>     https://help.github.com/en/github/getting-started-
> with-github/fork-a-repo
> 
>   * Create a new branch from edk2/master in personal
> fork of edk2 repository.
> 
>   * Add set of commits for new feature or bug fix to
> new branch.  Make sure to
>     follow the commit message format requirements.  The
> only change with this
>     RFC is that the Cc: lines to maintainers/reviewers
> should **not** be added.
>     The Cc: lines are still supported, but they should
> only be used to add
>     reviewers that do not have GitHub IDs or are not
> members of TianoCore.
> 
>   * Push branch with new commits to personal fork
>   * Create a pull request against TianoCore edk2/master
> 
>     https://help.github.com/en/github/collaborating-
> with-issues-and-pull-requests/creating-a-pull-request
> 
>   * If pull request has more than 1 commit, then fill
> in the pull request title
>     and decryption information for Patch #0.  Do not
> leave defaults.
> 
>   * Do not assign reviewers.  The webhook assigns
> maintainers and reviewers to
>     the pull request and each commit in the pull
> request.
> 
>   * If maintainers/reviewers provide feedback that
> requires changes, then make
>     add commits to the current branch with the
> requested changes.  Once all
>     changes are accepted on the current branch,
> reformulate the patch series and
>     commit comments as needed for perform a forced push
> to the branch in the
>     personal fork of the edk2 repository.  This step
> may be repeated if multiple
>     versions of the patch series are required to
> address all code review
>     feedback.
> 
>   **OPEN**: How should minimum review period be set?
> Labels?
> 
> ## TianoCore GitHub Email Archive Webhook Service Steps
>   * Receive an event that a new pull request was opened
>   * Evaluate the files modified by the entire pull
> request and each commit in
>     the pull request and cross references against
> `Maintainters.txt` in the root
>     of the repository to assign maintainers/reviewers
> to the pull request and
>     each commit in the pull request. Individual commit
> assignments are performed
>     by adding a commit comment of the following form:
> 
>     [CodeReview] Review-request @mdkinney
> 
>   * Generate and sends git patch review emails to the
> email archive.  Emails
>     are also sent to any Cc: tags in the commit
> messages.
> 
>   * If the author/developer performs a forced push to
> the branch in their
>     personal fork of the edk2 repository, then a new
> set of patch review emails
>     with patch series Vx is sent to the email archive
> and any Cc: tags in commit
>     messages.
> 
>   * Receive events associated with all code review
> activities and generate
>     and send emails to the email archive that shows all
> review comments and
>     all responses closely matching the email contents
> seen in the current email
>     based code review process.
> 
>   * Generate and send email when pull request is merged
> or closed.
> 
> ## Maintainer/Reviewer Steps
> 
>   * Make sure GitHub configuration is setup to 'Watch'
> the repositories that
>     you have maintainer ship or review responsibilities
> and that email
>     notifications from GitHub are enabled.  This
> enables email notifications
>     when a maintainer/reviewer is assigned to a pull
> request and individual
>     commits.
> 
>     https://help.github.com/en/github/managing-
> subscriptions-and-notifications-on-github/configuring-
> notifications
> 
>   * Subscribe to the email archive associated with the
> TianoCore GitHub Email
>     Archive Webhook Service.
> 
>     https://www.redhat.com/mailman/listinfo/tianocore-
> code-review-poc
> 
>   * Review pull requests and commits assigned by the
> TianoCore GitHub Email
>     Archive Webhook Service and use the GitHub web UI
> to provide all review
>     feedback.
> 
>     https://help.github.com/en/github/collaborating-
> with-issues-and-pull-requests/reviewing-changes-in-
> pull-requests
> 
>   * Wait for Author/Developer to respond to all
> feedback and add commits with
>     code changes as needed to resolve all feedback.
> This step may be repeated
>     if the developer/author need to produce multiple
> versions of the patch
>     series to address all feedback.
> 
>   * Once all feedback is addressed, add Reviewed-by,
> Acked-by, and Tested-by
>     responses on individual commits.  Or add Series-
> reviewed-by, Series-acked-by,
>     or Series-Tested-by responses to the entire pull
> request.
> 
>   * Wait for Developer/Author to add tags to commit
> messages in the pull request.
> 
>   * Perform final review of patches and commit message
> tags.  If there are not
>     issues, set the `push` label to run final set of CI
> checks and auto merge
>     the pull request into master.
> 
> # Maintainers.txt Format Changes
> 
> Add GitHub IDs of all maintainers and reviewers at the
> end of M: and R: lines
> in [].  For example:
> 
>     M: Michael D Kinney <michael.d.kinney@intel.com>
> [mdkinney]
> 
> # TianoCore GitHub Email Archive Webhook Service
> 
> Assign reviewers to commits in a GitHub pull request
> based on assignments
> documented in Maintainers.txt and generates an email
> archive of all pull request
> and code review activities.
> 
> https://github.com/mdkinney/edk2-email-archive-webhook
> 
> # Email Archive Subscription Service
> 
> The emails are being delivered to the following RedHat
> email subscription
> service.  Please subscribe to receive the emails and to
> be able to view the
> email archives.
> 
> https://www.redhat.com/mailman/listinfo/tianocore-code-
> review-poc
> 
> The email archives are at this link:
> 
> https://www.redhat.com/mailman/private/tianocore-code-
> review-poc/index.html
> 
> The following sections show some example pull requests
> and code reviews to
> help review the generated emails, their contents, and
> threading.
> 
> ## Email Achieve Thread View
> 
> https://www.redhat.com/mailman/private/tianocore-code-
> review-poc/2020-May/thread.html#00289
> 
> ## Example patch series with 1 patch
> 
> https://www.redhat.com/mailman/private/tianocore-code-
> review-poc/2020-May/thread.html#00340
> 
> ## Example patch series with < 10 patches
> 
> * https://www.redhat.com/mailman/private/tianocore-
> code-review-poc/2020-May/msg00289.html
> * https://www.redhat.com/mailman/private/tianocore-
> code-review-poc/2020-May/msg00030.html
> * https://www.redhat.com/mailman/private/tianocore-
> code-review-poc/2020-May/msg00018.html
> * https://www.redhat.com/mailman/private/tianocore-
> code-review-poc/2020-May/msg00008.html
> 
> ## Example patch series with > 80 patches
> 
> * https://www.redhat.com/mailman/private/tianocore-
> code-review-poc/2020-May/msg00198.html
> * https://www.redhat.com/mailman/private/tianocore-
> code-review-poc/2020-May/msg00116.html
> * https://www.redhat.com/mailman/private/tianocore-
> code-review-poc/2020-May/msg00035.html
> 
> # Tasks to Complete
> 
> * Create edk2-codereview repository for evaluation of
> new code review process.
> * Add GitHub IDs to Maintainers.txt in edk2-codereview
> repository
> * Update BaseTools/Scripts/GetMaintainer.py to be
> compatible with GitHub IDs at
>   the end of M: and R: statements
> * Update webhook to use Rabbit MQ to manage requests
> and emails
> * Determine if webhook requests must be serialized?
> Current POC is serialized.
> * Make sure webhook has error handling for all
> unexpected events/states.
> * Add logging of all events and emails to webhook
> * Add admin interface to webhook
> * Deploy webhook on a production server with 24/7
> support
> 
> # Ideas for Future Enhancements
> 
> * Run PatchCheck.py before assigning
> maintainers/reviewers.
> * Add a simple check that fails if a single patch spans
> more than one package.
> * Monitor comments for Reviewed-by, Acked-by, Tested-
> by, Series-Reviewed-by,
>   Series-Acked-by, Series-Tested-by made by assigned
> maintainers/reviewers.
>   Once all commits have required tags, auto update
> commit messages in the
>   branch and wait for maintainer to set the `Push`
> label to run CI and auto
>   merge if all CI checks pass.
> 
> Best regards,
> 
> Mike
> 


  parent reply	other threads:[~2020-05-11 17:27 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-09  2:59 [edk2-rfc] GitHub Pull Request based Code Review Process Michael D Kinney
2020-05-09  4:22 ` Ni, Ray
2020-05-11 17:30   ` Michael D Kinney
2020-05-11 19:47   ` [edk2-devel] " Laszlo Ersek
2020-05-09 18:24 ` Rebecca Cran
2020-05-10 21:29   ` Michael D Kinney
2020-05-10 21:43     ` Rebecca Cran
2020-05-11  1:37       ` Michael D Kinney
2020-05-11 20:05         ` Laszlo Ersek
2020-05-11 20:00       ` Laszlo Ersek
2020-05-11 19:50     ` Laszlo Ersek
2020-05-11 17:27 ` Michael D Kinney [this message]
2020-05-11 19:39 ` Laszlo Ersek
2020-05-11 20:09   ` [EXTERNAL] " Bret Barkelew
2020-05-11 20:43     ` Michael D Kinney
2020-05-14 21:26       ` Bret Barkelew
2020-05-14 21:46         ` Rebecca Cran
2020-05-26 10:08           ` Tomas Pilar (tpilar)
2020-05-15  1:19         ` Michael D Kinney
2020-05-15  4:49           ` Bret Barkelew
2020-05-15  9:07             ` Laszlo Ersek
2020-05-15 15:43               ` Bret Barkelew
2020-05-18 11:48                 ` Philippe Mathieu-Daudé
2020-05-15  7:34         ` [EXTERNAL] " Laszlo Ersek
2020-05-15 15:36           ` Bret Barkelew
2020-05-18  2:29           ` Rebecca Cran
2020-05-11 22:07     ` Laszlo Ersek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=MN2PR11MB4461CB72DC128A56EB05C786D2A10@MN2PR11MB4461.namprd11.prod.outlook.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox