-
Notifications
You must be signed in to change notification settings - Fork 114
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Allow Jakarta EE 9.1 level APIs, but require TCKs pass and CCRs are clear #293
base: main
Are you sure you want to change the base?
Conversation
|
||
Based on MicroProfile's time-boxed release process, this is a major release that includes backward incompatible changes. This release requires Jakarta EE Core Profile 10, which uses the `jakarta` namespace introduced in Jakarta EE 9. | ||
MicroProfile 6.0 adds support for the Jakarta EE 10 Core Profile as an alternative to supporting individual Jakarta specifications like Jakarta Restful Web Services and JSON Binding as in prior releases. Additionally, 6.0 adds requirements for all required Jakarta TCKs to be passed. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The phrase:
Additionally, 6.0 adds requirements for all required Jakarta TCKs to be passed.
seems redundant since that requirement was already there.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do you mean it was already there in other sections that mention 6.0 or was already there in 5.0?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I mean there was a long discussion a few years back about whether or not a MicroProfile implementation required the CDI/JAX-RS and JSON-* specifications to pass and my understanding of the conclusion of that discussion was that they were. Making it clearer in the text that this is required is obviously a good thing, but stating that you are adding a requirement that was already there reverses the outcome of the discussion we had in the past about CDI/JAX-RS and JSON-* TCKs needed to be passing.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@NottyCode it was the reverse. Prior to this PR from John in October the spec said, "Passing the Jakarta specifications TCKs is optional." I was attempting to be consistent with that PR and state that if you are on Jakarta EE 9.1, passing the related Jakarta TCKs is still required.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In the past, it was argued that CDI TCKs contained EJB, which was not supported by MicroProfile. The whole point of Jakarta EE 10 Core Profile was to fix the problem so that Jakarta EE 10 Core Profile can be consumed by MicroProfile and strengthen up the compliance, which was why MP adopts Jakarta EE 10 Core Profile.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We are ok passing all related Jakarta EE 9.1 TCK tests.
pass:[**] Full CDI support is not required. CDI SE support is not required. | ||
|
||
MicroProfile 6.0 allows optional support for Jakarta EE 9.1 and other Jakarta EE profiles provided the minimum APIs are implemented and *all* required TCK tests pass: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm surprised to read this given the email thread on this subject concluded with the following:
Thank you for the good discussion. I think in the interest of moving things forward we can wrap this up as there being no real support for including MicroProfile 6.0 implementations based on Jakarta EE 9.1. Not due to technical limitations, but due to preference, which is ok.
https://groups.google.com/g/microprofile/c/ZngsfSv3RrQ
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See my note on the list. Emily reached out me and there was another discussion on Tuesday where some willingness to revisit was expressed and I was requested to create a PR for people to evaluate.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
But I think there are technical problems. A user can build an application with MP 6.0 API as the sole dependency and can use, for example the classes BeanContainer, BuildCompatibleExtension, EntityPart, etc..
The application builds fine but fails deployment as those classes are not available in a Jakarta EE 9.1 runtime.
So the compatibility no longer means it is able to run all applications build on top of the MP 6.0 API and thus certification s meaningless for vendors and users.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@dblevins Can you provide me with a link to the discussion on Tuesday? I don't see it on the list.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@NottyCode it was the on the technical call. I don't know where those are being posted these days. @jclingan is that up anywhere?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Allowing this will undermine the credibility of the MicroProfile certification and compatibility program as there is no guarantee anymore that a compatible product will run the application that is compiled against the MicroProfile umbrella API artifact.
Microsoft opposes this proposal. As the only hyperscale cloud actively |
@edburns this does still guarantee compliance at Jakarta EE 9.1 or higher and Java 11 or higher. |
MicroProfile 6 was (I thought) originally intended to require Jakarta EE Core Profile -- which is only defined in Jakarta EE 10 and higher. If a vendor is still using earlier versions of Jakarta EE, they should use the version of MicroProfile that matches the Jakarta EE version they require. |
+1. The current staged spec was clear on this. See here. |
My concern with pushback on this now is we did spend months getting the group to address this explicitly and conducted a vote. The vote text was:
That vote passed with 9 +s and no -1 votes on August 11th in the thread Additionally, there were several discussions on ensuring the TCKs could pass on both Jakarta EE 9.1 and Jakarta EE 10. Much of that was in the community and tech calls. Some written traces of that are the PR Make sure TCKs are CDI-version agnostic and the September 13th community call minutes Now, I do see the Plan Review did explicitly mention the Core Profile as a requirement and we did vote +1 on that Plan Review. I will admit fault there. My father had a heart attack at that time and I cast my vote quickly before leaving to the airport knowing I'd be unavailable after, not anticipating a disconnect given the months of discussion about ensuring we don't raise the Jakarta EE level unless there was technical need and ensuring all MP 6.0 TCKs could pass on Jakarta EE 9.1. We did our very best to ensure this was openly discussed and we could be part of the MicroProfile 6.0 implementations. What we're asking does not prevent anyone from shipping MicroProfile 6.0 on Jakarta EE 10. The pushback does, however, only affect our ability to claim MicroProfile 6.0 compatibility. As people pile on, explicitly to block us from getting certified, knowing their own ability to ship as they see fit would not be hindered, it becomes a difficult pill to swallow. I know people don't like to be wrong and it's easy to get locked into "fight till you're right" mode. I am sincerely requesting you do not see it that way. Here's some insight on us and why your support would be so greatly appreciated.
I beg you to see the good that approving this PR can create for us and MP. |
@dblevins Thanks for your comments! I understand your feeling. I have a few comments for consideration.
|
This PR attempts to achieve the following:
The intention is to maintain as much forward progress as possible (enabling 10, requiring tcks be passed, breaking change that 9.1 isn't required) while still allowing EE 9.1 impls to support MP 6.0.
I did not touch the
pom.xml
and intend to leave it as-is as we did for Metrics. This ensures things favor the majority of implementations. TomEE users are already not using the Eclipse jakartaee-api jar as it is implementation-specific and includes Eclipse Mojarra, Eclipse Mail, and Eclipse Activation which directly conflict with our own implementations Apache MyFaces, Geronimo Mail and Geronimo Activation.