Arriba - PSGI Web Server with SPDY Support

Having some free time during the Christmas break, I decided to give a shot at a small project that I had in mind for a while, and that was to develop a PSGI-compliant(-ish) web server with support for the SPDY protocol.

In case you haven’t heard of it, SPDY is a networking protocol developed at Google with a goal of reducing web page load latency. It is currently used by some of Google services (including search and Gmail) and by Twitter, and is supported natively in Firefox, Chrome, and Opera — so if you visited any of those sites with any of those browsers, it’s highly likely that your web content was transmitted by means of SPDY. An official standard for the protocol is in the works.

There was a SPDY module on CPAN that looked promising — Net::SPDY by Lubomir Rintel. While not being a complete implementation of the protocol, it seemed to be working, as I found out by playing with the sample client and server scripts included in the distribution.

After a few days of reading the SPDY specs, minor reverse engineering of other implementations, and blatantly copying (a lot of) code from Starman, I was able to put together a preforking web server operational enough to run a few simple Dancer applications. It’s a mess and nowhere near being ready for production use, but I’m happy to share it to maybe get some feedback from you fine folks — I’ve put it up on GitHub. I intend to continue working on it and hopefully one day turn it into something half-decent.

If you want to run it, be aware that you currently need to use the Net::SPDY module from my forked repository instead of the original one, since in the original there’s some test code that breaks normal server communication.

About the project name — I followed the idea of using friendly names like Starman and Twiggy, and since SPDY reminds me of Speedy Gonzales, I used a part of Speedy’s catch phrase (“¡Ándele! ¡Ándele! ¡Arriba! ¡Arriba!”). However, I know I’m terrible at naming things, so I’m open to suggestions for a better name.

4 Comments

Nice work. As Miyagawa would say, more servers are always welcome. The name is fine, IMO :)

Coming up with a good, unique name can be the hardest part of a new project. I think Arriba is perfect!

Looks cool, will look in to the Github repo in more detail soon - and it's an awesome name, well done.

Thanks for the helpful post..... keep sharing your views

Leave a comment

About Michał Wojciechowski

user-pic I blog about Perl.