apache / apache/couchdb

HTTP/2 Support

Open
#1,497 14 comments 18 reactions 0 assignees View on GitHub
api discussion roadmap
Dominant language
Erlang
Stars
7k
Forks
1.1k
Avg merge
1d 16h
Merged PRs (30d)
9

Description

@janl:
> - cowboy
> - needs fabric / couch_httpd refactor
> - would obviate the need for WebSockets
>I think this is an obvious first next step. Our HTTP Layer needs work, our existing HTTP server library is not getting HTTP2 support, it’s time to attack this head-first. I’m imagining a [Cowboy](https://github.com/ninenines/cowboy)-based HTTP layer that calls into a unified internals layer and everything will be rose-golden. HTTP2 support for Cowboy is still in progress. Maybe we can help them along, or we focus on the internals refactor first and drop Cowboy in later (not sure how feasible this approach is, but we’ll figure this out.
>
>In my head, we focus on this and call the result 3.0 in 6-12 months. That doesn’t mean we *only* do this, but this will be the focus (more on this later).
>
>There are a few fun considerations, mainly of the “avoid Python 2/3-chasm”-type.
>
> - Do we re-implement the 2.0 API with all its idiosyncrasies, or do we take the opportunity to clean things up while we are at it?
> - If yes, how and how long do we support the then old API?
> - Do we manage this via different ports?
> - If yes, how can this me made to work for hosting services like Cloudant? Etc. etc.
>
>For the HTTP API upgrades, we should look at this as a step in refactoring the logic quite a bit and working for clean interfaces internally. If we include that as part of the work then having HTTP/HTTP2/WebSockets/Whatevers interfaces available would become much easier. This then enables follow on features like replication over WebSockets or even easier integration work as Koco suggests. I also agree that this is probably our highest priority major feature.

Contributor guide

Open the contributing guide

Research direction

Start by reading the existing HTTP layer and the mentioned fabric / couch_httpd refactor, then evaluate Cowboy's HTTP/2 support and its integration with CouchDB. The work is complete only when the HTTP layer, internal interfaces, and compatibility decisions for HTTP, HTTP/2, and WebSockets are defined and implemented.

Written by the indexing model from the issue text.

Assessment

Tech stack
erlang
Domain
api, backend, backend-api-design, networking
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.