Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [jakarta.ee-spec.committee] [External] : Re: Discuss proposed Resolution for eliminating Optional aspects of Specifications

I did some review of the Platform Spec. and also the TCK user guide. To me, the work necessary to accomplish the goal looks like a rather heavy lift. I wonder if we might consider taking a more measured approach and declare that Optional features are to be discouraged and over time eliminated. We may be able to remove optional features from the Platform spec., but even that will likely be a fair amount of work.

I believe, the Platform spec currently declares many features optional -- and also in some cases elevates component spec optional features to required (at lest in Servlet and RESTful Web Services).

I would certainly appreciate other eyeballs on this list. The Platform lists the following as optional:

  • RMI-IIOP
  • Java IDL
  • XML Web Services
  • Enterprise Web Services
  • Web Services Metadata
  • XML Binding
  • SOAP with Attachments
  • OMG interoperability protocols
  • Enterprise Bean CMP
  • Enterprise Bean BMP
  • Enterprise Beans 2.x API group
  • Enterprise Bean Query Language
Additionally, the following probably need to be reviewed and possibly revised:
  • Probably we need to remove the optional aspects of JPMS support (Sec. 8.2) -- rewrite as requirements.
  • Probably all possibly dangling refs. to Deployment API need to be removed (revise Section 8.5)
  • Probably need to reword Servlet so optional features in the component Spec., which are described as requirements for the Platform are not interpreted as optional (and deprecated). (Section 6.4, Servlet 5.0 Requirements)
  • Probably need to review and possibly rewrite some of the Messaging requirements (Section 6.7)
  • Probably need to review and possibly rewrite fourth paragraph in 6.1.2 RESTful Web Services 3.0 requirements (optional container managed facilities are elevated to required for Platform use)
  • For non-required Specs. that an implementation chooses to include, we will need a way to define requirements for those component to be included in a controlling document --e.g. if an implementation wants to continue to support XML Web Services -- it may do so, and those component implementations must pass their associated component TCK -- The Platform (or some controlling document) should be explicit that it is not allowable to claim support for a component API, but not pass that component's TCK.

If we are going to deal with component specifications, we may need to get into some details that may not be so obvious -- For example, with CDI -- when run on a Platform Implementation the number of tests for PASS result is 1794. For web profile a successful result is 1665. What does that difference say about features and/or tests required or optional? Further, if a web-profile only Platform revision were to be contemplated, we should address how those untested features are validated (or if they are validated))

As part of this overall goal, I believe we will also need to revise:

  • In the Platform Spec
    • 6.1.3. Optional Jakarta Technologies
    • Reduce or eliminate 9.6 Optional Features for Jakarta EE Profiles
    • Update 2.7.1 HTTP
    • 2.7.13 Jakarta Connectors -- revise text in last bullet -- the contract interface must be supported (users are free to use or ignore this feature) -- I think. This revision pattern is repeated in many places -- the implementation must provide for the indicated feature. The user is free to use, or not.
    • The API list in 6.1.1.1 Java SE Enterprise Technologies -- should be revised with Jakarta Names where the specs. have been contributed to Eclipse. (Perhaps this is not actually related to the subject at hand)
  • In the TCK User Guide
    • Where needed, TCK rules and instructions will need to be revised -- javaee_optional, ejb_1x_optional, ejb_2x_optional (Platform TCK User Guide Table 7.1, Keyword to Technology Mappings for Full Profile Optional)
    • If needed, rework TCK user guide text to reflect profile functional sets (javaee_web_profile_option, connector_web_profile, jms_web_profile, et (Platform TCK User Guide Table 7.2,  Keyword to Technology Mappings for Web Profile Optional)
    • ibid, Table 7.3, TCK Keywords for Optional Jakarta Enterprise Beans Lite Components
    • Review the definition of Operating Mode to determine if that can remain part of the Specifications

I'm not against the general goal -- We want more compatible implementations to be suitable for Spec. ratification. I just think that a "hard no" to optional features may be be more difficult than it might seem.

If the legacy Enterprise Beans features are the only feature that is reasonably preventing a large suitably large class of alternative compatible implementations for ratification -- In addition to discouraging Optional features, what about eliminating those legacy Jakarta Enterprise Bean from EE 10? Do we think we can address everything listed above and get EE 10 completed on it's current schedule?

-- Ed

On 6/24/2021 11:29 AM, Kevin Sutter wrote:
Entity Beans (BMP and CMP)  :-)


