Request for assistance: Verify and update mailing list filter rules for jdk/jdk in preparation for Skara transition

Erik Helin erik.helin at oracle.com
Mon Aug 31 14:25:07 UTC 2020



On 8/31/20 4:04 PM, Philip Race wrote:
> 
> On 8/31/20, 6:11 AM, Kevin Rushforth wrote:
>> The minimum number of reviewers will remain at 1. Any "R"eviewer can 
>> raise the minimum usnig the `/reviewers` command, for example:
>>
>> /reviewers 2
>>
>> This will then require 2 reviewers. We use this for JavaFX and it has 
>> worked well. Having certain areas (e.g., 2d, swing, awt) default to 
>> `/reviewers 2` might be a useful RFE for Skara (Erik or Robin can 
>> comment as to whether they thing this is feasible).
> 
> I would hope so, since the github/skara tooling cheerily tells you can 
> go right ahead and integrate
> once you have the minimum number, and folks will take that message at 
> face value,
> and at least 8/10 of client bugs should have two reviewers so it should 
> be the default.
> Relaxing this is exactly the wrong direction once we push directly to 
> the main jdk repo
> and manually setting them all to two is going to get tedious.

To be precise, the bot states:

 > This change now passes all automated pre-integration checks. When the
 > change also fulfills all [project specific requirements
 > (https://github.com/openjdk/jdk/blob/master/CONTRIBUTING.md), type
 > /integrate in a new comment to proceed. After integration, the commit
 > message will be:

As you can see above we only state that the changes passes the 
_automated_ pre-integration checks. Furthermore we also provide a link 
to additional project specific requirements. For the jdk project, the 
file CONTRIBUTING.md contains a link to https://openjdk.java.net/contribute.

We could potentially highlight *automated* a bit more and also more 
strongly encourage the contributor read the contributing guidelines. As 
I stated in my earlier reply, I don't think it will be possible to 
capture all the details of the informal rules that apply for various 
sub-directories in the jdk repository in a program.

Remember that the guideline is that you should make 8 non-trivial 
changes before you get nomiated to become a Committer (a person who is 
*not* a Committer cannot use /integrate). Reviewers therefore have 
plenty time to educate and guide newcomers during those 8 reviews.

Thanks,
Erik

> -phil
>>
>> I can't think of any good way for automated tooling to be able to 
>> recognize that the "right sort" of reviewers with the right expertise 
>> (someone from 2D someone from build, etc) have reviewed it.
> 
> Nor I, but maybe someone on the skara team does.
> 
> -phil.
> 
>>
>> -- Kevin
>>
>>
>> On 8/29/2020 9:34 AM, Philip Race wrote:
>>> I have some questions which at least tangentially relate to the list 
>>> mappings which raise
>>> what to me are tricky problems but maybe they've already been thought 
>>> through and solved.
>>>
>>> First, what is the minimum number of reviewers required a fix for the 
>>> JDK project ?
>>>
>>> Second, how can we have that by default adjusted depending on mailing 
>>> list, with the
>>> ability to either raise or lower that number according to the 
>>> judgement of the fixer.
>>> In the client area 2 reviewers is the big rule, only one has to be a 
>>> Capital R reviewer,
>>> but for trivial and urgent fixes we allow just one reviewer.
>>>
>>> Third, if a fix is cross-posted to (say) build-dev and 2d-dev, how do 
>>> you ensure it
>>> gets both a build reviewer and a 2D reviewer's approval before 
>>> pushing ? That
>>> is after all the point of the cross-posting.
>>>
>>> -phil.
>>>
>>> On 8/27/20, 10:37 AM, Joe Darcy wrote:
>>>> Hello,
>>>>
>>>> The mapping of 
>>>> changed-file-to-OpenJDK-mailing-list(s)-to-review-the-file can be 
>>>> non-obvious, both to new contributors and to experienced 
>>>> contributors working in an unfamiliar area. If an automated mapping 
>>>> gets this 95+% correct, with the ability for manual tweaking, that 
>>>> strikes me as an overall improvement over the current situation.
>>>>
>>>> The current mapping has various entries that should be changed, but 
>>>> that is why it is being sent out for review before the Skara 
>>>> transition :-)
>>>>
>>>> As a general comment, I would expect both the mapping and other 
>>>> aspects of the Skara tooling to get updated in response to feedback 
>>>> after jdk/jdk moves over.
>>>>
>>>> -Joe
>>>>
>>>> On 8/27/2020 9:53 AM, Igor Ignatyev wrote:
>>>>> Hi Robin,
>>>>>
>>>>> although I really like the idea of having mapping b/w files and 
>>>>> groups/components/subcomponents, I agree w/ David that in its 
>>>>> *current* form it's unworkable. having the mapping in Skara repo is 
>>>>> impractical, as it introduces additional overhead for maintenance, 
>>>>> not to speak of possible desynchronization. Thus I suggest moving 
>>>>> the mapping to jdk/jdk repo and updating Skara tooling accordingly.
>>>>>
>>>>> I also have a question regarding the format, why did you decide to 
>>>>> invent your own format instead of using CODEOWNER-like format which 
>>>>> fits the needs rather nicely and is used for similar purposes by 
>>>>> github and gitlab?
>>>>>
>>>>> Thanks,
>>>>> -- Igor
>>>>>
>>>>>> On Aug 27, 2020, at 6:26 AM, David Holmes 
>>>>>> <david.holmes at oracle.com> wrote:
>>>>>>
>>>>>> In all seriousness I just don't think this is a reasonable or 
>>>>>> necessary thing to do. When you create a PR you should specify the 
>>>>>> mailing lists to be used, as you do today with a RFR. Trying to 
>>>>>> maintain a file by file mapping is just a huge initial setup cost 
>>>>>> and a maintenance nightmare. It is not necessary to try and 
>>>>>> automate this IMO.
>>>>>>
>>>>>> I wish this intent had been flagged/discussed some time ago. :(
>>>>>>
>>>>>> David
>>>>>> -----
>>>>>>
>>>>>> On 27/08/2020 8:34 pm, Robin Westberg wrote:
>>>>>>> Hi all,
>>>>>>> As part of transitioning the jdk/jdk repository to Git with 
>>>>>>> project Skara, we have created a set of rules that determine 
>>>>>>> which mailing list(s) should be the default recipient of a review 
>>>>>>> request, depending on which files are changed. The initial 
>>>>>>> version of these rules was created by looking at historical 
>>>>>>> commits and matching them with existing mailing list review 
>>>>>>> threads. This has produced a reasonable basis, but it can most 
>>>>>>> certainly be made better with some additional manual curating.
>>>>>>> Therefore, it would be very helpful if people with good knowledge 
>>>>>>> of the various subsystems and source files that make up the JDK 
>>>>>>> would be willing to take a look at these rules, and also suggest 
>>>>>>> improvements where needed. In addition, lists like [1] would also 
>>>>>>> be very useful insofar they exist.
>>>>>>> The current version of these rules is located in a JSON file in 
>>>>>>> the Skara repository at [2]. In order to check the validity of 
>>>>>>> the rules, there is also a CLI tool that can be used to apply it 
>>>>>>> to either a subset of files or existing commits and produce a 
>>>>>>> suggestion [3] [4]. If you are interested in helping out with 
>>>>>>> curating these rules, these are the steps to get started:
>>>>>>> 1. Install the Skara CLI tools: 
>>>>>>> https://wiki.openjdk.java.net/display/SKARA/CLI+Tools
>>>>>>> 2. Locate a suitable clone of the jdk/jdk repository (either 
>>>>>>> Mercurial or Git is fine)
>>>>>>> 3. Change (cd) to the root of your jdk/jdk repository
>>>>>>> 3. Run the “debug mlrules” command on your favorite subset of 
>>>>>>> files, for example like this (use the actual location of jdk.json 
>>>>>>> on your system):
>>>>>>> $ git skara debug mlrules -v 
>>>>>>> ~/git/skara/config/mailinglist/rules/jdk.json src/hotspot/share/jfr/
>>>>>>> Reading rules file...
>>>>>>> src/hotspot/share/jfr/dcmd: [hotspot-jfr-dev]
>>>>>>> src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp: 
>>>>>>> [hotspot-jfr-dev]
>>>>>>> src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.hpp: 
>>>>>>> [hotspot-jfr-dev]
>>>>>>> src/hotspot/share/jfr/instrumentation/jfrJvmtiAgent.cpp: 
>>>>>>> [hotspot-jfr-dev, serviceability-dev]
>>>>>>>>>>>>>> Final list suggestion is: [hotspot-jfr-dev, serviceability-dev]
>>>>>>> The command accepts multiple folder and/or file names to make it 
>>>>>>> possible to simulate a potential change to a given set of files:
>>>>>>> $ git skara debug mlrules -v 
>>>>>>> ../skara/config/mailinglist/rules/jdk.json doc/ide.md 
>>>>>>> src/hotspot/cpu/x86/x86.ad src/hotspot/os/linux/gc/z/zNUMA_linux.cpp
>>>>>>> Reading rules file...
>>>>>>> doc: [build-dev]
>>>>>>> src/hotspot/cpu: [hotspot-compiler-dev]
>>>>>>> src/hotspot/os: [hotspot-runtime-dev, hotspot-gc-dev]
>>>>>>> Combined list suggestion: [build-dev, hotspot-compiler-dev, 
>>>>>>> hotspot-gc-dev, hotspot-runtime-dev]
>>>>>>> Final list suggestion is: [build-dev, hotspot-dev]
>>>>>>> If the suggestions look fine, all is well. If not, you are 
>>>>>>> welcome to propose a change to the rules, preferably by editing 
>>>>>>> the jdk.json file [6] and creating a pull request towards the 
>>>>>>> Skara project as described in [5]. Coincidentally, this is the 
>>>>>>> same way that future changes to the jdk/jdk repository will be 
>>>>>>> integrated, so this exercise could also serve as a way of getting 
>>>>>>> started with Git / Skara!
>>>>>>> Best regards,
>>>>>>> Robin
>>>>>>> [1] https://openjdk.java.net/groups/2d/2dawtfiles.html
>>>>>>> [2] 
>>>>>>> https://git.openjdk.java.net/skara/blob/master/config/mailinglist/rules/jdk.json 
>>>>>>>
>>>>>>> [3]
>>>>>>> $ git skara debug mlrules -v 
>>>>>>> ~/git/skara/config/mailinglist/rules/jdk.json 
>>>>>>> src/java.desktop/unix/native
>>>>>>> Reading rules file...
>>>>>>> src/java.desktop/unix/native/common: [2d-dev]
>>>>>>> src/java.desktop/unix/native/include: []
>>>>>>> src/java.desktop/unix/native/libawt: [2d-dev]
>>>>>>> src/java.desktop/unix/native/libawt_headless: [awt-dev]
>>>>>>> src/java.desktop/unix/native/libawt_xawt: [awt-dev]
>>>>>>> src/java.desktop/unix/native/libfontmanager: [2d-dev]
>>>>>>> src/java.desktop/unix/native/libjawt: [awt-dev]
>>>>>>> src/java.desktop/unix/native/libsplashscreen: [awt-dev]
>>>>>>> Combined list suggestion: [2d-dev, awt-dev]
>>>>>>> Final list suggestion is: [2d-dev, awt-dev]
>>>>>>> [4]
>>>>>>> $ git skara debug mlrules -d 30 -v 
>>>>>>> ~/git/skara/config/mailinglist/rules/jdk.json .
>>>>>>> ...
>>>>>>> ✅ [2d-dev, awt-dev, serviceability-dev] c32923e0: 8240487: 
>>>>>>> Cleanup whitespace in .cc, .hh, .m, and .mm files
>>>>>>> ❌ [awt-dev] 7f74c7dd: 8212226: SurfaceManager throws "Invalid 
>>>>>>> Image variant" for MultiResolutionImage (Windows)
>>>>>>>      Suggested lists: [2d-dev, awt-dev]
>>>>>>>      Rules matching unmentioned lists [2d-dev]:
>>>>>>> src/java.desktop/share/classes/sun/java2d/SunGraphics2D.java - 
>>>>>>> [2d-dev: ^src/java.desktop/share/classes/sun/java2d/]
>>>>>>>>>>>>>> [5] https://wiki.openjdk.java.net/display/SKARA/Skara#Skara-Workflow
>>>>>>> [6]
>>>>>>> The rules are made up of sets of regular expressions for the 
>>>>>>> various mailing lists that are used for reviewing changes going 
>>>>>>> into the JDK. If any rule matches, that mailing list will get a 
>>>>>>> copy of the review request email. For directories containing 
>>>>>>> files that belong to different subsystems, it’s usually a good 
>>>>>>> idea to write the rules in a complementary fashion if possible, 
>>>>>>> so that anything not explicitly mentioned gets a reasonable 
>>>>>>> default. As an example, see these rules for a subset of awt / 2d 
>>>>>>> / i18n files:
>>>>>>> “awt-dev”: 
>>>>>>> "src/java.desktop/share/classes/sun/awt/(?!font|sunhints|color/|font/|geom/|im/|image/|print/)” 
>>>>>>>
>>>>>>> “2d-dev”: 
>>>>>>> "src/java.desktop/share/classes/sun/awt/(font|sunhints|color/|font/|geom/|image/|print/)" 
>>>>>>>
>>>>>>> “I18n-dev”: "src/java.desktop/share/classes/sun/awt/im/“
>>>>>>> In this example, anything not explicitly indicated as belonging 
>>>>>>> to either 2d-dev or i18-dev will be matched by awt-dev.
>>


More information about the jdk-dev mailing list