Mike, they are closely related. But let me take this time to explain.
It seems to me that some in the Jakarta EE community and Eclipse Foundation are forgetting one very valuable thing about successful open source efforts, such as MP: they’re not owned by Red Hat, IBM, Tomitribe, EF or others who have contributed so much over the years, or those who have sat outside and watched; they are (or in this case, MP is) a community effort and it’s owned by the community. Any other community, such as Jakarta EEM, has no inalienable right to pass judgement on how another community acts or behaves and somehow decide to swoop in and take it over. I’d be as vehemently against that happening here as I would some other group deciding the try to take control over Jakarta EE or some other project in, say, the ASF. Clearly there are ways to exercise control and influence over a community and they are well defined: get involved, influence from within, gain commit rights and try to direct that way. But trying to do this from the outside it something none of us should be comfortable with doing - that’s not good open source collaboration. Anyone remember Hudson these days?
Speaking very specifically about Jakarta EE and MicroProfile, there is nothing in either community rules of engagement or statement of intent, or whatever we want to call it, that allows one to have expectations on the other. We should treat these two communities as peers and with respect. Even though there is overlap in the community membership that does not mean any of us should assume they are so closely related that what one wants the other must also want or bend towards. I sit in both communities. I’ve helped create both communities. Yet to paraphrase HG Wells, at times in these conversations it’s as if some in Jakarta EE "regarded [the MP community] with envious eyes, and slowly and surely drew their plans against us.” That’s no way for anyone to behave.
There should be no default rule for the relationship between Jakarta EE and MicroProfile because each MicroProfile specification is often driven by a mix of different developers, vendors and communities who may not want their efforts forked. To ignore them is tantamount to a hostile take-over. The Jakarta EE communities should work with them and try to persuade them to see their point of view. However, if the MP spec community cannot be persuaded then I caution continuing with a fork. Embed and try to work together because the MP spec should still be usable within Jakarta EE. And working with the original community is a far better path to future success than trying to split efforts.
If no way to collaborate can be found, including simply embedding that spec into Jakarta EE, then I'd suggest that there is something fundamentally wrong with that specific MP spec community or those in Jakarta EE. I really can't see this ever happening though so it's not worth further consideration: generally everyone is pretty reasonable and friendly in both communities.
Then there's the notion of changing the namespace of a MP specification if it is "imported". Well I also don't think that should be a hard and fast rule either. It should be something that is worked out between the MP specification in question and the Jakarta EE community. If the MP spec community rejects changing namespace then that should also not be a reason to reject importing and collaborating with them and defaulting to a hostile-like fork. Regardless of the potential conflicts that could arise just think of the PR nightmares.
And that brings me to the final question: where does work on the MP specification continue, assuming it does need to continue? Well guess what? I think that's up to the MP spec community since they are the founders of their work and their future destiny. If they feel that innovation should shift entirely to Jakarta EE then go for it, with all of my support. But likewise, if they feel innovation should continue in MP and maybe they are a part of the corresponding Jakarta EE community which then works to pull updates across when it makes sense that’s great collaboration too. Everyone wins and we drive forward together.
Just in case this is lost on anyone who read this far or is skipping to the conclusion, my main point is that whether MP produces specs, TCKs or something else, it is an open source community effort. We should treat it no differently in that regard than we would treat some other open source project with which we want to collaborate and definitely no different to how we would want others to treat us.
Mark.
I followed "push vs pull" very closely.
What does that vote have to do with this purported governance
decision?
On 2020-04-03 9:20 a.m., Ken Finnigan
wrote:
On 2020-04-03 8:05 a.m., Mark Little wrote:
Yeah we had that conversation in the MP
community. Let's respect that decision even if you don't
agree with it. You know ... good open source practices
and all that, right ;) ?
What decision? Can you point to where that happened?
It’s not orthogonal if
the communities were merged. MP could switch all
apis to the jakarta namespace when it adopts
Jakarta EE 9 at the same time as the base
specs switch from javax to the jakarta
namespace.
Steve
Sure but that is totally
orthogonal to whether Jakarta EE changes the
namespace when it consumes MP components. What
isn't orthogonal is the potential splitting of
community activities across these forks. I'll
be blunt here, I'm less concerned about the
continued viability of the original MP
specifications as I am about the forks into
Jakarta EE.
On the community
concerns. The MicroProfile community is
adamant that it is independent and will
evolve with no concern for consumers of
the specifications to maintain velocity
and to remain innovative (the Pull
model). It’s not a position I argued for
at the time within MicroProfile I argued
that the communities should merge and
therefore there would be no community
concerns and these questions would not
arise. See
https://blog.payara.fish/microprofile-and-jakarta-ee-technical-alignment
However we are where
we are.
Steve
OK let's take the
case of CORBA ... last time I looked
Java EE did not change the
namespaces when it incorporated
CORBA and when it took the OTS and
renamed it to the JTS. And OTS
wasn't stable at that time, going
through several subsequent
revisions, as did CORBA.
I also note you
didn't address the community
concerns I raised.
The log4j
example is spurious. Log4J is
a library jar not a
specification. How many people
need to support 2 versions of
log4j in their application?
As a
counter example I have seen
many runtimes shade a popular
library jar thereby changing
its namespace for stability
reasons, exactly because an
application may incorporate a
different version to the one
shipped in the runtime.
+1
Also as
pointed out during the MP
“push vs pull” debate was
the important fact that if
any group wants to pull an
MP specification then
whether or not they change
the namespace is really
independent of stability. I
can’t recall the last time
(or first time) I came
across a project which
forked log4j and changed the
namespace “for stability”
reasons.
I hope
anyone considering forking
any specification or project
considers the potential
implications on communities.
Better to collaborate and
put up with some different
namespaces. Many MP and Java
EE users have been doing
that for years so far
without complaint.
Finally,
I assume if a fork goes
ahead that there is a
developer community behind
the forked effort tracking
MP or it might go stale
quickly, missing critical
updates etc.
>
During the MP
technical discussion
there was discussion
about those things
and it was clear for
everyone that
the "move fast and
break things" of MP
is a valid scenario
but with
consequences for
downstream consumers
(they require a fork
if they want
stability)
If
Jakarta wants a
stable version of
MP Config, they
can simply pick a
version of MP
Config and stay
with that version,
right? Say MP
Config 1.4, and
since MP follows
semantic
versioning rules,
really Jakarta
could work with
any version of MP
Config 1.X.
>
MicroProfile did
what it needed to
do, now it is time
that Jakarta does
what it needs to
do and move
forward. It can't
be blocked because
the people of MP
don't think it is
a good idea (and
they shouldn't
care about it as
they would not
consider
downstream
consumers)
But
Jakarta does _not
need_ to do this.
Furthermore, if
Jakarta
forked+promoted
its own version of
Config, they would
not be a simple
downstream
consumer of MP
Config. Jakarta
would be
essentially
creating something
entirely new (i.e.
not binary
compatible) that
tries to fracture
the
existing+future
userbase of the
Config API.
We
need to consider
who would benefit
from such a fork,
as opposed to
Jakarta simply
adopting the MP
Config 1.X spec
(which again,
follows semantic
versioning which
guarantees no
breaking changes).
During
the MP technical
discussion there
was discussion
about those
things and it
was clear for
everyone that
the "move fast
and break
things" of MP is
a valid scenario
but with
consequences for
downstream
consumers (they
require a fork
if they want
stability)
MicroProfile
did what it
needed to do,
now it is time
that Jakarta
does what it
needs to do
and move
forward. It
can't be
blocked
because the
people of MP
don't think it
is a good idea
(and they
shouldn't care
about it as
they would not
consider
downstream
consumers)
I
strongly
oppose the
idea of
forking MP
Config in
Jakarta.
Politics
aside, it is
an absolute
headache from
a technical
perspective.
It's going to
be the
javax->jakarta
rename all
over again,
except worse
because the
"old" spec (MP
Config) will
still move
forward on its
own.
Config
needs to be a
foundation
technology
that lots of
other library
implementations can depend on. If we have a Jakarta Config and a MP
Config API
floating around,
how will those
libraries
support both
APIs? If a
property is
set at the
same ordinal
in both MP
Config and
Jakarta
config, which
one should
win?
If
the solution
of forking a
Jakarta Config
is only
feasible if MP
agrees to kill
of MP Config,
I highly doubt
that will
happen, and
frankly it is
a rude thing
to ask another
community to
do.
I
agree that MP
has the
freedom to
"move fast and
break things",
but MP does
not break
things just
for fun. In
the case of MP
Config, it is
a pretty
stable
technology
that is
feature
complete, so I
highly doubt
any new
breaking
changes will
arise in the
future. Even
if they did,
Jakarta could
define
which version
of MP Config
it was capable
of inter
operating
with.
I
don’t like the
idea of
Jakarta
consuming
“raw” MP specs
for a number
of reasons
If
I want to
support the
latest MP and
the latest
Jakarta EE in
the same
product then
it will be a
nightmare, if
they run at
different pace
but are in the
same
namespace.
This will
drive us to
shipping
separate
products and
therefore
Jakarta EE
developers
will be
excluded from
the latest
innovations in
MP.
Jakarta
needs to be a
consistent
platform, it
has enough
problems with
multiple bean
models that
need unifying.
Therefore
changes may
need to done
to
specifications
to make them
consistent
with the
current state
of the overall
Jakarta EE
platform and
to make them
work well in
the context of
Jakarta EE.
Given the MP
stated goal is
to be not
concerned with
how consumers
use the
specifications
I assume this
work will need
to be done
within the
Jakarta
efforts.
MP
goal is rapid
innovation,
“move fast,
break things”
Jakarta’s goal
is a stable
evolving
platform with
backwards
compatibility
requirements.
These things
are
inconsistent.
If a developer
is using the
MP namespace
then they know
apis may
change. If
they are using
Jakarta apis
then they have
backwards
compatibility
guarantees.
Mixing the
namespace
within the
Jakarta EE
platform
breaks that
understanding.
Finally
for politics.
IMHO many
members of the
MP project do
not really see
themselves
delivering
standardised
apis in a
multi-vendor
collaboration,
it’s all
about
innovation and
speed. They
balk at
governance,
committees,
etc. and wish
to move
forward like
an Apache
project. MP
should forget
about
specifications,
working groups
etc. and leave
Jakarta EE to
standardize
the innovative
apis where
appropriate
into a
coherent
platform in
the Jakarta
namespace.
The
ideal solution
is for Jakarta
to see MP as a
pool of
innovation for
ideas which we
can adopt,
standardise
and
incorporate in
a consistent
manner into
the overall
Jakarta EE
platform.
Steve
Personally,
I don't like
the idea of
forking, which
might sound
like a good
idea at a
first glance.
However, once
there is a
fork, this
will give end
uers a lot of
headache. When
they do an
import,
multiple
things pop up
and they might
end up use
partial APIs
from either
spec. The MP
Config and
Jakarta Config
spec will go
out of sync
very soon. In
short, there
should not be
2 config
specs.
Having
that said, as
mentioned by
Kevin, MP is
focusing on
creating WG.
Once it is
done, there
are no IP
concerns. Why
can't Jakarta
EE consume MP
Config freely.
Also, I
suggested a
LTS solution
for MP Specs
to indicate
some releases
to be consumed
by Jakarta
etc.
Yes,
forking the MP
config is a
good idea now
that
MicroProfile
has decided on
the pull
option.
The Working
Group
discussion
(and thus IP
handling)
doesn't solve
the issue with
the backward
compatibility
which
explicitly
will not be of
any concern to
MicroProfile.
MP Config will
perform a
breaking
change in the
next month, so
even if it
seems stable,
it can't be
referenced by
Jakarta.
Besides the
integration of
MP JWT Auth as
Arjan
proposes, I
also propose
to include MP
Rest client
into Jakarta
REST. We need
to implement
the same
features in
the
respectively
Jakarta
specifications
so it will be
a fork.
When the main
MicroProfile
specs are
forked into
Jakarta, there
will be no
need anymore
to combine the
Jakarta and
the
MicroProfile
specifications
into the
applications
servers and we
will have
Jakarta
runtimes and
MicroProfile
runtimes each
consumes their
respective
specifications.
Yes, there is
another
option...
Wait a month
or so while
MicroProfile
figures out a
Working Group
proposal. The
MP community
and the EF are
both in favor
of
establishing a
separate MP
Working Group
as a first
step. Once
this is
established,
then the
Specifications
(and APIs and
TCKs) will all
be properly
covered from
an IP
standpoint and
they could be
consumable by
Jakarta EE
projects.
Right.
And
specifically
we don't just
need the
Working Group
in place with
a
specification
process, but
we need to
actually do a
release of
MicroProfile
Config under
that process.
We're
a few months
away from
having IP
clean enough
for any
proposal on
the Jakarta
side to move
forward.
In
short, our
current
status: eat
your meat so
you can have
your pudding.
:)
_______________________________________________
jakarta.ee-community mailing list
jakarta.ee-community@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jakarta.ee-community
_______________________________________________
jakarta.ee-community mailing list
jakarta.ee-community@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jakarta.ee-community
-- Mike Milinkovich Executive Director | Eclipse Foundation, Inc. @mmilinkov +1.613.220.3223 (m)
_______________________________________________ jakarta.ee-community mailing list jakarta.ee-community@xxxxxxxxxxxTo unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jakarta.ee-community
--- Mark Little mlittle@xxxxxxxxxxJBoss, by Red Hat Registered Address: Red Hat Ltd, 6700 Cork Airport Business Park, Kinsale Road, Co. Cork. Registered in the Companies Registration Office, Parnell House, 14 Parnell Square, Dublin 1, Ireland, No.304873 Directors:Michael Cunningham (USA), Vicky Wiseman (USA), Michael O'Neill, Keith Phelan, Matt Parson (USA)
|