05 Aug 2014 - HTTP/2 draft 14 in Firefox

Update 2014-08-06 - Fixed off-by-one in the length of time we’ve been working on HTTP/2

As many of you reading this probably know, over the last one and a half years (or so) the HTTP Working Group has been hard at work on HTTP/2. During that time there have been 14 iterations of the draft spec (paired with 9 iterations of the draft spec for HPACK, the header compression scheme for HTTP/2), many in-person meetings (both at larger IETF meetings and in smaller HTTP-only interim meetings), and thousands of mailing list messages. On the first of this month, we took our next big step towards the standardization of this protocol - working group last call (WGLC).

There is lots of good information on the web about HTTP/2, so I won’t go into major details here. Suffice it to say, HTTP/2 is going to be a great advance in the speed and responsiveness of the web, as well as (hopefully!) increasing the amount of TLS on the web.

Throughout all these changes, I have kept Firefox up to date with the latest draft versions; not always an easy task, with some of the changes that have gone into the spec! Through all that time, the most recent version of HTTP/2 has been available in Nightly, disabled by default, behind the network.http.spdy.enabled.http2draft preference.

Today, however, Firefox took its next big step in HTTP/2 development. Not only have I landed draft 14 (the most recent version of the spec), but I also landed a patch to enable HTTP/2 by default. We felt comfortable enabling this by default given the WGLC status of the spec - there should be no major, incompatible changes to the wire format of the protocol unless some new information about, for example, major security flaws in the protocol come to light. This means that all of you running Nightly will now be able to speak HTTP/2 with any sites that support it. To find out if you’re speaking HTTP/2 to a website, just open up the developer tools console (Cmd-Alt-K or Ctrl-Alt-K), and make a network request. If the status line says “HTTP/2.0”, then congratulations, you’ve found a site that runs HTTP/2! Unfortunately, there aren’t a whole lot of these right now, mostly small test sites for developers of the protocol. That number should start to increase as the spec continues to move through the IETF process.

The current plan is to allow draft14 to ride the trains through to release, enabled by default. If during the course of your normal web surfing, you see any bugs and the connection is HTTP/2 (as reported by the developer tools, see above) and you can fix the bug by disabling HTTP/2, then please file a bug under Core :: Networking:HTTP.

18 Oct 2013 - Mozilla Summit 2013

Two weeks ago, I (along with approximately 1800 other Mozillians) attended the 2013 Mozilla Summit. I attended in Santa Clara, CA (just up the road from home) with approximately 600 others, relatively evenly split betweeen paid and volunteer contributors. To say the experience was amazing would be a vast understatement. This was my first time attending a Summit (I missed the 2010 Summit by about 6 months), and it more than lived up to the hype I had heard around previous summits. The summit was truly global, just like Mozilla, with locations in Brussels, Toronto, and Santa Clara. By virtue of the way time zones work, if my math isn’t wrong, the Summit was effectively running 24 hours a day for 3 whole days. Wow!

While a lot of people started on Thursday night after checking into the hotel, I had family obligations that kept me away until the “official” start on Friday morning. The opening keynote by Mitchell Baker (recorded in Brussels, and replayed in Toronto and Santa Clara at the appropriate times) was inspiring. If you haven’t watched it, you should. Things then moved into an ambitious discussion about the future of Mozilla (1 Million Mozillians and 1 billion Firefox users by 2023, anyone?) That got me excited. To think of being something that big got me fired up, and put into perspective just how much work we have ahead of us.

After the World Fair (where the amazingly diverse Mozilla communities from around the world showed off their awesomeness) and lunch, I retired to my room for a nap (something I haven’t had in years), and then returned for the Q&A sesssion with some of the big-wigs. After that, we had our group photo (the other locations also had one, but of course, the Santa Clara one was the best!) This was all followed by dinner to celebrate Firefox OS, and then karaoke!

The next day started off with a short session on the health of the web, Mozilla’s culture, and then moved into what was probably the most awesome part of the Summit - product demos! Shumway completely blew my mind, it’s amazing to see how much of Flash we’re already able to do entirely in HTML, CSS, and JS. Appmaker was also awesome - build a web app entirely within your browser. It’s really pre-alpha right now, and can only get better from here (and it’s already amazing!) Next up was the App Manager (video), which is an awesome way to test, debug, and edit apps for FirefoxOS using Firefox’s built-in dev tools and either the FirefoxOS Simulator or an actual device. Lastly came the gaming demo. This was the first time I had ever seen the Unreal engine running in Firefox live, and I was absolutely floored. Even more amazing, though, was the demo of BananaBread that included, within the 3D game, a live Twitter feed showing tweets about the summit, a YouTube video playing, and a fully playble version of Free Doom, all within something like iframes on one view.

