OpenLiberty / open-liberty

Open Liberty is a highly composable, fast to start, dynamic application server runtime environment
https://openliberty.io
Eclipse Public License 2.0
1.14k stars 587 forks source link

Replace the Channel Framework with Netty #15473

Open pnicolucci opened 3 years ago

pnicolucci commented 3 years ago

Description of the high level feature, including any external spec links:

Initial work to prototype a solution to replace the Open Liberty specific channel framework with Netty. Netty Project Link: https://netty.io/index.html Netty Github repo: https://github.com/netty/netty


Before proceeding to any items below (active development), this feature must be prioritized on the backlog, and have either the "Design Approved" or "No Design Approved" labels. Follow the Feature and UFO Approval Process.


When complete & mandatory, add links to the UFO (Upcoming Feature Overview) document, FTS (Feature Test Summary), and blogs post issues(s):

Instructions:

Design

Before Development Starts or 8 weeks before Onboarding

Beta

If your feature, or portions of it, are going to be included in a beta
Before Onboarding the beta

1 week before beta GA

Legal

3 weeks before Onboarding

Translation

3 weeks before Onboarding

Feature Complete

2 weeks before Onboarding

Focal Point Approvals

2 to 1 week before Onboarding

You MUST have the Design Approved or No Design Approved label before requesting focal point approvals.

All features (both "Design Approved" and "No Design Approved")

"Design Approved" features

Ready for GA

1 week before Onboarding

1 week before GA

Other deliverbles

DavidYCh commented 3 years ago

Part I UFO Review actions: Action: Bill will discuss with Alasdair on there is not property to switch back to Channel Framework. (David Chang, Tom Evans and Thomas Watson) Action: Revise the User Interest chart by (1) Not not mention Users. It can mislead that application will interface Netty channel with APIs (2) It will promote Liberty to use Netty channel.(Emily Jiang, Tom Evans) Action: Replace Application Developer with Application Server Developer or Liberty Developer in the High Level User Story chart. (Jared Anderson, Emily Jiang and David Chang) Action: Replace API/SPI with internal packages in the Feature Design chart(Thomas Watson) Comment: Endpoint is the only internal SPI.(Thomas Watson, Emily Jiang, Jared Anderson) Action: Bill will call meeting with Jared Anderson, Thomas Watsoin, Emily Jiang, Eric Coveber to discuss the Channel Framework to Jetty Channel (Bill Lucy)

covener commented 3 years ago

p15: internal deprecation of wsbytebuffer and clarify not SPI p26: pull releases from artifactory, extend codecs p27+p28: extended not modified, explain coloring p28: clarify which parts are verbatim nettty/unchanged liberty/changed liberty/extneded netty objects consistently (ssl handler) p30: perf test AIO vs netty before porting p33-ish: future features that may talk directly to netty instead of going through WC post-beta-issue: come back with more info, lean towards leaving CHF at Feature completion w. undocumented switch to use it. characterize the criteria? p43: maybe have Anna re-run SIP on fewer CPUs?

scottkurz commented 2 years ago

Part 2 UFO Review actions

Note: the UFO PPT file linked has "hidden" slides in it. The numbering includes these hidden slides. The net of all this is that slide 15, the one with a number '15' in the bottom right, is actually going to be only the 14th slide when you use the Box PPT viewer, which skips right past the hidden slides. (This confused me so I thought I'd explain).

  1. Slide 15 - Feature Design - Netty Enablement - Liberty config - There was much discussion on whether and how to guard the new function in beta, e.g. with metatype flags and/or with programmatic logic (in code). Decided to follow-up with a Design Issue call to discuss in more detail. (Open issue, label https://github.com/OpenLiberty/open-liberty/labels/design-issue, and move here: https://github.com/OpenLiberty/open-liberty/projects/3).
    • Slide 47 - The info here brings up similar issues with beta guarding, etc.
  2. Slide 46 - As we declare a prereq of Netty v4.1, the question was raised that we should preview the upcoming changes in v5.0, currently in alpha according to the UFO. Please review available doc like https://netty.io/wiki/new-and-noteworthy-in-5.0.html and communicate as necessary.
  3. Slide 46 - Determine right-size bundle granularity - Noting the Netty project is composed of various "modules" (I didn't bother to look up the precise term) there were somewhat contradictory points raised. On the one hand it was suggested to consider having each relevant Liberty feature result in ONLY the corresponding necessary Netty modules (a more fine-grained approach). On the other hand it was suggested it may be better to aim for simplicity and define a single bundle with all modules for all cases.
  4. General comment - It was decided that further leveraging Netty in JAX/RS (Jakarta RESTful) and SpringBoot would be out of scope of the current feature / UFO, and would require follow-up with a separate feature and design.
malincoln commented 1 year ago

Per @pnicolucci this is still actively being worked.

pnicolucci commented 1 year ago

@malincoln, yes this is actively being worked! We have a team working currently on this and we're working to determine when we can target a beta this year. I'll keep you posted.