---------------------------------------------------
Kevin Sutter
STSM, Jakarta EE and MicroProfile architect @ IBM
e-mail:  sutter@xxxxxxxxxx     Twitter:  @kwsutter
phone: tl-553-3620 (office), 507-253-3620 (office)    
LinkedIn:
https://www.linkedin.com/in/kevinwsutter

Part-time schedule: Tue, Wed, Thu (off on Mon and Fri)




From:        David Blevins <dblevins@xxxxxxxxxxxxx>
To:        Jakarta specification committee <jakarta.ee-spec.committee@xxxxxxxxxxx>
Date:        06/24/2021 13:04
Subject:        [EXTERNAL] Re: [jakarta.ee-spec.committee] Discuss proposed Resolution for eliminating Optional aspects of Specifications
Sent by:        "jakarta.ee-spec.committee" <jakarta.ee-spec.committee-bounces@xxxxxxxxxxx>




That's was the motivation of evaluating the "bit of both" approach; investigate if multiple CIs can be workable with some trimming.

Between the Wildfly and OpenLiberty Platform CCRs, do we know what optional features were not covered?


--
David Blevins
http://twitter.com/dblevins
http://www.tomitribe.com
310-633-3852

On Jun 24, 2021, at 6:50 AM, Kevin Sutter <sutter@xxxxxxxxxx> wrote:

Just my two cents worth on the multiple CI approach...  I tried to pursue this option for Jakarta EE 9.1 (a while back when we didn't know the state of Glassfish...).  It just didn't prove fruitful.  Each CI still has to certify to either the Platform or Web Profile (or Core Profile in Jakarta EE 10).  And, since the optional aspects of Jakarta EE are all part of the Platform requirement, we still required a CI that certified to the Platform.  And, the only CI that certifies to the Platform and implements all of the optional features is Glassfish.  So, combining multiple CIs for ratification just didn't pan out.  I don't see how this scenario improves down the line if we continue to allow optional features.

---------------------------------------------------
Kevin Sutter
STSM, Jakarta EE and MicroProfile architect @ IBM

e-mail:  sutter@xxxxxxxxxx    Twitter:  @kwsutter
phone: tl-553-3620 (office), 507-253-3620 (office)    
LinkedIn:
https://www.linkedin.com/in/kevinwsutter

Part-time schedule: Tue, Wed, Thu (off on Mon and Fri)




From:        
Scott Stark <sstark@xxxxxxxxxx>
To:        
Jakarta specification committee <jakarta.ee-spec.committee@xxxxxxxxxxx>
Date:        
06/23/2021 20:56
Subject:        
[EXTERNAL] Re: [jakarta.ee-spec.committee] Discuss proposed Resolution for eliminating Optional aspects of Specifications
Sent by:        
"jakarta.ee-spec.committee" <jakarta.ee-spec.committee-bounces@xxxxxxxxxxx>




I'm just not in favor optional features in any form. Optional != profile. A profile is a set of requirements that must be implemented by ALL compatible implementations of that profile. There is no guessing as to which implementation supports what at a given profile level.

There is no need to worry about too many profile in my view as it is simply too much work to put one together and maintain it. It is a given under Jakarta that a vendor can include whatever they want from legacy to future specifications from Jakarta or elsewhere. If that is not the case, show the guides/policy that contradicts this. That is one of the main points of the argument in the document against optional features of specifications.

On Jun 23, 2021 at 4:44:04 PM, David Blevins <
dblevins@xxxxxxxxxxxxx> wrote:
I'd attend next week's meeting to discuss, but it looks like it's the alternate 6am time for me.

What do people think about taking a bit of both approaches we've discussed: allowing multiple CIs within reason; reforms on how we treat optional requirements.

Some concerns I have with either approach and high level ideas on how they might be addressed.

- Complexity from too many CIs.  If we needed 4 or 5 CIs to complete a vote that is clearly too many.  This would be an obvious sign the specification has gone too far with optional features.  A potential remedy would be to limit the number of CIs to say 2 or 3.  Perhaps 2 is fine as standard practice, 3 by exception and not for more than say two releases in a row.  We actually used two CIs for Jakarta EE 9.1 as we had different releases of GlassFish.

- Lack of visibility on support of Optional features.  Neither users nor us have a good idea of how many optional features we have and who implements them.  I think a lot of our issues stem from this; we can't see the breadth of the problem so the the "right thing" can't happen organically.  A potential proposal is that each spec must keep an inventory of optional features and each CCR must accurately report which they do and do not implement.  If a spec does not have an inventory of optional features they are ineligible for a release vote.

- Excessive optional features.  If say 10% of your TCK is optional features, that's ok.  If over 50% of your TCK is optional as is the case for EJB that's clearly too far.  There are a few remedies for this.  If a feature has been marked optional but in fact everyone implements it (EJB 2.x views), then it should not  be optional.  If a feature is very very large and needs to become legacy but is widely supported (CMP), it could become its own spec/profile.  Of course removing unsupported optional features is always a potential remedy.  A potential proposal could be to establish a metric; if more than 20% of your TCK is optional, you are ineligible for a release vote until you remedy the situation (using any combination the spec project deems fit).

- Too many profiles.  At a certain point there can be too many profiles and 1) this becomes just another word for optional while 2) potentially still not capturing/accommodating the potential combination of features a user needs.  Rather than create "legacy" profiles we could allow vendors to ship specifications above and beyond what is included in the Platform, Web Profile or Core Profile.  Meaning you could have say a Web Profile + JMS implementation.  Large legacy features like CMP would be split into separate specifications and can be included by implementations in that way.  The corresponding TCKs would still exist, need to be passed and would have to be maintained by those who chose to continue supporting/shipping that spec; this ensures the tests don't decay as we move from Java 8 to 11, or 11 to 17, or refactor our TCK harnesses.

