SPDY: What I Like About You
bitsup.blogspot.com
bitsup.blogspot.com
I'm more interested in browser developments that mean you can do stuff you couldn't before - access to geolocation/multitouch/sound/webcam etc.
I'm just saying, it's not "wow you can now do X you couldn't before". It's "Oh they made X a bit faster"
There is no single version of WebSockets which all browsers support. Firefox is not currently shipping WebSockets, but MozWebSocket, which is subtly different and also named differently to discourage usage. They don't want people doing WebSockets. (Aside: Try finding a Moz employee willing to talk about WebSockets. None are listed on the work page in their wiki.) Chrome ships the supposedly-insecure Hixie-76. Which is also HyBi-00. Which leads to...
WebSocket's versioning is somewhere between misleading and nonexistent. Many deployed versions predate the versioning header, so they have to be detected ad-hoc. The version in the protocol isn't always bumped with every new draft that comes out.
The protocol tries so very hard to be HTTP, but can't always cross proxies. This is really only important because (a) long-polling and Comet can easily cross proxies and (b) WebSockets aren't HTTP. It's less code to write a non-HTTP WebSockets server than to bolt one onto an existing HTTP server.
WebSockets security is non-existent. There is no WebSockets protection against proxy attacks, and there is no same-origin policy, so there is nothing stopping an attacker from opening a WebSocket to an unfriendly domain. No security advantage over boring plain sockets. (To their credit, WebSockets do specify SSL/TLS interaction.)
There are more issues, but that's what comes to me from memory after spending the better part of a year caring about these damn things.
SPDY is technically very cool. It's the update of HTTP that was way overdue. I didn't even mention end-users. Not only the user-facing parts of technology are important.
I've been playing around with asynchronous notifications to the browser for more than 10 years, when I wrote a simple html/js-based continuously loading chat. I've seen it all, from polling, comet, flash-based TCP, longpoll, to finally websockets. So for me it's great to finally see server push taken seriously as part of the spec and not sewn on as a third leg :-)
Don't get me wrong, SPDY is cool and good to see. But users won't notice any real difference. It's like when someone re-does a flash game in HTML5 and we (as geeks) go 'wow awesome', and non-geeks go 'uh? so what'
The non-geeks do notice. They notice when things don't work on their iPads. They'll notice as security and TLS become a larger and larger focus, and mobile users should appreciate the lower header overhead.
It took me (years?) to upgrade from Firefox 3.x to 6, but then only a week to upgrade to 7.
6 to 7 was seamless and added handy features - so I am changing my mind on the rapid release schedule as long as extensions aren't broken (often).
(7 is in release candidate build 2 already, give it a shot - it feels insanely fast)
It's just numbers, they dont mean much.
Now I just mentally shift them to the right so they are minor version numbers in my head:
ie. 1.6 1.7 1.8 etc. and then I can deal with it.
But 3.x to 6 is a big jump. Took me an entire weekend of fiddling, tweaking and lots of googling and research to replace extensions and get everything just right.
I think they're working on the new extension framework to allow reboot-less installs, etc, but their extension developers aren't adopting them quickly enough.
I guess the upsides make up for it, but I have a feeling we wouldn't need CDNs so badly if HTTP caching was used at ISP level.
That seems to get really complicated quite fast.
That should be almost impossible; I mean, digital signatures (include PGP) are still considered safe, as far as I know.
This doesn't make it a particularly inviting protocol to use. I'd have to switch my entire SChannel layer for OpenSSL on Windows, and probably link statically to the version of OpenSSL with NPN on *nix.
Not sure how it interacts with SSL/TLS thou.
Among other problems:
* Need an SSL key, which means self-signing, $$, or a monthly update to keep your free key current * Implementing SPDY server-push means explicit dependency lists you currently don't keep * The protocol is young and has changed multiple times * It's binary and hard to test -- it's not always clear where a problem lives
Add up those and "oh, my site is fast enough for what I'm doing" and you get a recipe for no good free server implementations.
Presumably some larger companies are working on it, but they have to justify that (substantial) effort for improvements only the Chrome portion of their userbase ever see.
So at least Firefox supporting SPDY will put more pressure on companies to support it.