Friday, February 13, 2009

Long term vision

Ok, so web_home's cool and all. . . but every open source project is cool at first - what about two years from now?

I would say there are three very distinct stages of vision I have for web_home and it's cousin projects:
  1. The current level: web_home, rome, etc exist as completely separate projects
  2. The SEGA (next) level: bundles are created by pairing web_home with it's server side companions
  3. The Jennifer Connelly level: Not sure exactly how this'll be implemented yet, but the idea is that the js and css needed by web_home will be super customized by browser
The current level

This is the development that's happening now: web_home and rome are being developed separately. Sure they work together, but the also work just fine on their own (sort of, web_home doesn't use fixtures so it does require live data from a server). Once the architecture for web_home is pretty well ironed out my plan is to implement "degraded" versions of all web_home modules in Rome. This means that web_home would have a photo_album module and Rome would have a photo_album module. The goal is that both module look and feel as similar as possible to an end user. The difference would be that the Rome photo_album module would be sans JavaScript.

At this level both full and "light" (mobile) versions of modules would be developed. Also, in addition to Rome (the Rails implementation) I'd like to develop web_home server companions in PHP (phome) and Python (slick name forthcoming).

The SEGA level

I'm thinking this would basically just be wrapping web_home and a server companion into a command line application. The idea is that you could then create an entire web application by entering a command similar to:

nx-01 create="Enterprise" -bp

This would tell the nx-01 application (Gratuitous Star Trek reference) to create a new application named "Enterprise" (another gratuitous Star Trek reference) with the Blog and Photo Album modules. The output from this command would be a ready to run Rails app with web_home all set up and ready to go - you could cd into Enterprise, run ./script/server, and blog away!

The Jennifer Connelly Level

This super sexy level is where things really start getting crazy. My idea here is that instead of web_home being a static set of resources, web_home modules are built browser specific on request. This means that all object testing code in the JavaScript goes away because web_home knows what browser it's on and what that browser's capabilities are.

Some sort of templating language will probably need to be developed which will then "compile" down to browser specific JavaScript. The same thing will be done for CSS, but that won't require any magic, we will simply set up conventions telling web_home which CSS files to use for what browser.

An important note is that once compiled, JavaScript resources will be cached. This means that browser specific module configuration will be done at most once for a browser.

No comments:

Post a Comment