docs/ROADMAP.md
Align current hyper to the hyper VISION.
The VISION outlines a decision-making framework, use-cases, and general shape of hyper. This roadmap describes the focus areas to continue to improve hyper to look more like what is in the VISION.
While open source is not a company, open source can be guiding. We can focus attention to specific areas of improvement, which are based on conversations with users, and prioritized by frequency and impact.
To that end, the following 4 areas are current focus of the project:
hyper-utilEach area benefits from having a top level description and goal, a place to track progress, and a champion (or two) that helps push the effort.
hyper has stabilized, so investing in documentation is wise! The way it is used won't change much, so documentation won't become outdated quickly. A tool that people don't know how to use isn't helpful at all. This helps hyper be Understandable.
The documentation focus area includes several different forms:
Each of these could benefit from dedicated planning of their overall structure, editing the content that already exists, and creating the rest that is sorely missing.
hyper-util serves two main purposes:
To that end, there are several new features that can be worked on and iterated
on in hyper-util right now:
Client.reqwest, such as proxy helpers.hyper has an HTTP/3 crate, h3, that is generic over any QUIC implementation,
similar to how hyper's HTTP/1 and HTTP/2 can be provided any IO transport. It
supports much of HTTP/3 already, and interoperates with most other
implementations. While some brave users have been trying it out the hard way
(such as reqwest), it's time to bring HTTP/3 to more users.
The aim is to eventually support hyper::client::conn::http3 and
hyper::server::conn::http3.
To do so, work is needed:
h3 crate itself, such as fixing any straggling interop issues,
and filling out the spec conformance tags we use for accountability.hyper::rt::quic integration, allowing
people to bring their own QUIC.hyper::proto::http3 glue that translates hyper's connection
patterns with the h3 crate.It's extremely common once operating a service using hyper to want more visibility in what exactly is happening. It's important to realize that there are 3 concepts involved that frequently get conflated: events, tracing, and metrics.
Some existing ways to get some of these:
tracing integraton inside hyper.tower_http::trace which instruments outside of hyper, using Service and
Body.However, there are some events and metrics that are only known inside hyper, and having official, stable support would be very helpful.
Some potential options would be:
tracing events (blocked on the tracing crate
stabilizing...)hyper-metrics helper.The above are focus areas that are the most frequently asked for, and so have the most attention. That doesn't mean that nothing else can be worked on.
Motivated individuals that want to help make other improvements are certainly welcome!