Now that I have a little more free time, I've begun the process of bringing Snitter back to life. The crowd of desktop applications has not deterred my resolve to (re)build a Twitter application of my own. I have a vision — a vision that I've had since before SXSW of last year — that I still have an opportunity to bring to fruition.
However, along the way, I've decided to accomplish a little extra along the way: I'm building a framework to allow others to build their own applications quickly and easily. This framework, I have dubbed Streamliner.
Streamliner sounded like a cool name and plays off words like life streaming and streamline.
One of the key goals is to keep this agnostic. It won't matter whether you're a fan of jQuery, Mootools, YUI, Prototype, or ExtJS (or any other library that might tickle your fancy). True, the framework will take a certain approach that will feel more like YUI than jQuery but it'll be less about needing DOM shortcuts and more about building an extensible set of tools that can be used separately or together.
The initial goal for Streamliner is to have Adobe AIR and Titanium support "out-of-the-box". That means supporting Webkit and all the fun stuff it can do (and it can do quite a bit). I'd love to see this easily extended to other Webkit platforms such as the iPhone and webOS (for the Palm pre). I'd also love to think that you could build an application and automatically deploy it to the desktop and mobile platforms quickly and easily.
What will it do?
Streamliner will attempt to solve a few problems. Here's a short list of things:
Life streaming, whether it be Twitter, RSS, or even MP3 playlists, all have a set format. The template system will allow an HTML template to be specified and merged with JSON data.
You'll be able to create requests queues and have them execute on a regular schedule. This is well-suited for things like Twitter but also RSS feeds and anything else that you might need updated on a regular schedule. API limit tracking
This area is still somewhat vague but data management can be a tricky thing when dealing with lots of data. What do you do with received tweets? Can they be saved locally? Can they be searched? How do you cache information and where does that information get cached? These are all sorts of questions that Streamliner will hopefully answer.
I love the power of the ExtJS layout engine but their GPL license means I won't be able to take advantage of it here. I'll have to write something from scratch. The goal is to be able to declare panes that can be dropped into a layout with certain properties. The Layout Manager will be responsible for make sure panes are sized correctly.
Additional functionality could include collapsable widgets, movable panes and other useful tools in building a flexible UI.
Layout is the only part of this where I fear the ability to keep it library agnostic. Mind you, Webkit has some great DOM tools with its modern support but we'll have to play that one by ear.
I'm developing Streamliner as an open source framework — using an MIT license — that, I hope, will inspire others to get involved. At the very least, people can fork it and do whatever they want with it, long after I've left it. (Not that I plan to leave it. I'm just saying...).
I wanted to specifically mention Ed Finkler's project SpazCore. We've been following a similar trajectory and he, too, has been working on an open-source framework. We'll likely see some cross-polination of ideas (and maybe manpower). If Streamliner doesn't tickle your fancy, maybe SpazCore will.
What does this mean for Snitter?
One of the main goals that I've always had for the next version of Snitter was to have a plug-in architecture allowing anybody to quickly add their own features into the app. Want to use a different URL shortening service? Want to have your own service (like Foamee) integrated right into the app?
As you might be able to imagine, much of Streamliner is designed to make the process of building plug-ins easier. Extending that functionality out into its own library really made sense.
Streamliner on Github
Since Github is where all the cool kids hang out, I've added Streamliner there. There's not much there, yet, but hopefully things will progress quickly.