Contributor meetups
Some meetups are focussed on development of netty itself and hence only contributors are invited to these meetups. However, we share all details about the meetup afterwards for benefit of everyone involved with netty.
- Buffer Update
- Netty Core/Contrib repository separation
- HTTP Caching
- https://github.com/netty/netty-website/blob/master/meetups/contributor_meetups/2021-10-28/Netty%20Contributor%20Meetup-20211028%201536-1.mp4
- https://github.com/netty/netty-website/blob/master/meetups/contributor_meetups/2021-10-28/Netty%20Contributor%20Meetup-20211028%201536-1.vtt (transcript)
Chris did provide some updates related to the buffer api.
General:
- We addressed all the feedback
- Made the lifecycle easier
- Started to convert modules to the new buffer api
Life-cycle:
- No reference counting is visible anymore
- Buffers are always owned and there is no slice / duplicate methods anymore because of this
- You have to use new apis like split / copy / send as a replacement
Integration:
- More tightly integrated as its now possible to set the "new allocator" via the config.
- A default implementation is provided
- A new leak detector implementation was written work with the new Buffer API and implementation.
Questions: Vladimir: Is the allocator implementation still the same ? What about configuration etc ? Chris: It’s the same in terms of the algorithm, but we would like to revisit the default value / config for the allocator.
Vladimir: Would be good to publish docs about tuning etc… Norman: Yes we should do this! Adding an action item.
Julien: I was wondering which codecs are using the new API yet Chris / Nitesh: At the moment there are not a lot of codecs that are using this. We are currently working on porting HTTP/1. Please check and provide feedback: https://github.com/netty/netty/pull/11711
Julien: Is it possible to mix match the new API and old API Chris: Yes you can do that.. There are conversation methods.
Norman: We should aim to have everything moved over too the new API when we release Beta1.
Chris: We want to move less used / less expertise things to contrib.
Simon: How do you “onboard” new maintainers etc for contrib ? Norman: No idea yet... Let's add an action item
- Add docs related to configure / tuning the buffer allocator
- Think about how to on-board new maintainers / contributors to the contrib modules
- Should we even have a separate org for contrib modules? Finagle is doing this
This meetup was focussed on discussing HTTP/2 API changes (https://github.com/netty/netty/pull/11603).
-
* H2 Encoder and flow controller on the child channel → should we move to parent channel to start? Avoid potential re-ordering and have complete visibility on connection level state?
- stakeholders: eric, <nitesh, norman, chris, scott>
-
H2 Protocol Upgrades → should we support h2c, what about websockets?
- This is an open discussion item, at the moment, leaning towards not supporting plain text (h2c) upgrades. Websockets upgrades per stream should be possible but is not verified yet.
- stakeholders: Moses, Julien, Susheel, <nitesh, norman, chris, scott>
-
Community Meetups → setup wiki to capture content from meetups, create spot where folks can request topics for next meetup.
- stakeholders: norman
-
Early Adopters → We need folks to review PRs and kick this tires for Netty 5.0 features (Buffer, h2 api, compression, etc.)
- stakeholders: <everyone in the community 🎉❤️>
- Community: Bimontly meetings, share agenda, keep notes for folks that aren’t able to attend
- Community: Netty 5 must be able to co-exist with Netty 4 in the same application (different package names, maven coordinates, different JNI library names and method signatures)
- Community: (Moses, Eric, Violeta Georgieva) interested in reducing overhead of child channel initialization
- Eric: h2 PR was difficult to follow in terms of control frame relationship to child channel. Wasn’t clear what are intended improvements vs general changes.
- Moses: How do h2c upgrades work?
- Julien: Websockets for h2. How would this be supported?
- Susheel: Websockets requires h2c upgrade? Would we be able to use WebSocket handlers todo upgrades?
- Eric: Can we make the H2 frame types “in place” (buffer changes will be pervasive throughout Netty anyways)
- Carl: How does writability work?
- Scott: If we are using flow control for writability then a connection window update would have to connect to child channels
- Eric: It is possible to not have tight coupling between flow control and writability. Trade-offs include additional memory, but helps simplify the implementation/connectivity and avoids allocation thrashing and fairness issues.
- Eric: Why is the encoder and flow control on the child channel?
- Eric: More opaque is bcz you only see bytes (limited to not see other frames). Sharing hpack encoder across channels seems risky because events may get re-ordered.
- Community: No-one expressed interest in implementing custom flow control algorithm, no objections to keeping this package private to start
- Eric: there are components in the prototype that we gave up on previously, how do we think we can get the perf benefits back?
- Eric: We should consider API migration shims to help migrations. For example need a shim from ByteBuf to Buffer, should consider if we can do the same with h2, etc.