Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [microprofile-wg] [External] : Re: : Re: : [Discussion] Context Propagation 1.3 Specification Release Review

Nathan,

I'm okay with some type of compromise. I don't hold a controlling vote and I also can't speak to what other members might think.

My goal is that we inform our users correctly and consistently so that we aren't later, trying to recover from unmet expectations. Some type of text that indicates the core of this thread, that is 'likely' to be seen by a prospective user/implementation vendor, would probably suffice.

I would not be in favor of suggesting that users change the TCKs -- unless that is explicitly allowed for, in the TCK instructions and/or documentation. Once this option starts to be available it becomes hard to keep "oh, just this minor tweak" from happening. We should try to promote the position that the TCKs as fixed -- with only very explicit, documented exceptions allowed.

My preference would be that EE 8 users stick with 1.2 and EE 9 (and beyond) users use 1.3. I'm not sure if there is already maintenance that is in 1.3 that a 1.2 user would desire. That might complicate things.

Thank you for working with me on this question.

Cheers,

-- Ed


On 11/18/2021 7:11 AM, Nathan Rauh wrote:
> If there is an explicit statement in the specification text that says this specification must be used with any particular version of Jakarta EE, it didn't change.
This is correct. The specification has no statement requiring a particular Jakarta EE version.
> If an implementer wants to upgrade their existing implementation from CP 1.2 to 1.3 -- and edit their POM.xml to point to CP 1.3 -- Would that new implementation pass the TCK?
It depends on how well the existing implementation is written, whether written in a modular fashion that implements only MicroProfile Context Propagation, versus written in a tightly coupled manner with unrelated stuff that might have other dependencies.  If written in a modular fashion, then yes, just swap out the binaries underneath and run it against the TCK.  The 1.3 TCK is provided in terms of jakarta package names, so if anyone wants to run it with javax package names, they would either need to transform it first or just use the identical 1.2 TCK which is already in javax packages.
I understand your argument for wanting a new major version, but this exact scenario was already brought forward and decided on for this release and the 1.3 version is consistent with the decision that was made.  Could a compromise here be to revisit that discussion for subsequent MicroProfile releases?




From:        "Ed Bratt" <ed.bratt@xxxxxxxxxx>
To:        "Microprofile WG discussions" <microprofile-wg@xxxxxxxxxxx>, "Nathan Rauh" <nathan.rauh@xxxxxxxxxx>
Date:        11/17/2021 07:44 PM
Subject:        Re: [External] : Re: [microprofile-wg] : [Discussion] Context Propagation 1.3 Specification Release Review




Sorry, I wasn't trying to take a position, one way or another. I'm asking what is required. It sounds like you are asserting that the CP spec. is required to run with elements of an EE Platform. That's perfectly reasonable. ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ZjQcmQRYFpfptBannerStart
This Message Is From an External Sender

This message came from outside your organization.


ZjQcmQRYFpfptBannerEnd

Sorry, I wasn't trying to take a position, one way or another. I'm asking what is required. It sounds like you are asserting that the CP spec. is required to run with elements of an EE Platform. That's perfectly reasonable.
In the CP 1.3 spec. document the code-examples are all modified from javax to jakarta. The other textual change is in "Other Changes" under Release Notes for 1.3, at the end which says (paraphrasing): the TCK and Code Examples are updated to use the Jakarta EE 9 namespace. If there is an explicit statement in the specification text that says this specification must be used with any particular version of Jakarta EE, it didn't change.
I think we agree, if the TCK is changed, that implies the Spec. is changed.
If an implementer wants to upgrade their existing implementation from CP 1.2 to 1.3 -- and edit their POM.xml to point to CP 1.3 -- Would that new implementation pass the TCK?
If the TCK can support either -- Jakarta EE 8 (and javax) or Jakarta EE 9 (and jakarta) -- then the answer to the previous question could be 'yes.' If the TCK doesn't provide compatibility verification for EE 8 then, I think the answer is 'no.'
Perhaps where I'm getting to is: if the 1.3 TCK can be used to verify compatibility for EITHER Jakarta EE 8 or Jakarta EE 9, the minor release increment is appropriate. If the TCK can ONLY verify compatibility for EE 9 -- to my way of thinking -- the upgrade is incompatible since we know that EE 8 (with javax namespace) is incompatible with Java 9 (jakarta n.s.).
I understand there are no substantive changes to CP. Honestly, it seems easier to me (well, it would have been two months ago) to just change the release designation to a major release -- rather than update the TCK to support both versions of Jakarta EE. We already have a TCK that supports EE 8 -- that's the CP 1.2 TCK. I've worked on other Specs. where we decided that, even though there we were proposing no incompatible changes, would be dependent on an updated Spec., that does contain incompatible changes -- and we propagated that incompatible notion forward declaring a major release.
Thanks,
-- Ed

