Contact Me
The Passionate Programmer: Creating a Remarkable Career in Software Development
Rails Recipes

Dabble Plugin API

January 8th, 2007

I recently had the privilege of writing a tutorial for Dabble DB’s new plugin API. If you haven’t heard of Dabble DB yet, it’s one of the few really innovative applications you’ll find with the “web 2.0” label. For a quick look at what it’s all about, check out the popular 7 minute demo movie that Avi made.

Even if you’re not planning to use Dabble DB, I think it’s worth reading the tutorial to see how they’ve implemented plugins. It may have been done before, but I haven’t seen it done like this. When you host an application on the open internet, how do you allow users to safely “plug” their own code into your application? You could go to a lot of trouble and create a sandboxed interpreted environment inside your application, exposing an API. But that’s really really hard to do.

What Smallthought did might be more aptly called “plugouts”. Instead of just exposing services that you can consume into your own mashup, they allow Dabble DB to call out to custom, internet-accessible services. And, rather than clutter things up with an ugly XML API, they deal in simple CSV in and out, kind of like UNIX pipes.

It’ll be interesting to see what happens with this both in Dabble DB and other applications that start to adopt this approach. Immediately after the plugin API’s release, there are already a couple of publicly available plugins (from an apparent Rubyist. Hi Tim!)

What other interesting approaches have you seen to accomplish this same goal?

4 Comments

  1. rick Says:

    It’s always the simple, “obvious” things that blow your mind. Okay, that’s pretty over-dramatic, but these ‘plug-outs’ sound pretty damn cool :)

  2. Jeff Lindsay Says:

    This is a great new approach to hooking applications together and achieving the command-line equivalent of pipes for the web. I like to call it web hoooks and I’ve been trying to evangelize it with things like mailhook.org and soon with DevjaVu by exposing SVN hooks via web hooks.

  3. Rick B Says:

    Chad—Great tutorial, easy to follow. Do you know if it’s possible to pass multiple fields in or out of a plug-out? I can see why keeping the API simple is a good thing, but the uses I have would naturally take in a tuple for input & return a set of columns as output. If there were a way to do THAT, this would be incredibly useful. Perhaps a feature request, or is this planned?

  4. Chad Fowler Says:

    Rick B, there actually isn’t a clean way to do this right now. You could hack something similar using the Name of the row or by creating merged fields, but you probably don’t want to do that. Avi tells me there should be a way to do this in the not-so-distant future.

Sorry, comments are closed for this article.