As your options multiply, I think there are few excuses in 2009 not to develop using portable, free and open source, multi-platform, mobile-ready platforms — period. We talk a lot about the Java side of the pond, or even C/C++, but the other reality is you have options for just about any job using just about any language of choice.

If you’re a developer (or programming artist), it’s worth paying attention.

If you’re a user, you should be able to look forward to being able to use whatever OS you like — Linux included — and be able to work with visuals.

Clutter is a library for creating “visually rich” apps. That could be a UI, or it could be a “rich client,” or a VJ and animation app. How cool is Clutter?

  • It’s built in C, but you can use C++, Perl, Python, C#, Vala, and Ruby.
  • It does scene graphs, at least for manipulating 2D elements in 3D space.
  • It works on Linux, Windows, and OS X. It supports Cocoa.
  • It does OpenGL – including shaders and FBOs. It does mobile OpenGL ES.
  • It does animation, with paths and transitions and behaviors and timelines.
  • JSON-based scripting.

The Clutter Toolkit

And it’s all free and open source. So why, exactly, are you still sticking with clumsy proprietary tools that don’t do what you want and lock you into some platforms, but not others? (Okay, I know there are some good reasons for that, but still — you get the point.)

Anyway, let’s skip straight to video. Part of what’s nice about Clutter is its support for some nice rich libraries (Cairo for graphics, GTK+ for UI, Box2D for physics, and WebKit for the Web). Best of these: GStreamer, the truly-amazing, truly compatible, faster-than-what-you’re-using-now video playback library. (And yes, GStreamer can even best QuickTime in some performance tests from what I’ve heard.)

Irish-based VJ and developer Luis de Bethencourt — also the lead behind Ubuntu Studio — has a nice post on the topic.

awesome (gstreamer * clutter) [The Phrygian Cap]

In just a few lines of code, he pipes video output from GStreamer to Clutter.

Manipulating that texture is then a piece of cake, meaning this could be a fantastic environment to build a live visual app. (One hint to the Clutter folks — time for some nice eye-candy screenshots. Or maybe this community could help make that happen.)

I love Java and Processing, but, um, look out. This is a strong option, too. (And even in Processing/Java development, I’m now using GStreamer, so it’s all in the family.)