Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deliver websocket-api Specification Version update for Jakarta EE 9 #322

Closed
11 tasks done
kwsutter opened this issue Jan 14, 2020 · 41 comments
Closed
11 tasks done

Deliver websocket-api Specification Version update for Jakarta EE 9 #322

kwsutter opened this issue Jan 14, 2020 · 41 comments
Labels
Epic Top level issue for tracking work wave:1

Comments

@kwsutter
Copy link

kwsutter commented Jan 14, 2020

Is your feature request related to a problem? Please describe.
Jakarta EE 9 is the next major release, with the main focus of moving from the javax namespace to the jakarta namespace.

Describe the solution you'd like
This issue will be used to track the progress of this work effort via the Jakarta EE 9 Project board.

Additional context
Jakarta EE Specification Process
Eclipse Project Handbook
Eclipse Release Record for Jakarta EE 9

ToDo

  • Create Eclipse Release Record in your respective Jakarta Specification Project.
    Most Component Release Records will just reference the Jakarta EE 9 Platform Release Plan. But, if your Component deviates at all from the Platform Release Plan, then a description of the changes will be required in the Release Record.
    https://projects.eclipse.org/projects/ee4j.websocket/releases/2.0
  • Initiate a ballot for your Jakarta Release Record/Plan. - n/a
    Again, if your component is only doing the required minimum as defined by the Jakarta EE 9 Platform Release Plan, then no separate ballot is required. You are already approved. But, if your component deviates from the Platform Release Plan, then you will need to initiate your own ballot as defined by the Jakarta EE Specification Process.
  • Jakarta-ize your Specification document (if applicable)
    Many of the Jakarta EE components now have the source for their Specification documents. It is strongly recommended that these Specification documents are properly updated to represent Jakarta EE instead of Java EE. Some helpful instructions are documented here.
  • javax -> jakarta Spec updates
    If your component has Specification source, then all javax package references need to be updated to use jakarta package references.
  • javax -> jakarta API updates
    Your component APIs need to move from using the javax namespace to using the jakarta namespace.
  • Release Candidate (RC) of Jakarta API in Maven Central
    A Release Candidate of your component API should be pushed to Maven Central as soon as humanly possible. This will allow other dependent components to utilize your APIs as they are updating their APIs. Multiple revisions of these Release Candidate APIs are allowed (and probably expected) during the development cycle.
  • javax -> jakarta TCK updates
    Your component TCK needs to be updated to use the jakarta namespace.
  • javax -> jakarta Compatible Implementation updates
    Your compatible implementation that will be used to demonstrate completeness of the Specification needs to be updated to use the jakarta namespace.
  • Final Jakarta API available in Staging Repo
    When ready, your final version of the API needs to be staged to get ready for the PR review and approvals.
  • Draft Specification and Apidoc PRs ready for review
    Like we did for Jakarta EE 8, draft PRs need to be created and reviewed in preparation for the final ballots.
  • Release Review Ballot started
    Each Jakarta EE component will need to initiate a separate Release Review ballot after proper reviewing has completed. To be clear, there will not be a blanket Release Review for all of Jakarta EE 9 like we did for the Plan Review. Each component needs a separate Release Review.
@kwsutter kwsutter added the Epic Top level issue for tracking work label Jan 14, 2020
@joakime
Copy link
Contributor

joakime commented Jan 14, 2020

Completed

Not Applicable

@joakime
Copy link
Contributor

joakime commented Jan 14, 2020

The jakarta websocket API 2.0.0-M1 is now present on maven central.

Does that satisfy the Release Candidate (RC) of Jakarta API in Maven Central todo?

@kwsutter
Copy link
Author

Thanks, @joakime! Although the CI updates do belong to the Tyrus project, this Specification Project still has to monitor that progress. When the final PRs are delivered for the Spec and Apiddoc updates, one of the requirements for a new Specification Version is to reference a working CI that supports the updates. So, eventually, it will come into play...

I equate Milestone drivers with RC drivers, so yes that would suffice. Do you have the Maven coordinates available?

@joakime
Copy link
Contributor

joakime commented Jan 14, 2020

I equate Milestone drivers with RC drivers, so yes that would suffice. Do you have the Maven coordinates available?

Here you go.

<!-- for Server -->
<dependency>
  <groupId>jakarta.websocket</groupId>
  <artifactId>jakarta.websocket-api</artifactId>
  <version>2.0.0-M1</version>
</dependency>

<!-- for Client -->
<dependency>
  <groupId>jakarta.websocket</groupId>
  <artifactId>jakarta.websocket-client-api</artifactId>
  <version>2.0.0-M1</version>
</dependency>

@kwsutter
Copy link
Author

Hi, I see websocket-all 2.0.0-M1 in Maven Central, but not the individual Server and Client APIs:
https://mvnrepository.com/artifact/jakarta.websocket/jakarta.websocket-all/2.0.0-M1
https://mvnrepository.com/artifact/jakarta.websocket/jakarta.websocket-api
https://mvnrepository.com/artifact/jakarta.websocket/jakarta.websocket-client-api

