Wednesday, September 11, 2013

WebProto


Dear readers, I am happy to announce an excellent thing. That excellent thing is WebProto, and it's a way that all of you, even those without a similar scientific background, can get a chance to play with the artifacts of my program of research.

Go on, click that link.  Or better yet, try this one that is all loaded up with a bunch of pretty demos.

Ain't it cool?

The WebProto effort was kicked off by my colleague Kyle Usbeck, who first realized that the new HTML5 and WebGL extensions in browsers had gotten powerful and sophisticated enough that it was reasonable to think about running a complex network simulator with 3D graphics and lots of virtual machines just as part of a web-page.  No weird plug-ins, no special-purpose software, just a modern web browser and a decently fast machine.  Then there was a lot of blood, sweat, and tears as we worked together to figure out how to make JavaScript do our bidding, and another batch when the way we first built the system was too slow and we needed to port the whole virtual machine into JavaScript.

The point of the WebProto project is to make aggregate programming techniques, like we and a number of our colleagues have been developing, readily accessible to anyone who is interested. There have been a lot of really exciting advances over the past few years, in techniques that make it easier to program networks, by letting you write programs for the whole network at once.  Then the system figures out how that translates into the interactions that the individual devices need to have with one another.  This is all well and good, but in order to use any of these techniques, you always had to figure out how to install and configure a touchy piece of research software, usually with some gnarly dependencies.  Ours (MIT Proto) is unfortunately no exception.  And using it had some serious user interface issues for anybody who's not a fan of the Unix command line. So the barrier to entry has just been too high for most people to bother with it.

Enter WebProto.  WebProto's three big goals are:

  1. Make cutting edge aggregate programming (via our Proto language) accessible to anybody with a browser.
  2. Bring aggregate programming, test configuration, and network simulation together in one easy interface. 
  3. Make it easy for anybody using WebProto to share their programs and simulations.

I think we've succeeded... at least enough to get a good start on things.  We're hoping this will be a good educational tool too, for people teaching classes on distributed algorithms or self-organization or complex systems.  Heck, we've already got a tutorial of our own that has embedded examples and problem sets!  And it's all free and open software, so anybody who improves things can contribute back to the community.

And you know why else I'm feeling that glow of pride right now?  Because today was Demo Day at SASO, and WebProto received an award for being the best demo of the conference.

So come on down, dear reader, and help yourself to our wonderful toys...

No comments: