Re: [config-dev] Config for Jakarta EE 12 and MP.next

220 views
Skip to first unread message

Reza Rahman

unread,
Feb 5, 2025, 2:52:15 AMFeb 5

100% in support. This is very close to what I had hoped when Jakarta Config was launched almost three years ago.


On 2/4/2025 1:18 PM, Jared Anderson via config-dev wrote:
This email is a follow up to the discussion at the 2025-02-04 Jakarta EE platform call.
In that call, we discussed an approach where Jakarta EE 12 could effectively use MicroProfile Config "as is" with some important non-technical accommodations.
  1. The APIs for Jakarta Config would be the MicroProfile Config APIs, but with jakarta namespace. Yes, a copy/paste.
  2. The implementation may delegate to the MicroProfile Config implementation.
  3. The Spec document would be one-line: see the corresponding MicroProfile config spec document.  May need additional text to talk about the difference in namespace and adding in jakarta-config.properties until a new MP Config version added that to its specification.  See #5 below.
  4. The TCK would be a copy/paste of the MicroProfile Config TCK and updating the name space and adding jakarta-config.properties testing
  5. Need to introduce a new line in the ConfigSource (MicroProfile Config API)
    • “Some configuration sources are known as default configuration sources. These configuration sources are normally available in all automatically-created configurations, and can be manually added to manually-created configurations as well. The default configuration sources are:
  • 1. System properties, with an ordinal value of 400
  • 2. Environment properties, with an ordinal value of 300
  • 3. The /META-INF/jakarta-config.properties resource, with an ordinal value of 200
  • 4. The /META-INF/microprofile-config.properties resource, with an ordinal value of 100
Let's continue discussion using this "both lists on the To: line" approach rather than introduce another venue, such as the cn4j mailing list (eclipse archive).
Sincerely,
Ed Burns and Jared Anderson
Jakarta EE 12 release co-coordinators

_______________________________________________
config-dev mailing list
[email protected]
To unsubscribe from this list, visit https://accounts.eclipse.org

Buhake Sindi

unread,
Feb 5, 2025, 9:42:01 AMFeb 5
That sounds like a fantastic idea. 

I had this idea that we could also add YAML support to the Config specification (whether it be MP or Jakarta). It would follow the same workflow and features of the existing MP Config, with the additional support of YAML.

Just a thought.

Thanks! 

--
You received this message because you are subscribed to the Google Groups "MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
To view this discussion visit https://groups.google.com/d/msgid/microprofile/ac1f74ff-15ba-4990-b349-01de8e7f2eaf%40gmail.com.

Roberto Cortez

unread,
Feb 5, 2025, 3:24:10 PMFeb 5
to Jakarta Config project developer discussions, [email protected], Jared Anderson
Hi,

A few comments inline. Thank you!

Cheers,
Roberto

On 4 Feb 2025, at 18:18, Jared Anderson via config-dev <[email protected]> wrote:

This email is a follow up to the discussion at the 2025-02-04 Jakarta EE platform call.
In that call, we discussed an approach where Jakarta EE 12 could effectively use MicroProfile Config "as is" with some important non-technical accommodations.
  1. The APIs for Jakarta Config would be the MicroProfile Config APIs, but with jakarta namespace. Yes, a copy/paste.

After the initial copy/paste, how would things evolve? Would Jakarta keep the APIs in-sync? What restricts Jakarta from using the API as-is? 

  1. The implementation may delegate to the MicroProfile Config implementation.
  2. The Spec document would be one-line: see the corresponding MicroProfile config spec document.  May need additional text to talk about the difference in namespace and adding in jakarta-config.properties until a new MP Config version added that to its specification.  See #5 below.
  3. The TCK would be a copy/paste of the MicroProfile Config TCK and updating the name space and adding jakarta-config.properties testing
  4. Need to introduce a new line in the ConfigSource (MicroProfile Config API)
    • “Some configuration sources are known as default configuration sources. These configuration sources are normally available in all automatically-created configurations, and can be manually added to manually-created configurations as well. The default configuration sources are:
  • 1. System properties, with an ordinal value of 400
  • 2. Environment properties, with an ordinal value of 300
  • 3. The /META-INF/jakarta-config.properties resource, with an ordinal value of 200
  • 4. The /META-INF/microprofile-config.properties resource, with an ordinal value of 100

How about dropping microprofile-config.properties (keep it for compatibility) and jakarta-config.properties, and use application.properties? This one is already used by many popular runtimes like Spring, Quarkus, and Micronaut, to name a few. 

Reza Rahman

unread,
Feb 5, 2025, 3:48:34 PMFeb 5
It’s a good idea, but probably best reserved for the near future.


From: [email protected] <[email protected]> on behalf of Buhake Sindi <[email protected]>
Sent: Wednesday, February 5, 2025 1:42 AM
To: [email protected] <[email protected]>
Subject: Re: [microprofile] Re: [config-dev] Config for Jakarta EE 12 and MP.next
 

Reza Rahman

unread,
Feb 5, 2025, 3:58:21 PMFeb 5
Just using application.properties is a good idea indeed.

I am sure Ed and Jared will respond, but I believe the idea here is to allow both Jakarta EE and MicroProfile to evolve independently in accordance with their own needs and also collaborate when best seen fit.


From: 'Roberto Cortez' via MicroProfile <[email protected]>
Sent: Wednesday, February 5, 2025 7:24 AM
To: Jakarta Config project developer discussions <[email protected]>
Cc: [email protected] <[email protected]>; Jared Anderson <[email protected]>
Subject: [microprofile] Re: [config-dev] Config for Jakarta EE 12 and MP.next
 
--
You received this message because you are subscribed to the Google Groups "MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].

David Lloyd

unread,
Feb 5, 2025, 6:07:25 PMFeb 5
to Jakarta Config project developer discussions, [email protected], Jared Anderson
I would advise caution with this course. In my opinion, the MicroProfile Config specification as it stands today has several intractable quality issues and logical contradictions. I think that perpetuating this specification to Jakarta as-is would only serve to undermine the overall quality of Jakarta EE. So, while this might seem like a logical move from the "30,000 feet" view, I do not believe that there is anything good that could come out of this effort as proposed. I think that if there is a sufficient will to bring a configuration specification to Jakarta, it should be expressed by contributing resources towards a high-quality specification, rather than a rubber stamp on something with known problems. If that will does not exist, then I do not see why Jakarta needs a configuration specification at this time.


On Tue, Feb 4, 2025 at 12:18 PM Jared Anderson via config-dev <[email protected]> wrote:
This email is a follow up to the discussion at the 2025-02-04 Jakarta EE platform call.
In that call, we discussed an approach where Jakarta EE 12 could effectively use MicroProfile Config "as is" with some important non-technical accommodations.
  1. The APIs for Jakarta Config would be the MicroProfile Config APIs, but with jakarta namespace. Yes, a copy/paste.
  1. The implementation may delegate to the MicroProfile Config implementation.
  2. The Spec document would be one-line: see the corresponding MicroProfile config spec document.  May need additional text to talk about the difference in namespace and adding in jakarta-config.properties until a new MP Config version added that to its specification.  See #5 below.
  3. The TCK would be a copy/paste of the MicroProfile Config TCK and updating the name space and adding jakarta-config.properties testing
  4. Need to introduce a new line in the ConfigSource (MicroProfile Config API)
    • “Some configuration sources are known as default configuration sources. These configuration sources are normally available in all automatically-created configurations, and can be manually added to manually-created configurations as well. The default configuration sources are:
  • 1. System properties, with an ordinal value of 400
  • 2. Environment properties, with an ordinal value of 300
  • 3. The /META-INF/jakarta-config.properties resource, with an ordinal value of 200
  • 4. The /META-INF/microprofile-config.properties resource, with an ordinal value of 100
Let's continue discussion using this "both lists on the To: line" approach rather than introduce another venue, such as the cn4j mailing list (eclipse archive).
Sincerely,
Ed Burns and Jared Anderson
Jakarta EE 12 release co-coordinators
_______________________________________________
config-dev mailing list
[email protected]
To unsubscribe from this list, visit https://accounts.eclipse.org


--
- DML • he/him

Reza Rahman

unread,
Feb 5, 2025, 7:20:27 PMFeb 5
Any sufficiently complex endeavor will have things than can be improved or things that could have been done another way. What we have heard consistently from customers for some time is that they are generally happy with MicroProfile Config and see a very dire need to modernize application configuration in Jakarta EE in a very similar fashion.
 

From: config-dev <[email protected]> on behalf of David Lloyd via config-dev <[email protected]>
Sent: Wednesday, February 5, 2025 10:07 AM

To: Jakarta Config project developer discussions <[email protected]>
Cc: David Lloyd <[email protected]>; [email protected] <[email protected]>
Subject: Re: [config-dev] Config for Jakarta EE 12 and MP.next
 

Ed Burns

unread,
Feb 6, 2025, 3:40:34 AMFeb 6
From: [email protected] <[email protected]> on behalf of Reza On Wednesday, February 5, 2025 at 07:58 [email protected]> RR said:
Date: 

RR> Just using application.properties is a good idea indeed.

RR> I am sure Ed and Jared will respond, but I believe the idea here
RR> is to allow both Jakarta EE and MicroProfile to evolve
RR> independently in accordance with their own needs and also
RR> collaborate when best seen fit.

Indeed, doing that now.

From: 'Roberto Cortez' via MicroProfile <[email protected]> RC wrote:

RC> A few comments inline. Thank you!

On 4 Feb 2025, at 18:18, Jared Anderson via config-dev <[email protected]> JA wrote:

JA> This email is a follow up to the discussion at the 2025-02-04
JA> Jakarta EE platform call.

JA> In that call, we discussed an approach where Jakarta EE 12 could
JA> effectively use MicroProfile Config "as is" with some important
JA> non-technical accommodations.

JA> 1. The APIs for Jakarta Config would be the MicroProfile Config APIs,
JA> but with jakarta namespace. Yes, a copy/paste.

RC> After the initial copy/paste, how would things evolve? 

My intention is that technical evolution would take place in the
MicroProfile Config project. In the event of Jakarta specific
accommodations, we would

1. Cross that bridge when we come to it.
2. Try to come up with solutions that are palatable to both communities, Jakarta 
   EE and MicroProfile.
3. If absolutely necessary, we would define content in MP Config that
   would have the proviso such as "this only takes effect in Jakarta
   EE environments". There is ample precedent for such approaches. See
   what we did with Faces when Validation was present (in EE) vs. not
   present (such as in Tomcat).

RC> Would Jakarta keep the APIs in-sync?

Yes. Every time Jakarta needed a new version, they would pick up a
chosen release of MP config to give the copy/paste treatment to.

RC> What restricts Jakarta from using the API as-is?

As far as I know: 

1. A technical problem regarding introducing circular dependencies.
2. A non-technical problem where Jakarta specs may not make
   dependencies on MicroProfile artifacts.

JA> 2. The implementation may delegate to the MicroProfile Config implementation.

JA> 3. The Spec document would be one-line: see the corresponding
JA> MicroProfile config spec document.  May need additional text to
JA> talk about the difference in namespace and adding in
JA> jakarta-config.properties until a new MP Config version added that
JA> to its specification.  See #5 below.

JA> 4. The TCK would be a copy/paste of the MicroProfile Config TCK
JA> and updating the name space and adding jakarta-config.properties
JA> testing

JA> 5. Need to introduce a new line in the ConfigSource (MicroProfile
JA> Config API) “Some configuration sources are known as default
JA> configuration sources. These configuration sources are normally
JA> available in all automatically-created configurations, and can be
JA> manually added to manually-created configurations as well. The
JA> default configuration sources are:

JA> 1. System properties, with an ordinal value of 400

JA> 2. Environment properties, with an ordinal value of 300

JA> 3. The /META-INF/jakarta-config.properties resource, with an ordinal value of 200

JA> 4. The /META-INF/microprofile-config.properties resource, with an
JA> ordinal value of 100

RC> How about dropping microprofile-config.properties (keep it for
RC> compatibility) and jakarta-config.properties, and use
RC> application.properties? This one is already used by many popular
RC> runtimes like Spring, Quarkus, and Micronaut, to name a few.

Roberto, that's a rad idea. I like it.

Ed

Roberto Cortez

unread,
Feb 7, 2025, 1:21:50 PMFeb 7
Hi Ed,

Thank you for the response.

1. A technical problem regarding introducing circular dependencies.

Yes, the issue is that MP Config is dependent on CDI. This has been discussed many times, and I believe MP is open to make the necessary adjustments and removing that restriction. In the previous Jakarta Config initiative, that was already a goal. One of the things I’ve been advocating is for MP Config (or any other Config specification), to work standalone without any other dependency. This would allow any Java project to consume it without requiring the use of the platform. As for the CDI, that can be an addendum to the specification or even be integrated into CDI itself.

2. A non-technical problem where Jakarta specs may not make
   dependencies on MicroProfile artifacts.

Can we clarify what the problem is exactly? Is this something that can be worked out?

What I’m trying to understand is if we could work on the technical and non-technical issues that prevent Jakarta from adopting MP as is (without copying and renaming packages), and assuming we can have those fixed, would Jakarta be able to use it as a regular dependency?

Cheers,
Roberto

--
You received this message because you are subscribed to the Google Groups "MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].

Emily Jiang

unread,
Feb 11, 2025, 2:19:57 AMFeb 11

My responses are inline. We will discuss this issue in more detail at this Tuesday's MP Technical call. Please join if you are interested. The joining details can be found here.

On Fri, Feb 7, 2025 at 10:21 AM 'Roberto Cortez' via MicroProfile <[email protected]> wrote:
Hi Ed,

Thank you for the response.

1. A technical problem regarding introducing circular dependencies.

Yes, the issue is that MP Config is dependent on CDI. This has been discussed many times, and I believe MP is open to make the necessary adjustments and removing that restriction. In the previous Jakarta Config initiative, that was already a goal. One of the things I’ve been advocating is for MP Config (or any other Config specification), to work standalone without any other dependency. This would allow any Java project to consume it without requiring the use of the platform. As for the CDI, that can be an addendum to the specification or even be integrated into CDI itself.

+1. We can rework MP Config to use the CDI approach by dividing MP Config to MP Config Core and MP Config full, where MP Config Core will just have the spi part while the other part will include CDI. In this way, Jakarta can simply include MP Config Core in the Jakarta Core profile. With this, I think Jakarta can simply include MP Config Core with the need of having Jakarta Config.  With this approach, renaming microprofile-config.properties to application.properties is not mandatory as the package namespace would contain microprofile.
2. A non-technical problem where Jakarta specs may not make
   dependencies on MicroProfile artifacts.

Can we clarify what the problem is exactly? Is this something that can be worked out?

What I’m trying to understand is if we could work on the technical and non-technical issues that prevent Jakarta from adopting MP as is (without copying and renaming packages), and assuming we can have those fixed, would Jakarta be able to use it as a regular dependency?
To my best knowledge, there was no restriction for Jakarta to use MP as long as the MP spec do not depend on Jakarta. If MP Config Core is consumed by Jakarta, there would be no circular dependency. 


 

Ed Burns

unread,
Feb 11, 2025, 7:00:45 PMFeb 11
Even with approaches that allow for mitigating the circular dependencies, I am strongly predisposed to prefer the repackaging approach that allows the content of MicroProfile config to be accessed by Jakarta specifications using an entirely Jakarta namespace.

Ed

Reza Rahman

unread,
Feb 11, 2025, 7:16:06 PMFeb 11

I plan to bring this up in the Jakarta EE Steering Committee. The technical debate aside, I think there are also process and branding/IP considerations here. For one, it's important to track down what the existing consensus had been in Jakarta EE WG/Jakarta Config with regards to namespace. A sanity check from the perspective of branding/IP is also in order as these are in reality two different working groups.

I agree that the most prudent approach is avoiding needlessly introducing mutual inter-dependencies. Both MicroProfile and Jakarta EE should be able to independently evolve their configuration approaches when needed. Separate namespaces with APIs synced manually/selectively when needed does that well.

Roberto Cortez

unread,
Feb 17, 2025, 7:18:09 PMFeb 17
to Jakarta Config project developer discussions, [email protected]
If we have separate namespaces and APIs are synced manually / selectively (and evolve independently), I’m guessing that any Jakarta specification would use its own Jakarta Config, and MicroProfile specifications would use MP Config?

In practice, even if Jakarta Config is not part of the Core, if any Core specification adopts it, it would force Jakarta Config with its own API to the MP platform. Is this correct?

Cheers,
Roberto

On 11 Feb 2025, at 16:15, Reza Rahman via config-dev <[email protected]> wrote:

