This post originated from an RSS feed registered with Ruby Buzz
by David Heinemeier Hansson.
Original Post: Writeboard: 1 code base = 2 features + 1 app
Feed Title: Loud Thinking
Feed URL: http://feeds.feedburner.com/LoudThinking
Feed Description: All about the full-stack, web-framework Rails for Ruby and on putting it to good effect with Basecamp
We've just launched Writeboard integration for Basecamp, which means that all projects now have the option of associating Writeboards with them. This is interesting because it shows how the "app-less app" design allows us to reap the benefits of development thrice.
From a single code base, we've provided a stand-alone application at writeboard.com and decorated both Backpack and Basecamp with Writeboard-powered "features" integrated deeply into each of the applications. They even specialize Writeboard slightly differently by passing in UI configuration options.
Behind the scenes its all a simple REST-powered architecture following a simple observer pattern. Writeboard has the notion of folders, which can register themselves with a given writeboard as a URL. When the writeboard is updated, the system will ping each of these folder URLs with information about who made the edit and when. This allows Backpack and Basecamp, which both serve as folders in this setup, to provide writeboard indexes with up-to-date information — without doing expensive look-ups on each request.
Programming-wise, it's been trivial to implement. But functionally it's a big win and a great way for a small team like us to scale our suite of applications at near 1/3 of the cost.
Writeboard is the first of these app-less, or document/single-url, based applications we've done. But the same model is already slated to power a second application we have under development. Develop once, launch many times.