After that, I picked my jaw up off the floor, ran to grab a boxed lunch, and set myself up at my table for the Innovation Fair, where I made myself available to talk about the upcoming awesomeness that is HTTP/2. Given that network protocols are relatively niche, I was expecting to have 10 or maybe 20 people stop by over the whole two hours. What actually ended up happening was, I barely had time to eat my lunch (most of it was eaten while people were still filtering out of the main ballroom and getting their lunches). Similar reports came in from Brussels (where the person running the HTTP/2 table almost lost his voice) and Toronto (where the two people were so swamped that they didn’t get to take turns eating lunch as originally planned). After a brief recovery period, I went to some more sessions in the afternoon (the Public Policy Module session was awesome - I need to get more involved in that), ate a delicious “World Fare” dinner, and then watched Code Rush, a documentary about Netscape around the time they open sourced Mozilla. I’ve seen the movie before, but it was extra awesome to watch it surrounded by a bunch of Mozillians (including at least one who featured prominently in the movie!)

Sunday was more of the same (awesome!), starting with a gigantic brainstorming session for product roadmaps. My group came up with a couple excellent ideas for Appmaker (make the apps easily localizable, and add a widgetmaker, so people can share their widgets to be used in other apps), and one for User Personalization (Firefox Now - just like Google Now, except we won’t steal all your data and creep you out!). That lasted all morning. After lunch, I went to the DRM WTF session where a lot of us had a frank discussion about DRM in HTML5 (by way of Encrypted Media Extensions). It was a good discussion to have, important for the future of the web. The wiki page has a great summary of all the points that were made. After that session came the closing session where Mitchell gave another great speech (again recorded in Brussels and replayed in Toronto and Santa Clara). We all ended up with an awesome dinner and dance party.

Like I said, the Summit was truly an amazing experience. I met so many excellent people, volunteer and paid (from both the corporation and the foundation). I went into it expecting to come out happy but exhausted (I am an introvert, after all), but somehow managed to come out of the hotel after 3 days completely invigorated, and ready for more! I’m already looking forward to the next Summit.

26 Sep 2013 - GSoC 2013

I haven’t blogged about it much (what can I say, I’m a bad blogger), but this summer, I’ve had the immense pleasure of being one of Mozilla’s mentors for Google Summer of Code. I mentored Gábor Molnár in his implementation of an HTTP/2 server for nodejs. His wrap-up post has a lot of good information on the end results as far as GSoC is concerned.

This was my first year mentoring in GSoC, and I can’t emphasize enough how lucky I was to have a mentee like Gábor. He is bright, hard-working, and rather prolific with code. I’m also happy to say that I will (in an unofficial capacity) get to continue working with Gábor, as I am going to continue work on Necko’s implementation of the current (and future) drafts of HTTP/2, and node-http2 has proven to be an invaluable interop testing tool, and I’m sure it will continue to be so. Furthermore, I plan on bringing a snapshot of node-http2 into mozilla-central to facilitate xpcshell tests of Necko’s HTTP/2 implementation, similar to how we currently use node-spdy for testing our SPDY implementation. Hopefully Gábor will be available to assist in this process, and perhaps get his first commit in mozilla-central as part of the process :)

I want to thank (in no particular order):

  • Patrick McManus for providing a client-side implementation to test node-http2 against (while I worked on other things), as well as his expertise and experience in navigating all things IETF.
  • The Mozilla GSoC program administrators, Gerv and Florian, for accepting this as one of our many projects this year.
  • Finally (but certainly not least), Gábor, for making this an incredibly enjoyable first GSoC mentoring experience, and producing a product that will help Firefox (and other browsers) move the internet forward with solid HTTP/2 implementations.
12 Jul 2013 - Velocity 2013