The above are just some high level thoughts and are not my ideas.  I'm attempting a "greatest hits" of all our ideas so if you see things you've advocated, that's me attempting to include your awesomeness and blend the best of everything put forward.

For all the "ineligible for a release vote" statements, we could potentially have a grace period and or the ability to request a one-time exception or a rule change.  All this would be in our JESP.  If we decide exceptions can be made, those would all be written down in a dedicated document that tracks all exceptions made for all specs, including if they are one-time or ongoing.  We could use that over time to track if we need to adjust our rules.  Things like using two versions of GlassFish would have been written in our exceptions document and could be leveraged in conversations like this.  We could use it as a data point to demonstrate even GlassFish is having a hard time meeting the "one implementation must meet all requirements" rule.


--
David Blevins

http://twitter.com/dblevins
http://www.tomitribe.com
310-633-3852

On Jun 23, 2021, at 1:12 PM, Kevin Sutter <
sutter@xxxxxxxxxx> wrote:

Scott,
We decided at the Spec Committee that we would start the conversation on the private email first -- to ensure that we have a consistent, agreed-to, defined approach before sending it to a wider audience.  Based on these email discussions, I'm not sure we're at that point yet.  I know we don't need 100% consensus, but I think it would be good to ensure that we have a super-majority approval on the direction.  Should we take a quick straw poll of the Spec Committee members?  If we have that super-majority, then we could go ahead with the wider audience.  If not, then maybe we need to iron things out further via email and/or next week's meeting?

---------------------------------------------------
Kevin Sutter
STSM, Jakarta EE and MicroProfile architect @ IBM
e-mail:  
sutter@xxxxxxxxxx   Twitter:  @kwsutter
phone: tl-553-3620 (office), 507-253-3620 (office)    
LinkedIn:
https://www.linkedin.com/in/kevinwsutter

Part-time schedule: Tue, Wed, Thu (off on Mon and Fri)



From:        Scott Stark <
sstark@xxxxxxxxxx>
To:        Jakarta specification committee <
jakarta.ee-spec.committee@xxxxxxxxxxx>
Date:        06/17/2021 12:43
Subject:        [EXTERNAL] Re: [jakarta.ee-spec.committee] Discuss proposed Resolution for eliminating Optional aspects of Specifications
Sent by:        "jakarta.ee-spec.committee" <
jakarta.ee-spec.committee-bounces@xxxxxxxxxxx>



Also, this is on the private list. I was going to point to the email for some of our project developers, but found that it was inaccessible by them (and somehow me as well) when trying to access
https://www.eclipse.org/mailman/listinfo/jakarta.ee-spec.committee

