Streamliner
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.
Library Agnostic
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.
Platform Support
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:
Templates
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.
Polling
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
Data Management
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.
Event Management
Despite the fact that every JavaScript library has event management to some degree, Streamliner will have its own custom events. This is more easily done because of our reliance on a single engine. You'll be able to hook into any of the events in the system with a simple addListener call.
Layout
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.
Open Source
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...).
SpazCore/Spaz mk2
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.
Conversation
Very interesting. I'll be keeping an eye on this (already followed on github). Not much to add at the moment, other than I'm wondering what sort of cool stuff I could build with it.
@Anton, I've already got a bunch of ideas. :) Some stuff could be a Snitter plugin, like RSS feeds, twitter search, etc. Other stuff could be a standalone app like an OpenTape player. Once things get a little closer to actually being implemented, I think it'll be clearer.
Sounds great, I love the idea of having out-of-the-box support for WebKit power. And I think it would be really cool if along with polling you have some sort of support for web hooks.
I'll be watching/forking your project on GitHub and I hope to contribute where I can! great stuff!
Sounds really cool. I really like the direction and thought you have put into this. Very interested to see where this goes and possibly contribute.
The OpenTape idea is of particular interest.
Sounds rad! I'm watching you! ;)
Sounds great :) I will definitely keep an eye on it, 10x.
Hah! I've had this idea for some time now, too. Hope you make it work :-)
Sounds interesting, will you be open sourcing Snitter as well (assuming it's not allreay)?
Very cool, I'd love to tinker around with it once you've got it to a point where it's usable.
Missed the Snitter updates, look forward to seeing an update soon!
You should maybe check out PhoneGap / http://phonegap.com too - we are largely interested in taking advantage of the power of WebKit to build cross mobile platform apps. If we can have things run on the desktop too in AIR then even better. Also, XUI / http://xuijs.com is a WebKit specific micro JavaScript framework you may want to look at.
@Dave Johnson: PhoneGap is definitely something I'm considering but it's further down the list. It would certainly be nice to roll out one application on multiple platforms including the iPhone, webOS and even Android.