Re: [Bug-wget] [GSoC 2015] Basic HTTP/2 support
Daniel Stenberg dan...@haxx.se writes: On Thu, 30 Apr 2015, Daniel Stenberg wrote: Did anything happen with this project? As far I know, nothing happened with it, but maybe Miquel has more details about it. Regards, Giuseppe
Re: [Bug-wget] [GSoC 2015] Basic HTTP/2 support
On Thu, 30 Apr 2015, Daniel Stenberg wrote: Did anything happen with this project? -- / daniel.haxx.se
Re: [Bug-wget] [GSoC 2015] Basic HTTP/2 support
Daniel Stenberg dan...@haxx.se writes: On Fri, 1 May 2015, Miquel Llobet wrote: Do you suggest starting off with HTTPS first then? Yes sure if you want to get something going first, and then using both NPN and ALPN for maximum compliance at least for now. It seems like most client/browsers only plan to support HTTPS. Firefox and Chrome are both only doing HTTP/2 over HTTPS. I'm not aware of anyone else have stated it that clarly. But these two are big enough to also have the effect that lots of sites will then only offer HTTP/2 over HTTPS. Like currently all the google services and twitter do. Miquel, yes please, I think it is better to fo the easy way for now. No need to support something that Firefox and Chrome haven't. If it will be ever be needed, we can add it in future, not within the GSoC project. Thanks, Giuseppe
Re: [Bug-wget] [GSoC 2015] Basic HTTP/2 support
On Fri, 1 May 2015, Miquel Llobet wrote: Do you suggest starting off with HTTPS first then? Yes sure if you want to get something going first, and then using both NPN and ALPN for maximum compliance at least for now. It seems like most client/browsers only plan to support HTTPS. Firefox and Chrome are both only doing HTTP/2 over HTTPS. I'm not aware of anyone else have stated it that clarly. But these two are big enough to also have the effect that lots of sites will then only offer HTTP/2 over HTTPS. Like currently all the google services and twitter do. -- / daniel.haxx.se
Re: [Bug-wget] [GSoC 2015] Basic HTTP/2 support
On Thu, Apr 30, 2015 at 8:39 AM, Daniel Stenberg dan...@haxx.se wrote: Is there another reason to use libevent than simply the fact that an nghttp2 example uses it? As current wget isn't libevent based, it seems like a pretty major redesign to change it to use libevent only for the purpose of adding HTTP/2. Agreed, I will most likely end up reusing code instead of libevent, at the time of the proposal I didn't think the changes would be so big. I was just concerned of some blocking code in wget when reading form the socket (namely select(2)). But it would be silly to throw away so much code. I'm glad to see this project come to life, and I'm happy to see you chosing to base it on Tatsuhiro's awesome nghttp2 library. We do this in the curl project too. I blame Giuseppe for suggesting it :-), and nghttp2 looks really good, can't wait to dive into it this summer! What challenges did you face when implementing HTTP/2 in curl? I would love to hear about that.
Re: [Bug-wget] [GSoC 2015] Basic HTTP/2 support
On Thu, Apr 30, 2015 at 5:41 PM, Daniel Stenberg dan...@haxx.se wrote: HTTP/2 over plain text is annoying with the Upgrade: and wasted RTT, it is much easier and simpler over HTTPS and ALPN. Do you suggest starting off with HTTPS first then? It seems like most client/browsers only plan to support HTTPS. You should probably consider to make a translation layer from HTTP/2 headers to HTTP/1 and back, so that all the header parsing and request generation etc can remain pretty much as-is. That's what we do in curl and that's how Firefox does it internally. Great point, I'll start looking into this, thanks for all the advice! I'll make sure to have a look at how things are implemented in curl to get an idea. Best, Miquel
Re: [Bug-wget] [GSoC 2015] Basic HTTP/2 support
On Thu, 30 Apr 2015, Miquel Llobet wrote: I'm glad to see this project come to life, and I'm happy to see you chosing to base it on Tatsuhiro's awesome nghttp2 library. We do this in the curl project too. I blame Giuseppe for suggesting it :-), and nghttp2 looks really good, can't wait to dive into it this summer! What challenges did you face when implementing HTTP/2 in curl? I would love to hear about that. It's been a long journey for us that began long before the protocol settled, and nghttp2 has also been a moving target along the way. So I'm not sure what good lessons i have from this that are actually transferable to your project. Some quick things I came to think about: HTTP/2 over plain text is annoying with the Upgrade: and wasted RTT, it is much easier and simpler over HTTPS and ALPN. The fact that OpenSSL doesn't support ALPN until 1.0.2 is also annoying since it is still not present in lots of distros. ALPN is however getting implemented in many TLS libraries now so things are looking good. You should probably consider to make a translation layer from HTTP/2 headers to HTTP/1 and back, so that all the header parsing and request generation etc can remain pretty much as-is. That's what we do in curl and that's how Firefox does it internally. -- / daniel.haxx.se
[Bug-wget] [GSoC 2015] Basic HTTP/2 support
Hello all, This summer i will be working on implementing basic HTTP/2 support as part of Google Summer of Code! I am really excited to be working with you all and looking forward to coding the summer away :-). As you may already be thinking, this is no easy task! That's why the main objective is to get a single file download working with SSL and go on from there. This will set the bases for further development and explore the changes required in wget. All details are laid out in my proposal [0]. The implementation of the protocol itself will come from nghttp [1], a C HTTP/2 library. To handle networking I/O, libevent [2] will be used as described in this sample client [3]. However I am not fully committed to this and will try to reuse wget's code as much as possible. I will come up with more implementation details as I read more about the protocol and the libraries in the coming weeks, will keep you posted. Please let me know if you have any concerns/suggestions, they are more than welcome! Cheers, [0] http://www.google-melange.com/gsoc/proposal/public/google/gsoc2015/mllobet/5629499534213120 [1] https://nghttp2.org/documentation/package_README.html [2] http://libevent.org [3] https://nghttp2.org/documentation/tutorial-client.html Miquel Llobet