All,
There has been a recent debate on to
fork or not to fork MicroProfile Config. I wanted to
outline what I feel are the 3 options available to the
Jakarta EE community in adopting MicroProfile apis. The
last two options are predicated on the MicroProfile
community bootstrapping a working group and putting
their apis through a specification process.
Graduate MicroProfile apis into
Jakarta EE Specifications
In this model Jakarta EE takes
relevant MicroProfile apis as inspiration and starts a
specification project to move the ideas from the
MicroProfile api into the jakarta namespace and create
an equivalent Jakarta EE specification that can be
integrated across the platform in a unified and coherent
manner.
Pros
Jakarta EE can pick, choose and adapt
ideas from MicroProfile to its needs to ensure
consistency across the platform
Jakarta EE is free to diverge from
the MicroProfile api if it is developing in a direction
which Jakarta does not require
All Jakarta EE apis are in the same
namespace and under control of the Jakarta EE community
so can retain backwards compatibility.
Any product could be both Jakarta EE
version X compliant and MicroProfile version Y
compliant.
Cons
It requires a move of namespace for
the api
Developers have 2 apis to choose from
if they develop to both the latest MicroProfile and
Jakarta EE apis in a runtime that supports both
It requires more effort to maintain a
potentially diverging api
The Jakarta EE Platform Release
incorporates a MicroProfile
Platform Release by Reference
In this model Jakarta EE version X
platform specification could declare it incorporates the
entirety of MicroProfile version Y by reference.
Pros
Jakarta EE is incorporating a well
defined MicroProfile platform and can ensure
specifications can integrate with it where possible.
No move of namespace of MicroProfile
apis therefore only 1 api to support and develop to.
A runtime can be both Jakarta EE X
compliant and MP Y compliant.
Cons
An individual runtime will likely be
behind the curve on MicroProfile compatibility as it
will be difficult to support 2 versions of MicroProfile
in the same product version.
It may not be possible for Jakarta EE
to retain backwards compatibility across platform
releases as MicroProfile allows breaking changes across
major versions.
Jakarta EE developers are using two
namespaces.
The MicroProfile api may develop in a
direction of no relevance to the Jakarta EE community as
they are separate communities.
By referencing a whole MicroProfile
platform release the Jakarta EE platform will
incorporate apis which may have no relevance to Jakarta
EE developers or are not stable.
Jakarta EE incorporates a subset
of a MicroProfile platform release
In this model a Jakarta EE version X
platform specification could cherry pick individual
MicroProfile apis for inclusion by reference. For
example MP Config X and REST Client Y …
Pros
Jakarta EE can pick and choose which
MicroProfile apis are appropriate.
No move of namespace of MicroProfile
apis therefore only 1 api to support and develop to.
Cons
An individual runtime may not be able
to be MicroProfile compliant and Jakarta EE compliant or
it will be behind the curve on MicroProfile compliance
due to missing apis or conflicting api versions.
It may not be possible for Jakarta EE
to retain backwards compatibility across platform
releases as MicroProfile allows breaking changes across
api major versions.
Jakarta EE developers are using two
namespaces
The MicroProfile api may develop in a
direction of no relevance to the Jakarta EE community as
they are separate communities.
If there are other options feel free
to shout and I can develop a doc for comments.
Steve