I plan to bring this up in the Jakarta EE Steering Committee. The technical debate aside, I think there are also process and branding/IP considerations here. For one, it's important to track down what the existing consensus had been in Jakarta EE WG/Jakarta Config with regards to namespace. A sanity check from the perspective of branding/IP is also in order as these are in reality two different working groups.

I agree that the most prudent approach is avoiding needlessly introducing mutual inter-dependencies. Both MicroProfile and Jakarta EE should be able to independently evolve their configuration approaches when needed. Separate namespaces with APIs synced manually/selectively when needed does that well.

On 2/11/2025 11:00 AM, Ed Burns via config-dev wrote:
_______________________________________________
config-dev mailing list
[email protected]
To unsubscribe from this list, visit https://accounts.eclipse.org

Reza Rahman

unread,
Feb 17, 2025, 10:30:13 PMFeb 17

I am sure Ed and/or Jared will respond with their own thoughts - in the meantime let me share my two cents, including on some of the broader technical intricacies.

First a purely personal opinion independent of Microsoft. These are some of the intricacies of managing two platforms run by two separate working groups that in practice need to co-exist closely. It's the reason some of us espoused the hope that common dependencies and possible sources of colliding resources to manage would only be in one direction with the Jakarta EE Core Profile being keenly mindful of the needs of both MicroProfile as well as the other Jakarta EE Profiles (and hopefully in some distant future other non-Eclipse Foundation platforms that also depend on a stable/high-quality/minimal Core Profile). The hope would have been that platforms such as MicroProfile would deprecate APIs that are effectively standardized onto the shared space of the Core Profile.

Setting aside the above purely personal opinion, if MicroProfile is very averse to supporting both Jakarta Config and MicroProfile Config, I don't think it's too hard to just keep Config out of the Core Profile including the small handful of Jakarta EE APIs there (via spec profiles if needed). The major customer pain point is needing to configure the data/external infrastructure related Jakarta EE technologies using old style embedded XML or Java, which are mostly not in the Core Profile anyway.

Ondro Mihályi

unread,
Feb 17, 2025, 11:20:14 PMFeb 17
to Jakarta Config project developer discussions, Reza Rahman, [email protected]
I think that, in the case of config, other specifications can just specify the accepted config properties, regardless of how these properties are provided. The TCK could use system properties as a common config source. 

Then Microprofile umbrella can state that these properties are supplied by MP Config, Jakarta EE Platform would state they are supplied by Jakarta Config. Jakarta Core profile wouldn't need to include Jakarta Config. Or it could, but then MicroProfile would state that Jakarta Config is not required. I'm sure there's a way to define all this in a simple way so that everybody is happy.

With all that, I share the same sentiment with Reza. I always hoped that MP would tend to donate APIs to Jakarta after they become stable, and then completely rely on the Jakarta version of the API. But that's not necessary, and I think anything is better than the current state, when many implementations rely on MP config even for their Jakarta EE functionality, or even worse, MP parts support MP Config while Jakarta EE parts don't.

All the best,
Ondro

On Mon, Feb 17, 2025 at 8:29 PM Reza Rahman via config-dev <[email protected]> wrote:

I am sure Ed and/or Jared will respond with their own thoughts - in the meantime let me share my two cents, including on some of the broader technical intricacies.

First a purely personal opinion independent of Microsoft. These are some of the intricacies of managing two platforms run by two separate working groups that in practice need to co-exist closely. It's the reason some of us espoused the hope that common dependencies and possible sources of colliding resources to manage would only be in one direction with the Jakarta EE Core Profile being keenly mindful of the needs of both MicroProfile as well as the other Jakarta EE Profiles (and hopefully in some distant future other non-Eclipse Foundation platforms that also depend on a stable/high-quality/minimal Core Profile). The hope would have been that platforms such as MicroProfile would deprecate APIs that are effectively standardized onto the shared space of the Core Profile.

Setting aside the above purely personal opinion, if MicroProfile is very averse to supporting both Jakarta Config and MicroProfile Config, I don't think it's too hard to just keep Config out of the Core Profile including the small handful of Jakarta EE APIs there (via spec profiles if needed). The major customer pain point is needing to configure the data/external infrastructure related Jakarta EE technologies using old style embedded XML or Java, which are mostly not in the Core Profile anyway.

On 2/17/2025 11:17 AM, Roberto Cortez via config-dev wrote:

Kito D. Mann

unread,
Feb 18, 2025, 12:35:13 AMFeb 18
to Jakarta Config project developer discussions, [email protected], Reza Rahman, [email protected]
I think that, in the case of config, other specifications can just specify the accepted config properties, regardless of how these properties are provided. The TCK could use system properties as a common config source. 
 
Then Microprofile umbrella can state that these properties are supplied by MP Config, Jakarta EE Platform would state they are supplied by Jakarta Config. Jakarta Core profile wouldn't need to include Jakarta Config. Or it could, but then MicroProfile would state that Jakarta Config is not required. I'm sure there's a way to define all this in a simple way so that everybody is happy.

I think that makes a lot of sense. Each spec just says what it needs from a "Configuration Provider" and that provider would be either MP Config or Jakarta Config. 
 
With all that, I share the same sentiment with Reza. I always hoped that MP would tend to donate APIs to Jakarta after they become stable, and then completely rely on the Jakarta version of the API.
 
I agree with this sentiment as well... 
 
We need to also keep in mind the perspective of the end users... they want a "normal" configuration setup that "just works" with all of the different parts of the app. And it would be confusing to have two different namespaces with the same classes. It's also confusing for the end user to have two different Config specifications, even if they're roughly the same.
 
___

Kito D. Mann | @[email protected] LinkedIn
Java Champion | Google Developer Expert Alumni 
Expert consulting and training: Cloud architecture and modernization, Java/Jakarta EE, Web Components, Angular, Mobile Web
Virtua, Inc. | virtua.tech
+1 203-998-0403

* Enterprise development, front and back. Listen to Stackd Podcast.
* Speak at conferences? Check out SpeakerTrax.

Kito D. Mann

unread,
Feb 21, 2025, 6:16:38 AMFeb 21
to Jakarta Config project developer discussions, [email protected], Kito D. Mann, Reza Rahman, [email protected]
Re-sending...

Emily Jiang

unread,
Feb 21, 2025, 2:25:32 PMFeb 21
to Jakarta Config project developer discussions, MicroProfile, Kito D. Mann, [email protected], Arjan Tijms via jakartaee-platform-dev, Jakarta EE specifications
I strongly disagree with forking MP Config to Jakarta with namespace changes. This introduces unnecessary headaches and namespace clashes in the IDEs. Why cannot Jakarta EE adopt MicroProfile Config as it is and job done? No more hassle.

The namespace update is purely artificial and causes too many headaches and version matching. In order to continue the forking and namespace changes, can anyone show me the rule of Jakarta not allowing the use of MicroProfile specs first? 
Emily

On Fri, Feb 21, 2025 at 11:02 AM werner.keil--- via config-dev <[email protected]> wrote:
Kito/all,

Thanks for forwarding this, although the quote of quotes of quotes makes it very hard to read.

I fully agree with Otavio's message that both are developed under the Eclipse Foundation, and users of a product don't really care, if it was developed in repository A or B.

However, what Roberto outlined earlier about continuous copying between MP Config and Jakarta Config makes absolutely no sense.

RC> After the initial copy/paste, how would things evolve?
 
My intention is that technical evolution would take place in the
MicroProfile Config project. In the event of Jakarta specific
accommodations, we would
 
1. Cross that bridge when we come to it.
2. Try to come up with solutions that are palatable to both communities, Jakarta
   EE and MicroProfile.
3. If absolutely necessary, we would define content in MP Config that
   would have the proviso such as "this only takes effect in Jakarta
   EE environments". There is ample precedent for such approaches. See
   what we did with Faces when Validation was present (in EE) vs. not
   present (such as in Tomcat).
 
RC> Would Jakarta keep the APIs in-sync?
 
Yes. Every time Jakarta needed a new version, they would pick up a
chosen release of MP config to give the copy/paste treatment to.

MicroProfile consumes Jakarta EE, so there is no MP application or platform without a Jakarta EE platform, at the very least the Core Profile. So Jakarta Config is expected to be available in every profile. If the MP Config API was to co-exist with Jakarta Config forever, then applications would have to exclude one of them from their build system, otherwise they risk confusion or even mixing them in the same project with unforseen and unpredictable consequences. Especially if a Jakarta EE application using Jakarta Config API also wanted to use certain MP features like OpenTelemetry, Health, etc. internally configured via MP Config, but potentially even a different version of the API, if e.g. MP 8.1 used a new version of MP Config while Jakarta EE was still on 12 or 13 based on an older MP Config API.

