{"id":7944,"date":"2015-09-07T08:30:09","date_gmt":"2015-09-07T06:30:09","guid":{"rendered":"http:\/\/daniel.haxx.se\/blog\/?p=7944"},"modified":"2015-09-07T09:25:59","modified_gmt":"2015-09-07T07:25:59","slug":"http2-115-days-with-the-rfc","status":"publish","type":"post","link":"https:\/\/daniel.haxx.se\/blog\/2015\/09\/07\/http2-115-days-with-the-rfc\/","title":{"rendered":"HTTP\/2 &#8211; 115 days with the RFC"},"content":{"rendered":"<p><a href=\"http:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2015\/08\/http2-front-image.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-8030\" src=\"http:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2015\/08\/http2-front-image-1200x670.jpg\" alt=\"http2\" width=\"674\" height=\"376\" srcset=\"https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2015\/08\/http2-front-image-1200x670.jpg 1200w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2015\/08\/http2-front-image-200x112.jpg 200w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2015\/08\/http2-front-image-450x251.jpg 450w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2015\/08\/http2-front-image.jpg 1822w\" sizes=\"auto, (max-width: 674px) 100vw, 674px\" \/><\/a>Back in <a href=\"http:\/\/daniel.haxx.se\/blog\/2015\/03\/31\/the-state-and-rate-of-http2-adoption\/\">March 2015, I asked friends<\/a> for a forecast on how much HTTP traffic that will be HTTP\/2 by the end of the year and we arrived at about <strong>10%<\/strong> as a group. Are we getting there? Remember that <a href=\"https:\/\/httpwg.github.io\/specs\/rfc7540.html\">RFC 7540<\/a> was <a href=\"http:\/\/daniel.haxx.se\/blog\/2015\/05\/15\/rfc-7540-is-http2\/\">published on May 15th<\/a>, so it is still less than 4 months old!<\/p>\n<p>The <a href=\"https:\/\/github.com\/http2\/http2-spec\/wiki\/Implementations\">HTTP\/2 implementations page<\/a> now lists almost 40 reasonably up-to-date implementations.<\/p>\n<h2>Browsers<\/h2>\n<p>Since then, <em>all<\/em> browsers used by the vast majority of people have stated that they have or will have HTTP\/2 support soon (Firefox, Chrome, Edge, Safari and Opera &#8211; including Firefox and Chrome on Android and Safari on iPhone). Even OS support is coming: on <a href=\"http:\/\/www.floriangoessler.de\/ios\/2015\/08\/30\/HTTP2-on-iOS.html\">iOS 9<\/a> the support is coming as we speak and the windows HTTP library is getting HTTP\/2 support. The adoption rate so far is not limited by the clients.<\/p>\n<p>Unfortunately, the WGet summer of code <a href=\"http:\/\/lists.gnu.org\/archive\/html\/bug-wget\/2015-08\/msg00204.html\">project to add HTTP\/2 support failed<\/a>.<\/p>\n<p>(I have high hopes for getting a HTTP\/2 enabled curl into Debian soon as they&#8217;ve <a href=\"https:\/\/ftp-master.debian.org\/new\/nghttp2_1.3.0-0.1.html\">just packaged a new enough nghttp2 library<\/a>. If things go well, this leads the way for other distros too.)<\/p>\n<h2>Servers<\/h2>\n<p>Server-side we see Apache&#8217;s <a href=\"http:\/\/httpd.apache.org\/docs\/trunk\/mod\/mod_h2.html\">mod_h2 module<\/a> ship in a public release soon (<a href=\"https:\/\/twitter.com\/jimjag\/status\/640137543657259008\">possibly in a httpd version 2.4<\/a> series release), nginx has this alpha patch I&#8217;ve already <a href=\"http:\/\/daniel.haxx.se\/blog\/2015\/08\/27\/content-over-http2\/\">mentioned<\/a> and <a href=\"http:\/\/trafficserver.apache.org\/\">Apache Traffic Server<\/a> (ATS) has already shipped h2 support for a while and my friends tell me that 6.0 has fixed numerous of their initial bugs. <a href=\"http:\/\/superuser.com\/a\/927458\">IIS 10 for Windows 10 was released on July 29th 2015<\/a> and supports HTTP\/2. <a href=\"https:\/\/h2o.examp1e.net\/\">H2O<\/a> and <a href=\"https:\/\/nghttp2.org\/\">nghttp2<\/a> have shipped HTTP\/2 for a long time by now. I would say that the infrastructure offering is starting to look really good! Around the end of the year it&#8217;ll look even better than today.<\/p>\n<p>Of course we&#8217;re still seeing HTTP\/2 only deployed over HTTPS so HTTP\/2 cannot currently get more popular than HTTPS is but there&#8217;s also no real reason for a site using HTTPS today to not provide HTTP\/2 within the near future. I think there&#8217;s a real possibility that we go above 10% use already in 2015 and at least for browser traffic to HTTPS sites we should be able to that almost every single HTTPS site will go HTTP\/2 during 2016.<\/p>\n<p>The delayed start of <a href=\"https:\/\/letsencrypt.org\/\">letsencrypt<\/a> has also delayed more and easier HTTPS adoption.<\/p>\n<h2>Still catching up<\/h2>\n<p>I&#8217;m waiting to see the intermediaries really catch up. Varnish, Squid and HAProxy I believe all are planning to support it to at least some extent, but I&#8217;ve not yet seen them release a version with HTTP\/2 enabled.<\/p>\n<p>I hear there&#8217;s still not a good HTTP\/2 story on Android and its stock HTTP library, although you can in fact run <a href=\"http:\/\/curl.haxx.se\/\">libcurl<\/a> HTTP\/2 enabled even there, and I believe there are other stand-alone libs for Android that support HTTP\/2 too, like <a href=\"https:\/\/square.github.io\/okhttp\/\">OkHttp<\/a> for example.<\/p>\n<h2>Firefox numbers<\/h2>\n<p><a href=\"http:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2014\/08\/firefox-nightly-screenshot.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-thumbnail wp-image-6307 alignright\" src=\"http:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2014\/08\/firefox-nightly-screenshot-150x133.jpg\" alt=\"Firefox Nightly screenshot\" width=\"150\" height=\"133\" srcset=\"https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2014\/08\/firefox-nightly-screenshot-150x133.jpg 150w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2014\/08\/firefox-nightly-screenshot-300x266.jpg 300w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2014\/08\/firefox-nightly-screenshot.jpg 609w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a>The latest stable Firefox release right now is version 40. <a href=\"https:\/\/telemetry.mozilla.org\/advanced\/#filter=release%2F40%2FHTTP_RESPONSE_VERSION%2Fsaved_session%2FFirefox&amp;aggregates=Submissions&amp;evoOver=Builds&amp;locked=true&amp;sanitize=true&amp;renderhistogram=Graph\">It counts<\/a> <strong>13%<\/strong> HTTP\/2 responses among all HTTP responses. Counted as a share of the transactions going over HTTPS, the share is roughly <strong>27%<\/strong>! (Since Firefox 40 counts 47% of the transactions as HTTPS.)<\/p>\n<p>This is certainly showing a share of the high volume sites of course, but there are also several very high volume sites that have not yet gone HTTP\/2, like Facebook, Yahoo, Amazon, Wikipedia and more&#8230;<\/p>\n<h2>The IPv6 comparison<\/h2>\n<p>Right, it is not a fair comparison, but&#8230; The <a href=\"https:\/\/tools.ietf.org\/html\/rfc1883\">first IPv6 RFC<\/a> has been out for almost twenty years and the adoption is <a href=\"https:\/\/www.google.com\/intl\/en\/ipv6\/statistics.html\">right now at about 8.4% globally<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Back in March 2015, I asked friends for a forecast on how much HTTP traffic that will be HTTP\/2 by the end of the year and we arrived at about 10% as a group. Are we getting there? Remember that RFC 7540 was published on May 15th, so it is still less than 4 months &hellip; <a href=\"https:\/\/daniel.haxx.se\/blog\/2015\/09\/07\/http2-115-days-with-the-rfc\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">HTTP\/2 &#8211; 115 days with the RFC<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7,393,13,6,45],"tags":[292,33,86,369,412,379,316],"class_list":["post-7944","post","type-post","status-publish","format-standard","hentry","category-curl","category-firefox-floss","category-net","category-floss","category-web","tag-chrome","tag-curl-and-libcurl","tag-firefox","tag-http2","tag-https","tag-nghttp2","tag-proxy"],"_links":{"self":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/7944","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/comments?post=7944"}],"version-history":[{"count":38,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/7944\/revisions"}],"predecessor-version":[{"id":8093,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/7944\/revisions\/8093"}],"wp:attachment":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/media?parent=7944"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/categories?post=7944"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/tags?post=7944"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}