Did these get published or are they still in a staging repo?

@markt-asf
Copy link
Contributor

Let me check the CI build. Note M1 is definitely a Milestone, not an RC. I was only looking to get a version out using the jakarta package for other projects that needed the dependency. I didn't check any other stuff at all. There could be all sorts wrong with it.

@markt-asf
Copy link
Contributor

Note Tomcat already has a working implementation of the new API so we don't necessarily have to wait on Tyrus. What we do need is the updated TCK.

@joakime
Copy link
Contributor

joakime commented Jan 14, 2020

Hi, I see websocket-all 2.0.0-M1 in Maven Central, but not the individual Server and Client APIs:
https://mvnrepository.com/artifact/jakarta.websocket/jakarta.websocket-all/2.0.0-M1
https://mvnrepository.com/artifact/jakarta.websocket/jakarta.websocket-api
https://mvnrepository.com/artifact/jakarta.websocket/jakarta.websocket-client-api

Did these get published or are they still in a staging repo?

Don't use mvnrepository.com it's not reliable, out of date, and often gives you false information.

https://search.maven.org/ is the official search website.

Example: https://search.maven.org/search?q=g:jakarta.websocket%20AND%20v:2.0.0-M1

The official artifacts for 2.0.0-M1 are ...

Seen as direct jar downloads ...

@joakime
Copy link
Contributor

joakime commented Jan 14, 2020

Note Tomcat already has a working implementation of the new API so we don't necessarily have to wait on Tyrus. What we do need is the updated TCK.

Per the TODO list it seems that we are on the hook for updating the TCK.
That's easily the most time consuming task on the TODO list.

Opinion: It would be easier (and faster) to develop a standalone TCK from scratch (like CDI / weld did) then updating the existing giant ball of spaghetti that is the official TCK. (Plus we can actually get proper coverage for the Client portions which the official TCK seems to have not done)

@markt-asf
Copy link
Contributor

The TCK project recently posted instructions for building and running the stand-alone TCKs. My plan was to build and run the WebSocket TCK and then see what needed to be changed for 2.0 (actually was going to start with EL as it is quicker to run but the same idea applies). I'd like to get a sense of how much work that is before contemplating a complete replacement of the TCK. My sense is that a complete replacement is far more work.

@kwsutter
Copy link
Author

Thanks for the information on mvnrepository, @joakime. Point well taken.

FYI, some TCKs are standalone, others are part of the platform TCK. The idea of the checklist item is to track that the TCK needs to be updated accordingly. It may be members of the Spec project, it may be someone else.

I thought the Web Socket TCK was already standalone, but maybe I'm mistaken.

@kwsutter
Copy link
Author

Also, on the Platform Call this morning, the difference between Milestone and RC drivers was explained. A Milestone driver is just one step towards a Release. It's very preliminary and considered not functionally complete. Release Candidates are used to show progress towards a final Release. To that end, we are interested in a Release Candidate URL for the APIs, not Milestone drivers. I'll clarify in my next note the wider team as well.

@markt-asf
Copy link
Contributor

The M1 release from WebSocket (and EL, Servlet and JSP when the PR is approved) are feature complete from a code perspective but I don't consider them good enough for an RC because I know I haven't checked anything else (e.g. version details in Manifest, copyright headers, changelogs, etc.). We should be able to do that fairly quickly but the intention, for those projects at least, was that the M1 would be 'good enough' for dependent projects to work with. The Servlet M1 and El M1 are good enough, for example, to enable JSP to progress.

@kwsutter
Copy link
Author

@markt-asf This sounds like great progress! I would suggest just creating RC releases for the APIs that you are referencing. That way everyone knows that the API is usable for testing. Milestone drivers have a different definition and, thus, users wouldn't know whether they should be used or not. Thanks!

@kwsutter
Copy link
Author

Can I ask this team to please create and assign the following labels to this Issue? Thank you!
[wave:1]

@kwsutter
Copy link
Author

kwsutter commented Feb 4, 2020

Now that we have come to the conclusion that Milestone APIs are sufficient for the respective column in our Project Plan, can I ask that we create a Notecard in the Project Board for your M1 jar files? Thank you!

@kwsutter
Copy link
Author

One last request for the Specifications PR to promote the Milestone deliverables for this Project. The PR is created against the Jakarta EE specifications github repo. A template is automatically used when creating PRs against this repo which should help with understanding the steps required for a successful merge. We're not looking for perfection for this Milestone. We just want the ability to promote the great work that all of the Projects are doing.

If you submit a PR, please feel free to move this Epic to the Milestone 1 Ready column in the Project Board. Thanks!

@markt-asf
Copy link
Contributor

@kwsutter
Copy link
Author

Looking for an update on the status of the Web Socket Final Specification PR. If we're going to make the Sept deliverable goal, then this Wave 1 Specification needs to be ready for final ballot by Monday, July 19. Which means that the Specification PRs should already be created and under a "mentorship" review. Can I ask what the plans are for this Specification? Thanks!

