On Sun, 9 Dec 2018, Vipin P R wrote:

I want to start contributing to HTTP/3 development. This is my first open source project I am undertaking. Can u guide me on this, where to start.

Absolutely.

First: welcome and thanks for wanting to help out! This is still early days with only the first stumbling attempts in place.

Then: clone the source tree and check out the development branch:

 https://github.com/curl/curl/tree/ngtcp2

The 'docs/HTTP3.md' file in there should document the status of the branch and how to build it and test it. PR #3314 is also a good place if you want to comment/discuss some h3 related details.

I've made the code build with both ngtcp2's master branch as well as the draft-15 branch. It seems the draft-15 one is the more bleeding edge code.

Status:

I've worked the last week or so to get code added to make a first QUIC connection when --http3-direct is used. See lib/quic.c and lib/quic-crypto.c. I've based my code heavily on the ngtcp2 example code client.cc since there aren't any actual documentation for ngtcp2 yet.

The branch builds and tests fine without ngtcp2, which is what I'm trying hard to make sure. This way, we can merge this work early and only have it affect the experimental builds that actually enable QUIC.

Next steps:

Start checking that we're using ngtcp2 correctly and add logic to libcurl to make sure that QUIC connection is made to work (primarily against ngtcp2's own test server).

This is pretty tricky work since ngtcp2's API is very QUIC/TLS-centric and will probably require some insights in the protocols to fully grasp, and of course comparing with what the client.cc code does in the comparable scenario. I might also ask Tatsuhiro (lead dev of ngtcp2) to give it a look and perhaps help us out a bit once that's deemed suitable.

Since nghq still isn't doing HTTP/3 (and neither is ngtcp2), there's also the question how we should proceed and work on HTTP/3 support once we get the QUIC connection worked out. There's clearly a few missing pieces here that we need to join in and help make happen, but I'm not currently sure what the best steps are to do this.

If you have any questions or feedback, take them here or in the PR!

--

 / daniel.haxx.se
-------------------------------------------------------------------
Unsubscribe: https://cool.haxx.se/list/listinfo/curl-library
Etiquette:   https://curl.haxx.se/mail/etiquette.html
  • HTTP/3 Daniel Stenberg via curl-library
    • Re: HTTP/3 Vipin P R via curl-library
      • Re: HTTP/3 Daniel Stenberg via curl-library

Reply via email to