Another thing to be careful about with the sandbox/staging idea is the confusion that will arise with duplication. There will be 2 issue trackers (JBS and GitHub (or GitHub-like)), 2 repo addresses, 2 wikis, and maybe 2 discussion lists. For those "in the know" this will be a simple matter, but for a potential contributor this can be a gamebreaker if not handled appropriately.
Dalibor Topic's suggestion of contacting other mirrors can be instrumental in solving these problems. - Nir On Mon, Feb 5, 2018 at 4:41 PM, Kevin Rushforth <kevin.rushfo...@oracle.com> wrote: > Yes, this sounds like a good step in the right direction. This would give > anyone (with a signed OCA) the ability to create their own branch, commit > changes to it, submit a PR, etc. > > I presume there will be a branch that is an exact mirror of the jfx-dev > repo on OpenJDK in addition to the development branch in the sandbox? > > The only thing to consider is whether it should be Committers or Reviewers > that have rights to merge into the sandbox development branch. There are > pros / cons of each. I'd probably lean towards having it be Committers, > with the idea that a Committer needs to sponsor the patch anyway and would > then be able to "take it the rest of the way". The only downside I see is > that you could end up with a few patches that get accepted into the sandbox > dev branch, but never make it to the upstream jfx-dev repo (or not without > significant change). I doubt this will be a big problem in practice. > > Either way, this could also provide a good alternative to webrev when > reviewing the final changes. > > -- Kevin > > > > Johan Vos wrote: > >> Hi Michael, >> >> This proposal is very much in line with my thinking as well. >> The problem is not that we don't have a github clone of OpenJFX. We have a >> number of them (e.g. I created https://github.com/javafxports/jfx-dev >> some >> months ago). We just need a single one that is updated constantly from >> mainstream, and standardize on that. Let's call that "sandbox" (I would be >> ok with staging as well, but sandbox is imho more inviting to people who >> want to try something drastic, e.g. support for Vulkan) >> >> The main issue is how to get contributions, review them, and eventually >> send them upstream. >> >> The PR review process is extremely important. If we lower that bar, we >> loose quality. If the bar is too high, great PR's won't be accepted >> upstream as there is not enough review time to review it. >> >> I agree giving the current OpenJFX committers merge rights for the >> "sandbox" repository makes sense. Once a public contribution is merged by >> one of those committers, that same committer can send it upstream to the >> existing OpenJFX repository. Additional checks will be performed there, >> mainly in order to make sure the overall "Feel of Java" is preserved. To >> that purpose, it would help to have a closer alignment with the OpenJDK >> community. >> >> We have to be aware that this will increase the workload of the current >> committers and reviewers. That is the price we pay for standardization. >> Rather than everyone creating his own forks of a UI framework in Java, we >> invest a lot in creating a single, generally agreed one. >> >> So in summary, I'm +1 on a 2-phase approach: "open" commits allowed in >> staging. OpenJFX committers accept PR's (if they are of good quality) and >> prepare upstream commits for OpenJFX. We hope there will be more >> contributors who become committers and reviewers in the medium term. >> >> - Johan >> >> On Mon, Feb 5, 2018 at 3:57 AM Michael Ennen <mike.en...@gmail.com> >> wrote: >> >> >> >>> Those are great questions, and I think with Kevin/Oracle/other OpenJFX >>> devs >>> help we >>> can figure something out. >>> >>> My thinking is that the PR would be reviewed by basically anyone who has >>> free time. >>> I think that, at first, only OpenJFX committers will be able to merge >>> PRs. >>> They would >>> do the final review/merge to the staging repo after it has been reviewed >>> by >>> the "wider audience" >>> which includes people without commit rights (people like us). Then, as >>> this >>> thing evolves, >>> based on the pool of people who are contributing both pull requests and >>> PR >>> reviews, >>> the committers will be able to grant commit privileges to some people in >>> that pool. >>> >>> I can't think of any way that would make it so the changes are as likely >>> to >>> be >>> merged upstream as possible other than having the current OpenJFX >>> committers paving the >>> way. Hopefully this vision is aligned with Kevin's and hopefully these >>> concrete details >>> can be worked out. >>> >>> Regards, >>> Michael >>> >>> On Sun, Feb 4, 2018 at 6:21 PM, Nir Lisker <nlis...@gmail.com> wrote: >>> >>> >>> >>>> So if a community ran GitHub is used for staging, who will approve PRs >>>> >>>> >>> for >>> >>> >>>> the code and the Wiki of the GitHub repo? >>>> >>>> On Mon, Feb 5, 2018 at 2:40 AM, Michael Ennen <mike.en...@gmail.com> >>>> wrote: >>>> >>>> >>>> >>>>> Great points, Nir. We share the same hopes. I just wanted to piggy-back >>>>> on the >>>>> wiki thing: >>>>> >>>>> " * The Wiki could be open sourced as well (like other Wikis). I could >>>>> definitely update a page or 2 there and so would other developers as >>>>> >>>>> >>>> they >>> >>> >>>> gain knowledge. I don't know yet how permissions for that should be >>>>> handled." >>>>> >>>>> This is another thing that we could use the GitHub staging repository >>>>> >>>>> >>>> for. >>> >>> >>>> The staging repository could have a wiki (projects on GitHub can have >>>>> >>>>> >>>> one) >>> >>> >>>> that is editable by all, and then maybe once a month or so someone with >>>>> permissions >>>>> to edit to official wiki can sync with the new, reviewed changes (the >>>>> once-a-month >>>>> time constraint is very flexible). >>>>> >>>>> I am just trying to explain how the GitHub repository "one-way mirror" >>>>> (potentially linked >>>>> with/managed by Adopt an OpenJDK) can act as a staging ground for all >>>>> kinds of contributions to >>>>> OpenJFX. >>>>> >>>>> By the way, I am trying to cleanup the groundwork I did on getting >>>>> Appveyor builds to >>>>> run for openjfx, if indeed it is decided to setup such a staging >>>>> repository. You can >>>>> see my efforts here: https://raw.githubusercontent. >>>>> >>>>> >>>>> >>>> com/brcolow/openjfx/f1b8978849fc371683b40931c17020421acc0057 >>> /appveyor.yml >>> >>> >>>> If the GitHub repository was setup, changes such as these to add CI >>>>> infrastructure would >>>>> never be adopted by upstream OpenJFX, but would allow for developer's >>>>> to >>>>> get good >>>>> feedback on test results for all supported platforms when they open a >>>>> >>>>> >>>> PR. >>> >>> >>>> Merging a PR >>>>> on the public GitHub repository means, in my opinion, that it is ready >>>>> >>>>> >>>> to >>> >>> >>>> be opened as >>>>> an upstream bug/feature request. Automating the process with patch >>>>> sets, >>>>> webrevs, formatting/lint >>>>> results, etc. would be the most ideal situation and I would be happy to >>>>> contribute to these >>>>> efforts. >>>>> >>>>> Regards, >>>>> >>>>> Michael Ennen >>>>> >>>>> >>>>> >>>>> On Sun, Feb 4, 2018 at 5:29 PM, Nir Lisker <nlis...@gmail.com> wrote: >>>>> >>>>> >>>>> >>>>>> Hello, >>>>>> >>>>>> As someone who has recently made the climb and managed to build >>>>>> OpenJFX >>>>>> with OpenJDK on Win 10 I might have some relevant input. >>>>>> >>>>>> --- Building OpenJFX --- >>>>>> >>>>>> * With the recently updated instructions on the Wiki, building OpenJFX >>>>>> >>>>>> >>>>> is >>> >>> >>>> not that hard. Having to build OpenJDK for that was a real headache >>>>>> because >>>>>> their instructions and build tools are not up to date ( >>>>>> https://bugs.openjdk.java.net/browse/JDK-8194645). >>>>>> * The above doesn't mean that the process shouldn't be made easier. >>>>>> Ideally, it would be the as easy as working on most open source >>>>>> >>>>>> >>>>> projects >>> >>> >>>> on >>>>>> Github (not advocating git over hg): clone into the IDE and start >>>>>> working; >>>>>> when a fix is ready, submit a PR. Don't know if it's technically >>>>>> >>>>>> >>>>> possible >>> >>> >>>> in this case, but it's a target. >>>>>> * The repository needs a good cleanup before contributors start >>>>>> >>>>>> >>>>> cloning ( >>> >>> >>>> bugs.openjdk.java.net/browse/JDK-8196198). >>>>>> >>>>>> --- Working on OpenJFX --- >>>>>> >>>>>> * It should be clear which tests need to run for a specific patch. >>>>>> Changes >>>>>> can be made anywhere from the documentation level to native code level >>>>>> and >>>>>> there's no reason to run the same tests for all of these. If the >>>>>> >>>>>> >>>>> process >>> >>> >>>> can be automate it's even better. >>>>>> * The Webrev tool seems archaic to me (and part of its output is >>>>>> broken >>>>>> as >>>>>> far as I could tell). An IDE can create diff patches with a couple of >>>>>> clicks. >>>>>> * The Jcheck tool seems archaic to me. It should be ported to IDE >>>>>> formatters which are to be distributed with the source. No reason to >>>>>> >>>>>> >>>>> run >>> >>> >>>> a >>>>>> tool that tells me which whitespaces I need to go back and change when >>>>>> something like Ctrl+Shift+F in an IDE finishes the job. >>>>>> >>>>>> --- Wiki --- >>>>>> >>>>>> * The Wiki could be open sourced as well (like other Wikis). I could >>>>>> definitely update a page or 2 there and so would other developers as >>>>>> >>>>>> >>>>> they >>> >>> >>>> gain knowledge. I don't know yet how permissions for that should be >>>>>> handled. >>>>>> * Code conventions should be clearly listed. >>>>>> * Separate sections with instructions should be made for: (1) cloning >>>>>> >>>>>> >>>>> and >>> >>> >>>> building, (2) modifying, (3) running tests, (4) submitting, and (5) >>>>>> reviewing. >>>>>> * Old sections should be cleaned up (I don't think Discussions is >>>>>> >>>>>> >>>>> useful >>> >>> >>>> anymore). >>>>>> >>>>>> --- Review policy --- >>>>>> >>>>>> * I have no experience with review policies or project roles so I >>>>>> can't >>>>>> help here much (maybe after a discussion starts). >>>>>> * One thing I do know is that reviewers should be extremely >>>>>> knowledgeable, >>>>>> which means that there aren't many qualified. Because of this, if it >>>>>> becomes "too" easy to contribute to OpenJFX, careful measures need to >>>>>> >>>>>> >>>>> be >>> >>> >>>> taken as to not to swamp the few reviewers with many patches (though >>>>>> >>>>>> >>>>> some >>> >>> >>>> would say this is an ideal situation). Some sort of review queue might >>>>>> help >>>>>> with organization instead of the current email system. I have no >>>>>> >>>>>> >>>>> concrete >>> >>> >>>> solution for this. >>>>>> >>>>>> - Nir >>>>>> >>>>>> >>>>>> Message: 1 >>>>>> >>>>>> >>>>>>> Date: Thu, 01 Feb 2018 15:26:24 -0800 >>>>>>> From: Kevin Rushforth <kevin.rushfo...@oracle.com> >>>>>>> To: "openjfx-dev@openjdk.java.net" <openjfx-dev@openjdk.java.net> >>>>>>> Subject: More community participation in JavaFX >>>>>>> Message-ID: <5a73a220.7030...@oracle.com> >>>>>>> Content-Type: text/plain; charset=windows-1252; format=flowed >>>>>>> >>>>>>> To: OpenJFX Developers >>>>>>> >>>>>>> We are looking to grow the community of contributors to the OpenJFX >>>>>>> project, especially serious contributors who will stick around long >>>>>>> enough to become reviewers, to help us keep the platform vibrant. To >>>>>>> this end we are looking at ways to encourage more participation and >>>>>>> >>>>>>> >>>>>> make >>>>>> >>>>>> >>>>>>> it easier for interested folks to contribute. >>>>>>> >>>>>>> We are specifically looking to discuss ideas around the following >>>>>>> >>>>>>> >>>>>> areas: >>>>>> >>>>>> >>>>>>> * Easing barriers to contribution (e.g., making JavaFX easier to >>>>>>> >>>>>>> >>>>>> build, >>> >>> >>>> better documentation, making it easier to test changes) >>>>>>> >>>>>>> * Code review policies >>>>>>> >>>>>>> * API / feature review policies >>>>>>> >>>>>>> * Code review tools (we currently use webrev, but that isn't set in >>>>>>> >>>>>>> >>>>>> stone) >>>>>> >>>>>> >>>>>>> To keep this thread productive, the following are explicitly out of >>>>>>> >>>>>>> >>>>>> scope: >>>>>> >>>>>> >>>>>>> * Discussion of specific features or bugs that you would like to >>>>>>> implement (or wish someone else would) >>>>>>> >>>>>>> * Discussion about platform support >>>>>>> >>>>>>> * Discussion about version control systems (e.g., hg versus git), >>>>>>> hosting of the OpenJFX repos and bug database (e.g., OpenJDK versus >>>>>>> github), etc...at least for now. We are aware of the potential >>>>>>> >>>>>>> >>>>>> benefits >>> >>> >>>> of such changes, but we'd like to focus our efforts on >>>>>>> >>>>>>> >>>>>> higher-leverage >>> >>> >>>> things we can do in the short term. >>>>>>> >>>>>>> * Discussion about the requirement of a signed OCA to become a >>>>>>> >>>>>>> >>>>>> contributor >>>>>> >>>>>> >>>>>>> * Off-topic or tangential commentary about OpenJFX that isn't >>>>>>> >>>>>>> >>>>>> directly >>> >>> >>>> related to the topic at hand >>>>>>> >>>>>>> >>>>>>> As a starting point for discussion, here are some areas I think need >>>>>>> improvement; I'm sure there are others: >>>>>>> >>>>>>> I. Helping contributors get started >>>>>>> >>>>>>> It isn?t as easy to get started with OpenJFX as it should be. We want >>>>>>> >>>>>>> >>>>>> to >>>>>> >>>>>> >>>>>>> make it easier for potential OpenJFX contributors to get started. >>>>>>> >>>>>>> >>>>>> Here >>> >>> >>>> are some ideas that I think might help: >>>>>>> >>>>>>> * Improve the build instructions / Wiki (I made a first start, but >>>>>>> >>>>>>> >>>>>> there >>>>>> >>>>>> >>>>>>> is much more to be done) >>>>>>> >>>>>>> * Make the build itself more resilient where possible, and provide >>>>>>> better error messages, specifically when dealing with native >>>>>>> >>>>>>> >>>>>> compilers >>> >>> >>>> and libraries >>>>>>> >>>>>>> * Add an option to skip building all native code and use prebuilt >>>>>>> binaries (like we do already for media and webkit); this is tracked >>>>>>> >>>>>>> >>>>>> by >>> >>> >>>> JDK-8092279, but it hasn?t been looked at recently >>>>>>> >>>>>>> * Make it easier to build / test your local OpenJFX build using an >>>>>>> OpenJDK build (currently the only way to do this is to build OpenJDK >>>>>>> locally, after using configure to point to your just-built javafx.* >>>>>>> modules). >>>>>>> >>>>>>> * Provide step-by-step instructions for how to make a contribution, >>>>>>> including testing requirements; a lot of the pieces are there, but >>>>>>> >>>>>>> >>>>>> are >>> >>> >>>> out of date or scattered in several places. As part of this, we could >>>>>>> have a section on how to contribute docs, samples or tests, since >>>>>>> >>>>>>> >>>>>> that >>> >>> >>>> is often a good place to start. >>>>>>> >>>>>>> * Provide a sandbox environment where contributors can discuss and >>>>>>> >>>>>>> >>>>>> test >>> >>> >>>> ideas. For example, an OpenJFX mirror on github, potentially >>>>>>> >>>>>>> >>>>>> connected >>> >>> >>>> to AdoptOpenJDK. >>>>>>> >>>>>>> >>>>>>> II. Code reviews and API reviews >>>>>>> >>>>>>> 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. >>>>>>> >>>>>>> There are three categories of changes, each of which might merit a >>>>>>> different review standard: >>>>>>> >>>>>>> 1. 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). >>>>>>> >>>>>>> 2. 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). >>>>>>> >>>>>>> 3. New features / API additions. In addition to reviewing the >>>>>>> implementation, we will need a separate approval process for the new >>>>>>> >>>>>>> >>>>>> API >>>>>> >>>>>> >>>>>>> / feature (such as the CSR, which is what we use now, or a similar >>>>>>> process). >>>>>>> >>>>>>> We take compatibility seriously, so anything that adds new API needs >>>>>>> >>>>>>> >>>>>> to >>> >>> >>>> be done with an eye towards supporting it for at least 10 years. We >>>>>>> don't want to add new public API without that level of commitment. >>>>>>> >>>>>>> >>>>>> Every >>>>>> >>>>>> >>>>>>> new feature forecloses on alternate future features. Significant >>>>>>> >>>>>>> >>>>>> effort >>> >>> >>>> must be taken to think about "if we did this, what could it interact >>>>>>> with in the future?" Also, anything with a large potential impact on >>>>>>> performance or behavioral compatibility needs to be looked at >>>>>>> >>>>>>> >>>>>> carefully. >>>>>> >>>>>> >>>>>>> Put another way, we want to encourage thinking about new features or >>>>>>> >>>>>>> >>>>>> new >>>>>> >>>>>> >>>>>>> API in terms of a design / stewardship process; to think in terms of >>>>>>> questions like "what's the right thing for JavaFX in the next 10+ >>>>>>> >>>>>>> >>>>>> years" >>>>>> >>>>>> >>>>>>> rather than "here's some code that solves my problem, please take >>>>>>> >>>>>>> >>>>>> it". >>> >>> >>>> As a stake in the ground, I might suggest the following: >>>>>>> >>>>>>> * All changes need at least one reviewer other than the person making >>>>>>> the change who can evaluate the change for correctness and >>>>>>> >>>>>>> >>>>>> consistency. >>> >>> >>>> For simple bug fixes, a single reviewer may be sufficient. Of course, >>>>>>> one of our big challenges in all this is: "how do we grow more >>>>>>> reviewers?", by which I mean "how do we facilitate getting >>>>>>> >>>>>>> >>>>>> contributors >>> >>> >>>> with enough expertise in a given area to eventually be able to >>>>>>> effectively review contributions from others?" >>>>>>> >>>>>>> * We need clear criteria for the other two categories that balance >>>>>>> process efficiency with the desire to maintain compatibility and >>>>>>> stability. API changes need to be approved by a lead. My thought is >>>>>>> >>>>>>> >>>>>> to >>> >>> >>>> combine the last two into a single category for purposes of reviewing >>>>>>> the implementation. Anything that affects public API or behavioral >>>>>>> compatibility will require CSR or similar approval, over and above >>>>>>> >>>>>>> >>>>>> the >>> >>> >>>> implementation review, which seems sufficient. >>>>>>> >>>>>>> * I recommend that we formalize the concept of reviewers, using the >>>>>>> OpenJDK Reviewer role for the Project. We might also consider if we >>>>>>> >>>>>>> >>>>>> want >>>>>> >>>>>> >>>>>>> to make any changes to the criteria used by the JDK Project for >>>>>>> >>>>>>> >>>>>> becoming >>>>>> >>>>>> >>>>>>> an OpenJFX Project Author, Committer, and Reviewer. The OpenJDK >>>>>>> >>>>>>> >>>>>> bylaws >>> >>> >>>> allow projects a fair degree of latitude to define these criteria, so >>>>>>> >>>>>>> >>>>>> we >>>>>> >>>>>> >>>>>>> might consider making some modifications. For example, we might make >>>>>>> >>>>>>> >>>>>> it >>> >>> >>>> somewhat easier for a Contributor to become an Author, or for a >>>>>>> Committer to become a Reviewer. I have some thoughts on this, but >>>>>>> >>>>>>> >>>>>> want >>> >>> >>>> to hear from others first. >>>>>>> >>>>>>> >>>>>>> I look forward to feedback on this proposal, and hope it will spark a >>>>>>> productive discussion. >>>>>>> >>>>>>> -- Kevin Rushforth, OpenJFX Project Lead >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>> >>>>