@joakime
Copy link
Contributor

joakime commented Jul 14, 2020

Looks like the 2 specification PRs mentioned by @markt-asf were merged.

@markt-asf
Copy link
Contributor

WebSocket should be ready to go for the final release. I don't see any outstanding issues. I'll give it 24 hours or so and if no objects start the release process for 2.0.0.

@joakime
Copy link
Contributor

joakime commented Jul 14, 2020

Had a look around at the open/closed issues, i'm good with the release of 2.0.0 as it stands right now.

@kwsutter
Copy link
Author

Excellent! Please create your draft Specification PR(s) at your earliest convenience. @edbratt and @m0mus are the assigned mentors from the Specification Committee to help guide you through this final process. Feel free to reach out to any of us with questions. Thanks!

@edbratt
Copy link
Contributor

edbratt commented Aug 6, 2020

Any news to report regarding preparation of WebSocket materials for Jakarta EE ballot? From the Spec PR perspective, there are several items that need to be completed before we can begin the approval ballot for WebSocket. These should be itemized in the checklists associated with the Specification PR (here).
A high-level summary is:

  1. Complete the TCK
  2. Complete the TCK result summary and publish it with your compatible implementation documents (Apache Tomcat 10*) -- this is referenced in the CCR
  3. File the Compatibility Certification Request (CCR) issue (in websocket-api issue tracker) -- this example was from WebSocket 1.1: WebSocket API 1.1.0 TCK Certification Request #308
  4. Verify that the final version of the API JAR has been updated in the jakartaee-api project POM

Is there anything I can do, to help move this to ballot stage? Is there anything else blocking progress with this?

@markt-asf
Copy link
Contributor

I am back after a few weeks away and am still working my way through the backlog of work that built up. I'm aiming to get to WebSocket this week.

@edbratt
Copy link
Contributor

edbratt commented Sep 2, 2020

I just reviewed and fixed a small number of things in the TCK documentation (see Jakarta EE TCK PR 492). I believe the TCK docs are now sufficient for release. Please verify and approve. Once you are satisfied the TCK is running as expected and you have confirmed the zip file contents (look for a TCK built after Sep. 2, 2020), please add a comment to this issue so that the TCK will be promoted (and builds will stop).

@markt-asf
Copy link
Contributor

@edbratt I've looked but I can't find a build dated later than Sept 2, 2020. The latest build I could find did not include the fixes you referenced in the previous comment.

@m0mus
Copy link
Contributor

m0mus commented Sep 14, 2020

@markt-asf I confirm that there are no recent Websocket TCK builds. I asked @alwin-joseph to re-stage it jakartaee/platform-tck#395 (comment)

@joakime
Copy link
Contributor

joakime commented Sep 30, 2020

Jakarta WebSocket 2.0.0 is still staged at https://jakarta.oss.sonatype.org/content/repositories/jakartawebsocket-1009/
Both the Server API jar and the Client API jar.
Been there since July 20th.
What's left?

@markt-asf
Copy link
Contributor

I think it might need to be re-staged to pick up the JPMS module name changes,

@joakime
Copy link
Contributor

joakime commented Sep 30, 2020

Want me to ...

  1. drop the staged repo.
  2. delete the 2.0.0-RELEASE tag in git. - https://github.com/eclipse-ee4j/websocket-api/tree/2.0.0-RELEASE
  3. merge master into the 2.0.0 branch to get the JPMS automatic module name changes - a990b23
  4. restage 2.0.0-RELEASE from the updated branch 2.0.0? - https://github.com/eclipse-ee4j/websocket-api/tree/2.0.0

?

@joakime
Copy link
Contributor

joakime commented Sep 30, 2020

Perhaps even drop the 2.0.0 branch entirely and recreate it from master (as that branch contains now failed staged release commits and is sitting at 2.0.1-SNAPSHOT)?

@joakime
Copy link
Contributor

joakime commented Sep 30, 2020

Here's the list of differences between master and 2.0.0 branches - master...2.0.0 & 2.0.0...master

@joakime
Copy link
Contributor

joakime commented Sep 30, 2020

@markt-asf opened PR #360 to reset the 2.0.0 branch to a state suitable for restage.
If that gets accepted / merged, then steps 2 (remove bad tag) and 4 (restage) from above would still need to be done. (which I can do)

@markt-asf
Copy link
Contributor

Personally, I'd drop the 2.0.0 branch entirely but I'll that choice up to you.

@joakime
Copy link
Contributor

joakime commented Oct 1, 2020

My tasks currently ...

@joakime
Copy link
Contributor

joakime commented Oct 13, 2020

@markt-asf can I get a review of that staged websocket api?

@markt-asf
Copy link
Contributor

LGTM.

@joakime
Copy link
Contributor

joakime commented Feb 11, 2021

I think this is done / completed. right?

@markt-asf
Copy link
Contributor

Closing as complete

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Epic Top level issue for tracking work wave:1
Projects
None yet
Development

No branches or pull requests

6 participants