Once again I've thrown out all the code and started over in the hopes
of getting to the essence of this project. A little history:
In late 2006, I started designing a web platform that would make it
dead simple to fork apps. I made some lovely mockups:
http://www.flickr.com/photos/erikpukinskis/261951999/
By April 2007, I had hacked together a prototype in PHP. It
demonstrated the concept, but lacked any sort of security model. I
presented it at BarCamp in San Diego, but was unable to attract anyone
to join the project.
In 2008, I started to get into Ruby, and decided that each app was
going to have to be sandboxed somehow, and I wanted to try spinning up
sparate servers for each one. I reimplemented the platform in Ruby,
using God to manage the apps, and pulling in code over Git.
http://www.flickr.com/photos/erikpukinskis/3114097511/
In 2009, Heroku had come out, and I realized that I could leverage
their app platform and not have to deal with the headache of
application hosting. I reimplemented the platform as a simple RESTful
Sinatra app that managed the git repositories, and pushed apps to
Heroku as needed, with a separate Rails app that did the editing and
provided a UI.
http://www.flickr.com/photos/erikpukinskis/4053283295/
At each step along the way, I figured out important parts of the
platform, but inevitably things got away from me... it got too
complex, too messy, too difficult for me to handle.
So now, I'm trying again. I've reimplemented the platform even
simpler. This time, apps are just HTML files, and the server is
written in Node.js (which will let me have long-running requests that
wait for slow Git jobs to happen). The apps access a CouchDB
datastore via AJAX. Couldn't be easier, right?
That's the idea. I wrote this version in just a couple of weekends
(after an inspiring dialog with Anatoly Geyfman, who convinced me to
put aside the authentication server, and just use HTML apps for
simplicity). It doesn't do much, and security is nonexistant (anyone
can wipe out the entire database with a single HTTP call) but I think
it's a good proof of concept. It demonstrates the core interaction
(forking and instantly using an app) without all the complexity.
I am hoping some people will see it, and see the potential behind it,
and join me in making the vision a reality. We of course need to have
a great authentication server, and really powerful deployment tools,
and a great editor... we just need to build them!
Best,
Erik Pukinskis