Skip to main content

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

Ed,

There are no maintenance updates in 1.3.  The classes within the 1.3 API 
jar should be literally identical to those within the 1.2 API jar apart 
from the timestamps indicating when they were built.  The sole purpose of 
the 1.3 release is to provide a TCK that Jakarta EE 9-based 
implementations can use to certify their MicroProfile Context Propagation 
implementation alongside their MicroProfile 5.0 features.  I agree there 
is no reason why an EE 8 user should want 1.3 rather than 1.2, because 
nothing is gained from 1.3 unless you want a TCK with jakarta packages, 
which you don't want if you are on EE 8. 




From:   "Ed Bratt" <ed.bratt@xxxxxxxxxx>
To:     "Nathan Rauh" <nathan.rauh@xxxxxxxxxx>
Cc:     "Microprofile WG discussions" <microprofile-wg@xxxxxxxxxxx>
Date:   11/18/2021 01:22 PM
Subject:        Re: [External] : Re: : Re: [microprofile-wg] : 
[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 ZjQcmQRYFpfptBannerStart 
This Message Is From an External Sender 
This message came from outside your organization. 
ZjQcmQRYFpfptBannerEnd
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