If the API is a drop-in-replacement then nothing keeps the MP projects from using the Jakarta one after the next release. And it does not really matter, if it was maintained in https://github.com/jakartaee/config or 
Otherwise everyone, most importantly developers and users of both MP and Jakarta EE would face a "config hell".

Regards,
Werner



From: config-dev <[email protected]> on behalf of Kito D. Mann via config-dev <[email protected]>
Sent: Friday, February 21, 2025 4:16 AM
To: Jakarta Config project developer discussions <[email protected]>; [email protected] <[email protected]>; Kito D. Mann <[email protected]>
Cc: Kito D. Mann <[email protected]>; [email protected] <[email protected]>
Subject: Re: [config-dev] [EXTERNAL] Re: [microprofile] Config for Jakarta EE 12 and MP.next
 


--
Thanks
Emily

Ondro Mihályi

unread,
Feb 21, 2025, 4:22:07 PMFeb 21
to Jakarta Config project developer discussions, MicroProfile, Steve Millidge (Payara), Jakarta EE specifications, Arjan Tijms via jakartaee-platform-dev
Hi,

Yes, MP decided on the pull model. That means that the decision is solely on Jakarta EE, with the pull model, MicroProfile has decided they don't care about EE.

Copying/forking MP Config is not the only option, even with the pull model. Even with this model, Jakarta EE can depend on MP Config, or a core part of it (without CDI). But I doubt that this is the way to go in reality. MP Config most probably cann't meet the standards of Jakarta EE. Another problem is that MP and EE have different release cycles, and, even if EE depended only on a core MP Config part, releases of MP, MP Config Core, and EE would need to be synchronized. I doubt that the MP would accept that.

For the arguments above, the only reasonable options I see, are:
  1. MP Config participates in this process and splits to core part and CDI part, so that the core part can be moved to Jakarta EE Core Profile without package changes
  2. Jakarta EE copies the core part of MP config under the jakarta package prefix and adds it to the Core Profile. Jakarta EE can introduce a new CDI Config integration spec, or the existing CDI spec can specify integration in the non-lite part, which is not part of EE Core Profile. This could still cause conflicts for implementations that provide both MP and EE, but we can hardly do anything about it
  3. Jakarta EE will not care about MP Config and will introduce its own API. This option makes sense only if all other options fail. We tried that already and haven't delivered in more than 2 years.
This basically boils down to extracting core parts of MP Config, and the question is whether to keep the package names or introduce jakarta package names, and whether MP helps and splits the MP Config spec or not. The third option is probably the least desired right now.

Are any other options on the table?

Ondro

On Fri, Feb 21, 2025 at 1:15 PM Steve Millidge (Payara) via config-dev <[email protected]> wrote:
To be honest the whole thing is a mess that should have been sorted out years ago. As one of the 4 vendors that actually has a compatible implementation of Microprofile 6 and above the two WG should have merged years ago with innovation occurring in Jakarta ee as standalone specs then maturity being signalled by adoption into a platform spec. 

On this particular point as Kenji stated MicroProfile explicitly voted on the pull model 5 years ago!!!!  https://docs.google.com/document/d/1VQ5cvzhVhKYr27FKC1tVmf081eGLSNiuX-dhQ2BxItc/edit?pli=1&tab=t.0#heading=h.7e20q7f70ond  which includes the explanatory text

"Downstream consumers will probably require a fork (with changing package names)  to meet the downstream projects requirements."

This should not be controversial as it is rehashed continually.

While we have the same debates the market does not care and moves on.

Steve


From: config-dev <[email protected]> on behalf of Emily Jiang via config-dev <[email protected]>
Sent: Friday, February 21, 2025 11:25:40 am
To: Jakarta Config project developer discussions <[email protected]>; MicroProfile <[email protected]>
Cc: Emily Jiang <[email protected]>; Jakarta EE specifications <[email protected]>; Arjan Tijms via jakartaee-platform-dev <[email protected]>

Roberto Cortez

unread,
Feb 21, 2025, 5:20:54 PMFeb 21
to [email protected], Jakarta Config project developer discussions, Jakarta EE specifications
Hi,

Can you please clarify which standards MicroProfile Config cannot meet? 

Also, why is there an assumption that MP Config wouldn’t accept some sort of release alignment? MP projects are free to release anytime they want.

Cheers,
Roberto

Werner Keil

unread,
Feb 21, 2025, 5:25:17 PMFeb 21
to MicroProfile
Although config seems a rather slow-moving, kind of mature technology and spec now, given there's been no real change over the past 3 years or so (neither in Jakarta nor MP config) there could be a situation I mentioned before

> MicroProfile consumes Jakarta EE, so there is no MP application or platform without a Jakarta EE platform, at the very least the Core Profile. So Jakarta Config is expected to be available in every profile. If the MP Config API was to co-exist > with Jakarta Config forever, then applications would have to exclude one of them from their build system, otherwise they risk confusion or even mixing them in the same project with unforseen and unpredictable consequences. Especially > if a Jakarta EE application using Jakarta Config API also wanted to use certain MP features like OpenTelemetry, Health, etc. internally configured via MP Config, but potentially even a different version of the API, if e.g. MP 8.1 used a new 
> version of MP Config while Jakarta EE was still on 12 or 13 based on an older MP Config API.

And if the MP config inside Jakarta EE is older than the one with a new version of the MP platform/release train, excluding them becomes even more complicated, if not impossible, especially if the maven coordinates were identical.

Werner

Werner Keil

unread,
Feb 21, 2025, 5:28:17 PMFeb 21
to MicroProfile
I am very much with Steve and as the Committer/Community rep in the Spec Committee I also represent the wider community and customers who need to use these things.
And like vendors (only 4 of them actually having compatible implementations of MP 6, after 7 it sounds more like 1 or 2 max) developers will suffer from pride and prejudice of a few vendors or committers, by having to deal with configuration hell due to multiple, only partially compatible config solutions being used.

It's been similar with logging btw, when a logging standard was considered a long time ago, still in the JCP.

Werner

Werner Keil

unread,
Feb 21, 2025, 5:54:12 PMFeb 21
to MicroProfile
As Steve mentioned, the adoption and true certification of MP is merely a fraction of Jakarta EE.
The most recent MP versions only got certified by one or two products, before that MP 6 had 4 compatible products according to Steve. Jakarta EE lists around 20 product by almost the same number of vendors. Not all may have certified against Jakarta EE 10, but in general the number of compatible implementations is higher. And let's not forget, MP as well as Spring also implements some of Jakarta EE, so that multiplies the usage drastically.

Regards,
Werner

Ondro Mihályi

unread,
Feb 21, 2025, 6:26:28 PMFeb 21
to Jakarta specification discussions, [email protected], Roberto Cortez, Jakarta Config project developer discussions
Roberto, now you’re talking from a position of MicroProfile, not from Jakarta EE. MicroProfile vhode the pull model, and thus simply ignored Jakarta EE. There are simply no guarantees for Jakarta EE if it depends on MP specs. And the Jakarta EE process and certification requirements are more strict.

If I turn your question upside down, maybe it will make more sense - why MP can not simply depend on a Jakrta Config spec? Why is there an assumption that in Jakarta, Config wouldn’t evolve fast enough for MicroProfile? Jakarta specs can also release at any time, the only difference is they also have to go through a plan review and not only through a release review. And they shouldn’t introduce breaking changes without approval. Is that really a big issue for MicroProfile with such a stable spec?

Ondro


_______________________________________________
jakarta.ee-spec mailing list
[email protected]
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jakarta.ee-spec

Reza Rahman

unread,
Feb 21, 2025, 6:31:55 PMFeb 21

This is indeed a very important branding, marketing, and strategic consideration. What we observe is that while Jakarta EE adoption and usage is not stellar, MicroProfile adoption and usage fares even worse: https://trends.google.com/trends/explore?date=2016-01-21%202025-02-21&q=Jakarta%20EE,MicroProfile&hl=en. These have been the trends for some time now. It's not surprising when customer express the preferences on this matter to us.

Roberto Cortez

unread,
Feb 21, 2025, 7:10:49 PMFeb 21
to [email protected], Jakarta specification discussions, Jakarta Config project developer discussions
Obviously, I’m biased here, but my goal is to have proper arguments either way.

