OpenJFX code review policies, etc.

Phil Race philip.race at oracle.com
Tue Jun 12 20:55:09 UTC 2018


One other point .. something I mentioned off line to Kevin but he did 
not so far bring up here,
is that when counting the number of reviewers on a fix, we must require 
at least one Reviewer,
with a capital "R", but to make up the total of 2 reviewers, it is 
sufficient to have one other person
who only has committer status .. or even author status (maybe), be the 
second reviewer.
We've used this policy on the JDK AWT/2D/Swing stack for a long time. It 
not only frees up the
scarce "R"eviewers, but it helps train new ones :-), whilst still 
ensuring at least two sets of eye balls
were on it.

-phil.

On 05/24/2018 10:36 AM, Kevin Rushforth wrote:
> Phil pointed out one glaring typo in the summary and also a couple 
> things in the details that could be clarified.
>
>> The short version of the proposal is:
>> ...
>> 2. Revised code review policies for different types of changes: 
>> simple, low-impact fixes (1 Reviewer); higher-impact fixes (2 
>> Reviewers + allow time for others to chime in); Features / API 
>> changes (CSR approval, including approval by a "lead", plus 3 
>> Reviewers for the code)
>>
>
> That last been should be: CSR approval, including approval by a 
> "lead", plus *2* Reviewers for the code. I had it right in the 
> details, but made a typo in the short version. While some reviews 
> might have more than 2, it was certainly not my intent to mandate it.
>
>> A. Low-impact bug fixes. ...
>> One reviewer is sufficient to accept such changes. As a courtesy, and 
>> to avoid changes which later might need to be backed out, if you 
>> think there might be some concern or objection to the change, please 
>> give sufficient time for folks who might be in other time zones the 
>> chance to take a look. This should be left up to the judgment of the 
>> reviewer who approves it as well as the contributor.
>
> To clarify, the intent is to avoid pushing changes that might be 
> controversial, and not to mandate unnecessary delay for truly simple 
> fixes (e.g., fixing a build break). Reviewers and Committers are 
> expected to use their best judgment here.
>
>> C. New features / API additions. This includes behavioral changes, 
>> additions to the fxml or css spec, etc.
>>
>> ... a New Feature, API addition, or behavioral change must be 
>> reviewed / approved by a "lead". Currently this is either myself or 
>> Johan Vos as indicated above.
>>
>> I also propose that we continue to use the CSR process [3] to track 
>> such changes. The CSR chair has indicated that he is willing to track 
>> JavaFX compatibility changes even though FX is no longer a part of 
>> the JDK.
>
> The "approval by lead" means approving the API / feature change via 
> the CSR. A "lead" often will be one of the code reviewers as well, but 
> need not be as long as they approve the API change itself via the CSR.
>
> -- Kevin
>
>
> On 5/23/2018 3:16 PM, Kevin Rushforth wrote:
>> To: OpenJFX Developers
>>
>> As I mentioned in a message last week [1] I would like to restart the 
>> discussion we started a few months ago [2] around making it easier to 
>> contribute code to OpenJFX. To this end, I like to make some concrete 
>> proposals around code review / API review policies.
>>
>> Before getting to the details, I would like to acknowledge Gluon's 
>> contributions to the OpenJFX project, specifically those of Johan 
>> Vos. I am pleased to announce an expanded role for Johan Vos in the 
>> OpenJFX project. I would like to announce that starting now, Johan is 
>> effectively a co-lead for the purposes of setting direction, and 
>> approving new features for the Project.
>>
>> The short version of the proposal is:
>>
>> 1. Formalize the concept of Reviewers with an initial list of 
>> Reviewers and a defined criteria for adding additional Reviewers.
>>
>> 2. Revised code review policies for different types of changes: 
>> simple, low-impact fixes (1 Reviewer); higher-impact fixes (2 
>> Reviewers + allow time for others to chime in); Features / API 
>> changes (CSR approval, including approval by a "lead", plus 3 
>> Reviewers for the code)
>>
>> 3. Streamlining reviews of changes developed in the GitHub sandbox: 
>> provided that the review policy is followed to before a PR is merged 
>> into the develop branch in GitHub, a fast-track review can happen 
>> pointing to the changeset that was merged and the PR, which has 
>> review comments.
>>
>> Details follow.
>>
>> Quoting from my earlier message:
>>
>>> "Code reviews are important to maintain high-quality contributions, 
>>> but we recognize that not every type of change needs the same level 
>>> of review. Without lowering our standards of quality, we want to 
>>> make it easier to get low-impact changes (simple bug fixes) accepted."
>>
>> To that end, I propose the following policies. Many of these will 
>> involve judgment calls, especially when it comes to deciding whether 
>> a fix is low impact vs. high-impact. I think that's OK. It doesn't 
>> have to be perfect.
>>
>> Recommendations
>>
>> 1. I recommend that we formalize the concept of Reviewers, using the 
>> OpenJDK Reviewer role for the OpenJFX Project.
>>
>> A. I will provide an initial list of reviewers to the registrar based 
>> on past contributions, and also recognizing Committers who have 
>> become experts in their area. This is the only time we will have such 
>> latitude as the OpenJDK Bylaws specify the policy we need to follow 
>> for nominating and voting upon additional Reviewers.
>>
>> B. We need to set formal guidelines for becoming a Reviewer. The JDK 
>> uses a threshold of 32 significant contributions. While we don't want 
>> to relax it too much, one thing I have been discussing informally 
>> with a few people is that a Committer with, say, 24 commits, who 
>> regularly participates in reviews, offering good feedback, might be 
>> just a good a reviewer (maybe even better) than someone with 32 
>> commits who rarely, if ever, provides feedback on proposed bug fixes. 
>> I'm open for suggestions here.
>>
>> One thing I'd like to add is that we expect Reviewers to feel 
>> responsible not just for their piece, but for the quality of the 
>> JavaFX library as a whole. I might work with some folks at Gluon and 
>> here at Oracle to draft a set of expectations for reviewers.
>>
>>
>> 2. Code review policies
>>
>> All code reviews must be posted on the openjfx-dev mailing list -- 
>> even simple fixes. I propose that we have the following code review 
>> policies for different types of changes. I also note that if there is 
>> disagreement as to whether a fix is low-impact or high-impact, then 
>> it is considered high-impact. In other words we will always err on 
>> the side of quality by "rounding up" to the next higher category. The 
>> contributor can say whether they think something is low-impact or 
>> high-impact, but It is up to a Reviewer to initially decide this.
>>
>> A. Low-impact bug fixes. These are typically isolated bug fixes with 
>> little or no impact beyond fixing the bug in question; included in 
>> this category are test fixes (including new tests), doc fixes, and 
>> fixes to sample applications (including new samples).
>>
>> One reviewer is sufficient to accept such changes. As a courtesy, and 
>> to avoid changes which later might need to be backed out, if you 
>> think there might be some concern or objection to the change, please 
>> give sufficient time for folks who might be in other time zones the 
>> chance to take a look. This should be left up to the judgment of the 
>> reviewer who approves it as well as the contributor.
>>
>> B. Higher impact bug fixes or RFEs. These include changes to the 
>> implementation that potentially have a performance or behavioral 
>> impact, or are otherwise broad in scope. Some larger bug fixes will 
>> fall into this category, as will fixes in high-risk areas (e.g., CSS).
>>
>> Two reviewers must approve to accept such changes. Additionally, the 
>> review should allow sufficient time for folks who might be in other 
>> time zones the chance to review if they have concerns.
>>
>> C. New features / API additions. This includes behavioral changes, 
>> additions to the fxml or css spec, etc.
>>
>> Feature requests come with a responsibility beyond just saying "here 
>> is the code for this cool new feature, please take it". There are 
>> many factors to consider for even small features. Larger features 
>> will need a significant contribution in terms of API design, coding, 
>> testing, maintainability, etc.
>>
>> To ensure that new features are consistent with the rest of the API 
>> and the desired direction of the Project, I propose that a New 
>> Feature, API addition, or behavioral change must be reviewed / 
>> approved by a "lead". Currently this is either myself or Johan Vos as 
>> indicated above.
>>
>> I also propose that we continue to use the CSR process [3] to track 
>> such changes. The CSR chair has indicated that he is willing to track 
>> JavaFX compatibility changes even though FX is no longer a part of 
>> the JDK.
>>
>> For the review of the implementation, I propose that we use the same 
>> "two reviewer" standard for the code changes as category B.
>>
>>
>> 3. Streamlining the review process for changes developed on GitHub
>>
>> A fix that was developed as pull-requests (PRs) on GitHub is eligible 
>> for a fast-track review, if:
>>
>> A. The PR was squashed / merged into the develop branch as a single 
>> changeset
>> B. No follow-on changesets were merged into develop as part of that 
>> same fix
>> C. The changeset is "whitespace clean" -- meaning that you have run 
>> 'tools/scripts/checkWhiteSpace' on the final changeset (we might want 
>> to add this to the CI build).
>> and
>> D. All code review policies outlined above in #2 were followed prior 
>> to the PR being approved and merged into the develop branch on 
>> GitHub. This includes sending email to openjfx-dev when you first 
>> make a PR that you intend to have merged into the develop branch to 
>> give other reviewers who may not be watching all PRs a chance to 
>> comment before it is merged.
>>
>> A "fast-track" review is a quick sanity check before the change is 
>> committed and pushed to the jfx-dev repo on hg.openjdk.java.net. This 
>> fast track review just needs to point to the GitHub changeset that 
>> was merged and to the PR, which will have any review comments. If 
>> there are no compelling reasons why the PR can't be pushed to 
>> jfx-dev, then it can be pushed.
>>
>>
>> Please let me know your thoughts on the above proposals.
>>
>> Thank you all for being a part of this community.
>>
>> -- Kevin Rushforth, OpenJFX Project Lead
>>
>> [1] 
>> http://mail.openjdk.java.net/pipermail/openjfx-dev/2018-May/021867.html
>>
>> [2] 
>> http://mail.openjdk.java.net/pipermail/openjfx-dev/2018-February/021335.html
>>
>> [3] https://wiki.openjdk.java.net/display/csr/Main
>>
>



More information about the openjfx-dev mailing list