On 11/17/2021 2:11 PM, Nathan Rauh wrote:
Ed,

MicroProfile Context Propagation has dependencies on Jakarta EE only in that it defines a mechanism for capturing, establishing, clearing and removing Jakarta EE context from threads (this includes java:comp namspace of application components, JTA transactions, as well as other types, such as CDI).  It explicitly enumerates the interactions with these and other types of context within the Context Propagation API and describes the behaviors that you get, all without the Context Propagation API/SPI having any direct code dependencies on the corresponding Jakarta EE components.  I have to disagree with your assertion that the lack of such dependencies means that the TCK contains tests that are beyond the scope of the specification.  The fact that the specification defines interactions/behaviors with Jakarta EE components is alone sufficient to justify the TCK testing with this same set of Jakarta EE components that the spec defines interactions with.  The TCK should be testing these things because, as you stated, the specification is ALL OF the written documents, binaries, ... and so forth.  And that makes the interactions that are defined within those documents fair game for TCK testing.




From:        
"Ed Bratt" <ed.bratt@xxxxxxxxxx>
To:        
"Microprofile WG discussions" <microprofile-wg@xxxxxxxxxxx>
Date:        
11/17/2021 01:24 PM
Subject:        
Re: [microprofile-wg] [External] : [Discussion] Context Propagation 1.3 Specification Release Review
Sent by:        
"microprofile-wg" <microprofile-wg-bounces@xxxxxxxxxxx>




Emily, Thank you for starting a discussion 'side' thread. I didn't see that happen before so I didn't realize that was our custom. I thought there had been other plan reviews for MicroProfile component specifications, but I see that I was mistaken ZjQcmQRYFpfptBannerStart

This Message Is From an External Sender

">This message came from outside your organization.



ZjQcmQRYFpfptBannerEnd

Emily,
Thank you for starting a discussion 'side' thread. I didn't see that happen before so I didn't realize that was our custom.
I thought there had been other plan reviews for MicroProfile component specifications, but I see that I was mistaken in that impression. I would encourage us to adopt that in future releases but I'm willing to concede this is not an issue for MP 5 specifications and I apologize for raising it as an concern for CP 1.3.
If the CP Specification truly has no dependencies on the Jakarta EE components, I wonder if perhaps the TCK contains tests that are beyond the scope of this Specification. I'd ask the development team: Is there an Assertion that is traceable to the Specification (text or Java Docs), tested in the TCK, that requires a specific Jakarta EE version. If there is no such assertion, perhaps the Jakarta EE version elements in the TCK are incorrect and should be removed. If the Specification documentation does require a specific version of Jakarta EE -- then, this test should remain. This would be consistent with David's suggestion, but changing the TCK, at least in my book -- is a change to the Specification, to wit ...
I would encourage us to adopt the position that the Specification is ALL OF the written document (the Specification document and/or Java Docs), the Binary Artifacts (API JARs, etc), AND the TCK. These each provide important aspects of the Specification and any change to a component element, should be considered a change in the Specification.
In summary, if it is determined the CP 1.3 specification /does/ require Jakarta EE 9, I'd encourage us to communicate that incompatibility to our users and fellow implementer groups by designating this a major release, not a minor release. If EE 9 is not a CP requirement, the minor version change is totally appropriate and (probably) the TCK should omit those tests.
I apologize for raising this so far into this project program.
Thank you,
-- Ed

On 11/17/2021 4:15 AM, Emily Jiang via microprofile-wg wrote:
I have a suggestion on the voting thread. If there are comments related to the voting, I suggest we start a new thread so that the voting thread can stay focused with the voting.

I started this discussion thread to follow the discussion on Context Propagation 1.3 release.