What sort of guarantees does Jakarta need? Jakarta also depends on the Java language and many of the Java APIs. What kind of guarantees does Jakarta have from that side? Process and certification, while a bit different, are not so far away from each other. Can you please give me an example where Jakarta requires additional things that make it stricter than MP? I remember signature testing, and we can discuss the merits and requirments of signature testing separetely.

Thank you for turning the question around for me the answer is quite simple:

- Yes, MP could depend on a Jakarta Config spec. There is no assumption (at least from me), that it wouldn’t evolve fast enough. Actually, as we have seen, there was hardly any evolution on MP Config in the last few years (there are reasons for that, that we can also discuss)

- My issue is that by pushing a copy of a Jakarta Config, users would have to deal with duplicated APIs, runtimes would require double the work, even impacting performance requirements to serve the same functionality we have today.

On the other hand:

- If Jakarta were to use MP Config as is, everyone already has support for it, there would be no impact on the end user, and we could cooperate together to shape it the way we want. Is that also so hard to accomplish?

We had this exact same discussion 5 years ago. The problem is the same, the people participating are the same, and people have the exact same opinions now compared to 5 years ago. We tried a Jakarta Config and failed miserably. This also hurt MP Config because no one was going to waste any time on it with a possible Jakarta Config coming. I fear that going in the same direction will give us the same outcome. Maybe try something different this time?

Cheers,
Roberto

Ondro Mihályi

unread,
Feb 21, 2025, 8:01:17 PMFeb 21
to Jakarta specification discussions, [email protected], Roberto Cortez, Jakarta Config project developer discussions
Based on what we both wrote, Roberto, I think that a way to resolve this, is to move MP Config to Jakarta EE and keep the package prefixes. Option number 1 in the list of options I described earlier.

I would support that if we come to an agreement on this soon and start making it a reality.

If not, I will focus on plain Jakarta Config, without thinking about MP Config and whether they conflict or not. I know there are people willing to work on it, they just stopped contributing because of lack of agreement and leadership. Hindered by endless discussions.

Ondro

Ed Burns

unread,
Feb 21, 2025, 9:00:49 PMFeb 21
to Jakarta Config project developer discussions, [email protected]
Note about email lists:

As predicted, discussion has fragmented across several lists. I realize this is a side effect of the choice to continue discussion using this "both lists on the To: line" approach rather than introduce another venue.
----------------------------------

Greetings programs​,

After discussion, consideration, and consultation, I continue to believe we need to select the least-bad option for both our communities. The time for selecting an actually good option passed when MicroProfile departed from their nascent goal of MicroProfile being an incubation space for ideas that eventually go into Jakarta EE. For historical perspective, see Ivar's blog post from nearly half a decade ago. To fork, or not to fork | agilejava.eu .

Therefore, Microsoft intends to support option 1: copy the Eclipse MicroProfile Config 3.1 API into Eclipse Jakarta EE as Jakarta Config 1.0. Regarding further development of Jakarta Config: We intend to selectively incorporate sensible changes made in subsequent versions of MicroProfile Config into future versions of Jakarta Config, while retaining the right to develop Jakarta Config in its own right to meet the needs of Jakarta EE.

I will work with Dmitry Kornilov as the project lead for Jakarta Config to go through the specification process. Specifically: create a release plan and go through Plan Review. This approach will allow the Jakarta specification process to proceed with its usual voting.

Let's do a thought experiment to illustrate the untenability of Option 2.

Thought experiment: MicroProfile Config Core 3.2 (part of MicroProfile 7.1) is used directly from Jakarta EE 12.

  • There exists MicroProfile Config Core 3.2. This contains the non-CDI parts of MicroProfile Config 3.1.

  • There exists MicroProfile Config 3.2. This contains the rest of MicroProfile Config 3.1 and still defines integration with a specific version of CDI. Specifically 2.0.

  • MicroProfile 7.1 includes MicroProfile Config 3.2.

  • Jakarta EE 12 depends MicroProfile Config Core 3.2 (which is a part of MicroProfile 7.1).

Problems with this approach

Functionality problems

A key part of the value of Config is the ability to use it from CDI. But because the CDI part is absent from MicroProfile Config Core 3.2, the Config specific CDI feature set is not available in Jakarta EE 12. This is unacceptable, considering how central CDI is to Jakarta EE and MicroProfile.

​Consider this existing problem regarding backward incompatible changes. Let's say an EE 12 Core Profile specification introduces a backward incompatible change that does not work with the corresponding version of that specification in MicroProfile 7.1. Now, all vendors will need to incorporate MicroProfile 7.2 (which resolves this dependency problem) before we can have EE and MicroProfile versions that can be implemented by a vendor in a single product. This existing problem is now made even more difficult because the same thing can happen in reverse in the event MicroProfile Config introduces a backward incompatible change. 

We are effectively very closely tying the release cycles of Jakarta EE and MicroProfile. This is untenable.

Governance problems

Because MicroProfile Config Core 3.2 is a foundational part of Jakarta EE 12, and MicroProfile Config Core 3.2 is governed by MicroProfile governance, the independent existence and decision making of Jakarta EE is now impossible. For example if Jakarta EE needs a concrete change to MicroProfile Config, Jakarta EE must compel MicroProfile to accept this change in a timely fashion. This turns what was once a one-way dependency (MicroProfile depending on Jakarta EE for several core specifications) into a two-way dependency. To make matters worse, MicroProfile has adopted the pull model, which means they are not committed or bound to address the needs of Jakarta EE.

Closing

I realize option 1 does not please everyone, but I trust in the Jakarta specification process to give legitimacy to the result due to the clear outcome of voting on the Plan Review for Jakarta Config 1.0.

Thanks,

Ed



From: config-dev <[email protected]> on behalf of Jared Anderson via config-dev <[email protected]>
Date: Tuesday, February 4, 2025 at 10:18
To: [email protected] <[email protected]>, [email protected] <[email protected]>
Cc: Jared Anderson <[email protected]>
Subject: [EXTERNAL] [config-dev] Config for Jakarta EE 12 and MP.next

