toggle quoted messageShow quoted text
From: Ni, Ray <firstname.lastname@example.org>
Sent: Friday, May 8, 2020 9:23 PM
To: email@example.com; Kinney, Michael D
Subject: RE: [edk2-rfc] GitHub Pull Request based Code
It's a huge improvement to me as an Outlook user if
pull-request-based review is enabled!
Please help me to understand: The pull-request-based
review has been enabled naturally when edk2
was migrated to Github. People don't use it because
it's not accepted by community. Your process
tries to meet community's needs of achieving all review
comments in mails so pull-request-based
review can be accepted by community. Right?
I just subscribed at
I received the confirmation mail and clicked the link
in the mail to confirm.
But I waited for ~15 minutes and didn't receive the
additional mail containing the auto-generated password.
I went to
However, the page requires me to enter password.
Can you please change the setting so that viewing the
mail achieve doesn't need password?
Laszlo has graciously volunteered to help setup this email
subscription service to help evaluate the POC. I will let
him comment on the settings available. He should also be
able to approve your subscription so you can see the archive
and receive any emails generated by the webhook.
Please advise me what else I can try. I am happy to try
as many steps as I can before all the process are
-----Original Message-----Behalf Of Michael D Kinney
From: firstname.lastname@example.org <email@example.com> On
Sent: Saturday, May 9, 2020 11:00 AMMichael D <firstname.lastname@example.org>
To: email@example.com; firstname.lastname@example.org; Kinney,
Subject: [edk2-rfc] GitHub Pull Request based CodeReview Process
based code review process to
This is a proposal to change from the current email-
a GitHub pull request-based code review process forall repositories maintained
in TianoCore. The current email-based code reviewprocess and commit message
requirements are documented in Readme.md orReadme.rst at the root of
repositories along with a few Wiki pages:https://github.com/tianocore/edk2/blob/master/ReadMe.rs
request and perform all
The goal is to post changes by opening a GitHub pull
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 GitHubaccounts.
discussions on this topic is
One requirement that was collected from previous
the need for an email archive of all patches and codereview activities. The
existing GitHub features to produce an email archivewere deemed insufficient.
A proof of concept of a GitHub webhook has beenimplemented 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 thearchive.
proposed GitHub pull request
The sections below provide more details on the
based code review process, details on the emailarchive service, and a set of
remaining tasks make the email archive serviceproduction quality. It does not
make sense to support both the existing email-basedcode 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 reviewand retire the email based
code review process on the same date.today to run automated
The edk2 repository is using GitHub pull requests
CI checks on the code changes and allows a maintainerto set the `push` label to
request the changes to be merged if all CI checkspass. With this proposal,
once the code review is complete and the commitmessages have been updated, the
same pull request can be used to perform a final setof CI checks and merge the
changes into the master branch.the email archive service
I would like to collect feedback on this proposal and
over the next two weeks with close of comments onFriday May 22, 2020. If all
issues and concerns can be addressed, then I wouldlike to see the community
agree to make this change as soon as all remainingtasks are completed.
# TianoCore Repositories to enable
[edk2](https://github.com/tianocore/edk2) as an
# GitHub Pull Request Code Review Process
**NOTE**: All steps below use
example. Several repositories are supported.[edk2](https://github.com/tianocore/edk2)
## Author/Developer Steps
* Create a personal fork of
fork of edk2 repository.
* Create a new branch from edk2/master in personal
new branch. Make sure to
* Add set of commits for new feature or bug fix to
follow the commit message format requirements.The only change with this
RFC is that the Cc: lines tomaintainers/reviewers should **not** be added.
The Cc: lines are still supported, but theyshould only be used to add
reviewers that do not have GitHub IDs or are notmembers of TianoCore.
* Push branch with new commits to personal fork
* Create a pull request against TianoCore
in the pull request title
* If pull request has more than 1 commit, then fill
and decryption information for Patch #0. Do notleave defaults.
maintainers and reviewers to
* Do not assign reviewers. The webhook assigns
the pull request and each commit in the pullrequest.
requires changes, then make
* If maintainers/reviewers provide feedback that
add commits to the current branch with therequested changes. Once all
changes are accepted on the current branch,reformulate the patch series and
commit comments as needed for perform a forcedpush to the branch in the
personal fork of the edk2 repository. This stepmay be repeated if multiple
versions of the patch series are required toaddress all code review
**OPEN**: How should minimum review period be set?
## TianoCore GitHub Email Archive Webhook Service
* Receive an event that a new pull request wasopened
* Evaluate the files modified by the entire pullrequest and each commit in
the pull request and cross references against`Maintainters.txt` in the root
of the repository to assign maintainers/reviewersto the pull request and
each commit in the pull request. Individualcommit assignments are performed
by adding a commit comment of the following form:email archive. Emails
[CodeReview] Review-request @mdkinney
* Generate and sends git patch review emails to the
are also sent to any Cc: tags in the commitmessages.
the branch in their
* If the author/developer performs a forced push to
personal fork of the edk2 repository, then a newset of patch review emails
with patch series Vx is sent to the email archiveand any Cc: tags in commit
messages.activities and generate
* Receive events associated with all code review
and send emails to the email archive that showsall review comments and
all responses closely matching the email contentsseen in the current email
based code review process.merged or closed.
* Generate and send email when pull request is
'Watch' the repositories that
## Maintainer/Reviewer Steps
* Make sure GitHub configuration is setup to
you have maintainer ship or reviewresponsibilities and that email
notifications from GitHub are enabled. Thisenables email notifications
when a maintainer/reviewer is assigned to a pullrequest and individual
the TianoCore GitHub Email
* Subscribe to the email archive associated with
Archive Webhook Service.https://www.redhat.com/mailman/listinfo/tianocore-code-
TianoCore GitHub Email
* Review pull requests and commits assigned by the
Archive Webhook Service and use the GitHub web UIto provide all review
feedback and add commits with
* Wait for Author/Developer to respond to all
code changes as needed to resolve all feedback.This step may be repeated
if the developer/author need to produce multipleversions of the patch
series to address all feedback.Acked-by, and Tested-by
* Once all feedback is addressed, add Reviewed-by,
responses on individual commits. Or add Series-reviewed-by, Series-acked-by,
or Series-Tested-by responses to the entire pullrequest.
messages in the pull request.
* Wait for Developer/Author to add tags to commit
message tags. If there are not
* Perform final review of patches and commit
issues, set the `push` label to run final set ofCI checks and auto merge
the pull request into master.the end of M: and R: lines
# Maintainers.txt Format Changes
Add GitHub IDs of all maintainers and reviewers at
in . For example:[mdkinney]
M: Michael D Kinney <email@example.com>
based on assignments
# TianoCore GitHub Email Archive Webhook Service
Assign reviewers to commits in a GitHub pull request
documented in Maintainers.txt and generates an emailarchive of all pull request
and code review activities.webhook
RedHat email subscription
# Email Archive Subscription Service
The emails are being delivered to the following
service. Please subscribe to receive the emails andto be able to view the
The email archives are at this link:
requests and code reviews to
The following sections show some example pull
help review the generated emails, their contents, andthreading.
## Email Achieve Thread View
## Example patch series with 1 patch
## Example patch series with < 10 patches
## Example patch series with > 80 patches
new code review process.
# Tasks to Complete
* Create edk2-codereview repository for evaluation of
* Add GitHub IDs to Maintainers.txt in edk2-codereview repository
* Update BaseTools/Scripts/GetMaintainer.py to becompatible with GitHub IDs at
the end of M: and R: statementsand emails
* Update webhook to use Rabbit MQ to manage requests
* Determine if webhook requests must be serialized?Current POC is serialized.
* Make sure webhook has error handling for allunexpected events/states.
* Add logging of all events and emails to webhooksupport
* Add admin interface to webhook
* Deploy webhook on a production server with 24/7
# Ideas for Future Enhancements
* Run PatchCheck.py before assigning
* Add a simple check that fails if a single patchspans more than one package.
* Monitor comments for Reviewed-by, Acked-by, Tested-by, Series-Reviewed-by,
Series-Acked-by, Series-Tested-by made by assignedmaintainers/reviewers.
Once all commits have required tags, auto updatecommit messages in the
branch and wait for maintainer to set the `Push`label to run CI and auto
merge if all CI checks pass.