As for MP Context Propagation 1.3, the spec and api are identical to MP Context Propagation 1.2. I would say the api and spec produced in MP Context Propagation 1.3 will work with either Jakarta EE 8 or Jakarta EE 9. In this context, the spec 1.3 is backward compatible with 1.2. In other words, if you drop MP Context Propagation 1.3 api jar in your Jakarta EE 8 runtime, it works without any problem.

If you want to run the certification, you can use the tck jar produced by MP Context Propagation 1.2, and use 1.3 for Jakarta EE 9. Therefore, you may not need to transform any jakarta or javax.

Does this address your question, Ed?

p.s For minor vs. major releases for Jakarta EE 9.1 alignment, we discussed this topic on one of our live hangouts (6th July). I asked the minor release vs. major release question and suggested we do a minor release for the specs with only tck dependencies on Jakarta EE. There were no objections.

Thanks
Emily



On Tue, Nov 16, 2021 at 10:53 PM Emily Jiang <
emijiang6@xxxxxxxxxxxxxx> wrote:
As for plan review, after MicroProfile Working Group was established in 2020, we started with a release view. We did not put the plan review in the process. We can revisit this in 2022. As a matter of fact, we will start using the Plan Creation Review for new specs (see
here). We should follow the steps laid out by EFSP 1.3.

As for the minor vs major changes for Context Propagation, as mentioned in the release plan, the api jar has no dependencies on javax, this release is purely for any runtime that wishes to run its tcks using jakarta namespace. I think minor changes make sense.

Therefore, I think the top option as suggested by David makes sense.

- Keep the minor version change and:
  - be ok to accept CCRs from Jakarta EE  8 based impls that have used bytecode tools to modify the CP 1.3 TCK itself back to the 'javax' namespace

Thanks
Emily
On Tue, Nov 16, 2021 at 9:15 PM David Blevins <
dblevins@xxxxxxxxxxxxx> wrote:
On Nov 16, 2021, at 12:38 PM, Ed Bratt <
ed.bratt@xxxxxxxxxx> wrote:
1) Was there an approved plan review for Context Propagation 1.3? (I'm missing my record of that and apologize if I just lost this.)
Good callout.  I think we've missed Plan Reviews in general:

-
https://github.com/microprofile/microprofile-wg/labels/Plan%20Review

We definitely need to do those from now on.
2) All the other specifications are making major releases due to the incompatible changes required by Jakarta 9.1. While the Context Propagation API may not have a direct dependency on Jakarta EE APIs, it seems the TCKs may. Is it confirmed this is a minor-release compatible update? Should a user running on Jakarta EE 8, expect to be able to upgrade their implementation to Context Propagation 1.3 successfully without also upgrading their Jakarta EE dependency? Should a vendor anticipate supporting both EE 8 and 9 with this release?
More good questions.  I see that we did update the namespaces in the TCK.

I'd be hesitant to establish a rule where major changes in the TCK need to result in a major version change.  That said, we're not talking strictly about changes in the TCK (say moving from Junit to TestNG) that do not have an impact on the server itself.  The change in the TCK does require a change in the server and that creates some ambiguity in my mind.

Here are some potential resolutions that seem to make sense to me:

- Keep the minor version change and:
  - be ok to accept CCRs from Jakarta EE  8 based impls that have used bytecode tools to modify the CP 1.3 TCK itself back to the 'javax' namespace OR
  - issue our own javax version of the CP 1.3 TCK, which Jakarta EE  8 based impls can chose as an alternate to the jakarta namespace CP 1.3 TCK
- Update the major version

Any other options people see?


-David

_______________________________________________
microprofile-wg mailing list

microprofile-wg@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit

https://www.eclipse.org/mailman/listinfo/microprofile-wg



--



Thanks
Emily



--
Thanks
Emily


_______________________________________________

microprofile-wg mailing list

microprofile-wg@xxxxxxxxxxx

To change your delivery options, retrieve your password, or unsubscribe from this list, visit

https://www.eclipse.org/mailman/listinfo/microprofile-wg

_______________________________________________
microprofile-wg mailing list

microprofile-wg@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit

https://www.eclipse.org/mailman/listinfo/microprofile-wg





_______________________________________________

microprofile-wg mailing list

microprofile-wg@xxxxxxxxxxx

To change your delivery options, retrieve your password, or unsubscribe from this list, visit

https://www.eclipse.org/mailman/listinfo/microprofile-wg






Back to the top