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.

Published April 21, 2009
Categorized as JavaScript
Short URL: https://snook.ca/s/939

Conversation

12 Comments · RSS feed
Anton said on April 21, 2009

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.

Jonathan Snook said on April 21, 2009

@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.

Mark Wunsch said on April 21, 2009

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!

Doug said on April 21, 2009

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.

Matthew Anderson said on April 21, 2009

Sounds rad! I'm watching you! ;)

Radoslav Stankov said on April 21, 2009

Sounds great :) I will definitely keep an eye on it, 10x.

Ivan said on April 21, 2009

Hah! I've had this idea for some time now, too. Hope you make it work :-)

Michael said on April 21, 2009

Sounds interesting, will you be open sourcing Snitter as well (assuming it's not allreay)?

Chris Wallace said on April 21, 2009

Very cool, I'd love to tinker around with it once you've got it to a point where it's usable.

Andrew Yates said on April 23, 2009

Missed the Snitter updates, look forward to seeing an update soon!

Dave Johnson said on April 26, 2009

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.

Jonathan Snook said on April 26, 2009

@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.

Sorry, comments are closed for this post. If you have any further questions or comments, feel free to send them to me directly.

Want to learn about scaling CSS for large projects?

I'm available for full and half-day workshops on scalable CSS architecture. I can provide on-site training for your team. Interested?
Get in touch.