As you hopefully know I am drawn to (or obsessed by) declarative UI technologies and have some long bets on one in particular (Swiby). There is a new one this year from Nokia/Trolltech. 'Kinetic' is based on their incredibly powerful and stable UI technology Qt. It is more a markup language with embeddable script fragments, as opposed to a real programming language masquerading as a declarative language, but it is incredibly powerful. The examples I have played with leverage JavaScript, but there are bindings to more languages, principally C++. Swiby of course leverages JRuby, and I think has the edge given some important capabilities of a pseudo-declarative language.

For what it is though, Kinetic is a very powerful thing. Checkout the Nokia page for it. From that page there are four or so articles, the first a good intro, including videos and the most recent about KDE integrations.

The markup style is similar to Swiby, Shoes, JavaFX. For example, the following snippet ...

source snippet

... is the button layout for a calculator example that looks like ...

screen shot

Here is the source for the CalcButton.qml file that's used for each button in the source above. Note the escaped/inline JavaScript function...

waterfall in requirements

What Kinetic lacks is a page by page browser capability as outlined in Swiby's "web" mode of operation. Given it already has a Javascript script language withe elegant integration (unlike HTML), it could easily be leveragble from a browser plugin as long as it could be run in a sandbox. It could also benefit from being scriptable directly in Ruby with a nested closure design like Swiby

While we are speaking about declarative UIs, on Monday a buddy is launching a declarative technology that is far simpler than the the nested closure idea of Swiby. Simpler in that it is easy entry and should appeal to anyone wanting to make a small and beautiful web application quickly. I will blog more after the launch. What I saw demoed is a jaw-dropper and one of those things you kick yourself for not creating first. What Kinetic and this buddy's stuff have in common is that they are designed for humans and visual layout tools. With the likes of GWT and Cappuccino you could claim that their best edited by neither (no offense GWT devs). Next year is going to be the year where declarative UI technologies come to the fore I hope. I wish I could get the boss to invest in one or more of these!


September 26th, 2009