So June 18 through 20, I got to attend O’Reilly Velocity 2013 in Santa Clara (just up the road from home). Given that I’m neither a web developer, nor a devops engineer, it may seem a little odd to some that I attended at all, but I have a good reason, I swear! We (the Necko team at Mozilla) wanted to investigate the existing web performance landscape to (1) ensure we weren’t doing something that web developers/ops didn’t expect (thus harming performance), and (2) see if there was anything we could do to help improve performance within the framework of what developers already expect. The good news is that I wasn’t taken completely by surprise by anything at the conference, so we’re not doing anything horrifyingly wrong. Even though there weren’t a whole lot of surprises, I still got a lot of good information, and I wanted to touch on some of that here.

Chrome… Chrome everywhere.

Given that I’m a Mozillian, I wanted to keep a (very informal) count of the browser distribution I saw in use by a crowd that was overwhelmingly web devs and devops. Google’s Chrome was overwhelmingly the browser of choice in this group. Of the browsers I saw open on people’s screens, I saw

  • No Opera or IE
  • One Safari
  • Two Firefox (not including myself and the other Mozillian I knew at the conference)
  • Everything else Chrome

Like I said, this didn’t exactly take me by surprise. My feeling, even before attending the conference, has been that the web developer community greatly prefers Chrome (I’ve heard various reasons for this preference). I’m not knocking Chrome, it is, indeed, a great browser. It still makes me a little sad, though, to see things so skewed in one direction. A little more balance would be good for the web.

Everybody Loves RUM

Again, not surprising. Real User Monitoring is pretty much the only way to really prove changes in production for any piece of software, whether it’s a web app or a web browser. There were quite a few sessions on RUM, and it was good to see my team’s intuition on the JS APIs around timing being validated.

Developing world? What developing world?

OK, this one took me a little bit by surprise. In the sessions I attended, at least, pretty much now one talked about optimizing for content delivery over anything less than a 3G (or even LTE) connection. Not that it wasn’t mentioned at all, but the only time I saw anything like GSM, EDGE, or GPRS mentioned was in an “Oh, yeah, these really slow connections exist, too, and you should probably care about them” sort of way. I know we’re all lucky here in the US (and Europe, and Japan, and …) to have excellent connectivity, but the next big group of people to come online won’t have that kind of connectivity (at least to start), and everyone needs to start thinking about how to best serve those markets.

A Little Better Balanced

This is probably the least scientific of my observations (with the possible exception of my browser count), but I noticed that, compared to the last conference I attended (PyCon 2007), there was a better balance between the number of men and women speakers. If I remember correctly (my google-fu failed in finding the speaker list online), there was only one woman speaker at PyCon in 2007 (during a session, not during any of the keynotes). By contrast, my (very) quick count for Velocity showed 10 women speaking (including one of the keynote speakers). Is this better? Yes. Do we still have a long way to go, in terms of equality in tech and tech conferences? That’s a resounding yes. Still, it’s encouraging to see progress being made, even if it is painfully slow.

HTTP/2 Questions and Worries

I kind of feel like I want to talk about this more at length, in a blog post of its own, but I feel like I should at least touch on it here. A lot of people were excited about HTTP/2, so that’s good. However, I heard some questions and worries about HTTP/2 (and have since seen similar worries eleswhere on the internet) that were just downright perplexing to me. The most common misperception I saw is that HTTP/2 somehow breaks the request/response model that we’ve all come to know and love from HTTP/1.x. Repeat after me: the semantics of HTTP are unchanged. Let’s say that one more time, all together. The semantics of HTTP are unchanged. Oh, and your app (client-side, at least) shouldn’t (except perhaps in very special cases) have to care whether it’s running on HTTP/1.x or HTTP/2. There now, doesn’t that feel better?

Lots of Love for WebPageTest

Also not surprising, but great to see. There was a lot of love being shown for WebPageTest. If you haven’t checked it out, what are you doing here? Go, look now. What’s left of this post can wait until you read about it, play around it, and see just how awesome it is.

Sessions I Enjoyed

Overall, Velocity was a good time. I met some people, saw some talks, and ate some surprisingly good food (especially surprising given that it was prepared for something like 3000 people). Hopefully I’ll get a chance to go next year, as well.

09 Jul 2013 - GSoC HTTP/2 Header Compression

Just a quick (and awesome!) note. The Google Summer of Code student that I’m mentoring has completed his implementation of the new HTTP/2 header compression spec (modulo any changes that may happen to the spec in the future). This is, I believe, the second ever implementation of the compression spec (it’s certainly the second I’ve heard of). For more information, take a look at his blog post.