On Mon, Jan 9, 2012 at 9:07 PM, Robin Brandt <robin.brandt@gmail.com> wrote:
Hello there,

I'm currently looking into implementing the SPDY [1] protocol based on
Warp. I read in the archives that Daniel Sommermann wanted to start
something similar for snap-server but I haven't seen any updates for
some time. So if you've got a finished implementation somewhere in
your drawer this would be a great time to publish it ;)

I briefly looked into implementing SPDY for Snap a while ago (i.e. I read all the relevant papers and gave up). I came to the conclusion that given my TODO list, the amount of effort required made the problem infeasible. I would be really excited to see a SPDY implementation for any of the Haskell web frameworks, because the hard problems to solve in a SPDY implementation are not specific to any specific web implementation.

The biggest hurdle re: implementing SPDY is the TLS bits. The protocol is documented (sort of), but all the magic numbers are listed as "TBD" in the spec. I spent a good two hours trying to pick my way through the chromium fork of OpenSSL (if you have preexisting expertise or lots of time and a hard hat, good luck with that) before giving up and asking for help internally at Google. It's been a while now, so the details are a little fuzzy, but the numbers are all TBD because IANA/IETF/whoever wants them to stay that way until the spec is finalized, and no, there aren't really any other docs about implementing this protocol other than the proposed specs and the source code. And oh yeah, this is in crypto code, so if you touch the wrong thing the wrong way, you've exposed yourself to side-channel attacks, or worse.

Between next protocol negotiation, TLS false start, TLS snap start, and the SPDY multiplexing code itself (by far the easiest problem to overcome: it's straightforward and non-archaeological), I concluded that implementing all of this crap might take me a month or two if I were doing it full time at my day job. As a "hobby-time" project? For me, intractable right now. It would be a really fun and interesting project for someone with the time though.

G
--
Gregory Collins <greg@gregorycollins.net>