Thank you for bringing up this discussion, it’s yet another reason why Jakarta EE and MicroProfile should live under the same umbrella.
This issue was brought up 2 years ago because Jakarta EE 10 was “not playing nice” with MicroProfile.
When I proposed that web profile have a dependency on core profile, Scott Stark rightfully brought
There was much discussion about this that followed.
and was resolved that the relationship between Web and Core profile via maven dependency would no longer be an issue.
If this was “not enough” / not voted / process not followed / etc. I apologize, as I figured that with Scott’s and Ed’s buy-in, this would be ok.
Even before this happened, the reality was that Web Profile was very much dependent on Core Profile already, via the “hard” Javadoc dependency, for example.
This was just not as evident because there was no “direct” dependency.
However, there was no way to separately evolve Core profile even before this happened anyway.
Currently, Core profile can freely evolve separately just by putting Maven “optional” tag on any new SPECs introduced,
as this will prevent it to be included transitively by the Web profile.
From what I can see, there is a choice to be made here.
1) Remove dependency on Core profile.
What this implies, however, is that every application that uses Jakarta EE Web / Full Profiles and MicroProfile together would have to go through all
the maven gymnastics to make sure every spec they need is correctly included in their application, making this combination hard to use and get right.
2) Leave things as they are.
Evolve Core profile by using maven <optional> tag in dependencies to exclude them from flowing into Web / Full profile
Document that dependency on Core profile is technical in nature.
My preference would obviously be #2 because I personally use Jakarta EE Full and MicroProfile together,
and this is why the issue came up in the first place, after days of debugging to figure out why things weren’t working as they should.
Hello folks,
Today in the Jakarta EE Steering Committee meeting, I came to learn that
a Core Profile dependency was added to the Web Profile Maven POM. I am
unconvinced this was done through adequate deliberation and consensus
(that is, votes to support a truly majority stakeholder decision). More
than anything else, I want to ensure that in fact has happened or
happens soon.
Adding a Core Profile Maven dependency for Web Profile is problematic
for the following reasons:
* Strictly from a specification perspective (please read the actual
specification to verify this), Core and Web are separate profiles
targeted to separate domains. The Web Profile is geared to web
applications while the Core Profile is geared towards microservices.
Neither profile refer to each other and can freely evolve to meet the
needs of their respective target use cases.
* While from a specification perspective no such dependency actually
exists, the Maven POM will give end users the impression that there is
such a concrete dependency. Moreover, users will effectively have this
dependency chain in their applications and may even come to rely on it.
* If the Core and Web Profiles do evolve separately (for example by
adding or removing APIs), this dependency chain will get in the way,
will no longer work, or will require awkward Maven gymnastics to make
work. All it would take is needing separate out-of-sync releases of
these profiles for things to break.
* It risks reinforcing an impression that passing the Web Profile TCK
means also passing the Core Profile TCK. This is not the case and you
need to in fact go through separate certifications for each profile.
I think the best solution is to not introduce this dependency at all,
get back to properly separated Core and Web profiles just as the actual
specification reflects, and proceed with the Web Profile release. If
this must be done and there is proper consensus, it should be done by
updating the Web Profile specification to explicitly reference the Core
Profile specification. The Core Profile specification should be updated
to evidently serve as a "base" Jakarta EE profile in addition to serving
it's currently identified domain.
I understand everybody is working hard to get releases out and everyone
has the best of intentions. However, I feel these things need to be
carried out with the weight that Jakarta EE has in the Java ecosystem. I
want to make sure that's actually the case. I hope that is understandable.
Thanks,
Reza
P.S: I have already discussed this matter with Ed before commencing this
communication in case you are wondering.
_______________________________________________
jakartaee-platform-dev mailing list
jakartaee-platform-dev@xxxxxxxxxxx
To unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/jakartaee-platform-dev