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 <mailto: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
<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 <mailto: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 <mailto: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 <mailto: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 <mailto: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
<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
<http://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
<mailto:kevin.rushfo...@oracle.com>>
To: "openjfx-dev@openjdk.java.net
<mailto:openjfx-dev@openjdk.java.net>"
<openjfx-dev@openjdk.java.net
<mailto:openjfx-dev@openjdk.java.net>>
Subject: More community participation in
JavaFX
Message-ID: <5a73a220.7030...@oracle.com
<mailto: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