On Jun 16, 2021 at 1:59:07 PM, Kevin Sutter <
sutter@xxxxxxxxxx> wrote:
On our Specification Committee call today, we discussed a proposed Resolution (prepared by Dan and Paul) about eliminating the use of Optional features in Jakarta EE Specifications.  We decided that we should discuss the Resolution via the private mailing list for the next seven days (max).  At that time, hopefully enough input would produce a version of the Resolution to post to a wider audience (Spec Project Leads and/or public Spec Committee mailing lists).  Again, hopefully, we would get enough input from these two mailings to allow for a ballot on the Resolution at our next Spec Committee meeting on the 30th.  

First, for background, if you are not familiar with the back story for this Resolution, please review this document:

https://docs.google.com/document/d/1O5MnbQRn8RWkM4BpJth9VqGfhKLBZfFzK_fpIyZ_2vw/edit

(BTW, before we externalize that document to the Spec Project Leads and/or public Spec Committee mailing list, we should resolve any outstanding comments...  Dan,I will leave you in charge of that activity.)

The proposed resolution is just a slightly re-worded version of option #1 in the referenced document.
• DRAFT RESOLUTION: To eliminate marking any Jakarta EE Specification feature as optional in some future release of each Jakarta EE Working Group Specification, including and possibly starting with the Jakarta EE Platform Specification Release 10.  All remaining features would be required.
• Clarifying text to the proceeding resolution: The process would be to mark all optional features in the current release as “Deprecated” in a new Minor release (Release 9.2), and in a subsequent Major release (not necessarily the very next Major release) eliminate the Deprecated feature completely from the Jakarta EE Platform Specification. Eliminating these Deprecated features is not retroactive to earlier released specifications, which will continue to exist. As implied, “Deprecated” will be defined as a way of marking a feature as on the path to complete elimination from some future release, and it indicates to the public “this feature is going away”.   This two-step process provides a formal communication mechanism within the specification itself for the Working Group to signal to the community that a feature will definitely be removed from a future release. The intent is to mark current features marked as “Optional” as “Deprecated”, but in the future even “Required” features could be marked as “Deprecated” should the Working Group decide to prune little used features from the platform. This two-step process will take longer but will also give consumers of the platform a longer runway to plan for and deal with the elimination of the feature should they wish to consume that future platform release.

Comments and suggestions are welcome!  Thanks!

---------------------------------------------------
Kevin Sutter
STSM, Jakarta EE and MicroProfile architect @ IBM
e-mail:  
sutter@xxxxxxxxxx  Twitter:  @kwsutter
phone: tl-553-3620 (office), 507-253-3620 (office)    
LinkedIn:
https://www.linkedin.com/in/kevinwsutter

Part-time schedule: Tue, Wed, Thu (off on Mon and Fri)

_______________________________________________
jakarta.ee-spec.committee mailing list

jakarta.ee-spec.committee@xxxxxxxxxxx
To unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/jakarta.ee-spec.committee_______________________________________________
jakarta.ee-spec.committee mailing list

jakarta.ee-spec.committee@xxxxxxxxxxx
To unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/jakarta.ee-spec.committee




_______________________________________________
jakarta.ee-spec.committee mailing list

jakarta.ee-spec.committee@xxxxxxxxxxx
To unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/jakarta.ee-spec.committee

_______________________________________________
jakarta.ee-spec.committee mailing list

jakarta.ee-spec.committee@xxxxxxxxxxx
To unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/jakarta.ee-spec.committee_______________________________________________
jakarta.ee-spec.committee mailing list

jakarta.ee-spec.committee@xxxxxxxxxxx
To unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/jakarta.ee-spec.committee




_______________________________________________
jakarta.ee-spec.committee mailing list

jakarta.ee-spec.committee@xxxxxxxxxxx
To unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/jakarta.ee-spec.committee
_______________________________________________
jakarta.ee-spec.committee mailing list
jakarta.ee-spec.committee@xxxxxxxxxxx
To unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/jakarta.ee-spec.committee





_______________________________________________
jakarta.ee-spec.committee mailing list
jakarta.ee-spec.committee@xxxxxxxxxxx
To unsubscribe from this list, visit https://urldefense.com/v3/__https://www.eclipse.org/mailman/listinfo/jakarta.ee-spec.committee__;!!ACWV5N9M2RV99hQ!aTcstSr96VkHUVBFmJt-IF3-0k3Skb1nFBQSsk91jiL5oH6zAvKDCsGS4ITDOu8$ 

Back to the top