You don't often get email from [email protected]. Learn why this is important
This email is a follow up to the discussion at the 2025-02-04 Jakarta EE platform call.
In that call, we discussed an approach where Jakarta EE 12 could effectively use MicroProfile Config "as is" with some important non-technical accommodations.
  1. The APIs for Jakarta Config would be the MicroProfile Config APIs, but with jakarta namespace. Yes, a copy/paste.
  1. The implementation may delegate to the MicroProfile Config implementation.
  1. The Spec document would be one-line: see the corresponding MicroProfile config spec document.  May need additional text to talk about the difference in namespace and adding in jakarta-config.properties until a new MP Config version added that to its specification.  See #5 below.
  2. The TCK would be a copy/paste of the MicroProfile Config TCK and updating the name space and adding jakarta-config.properties testing
  3. Need to introduce a new line in the ConfigSource (MicroProfile Config API)
    • “Some configuration sources are known as default configuration sources. These configuration sources are normally available in all automatically-created configurations, and can be manually added to manually-created configurations as well. The default configuration sources are:
    • 1. System properties, with an ordinal value of 400
    • 2. Environment properties, with an ordinal value of 300
    • 3. The /META-INF/jakarta-config.properties resource, with an ordinal value of 200
    • 4. The /META-INF/microprofile-config.properties resource, with an ordinal value of 100

    Dmitry Kornilov

    unread,
    Feb 21, 2025, 9:56:45 PMFeb 21
    to Jakarta Config project developer discussions, [email protected], Ed Burns
    +1

    From: config-dev <[email protected]> on behalf of Ed Burns via config-dev <[email protected]>
    Sent: Friday, February 21, 2025 19:00

    To: Jakarta Config project developer discussions <[email protected]>; [email protected] <[email protected]>
    Cc: Ed Burns <[email protected]>
    Subject: [External] : Re: [config-dev] Config for Jakarta EE 12 and MP.next
     

    Dmitry Kornilov

    unread,
    Feb 21, 2025, 9:56:57 PMFeb 21
    to MicroProfile
    +1

    пятница, 21 февраля 2025 г. в 19:00:49 UTC+1, Ed Burns:

    Roberto Cortez

    unread,
    Feb 21, 2025, 10:01:27 PMFeb 21
    to [email protected], Jakarta Config project developer discussions, jakartaee-platform developer discussions, Jakarta specification discussions
    Yes, but you make it sound that the issues you raise are totally unfixable. Maybe they are, I would just want to know why people feel that way?

    But I doubt that this is the way to go in reality. MP Config most probably cann't meet the standards of Jakarta EE.

    Which standards can’t MP meet?

    Another problem is that MP and EE have different release cycles

    You are also a committer on the MP Config, so you could help align releases. We shouldn’t confuse platform releases with single project releases.

    I doubt that the MP would accept that.

    This is just an assumption from your end. I can tell you it would have my support and I’m sure many other folks in the MP community would support it as well, but we can’t just assume things without even asking.

    Well, unfortunately, we had to return to these discussions. But let me continue that discussion in another thread.

    On 21 Feb 2025, at 17:29, Ondro Mihályi <[email protected]> wrote:

    I wrote my arguments against Jakarta EE depending on MP Config earlier today, quoting:

    Jakarta EE can depend on MP Config, or a core part of it (without CDI). But I doubt that this is the way to go in reality. MP Config most probably cann't meet the standards of Jakarta EE. Another problem is that MP and EE have different release cycles, and, even if EE depended only on a core MP Config part, releases of MP, MP Config Core, and EE would need to be synchronized. I doubt that the MP would accept that.

    End of quote.

    We discussed this multiple times and always came to a conclusion that Jakarta EE shouldn’t depend on MP specs. If we’re going to question this again, we’re going nowhere.

    I stated proposals that I think are the only viable options. I hope we’ll have an agreement or that somebody comes with a betrer option.

    And I don’t question your past effort or contributions. I was talking about these endless discussions with no conclusions.

    Ondro

    On Fri, 21 Feb 2025 at 18:19, Roberto Cortez <[email protected]> wrote:
    I’m sorry Ondro, you are being completely unfair with your observations.

    We had this exact same discussion 5 years ago. In the now inactive CN4J group, there were two proposals, one to move and the other to keep, which were voted and the one to move won:




    The MP community never disrupted or hindered any efforts on a Jakarta Config after that decision. In fact, me and Emily were (with some other folks) the most active members in that group, either in calls, commits, issues, and so on. And we were there in good faith and pushed to move things forward, so threatening actions are not a good way to collaborate. You need to realize that based on previous experience, many of us are way more skeptical about the end results, so you also need to be more patient and educate us to convince us that your proposal is the best one. 

    I have to apologize again, because I read the entire thread, and I couldn’t understand why Jakarta cannot accept anything in MicroProfile repositories. Do you mind explaining it again? You can reply privately if you want.

    Cheers,
    Roberto

    On 21 Feb 2025, at 16:53, Ondro Mihályi via jakarta.ee-spec <[email protected]> wrote:

    Jakarta Core Profile cannot accept anything in MicroProfile repositories, as I argumented, it wouldn’t work. Disputing about things like this is exactly what I mean by hindering. We shouldn’t talk about options that just wouldn’t work, that’s a waste of time and going in circles.

    Ondro

    On Fri, 21 Feb 2025 at 17:10, Emily Jiang <[email protected]> wrote:
    I might have misunderstood what you meant on Option 1.  I will just say Jakarta Core Profile just includes MP Config core. The repo will stay in MP.



    On Fri, Feb 21, 2025 at 4:05 PM Emily Jiang <[email protected]> wrote:
    My comments are inline.

    On Fri, Feb 21, 2025 at 3:55 PM Ondro Mihályi via config-dev <[email protected]> wrote:
    Exactly as Reza wrote. Just the latest Jakarta EE 10 is implemented by 9 distinct solutions, out of those at least 4 have full or partial support for MicroProfile. Only 2 solutions plus Quarkus primarily support MicroProfile and have no or only partial support for EE. I think this is in line of the adoption trends Reza wrote about.
     
    And now, it seems to me like Jakarta EE wants to evolve and bring Config, but MicroProfile has effectively hindered this initiative for a very long time, instead of helping and supporting Jakarta EE, which is at the core of MicroProfile. I don't see why Jakarta EE should take any consideration about MicroProfile at this stage, after MicroProfile choosing the pull model, and after being slowed down with all these discussion how to align with MicroProfile while MicroProfile doesn't even want to collaborate and align with Jakarta EE.
    I am not sure what you meant by saying MicroProfile has hindered this initiative. There was suggestions and I said multiple times at some calls. MicroProfile Config is willing to split up into 2 parts: core; cdi parts.

    I see only 2 options now:
    1. MicroProfile will cooperate and agree to move MP Config or at least its non-CDI part to Jakarta Core Profile, and then we can keep the packages without breaking the API
    This is the option I offered to help and contribute. This is so far the best approach.
    1. Jakarta Config will be created in Jakarta Core Profile, with jakarta packages, and MicroProfile will need to cope with it. The new API can map the MP Config API or create a variant inspired by it

    If this discussion continues for too long without a resolution, I will strongly support creating Jakarta Config spec without any regard to MicroProfile, either as a copy of MP Config APIs in jakarta packages, or a completely new API. And I will start contributing to Jakarta Config as a committer, together with some other committers who want to do some work instead of wasting time in discussions. There's no reason why these discussions should slow down Jakarta EE. I don't see these kind of discussions in Microprofile, why should we have them in EE?

    Ondro

    On Fri, Feb 21, 2025 at 4:34 PM Reza Rahman via config-dev <[email protected]> wrote:

    This is indeed a very important branding, marketing, and strategic consideration. What we observe is that while Jakarta EE adoption and usage is not stellar, MicroProfile adoption and usage fares even worse: https://trends.google.com/trends/explore?date=2016-01-21%202025-02-21&q=Jakarta%20EE,MicroProfile&hl=en. These have been the trends for some time now. It's not surprising when customer express the preferences on this matter to us.

    On 2/21/2025 9:54 AM, Werner Keil wrote:

    Roberto Cortez

    unread,
    Feb 21, 2025, 10:46:03 PMFeb 21
    to Jakarta Config project developer discussions, Jakarta specification discussions, jakartaee-platform developer discussions, [email protected]
    If Jakarta wants to move forward with a Config specification, there is nothing MP can do about it, but I believe both communities care about the users and want to find some common ground to cooperate.

    Regardless of whatever happened previously in Jakarta Config, the undisputed fact that I would all like us to agree on is that it FAILED. Not only was there no tangible result from that effort, but it also hurt MP Config (all work there stopped because of Jakarta Config). Can we agree that we are in a worse position than a few years back regarding this topic? No Jakarta Config is available at this point; neither has MP Config evolved in the way it could have.

    While there was an agreement to move MP Config over to Jakarta:

    It became very clear in the first couple of calls (just read the meeting notes), that Jakarta was not interested in the move and wanted to do something completely different.

    So, I would argue that the parties did not honor what was voted on and what was agreed on.

    For those reasons, it makes sense to revisit these discussions and evaluate whether a better alternative or strategy exists, even if it annoys people. I want to avoid a similar situation to what we have had so far and send a definite message to both communities on what we will do moving forward. 

    Cheers,
    Roberto

    On 21 Feb 2025, at 17:59, Reza Rahman via config-dev <[email protected]> wrote:

    Thanks indeed. It’s been exceptionally difficult to track down what the prior recorded decisions had been so that they are not endlessly revisited. The primary intent for Microsoft was and is just to finally move forward Jakarta Config while giving the MicroProfile community a respectful heads up on intent.

    Our understanding of the prior challenges in Jakarta Config was a needless revisiting of fundamental design decisions already fairly successfully made in MicroProfile Config. We are trying to avoid doing that this time in favor of a streamlined path to a v1.
     

    From: jakartaee-platform-dev <[email protected]> on behalf of Steve Millidge (Payara) via jakartaee-platform-dev <[email protected]>
    Sent: Friday, February 21, 2025 12:29 PM
    To: jakartaee-platform developer discussions <[email protected]>; Ondro Mihályi <[email protected]>; Jakarta specification discussions <[email protected]>
    Cc: Steve Millidge (Payara) <[email protected]>; Jakarta Config project developer discussions <[email protected]>
    Subject: Re: [jakartaee-platform-dev] [jakarta.ee-spec] [config-dev] Config for Jakarta EE 12 and MP.next
     

     

    Thanks Roberto for the references so it is clear that this has been voted on before and MP Config was agreed to move to Jakarta Config in the Jakarta namespace.

     

    I thought we were rehashing old ground here.
    --
    Steve Millidge

     

    From: jakartaee-platform-dev <[email protected]> On Behalf Of Roberto Cortez via jakartaee-platform-dev
    Sent: 21 February 2025 17:20
    To: Ondro Mihályi <[email protected]>; Jakarta specification discussions <[email protected]>
    Cc: Roberto Cortez <[email protected]>; Jakarta Config project developer discussions <[email protected]>; jakartaee-platform developer discussions <[email protected]>
    Subject: Re: [jakartaee-platform-dev] [jakarta.ee-spec] [config-dev] Config for Jakarta EE 12 and MP.next

     

    I’m sorry Ondro, you are being completely unfair with your observations.

     

    We had this exact same discussion 5 years ago. In the now inactive CN4J group, there were two proposals, one to move and the other to keep, which were voted and the one to move won:

     

     

     

     

    The MP community never disrupted or hindered any efforts on a Jakarta Config after that decision. In fact, me and Emily were (with some other folks) the most active members in that group, either in calls, commits, issues, and so on. And we were there in good faith and pushed to move things forward, so threatening actions are not a good way to collaborate. You need to realize that based on previous experience, many of us are way more skeptical about the end results, so you also need to be more patient and educate us to convince us that your proposal is the best one. 

     

    I have to apologize again, because I read the entire thread, and I couldn’t understand why Jakarta cannot accept anything in MicroProfile repositories. Do you mind explaining it again? You can reply privately if you want.

     

    Cheers,
    Roberto


    On 21 Feb 2025, at 16:53, Ondro Mihályi via jakarta.ee-spec <[email protected]> wrote:

     

    Jakarta Core Profile cannot accept anything in MicroProfile repositories, as I argumented, it wouldn’t work. Disputing about things like this is exactly what I mean by hindering. We shouldn’t talk about options that just wouldn’t work, that’s a waste of time and going in circles.

     

    Ondro

     

    On Fri, 21 Feb 2025 at 17:10, Emily Jiang <[email protected]> wrote:
    I might have misunderstood what you meant on Option 1.  I will just say Jakarta Core Profile just includes MP Config core. The repo will stay in MP.

     

     

     

    On Fri, Feb 21, 2025 at 4:05PM Emily Jiang <[email protected]> wrote:
    My comments are inline.

     

    On Fri, Feb 21, 2025 at 3:55PM Ondro Mihályi via config-dev <[email protected]> wrote:
    Exactly as Reza wrote. Just the latest Jakarta EE 10 is implemented by 9 distinct solutions, out of those at least 4 have full or partial support for MicroProfile. Only 2 solutions plus Quarkus primarily support MicroProfile and have no or only partial support for EE. I think this is in line of the adoption trends Reza wrote about.

     

    And now, it seems to me like Jakarta EE wants to evolve and bring Config, but MicroProfile has effectively hindered this initiative for a very long time, instead of helping and supporting Jakarta EE, which is at the core of MicroProfile. I don't see why Jakarta EE should take any consideration about MicroProfile at this stage, after MicroProfile choosing the pull model, and after being slowed down with all these discussion how to align with MicroProfile while MicroProfile doesn't even want to collaborate and align with Jakarta EE.
    I am not sure what you meant by saying MicroProfile has hindered this initiative. There was suggestions and I said multiple times at some calls. MicroProfile Config is willing to split up into 2 parts: core; cdi parts.

     

    I see only 2 options now:
    1.      MicroProfile will cooperate and agree to move MP Config or at least its non-CDI part to Jakarta Core Profile, and then we can keep the packages without breaking the API
    This is the option I offered to help and contribute. This is so far the best approach.
    1.      Jakarta Config will be created in Jakarta Core Profile, with jakarta packages, and MicroProfile will need to cope with it. The new API can map the MP Config API or create a variant inspired by it

     

    If this discussion continues for too long without a resolution, I will strongly support creating Jakarta Config spec without any regard to MicroProfile, either as a copy of MP Config APIs in jakarta packages, or a completely new API. And I will start contributing to Jakarta Config as a committer, together with some other committers who want to do some work instead of wasting time in discussions. There's no reason why these discussions should slow down Jakarta EE. I don't see these kind of discussions in Microprofile, why should we have them in EE?

     

    Ondro

     

    On Fri, Feb 21, 2025 at 4:34PM Reza Rahman via config-dev <[email protected]> wrote:

    This is indeed a very important branding, marketing, and strategic consideration. What we observe is that while Jakarta EE adoption and usage is not stellar, MicroProfile adoption and usage fares even worse: https://trends.google.com/trends/explore?date=2016-01-21%202025-02-21&q=Jakarta%20EE,MicroProfile&hl=en. These have been the trends for some time now. It's not surprising when customer express the preferences on this matter to us.

    On 2/21/2025 9:54 AM, Werner Keil wrote:
    As Steve mentioned, the adoption and true certification of MP is merely a fraction of Jakarta EE.
    The most recent MP versions only got certified by one or two products, before that MP 6 had 4 compatible products according to Steve. Jakarta EE lists around 20 product by almost the same number of vendors. Not all may have certified against Jakarta EE 10, but in general the number of compatible implementations is higher. And let's not forget, MP as well as Spring also implements some of Jakarta EE, so that multiplies the usage drastically.

     

    Regards,
    Werner

     

    [email protected] schrieb am Freitag, 21. Februar 2025 um 15:20:54 UTC+1:
    Hi,

     

    Can you please clarify which standards MicroProfile Config cannot meet? 

     

    Also, why is there an assumption that MP Config wouldn’t accept some sort of release alignment? MP projects are free to release anytime they want.

     

    Cheers,
    Roberto

     

    On 21 Feb 2025, at 13:21, Ondro Mihályi <[email protected]> wrote:

     

    Hi,

     

    Yes, MP decided on the pull model. That means that the decision is solely on Jakarta EE, with the pull model, MicroProfile has decided they don't care about EE.

     

    Copying/forking MP Config is not the only option, even with the pull model. Even with this model, Jakarta EE can depend on MP Config, or a core part of it (without CDI). But I doubt that this is the way to go in reality. MP Config most probably cann't meet the standards of Jakarta EE. Another problem is that MP and EE have different release cycles, and, even if EE depended only on a core MP Config part, releases of MP, MP Config Core, and EE would need to be synchronized. I doubt that the MP would accept that.

     

    For the arguments above, the only reasonable options I see, are:
    1.      MP Config participates in this process and splits to core part and CDI part, so that the core part can be moved to Jakarta EE Core Profile without package changes
    2.      Jakarta EE copies the core part of MP config under the jakarta package prefix and adds it to the Core Profile. Jakarta EE can introduce a new CDI Config integration spec, or the existing CDI spec can specify integration in the non-lite part, which is not part of EE Core Profile. This could still cause conflicts for implementations that provide both MP and EE, but we can hardly do anything about it
    3.      Jakarta EE will not care about MP Config and will introduce its own API. This option makes sense only if all other options fail. We tried that already and haven't delivered in more than 2 years.
    _______________________________________________
    jakarta.ee-spec mailing list
    [email protected]
    To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jakarta.ee-spec

     

    Emily Jiang

    unread,
    Feb 24, 2025, 9:20:27 PMFeb 24
    to [email protected], Jakarta Config project developer discussions, Jakarta specification discussions, jakartaee-platform developer discussions
    I agree with Roberto's observation on the execution of Option 1. Unfortunately, it was a failure. Therefore, I would like to concentrate on Option 2. I would like to address the problems mentioned in Ed's email.


    I will work with Dmitry Kornilov as the project lead for Jakarta Config to go through the specification process.
    Ed, just as a fyi - I am the co-spec lead for Jakarta Config. If you plan the next step, please include me. However, I think we are not in a position to work on a plan as yet. I have further comment on the issues mentioned in Ed's email. I added my comments in <ej></ej>.

    Thought experiment: MicroProfile Config Core 3.2 (part of MicroProfile 7.1) is used directly from Jakarta EE 12.
    • There exists MicroProfile Config Core 3.2. This contains the non-CDI parts of MicroProfile Config 3.1.
    • There exists MicroProfile Config 3.2. This contains the rest of MicroProfile Config 3.1 and still defines integration with a specific version of CDI. Specifically 2.0.
    • MicroProfile 7.1 includes MicroProfile Config 3.2.
    • Jakarta EE 12 depends MicroProfile Config Core 3.2 (which is a part of MicroProfile 7.1).
    Problems with this approach
    Functionality problems
    A key part of the value of Config is the ability to use it from CDI. But because the CDI part is absent from MicroProfile Config Core 3.2, the Config specific CDI feature set is not available in Jakarta EE 12. This is unacceptable, considering how central CDI is to Jakarta EE and MicroProfile.
    Consider this existing problem regarding backward incompatible changes. Let's say an EE 12 Core Profile specification introduces a backward incompatible change that does not work with the corresponding version of that specification in MicroProfile 7.1. Now, all vendors will need to incorporate MicroProfile 7.2 (which resolves this dependency problem) before we can have EE and MicroProfile versions that can be implemented by a vendor in a single product. This existing problem is now made even more difficult because the same thing can happen in reverse in the event MicroProfile Config introduces a backward incompatible change.

    <ej>If we get MP Config core included in Jakarta Core Profile. MP Config Core will have a different release cadence and can release whenever it is needed.  However, I suspect the core part is pretty stable and it won't need to do much changes. I don't think the EE release needs to wait for any MP releases. </ej>

    We are effectively very closely tying the release cycles of Jakarta EE and MicroProfile. This is untenable.
    <ej> I don't see the tying part of release cycles</ej>
    Governance problems

    Because MicroProfile Config Core 3.2 is a foundational part of Jakarta EE 12, and MicroProfile Config Core 3.2 is governed by MicroProfile governance, the independent existence and decision making of Jakarta EE is now impossible. For example if Jakarta EE needs a concrete change to MicroProfile Config, Jakarta EE must compel MicroProfile to accept this change in a timely fashion. This turns what was once a one-way dependency (MicroProfile depending on Jakarta EE for several core specifications) into a two-way dependency. To make matters worse, MicroProfile has adopted the pull model, which means they are not committed or bound to address the needs of Jakarta EE.
    <ej>All of the MP members are part of Jakarta WG. Both WGs want to create a cohesive supporting model between MP and Jakarta. I don't think the situation you described would occur. Since the MP config spec group wants to work closely with Jakarta by putting Core Config in Jakarta Core Profile. The MP spec group should cooperate with Jarkarta for the ongoing support. We can state this in the MP config page if needed.</ej>

    Thanks
    Emily




    --
    You received this message because you are subscribed to the Google Groups "MicroProfile" group.
    To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].

    John Clingan

    unread,
    Feb 25, 2025, 1:45:36 AMFeb 25
    to MicroProfile
    Let's not use the "MicroProfile doesn't care about Jakarta EE" language.  We care, but we also care about MicroProfile. We wanted to build an alternative to the heavy-process-oriented JCP and to treat specifications more as open source projects. MicroProfile started as fast-moving with minimal process. Unfortunately, becoming a Working Group added more process and we've generally gone from 3 annual releases to 2 annual releases. For current and future specifications, and their associated releases, we'd like to keep the process as lightweight as possible. IMHO, MicroProfile governance will continue to be lighter weight, faster-moving, and more cost-effective than Jakarta governance. 

    Using admittedly strong language here, I feel that MicroProfile Config is being hijacked by Jakarta. The precedent will be set. This is not a one-off. Jakarta wants to take the MicroProfile AI effort and use a "jakarta-microprofile-langchain4j" langchain4j repo name , with "jakarta" not only being in the repo name, but prefixed in the repo name. What's next? Move MicroProfile Rest Client into Jakarta Rest? I feel that this will continue until MicroProfile is no longer viable and will be voted into Jakarta. 

    It will be sad if the project that brought Java (Jakarta) EE out of the grave is itself buried by it.

    Reza Rahman

    unread,
    Feb 25, 2025, 3:56:05 AMFeb 25
    As I believe Ed has adequately stated, we acknowledge that all of this is a set of very difficult conversations. We remain optimistic we will come out on the other end without zero sum outcomes for anyone.

    I also want to state that we do indeed see Jakarta Config as very much a one off with regards to how it relates to MicroProfile. For all other cases, things can remain exactly the way they are without serious problems. For example, things like JWT and REST Client work well enough with the existing one way relationship between Jakarta EE and MicroProfile functionality.

    It may also be worth noting that other than including both the terms Jakarta EE and MicroProfile in the LangChain4j extension, we do not feel the order of terms in that context makes a substantial difference. In fact even something like langchain4j-cdi is also perfectly workable.


    From: [email protected] <[email protected]> on behalf of John Clingan <[email protected]>
    Sent: Monday, February 24, 2025 5:45 PM
    To: MicroProfile <[email protected]>
    Subject: Re: [microprofile] Re: [config-dev] [jakartaee-platform-dev] [jakarta.ee-spec] Config for Jakarta EE 12 and MP.next
     

    Arjan Tijms

    unread,
    Feb 25, 2025, 2:37:00 PMFeb 25
    On Mon, 24 Feb 2025 at 23:45, John Clingan <[email protected]> wrote:
    Let's not use the "MicroProfile doesn't care about Jakarta EE" language.  We care, but we also care about MicroProfile.

    Who's really "we"? OmniFish and Payara are also in that we, right? Since we are also contributors and implementors to and of MicroProfile. We obviously care about MicroProfile, otherwise we wouldn't be having this discussion. We think however that the APIs currently in MicroProfile should not be governed by its own working group. It's diluting both brands, and for what?
     
    We wanted to build an alternative to the heavy-process-oriented JCP and to treat specifications more as open source projects. MicroProfile started as fast-moving with minimal process. Unfortunately, becoming a Working Group added more process and we've generally gone from 3 annual releases to 2 annual releases.

    It's an annual release, isn't it?

    7.0 Aug 2024
    6.1 Oct 2023
    6.0 Dec, 2022
    5.0 Dec, 2021

    For current and future specifications, and their associated releases, we'd like to keep the process as lightweight as possible. IMHO, MicroProfile governance will continue to be lighter weight, faster-moving, and more cost-effective than Jakarta governance. 

    I don't know about that faster moving bit. With newer JDK adoptions Jakarta is faster, and with the number of features delivered I think Jakarta is now faster too (but I admit it's hard to compare feature A from API 1 with feature B from API 2).

    What is exactly the lighter weight part of the MicroProfile governance? Aren't both WGs following the same spec process?

     

    Using admittedly strong language here, I feel that MicroProfile Config is being hijacked by Jakarta.

    I think it's the other way around. Config was planned for Java EE 8. I spent a lot of my time on it back then. Then Java EE 8 was cut short, and the move to Eclipse happened. Meanwhile Config continued at MicroProfile, as we didn't know yet that Java EE would also move to Eclipse.

    After the dust settled, Config was at MicroProfile, in a way hi-jacking it from the plans to have it in Java EE (now Jakarta EE).

    Of course, if the micro profile was just a profile of Jakarta, there would be even less of a concept of hi-jacking at all.

     
    The precedent will be set. This is not a one-off. Jakarta wants to take the MicroProfile AI effort

    Well, Jakarta is not a sentient being itself. It consists of people. In the case of OmniFish, we're in both MicroProfile and Jakarta EE, and we would like to see a single unified set of APIs. So since "we" (OmniFish) are also Microprofile, you could just as well say that MicroProfile wants Config (or AI or whatever) to move (eventually) to Jakarta EE.

     
    and use a "jakarta-microprofile-langchain4j" langchain4j repo name , with "jakarta" not only being in the repo name, but prefixed in the repo name. What's next? Move MicroProfile Rest Client into Jakarta Rest?

    Yes indeed. The typesafe REST client should have been in Jakarta REST from day 1 really. Practically, it's also part of the REST implementations already (Jersey and RestEasy), which kinda gives away that it really should be part of Jakarta REST.

     
    I feel that this will continue until MicroProfile is no longer viable and will be voted into Jakarta. 

    That would be the best thing for all of us, right? Having two working groups for essentially one set of APIs only confuses users, dilutes branding efforts, and costs enormous amounts of time. Meanwhile competing frameworks are the laughing third.

    Basically each and every end user I ever spoke to, without exaggerating, wants it to be one set of APIs. Nobody out there wants the APIs to be split up and in need to be aligned all the time. Time and again surveys prove this.

    It will be sad if the project that brought Java (Jakarta) EE out of the grave is itself buried by it.

    IMHO, the only thing that will be buried is the overhead of having two working groups (largely manned by the same people and same vendors). The APIs will continue to exist and flourish, just as a more unified and easier to understand set.

    My 2 cents, obviously.

    Kind regards,
    Arjan Tijms
     
    Reply all
    Reply to author
    Forward
    0 new messages