{"id":8352,"date":"2015-12-24T00:03:26","date_gmt":"2015-12-23T23:03:26","guid":{"rendered":"http:\/\/daniel.haxx.se\/blog\/?p=8352"},"modified":"2015-12-24T00:05:36","modified_gmt":"2015-12-23T23:05:36","slug":"http2-adoption-at-end-of-2015","status":"publish","type":"post","link":"https:\/\/daniel.haxx.se\/blog\/2015\/12\/24\/http2-adoption-at-end-of-2015\/","title":{"rendered":"HTTP\/2 adoption, end of 2015"},"content":{"rendered":"<p><a href=\"http:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2015\/11\/http2-front-image.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-large wp-image-8354\" src=\"http:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2015\/11\/http2-front-image-1200x670.jpg\" alt=\"http2 front image\" width=\"674\" height=\"376\" srcset=\"https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2015\/11\/http2-front-image-1200x670.jpg 1200w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2015\/11\/http2-front-image-200x112.jpg 200w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2015\/11\/http2-front-image-450x251.jpg 450w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2015\/11\/http2-front-image.jpg 1822w\" sizes=\"auto, (max-width: 674px) 100vw, 674px\" \/><\/a>When I asked my surrounding in <a href=\"http:\/\/daniel.haxx.se\/blog\/2015\/03\/31\/the-state-and-rate-of-http2-adoption\/\">March 2015<\/a> to guess the expected HTTP\/2 adoption by now, we as a group ended up with about <strong>10%<\/strong>. OK, the question was vaguely phrased and what does it really mean? Let&#8217;s take a look at some aspects of where we are now.<\/p>\n<p>Perhaps the biggest flaw in the question was that it didn&#8217;t specify HTTPS. All the browsers of today only implement HTTP\/2 over HTTPS so of course if every HTTPS site in the world would support HTTP\/2 that would still be far away from all the HTTP requests. Admittedly, browsers aren&#8217;t the only HTTP clients&#8230;<\/p>\n<p>During the fall of 2015, both nginx and Apache shipped release versions with HTTP\/2 support. nginx made it slightly harder for people by forcing users to select <em>either<\/em> SPDY <em>or<\/em> HTTP\/2 (which was a technical choice done by them, not really enforced by the protocols) and also still telling users that SPDY is the safer choice.<\/p>\n<p><a href=\"https:\/\/letsencrypt.org\/\">Let&#8217;s Encrypt<\/a>&#8216;s finally launching their public beta in the early December also helps HTTP\/2 by removing one of the most annoying HTTPS obstacles: the cost and manual administration of server certs.<\/p>\n<h2>Amount of Firefox responses<\/h2>\n<p>This is the easiest metric since Mozilla offers public access to the metric data. It is skewed since it is opt-in data and we know that certain kinds of users are less likely to enable this (if you&#8217;re more privacy aware or if you&#8217;re using it in enterprise environments for example). This also then measures the share by volume of requests; making the popular sites get more weight.<\/p>\n<p>Firefox 43 counts no less than 22% of all HTTP responses as HTTP\/2 (based on data from Dec 8 to Dec 16, 2015).<\/p>\n<p>Out of all HTTP traffic Firefox 43 generates, about 63% is HTTPS which then makes almost <strong>35% of all Firefox HTTPS requests are HTTP\/2<\/strong>!<\/p>\n<p>Firefox 43 is also negotiating HTTP\/2\u00a0<strong>four<\/strong> times as often as it ends up with SPDY.<\/p>\n<h2>Amount of browser traffic<\/h2>\n<p>One estimate of how large share of browsers that supports HTTP\/2 is the <a href=\"http:\/\/caniuse.com\/#feat=http2\">caniuse.com number<\/a>. Roughly 70% on a global level. Another metric is the one <a href=\"https:\/\/www.keycdn.com\/blog\/http2-statistics\/\">published by KeyCDN<\/a> at the end of October 2015. When they enabled HTTP\/2 by default for their HTTPS customers world wide, the average number of users negotiating HTTP\/2 turned out to be 51%. More than half!<\/p>\n<p>Cloudflare however, <a href=\"https:\/\/blog.cloudflare.com\/introducing-http2\/\">claims the share of supported browsers<\/a> are at a mere 26%. That&#8217;s a really big difference and I personally don&#8217;t buy their numbers as they&#8217;re way too negative and give some popular browsers very small market share. For example: Chrome 41 &#8211; 49 at a mere 15% of the world market, really?<\/p>\n<p>I think the key is rather that it all boils down to what you measure &#8211; as always.<\/p>\n<h2>Amount of the top-sites in the world<\/h2>\n<p>Netcraft bundles SPDY with HTTP\/2 in their <a href=\"http:\/\/news.netcraft.com\/archives\/2015\/10\/16\/october-2015-web-server-survey.html\">October report<\/a>, but it says th<span style=\"color: #000000;\">at &#8220;<em>29% of SSL sites within the thousand most popular sites currently support SPDY or HTTP\/2, while 8% of those within the top million sites do.<\/em>&#8221; (<\/span>note the &#8220;<em>of SSL sites<\/em>&#8221; in there)<\/p>\n<p>That&#8217;s now slightly old data that came out almost exactly when Apache first release its HTTP\/2 support in a public release and Nginx hadn&#8217;t even had it for a full month yet.<\/p>\n<p>Facebook eventually enabled HTTP\/2 in November 2015.<\/p>\n<h2>Amount of &#8220;regular&#8221; sites<\/h2>\n<p>There&#8217;s still no ideal service that scans a larger portion of the Internet to measure adoption level. The <a href=\"http:\/\/httparchive.org\/\">httparchive.org<\/a> site is about to change to a chrome-based spider (from IE) and once that goes live I hope that we will get better data.<\/p>\n<p><a href=\"http:\/\/w3techs.com\/technologies\/details\/ce-http2\/all\/all\">W3Tech&#8217;s report<\/a> says 2.5% of web sites in early December &#8211; less than SPDY!<\/p>\n<p>I like how <a href=\"http:\/\/isthewebhttp2yet.com\/\">isthewebhttp2yet.com<\/a> looks so far and I&#8217;ve provided them with my personal opinions and feedback on what I think they should do to make that the preferred site for this sort of data.<\/p>\n<p>Using the <a href=\"https:\/\/www.shodan.io\/\">shodan<\/a> search engine, <a href=\"https:\/\/blog.shodan.io\/tracking-http2-0-adoption\/\">we could see<\/a> that mid December 2015 there were about 115,000 servers on the Internet using HTTP\/2.\u00a0 That&#8217;s 20,000 (~24%) more than isthewebhttp2yet site says. It doesn&#8217;t really show percentages there, but it could be interpreted to say that slightly over 6% of HTTP\/1.1 sites also support HTTP\/2.<\/p>\n<p>On Dec 3rd 2015, Cloudflare enabled HTTP\/2 for all its customers and they claimed they doubled the number of HTTP\/2 servers on the net in that single move. (The shodan numbers seem to disagree with that statement.)<\/p>\n<h2>Amount of system lib support<\/h2>\n<p>iOS 9 supports HTTP\/2 in its native HTTP library. That&#8217;s so far the leader of HTTP\/2 in system libraries department. Does Mac OS X have something similar?<\/p>\n<p>I had expected Window&#8217;s wininet or other HTTP libs to be up there as well but I can&#8217;t find any details online about it. I hear the Android HTTP libs are not up to snuff either but since <a href=\"http:\/\/square.github.io\/okhttp\/\">okhttp<\/a> is now <a href=\"https:\/\/twitter.com\/JakeWharton\/status\/482563299511250944\">part of Android<\/a> to some extent, I guess proper HTTP\/2 in Android is not too far away?<\/p>\n<h2>Amount of HTTP API support<\/h2>\n<p>I hear very little about HTTP API providers accepting HTTP\/2 in addition or even instead of HTTP\/1.1. My perception is that this is basically not happening at all yet.<\/p>\n<h2>Next-gen experiments<\/h2>\n<p>If you&#8217;re using a modern Chrome browser today against a Google service you&#8217;re already (mostly) using QUIC instead of HTTP\/2, thus you aren&#8217;t really adding to the HTTP\/2 client side numbers but you&#8217;re also not adding to the HTTP\/1.1 numbers.<\/p>\n<p>QUIC and other QUIC-like (UDP-based with the entire stack in user space) protocols are destined to grow and get used even more as we go forward. I&#8217;m convinced of this.<\/p>\n<h2>Conclusion<\/h2>\n<p>Everyone was right! It is mostly a matter of what you meant and how to measure it.<\/p>\n<h2>Future<\/h2>\n<p>Recall the words on the Chromium blog: &#8220;<a href=\"http:\/\/blog.chromium.org\/2015\/02\/hello-http2-goodbye-spdy-http-is_9.html\">We plan to remove support for SPDY in early 2016<\/a>&#8220;. For Firefox we haven&#8217;t said anything that absolute, but I doubt that Firefox will support SPDY for very long after Chrome drops it.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>When I asked my surrounding in March 2015 to guess the expected HTTP\/2 adoption by now, we as a group ended up with about 10%. OK, the question was vaguely phrased and what does it really mean? Let&#8217;s take a look at some aspects of where we are now. Perhaps the biggest flaw in the &hellip; <a href=\"https:\/\/daniel.haxx.se\/blog\/2015\/12\/24\/http2-adoption-at-end-of-2015\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">HTTP\/2 adoption, end of 2015<\/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":[393,13,45],"tags":[292,86,230,369,412,414],"class_list":["post-8352","post","type-post","status-publish","format-standard","hentry","category-firefox-floss","category-net","category-web","tag-chrome","tag-firefox","tag-http","tag-http2","tag-https","tag-quic"],"_links":{"self":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/8352","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=8352"}],"version-history":[{"count":20,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/8352\/revisions"}],"predecessor-version":[{"id":8506,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/8352\/revisions\/8506"}],"wp:attachment":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/media?parent=8352"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/categories?post=8352"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/tags?post=8352"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}