Kickoff meeting
Agenda
This kickoff meeting will mostly be about orientation: reaching a common understanding of what the WG is about, and what is feasible to accomplish this year. There are going to be a lot of us attending, so @aturon is going to rule the floor with an iron fist this time around.
Important note: the Core Team has recently decided to have an extended beta for the Edition, which means the final release will be 1.31 on December 6. So we have 4.5 months to make progress before presenting our work to the world — definitely enough time to make some really meaningful progress!
- Introduction and plan for the meeting
- Quick rundown of the current state of affairs
- Strawman proposal for goals and structuring
- Goals
- Great pitch for the new web site
- Documentation!!!
- Solid answers to:
- “So you want to write an (async?) web server in Rust…”
- More like this?
- Ecosystem assessment, documentation, and improvements
- Guidelines for networking-related libraries, e.g. approach to TLS
- Subgroup structuring
- Async: futures/async/await
- Protocols: http (1/2), grpc, thrift, …
- Service bindings: rabbitmq, redis, kafka, s3, etc
- Middleware: Tower and related
- Web apps: Flask/Sinatra-level “framework” bringing some of the above together
- Guidelines: cross-cutting group developing best practices for networking libraries in Rust
- Goals
- How to approach the web site
Intro
- Roster implies no commitment; please add yourself
- aturon leading discussion, pauses for discussion will be available (lots of people here!)
- Please follow up later on non-urgent issues
- What is this WG?
- Part of 2018 domain WGs
- Will be part of website calling out these domains
- end-to-end story for specific areas
- slow start due to tie-up with futures 0.3 and async/await
- 19 weeks to put together best possible story
- Can get a lot done — lots of interest in general and helping
- Organization
- Big tent with subgroups
- Specific, concrete goals for the edition
Current State
- Sync
- absolute basics in std (sockets)
- assortment of crates providing additional functionality
- including sophisticated web frameworks (e.g., Rocket)
- Async
- mio/tokio/futures 0.1 stack
- currently used in production
- various libraries around this
- major deficits in ergonomics/readability/etc vs. async/await
- alpha futures 0.3
- async/await support included
- active work on compat layer to integrate with futures 0.1 (and tokio)
- middleware stack, Tower
- relatively young
- under development by Bouyant (Tokio/Hyper maintainers amongst others are employees)
- mio/tokio/futures 0.1 stack
- assortment of protocol impls and service bindings (but no comprehensive view) (sync & async)
- assortment of web frameworks, simple ↔ complex, nightly ↔ stable
- and new ones being developed
- Summary: There are many pieces, no polished whole
- Newcomers are intimidated, rapidly shifting ecosystem
- #1 goal: Build cohesive community to increase clarity/quality in ecosystem
- Questions:
- (stephanbuys) Don’t forget about packets (lower level than sockets): Probably non-goal for 2018, but goal for WG in general
- (degausser) as an aside having strong defintions of words like “low-level” and “protocol” will be necessary when subgroups com together
- (geal) Part of ecosystem directly builds on mio (w/o tokio)
- (artemis) Building cohesion while keeping flexibility: addressed later
- (skade) Accessible documentation is lacking: will be working on it
- (jsgf) Cleanup/removal/deprecation for outdated code:
- crates no longer considered best practice
- pollution from old docs etc
- (rolf) lack of clarity around interaction with language features (sync primitives, lifetimes); no docs
- (crlf0710) database service async access
- (jsgf) C++ and Rust in same process with their own event loops
- pass control/events between them
- perhaps share them (for example implement folly::Executor for tokio::Executor so that C++ code can spawn work into a Rust threadpool)
- (erickt) Exploring how compiler can help w/ async awareness (e.g., mutex locks across await)
- (stephanbuys) Don’t forget about packets (lower level than sockets): Probably non-goal for 2018, but goal for WG in general
- Please open issues on https://github.com/rust-lang-nursery/net-wg/ liberally
Goals/Structure
-
Great pitch for the new web site
-
Documentation!!!
-
Solid answers to:
- “So you want to write an (async?) web server in Rust…”
- More like this?
-
Ecosystem assessment, documentation, and improvements
-
Guidelines for networking-related libraries, e.g. approach to TLS
-
Overall basis is to focus on end-to-end experience with specific tasks
-
Proposing a structure to get traction in setting/achieving goals
- Async: futures/async/await
- Protocols: http (1/2), grpc, thrift, …
- Service bindings: rabbitmq, redis, kafka, s3, etc
- Middleware: Tower and related; more?
- Web apps: Flask/Sinatra-level “framework” bringing some of the above together
- Guidelines: cross-cutting group developing best practices for networking libraries in Rust
-
Questions
- Scope: Including sync & async with web apps & protocols
- Protocols, Middleware are possibly too broad
- Focus on framing around library development vs. applications — focus on core things (RPC, queue, db) but not high-level application design?
- e.g Kafka might not be critical to most incoming users, whereas HTTP/TLS is
- Common guidelines for protocol impls
-
This WG is not focused on taking ownership, rather providing guidance and documentation
- focus on strong relationships with existing maintainers
- Coherence of underlying infra is critical to maintain interop
- “The common intersection between all crates in the ecosystem is the stdlib, so IMO when possible crates should make an effort to use only the stdlib" (tomaka)
-
Desire for today is overall, rough, consensus on structure & some sense of top level goals
- Minimum bar for 2018:
- Far more documentation around navigating network ecosystem
- (at least one) really solid story around basics of network apps
- assortment of web frameworks makes getting started confusing
- Docs on when/where to use async
- Minimum bar for 2018:
-
async/await will not be stabilized by 2018 release
-
aturon will open issues on net-wg tracker, async discussion
-
all-hands style meeting next week
-
new doodle poll will be sent out