QML Hype
So yesterday I've skipped the chance to watch some "exciting" QML demos in Helsinki. This was quite surprising to some of my KDE rooted team mates. They didn't understand how I could not show the slightest sign of excitement.
Well, but actually I wonder for months: What's actually the fancy and awesome, the brilliant new, the exciting part of QML? It doesn't seem to be rocket science. It's nothing new. Declarative UIs are done for ages. To name some very few implementations there are Windows and PM/Shell RC files, Glade, GtkBuilder. You want to mix declarations with managed code? XUL and XAML have visited that land. You want to use JavaScript for your UIs? Flash, XUL, Dynamic HTML and Web Widgets, GObject Introspection.
So what am I missing except that Qt finally catches up to its competition? It's a welcome addition, but why should I be overly excited and die of excitement?
Most of the options you mentioned are either non free software (even closed source) or are not canvas based (Glade for example).
It's just impossible to create a richUI application using Glade. The only opensource technology that is comparable with QML is Edje from the EFL toolkit.
Cheers,
Glade and GtkBuilder are really not what QML is, you may compare Glade, GtkBuilder with QtDesigner, wich is basically the same - and may I add, is older than GtkBuilder or glade - . but QML? come on ;)
you may still yeld that qt finally catches up to it's competition, but... using fallacies in the place of truth?
Commenters, how about actually answering the question, maybe even in some detail?
It would be much better if it was called GML.
Please don't die of excitement! :-)
The cool thing with QML is that you can give it to a "designer", no need for C++, etc. With the QtQuick Designer tool (a part of QtCreator 2.0) you can handle it all through a graphical designer.
All the components of QML (JavaScript, states and transitions, graphics effects, animation classes) are available in 4.6. What is exciting about QML is the packaging and ease of use.
etcetera, etcetera, etcetera
Yah.... with a G it will be more open and such. and everybody loves G, because, you know, it's more gnucious.
now, seriously, GtkBuilder and Glade, and the other opensources examples besides Edge ( and that include XUL ) are just an API for creating User Interfaces from XML - Descriptions. ( and in that sense, QtDesigner is the same ).
now, QML on the other hand is a complete different beast ( and not because the language that it uses ( something similar to json ) since it could have the same effect using XML ( but that's not sane for human - writting ) ),
for a quick understanding of QML,
http://labs.trolltech.com/blogs/2009/...
It makes it possible (and easy!) to have shiny animated flash-like UIs. Animation is the key difference.
There really aren't any competitors in the GTK world, but I think you knew that and are just pretending that it's nothing new so that you can say GTK isn't missing it.
Being able to declare animations and transition paths for your UI elements by describing their state across the transitions, rather than having to generate actual animation frames or rebuild the GUI on-the-fly in your code.
You "declare" your elements and the transitions they can perform, and Qt will automatically handle the animation.
Can GTK do this?
So, as far as I can tell.. Its ClutterScript. But with a Designer tool too?
It's JavaFX Script for Qt.
I'm not sure what JavaFX' and ClutterScript's capabilities are, but to me, as a developer using Qt, QML appeals as it lets me separate UI from code even more.
My code no longer have to carry code for setting up and handling the bling (animations, etc). I can trigger events in "QML space" and have QML trigger stuff in "C++ space" in a simple way, and I can expose a standard QAbstractItemModel interface to "QML space" and it Just Works(TM).
As for the G being more free. I know that Heinz and Tomaz probably said it and blinked their eyes and smiled. But still. It is an old discussion. Qt is free software - licensed under GPL 3.0 and LGPL 2.1.
so, it's ClutterScript plus ClutterSmith? ;-)
http://git.clutter-project.org/cgit.c...
Yah, There's no more discussion about the freeness of Qt, it's as free as it can gets ( I develop with it, btw ;) ) , I was just quoting LinuxHater's blogpost.
"Remind yourself that OO in C is not so bad. assert(gtk_no_really_its_not_so_bad). Also, remind yourself that GTK+ is way better than Qt because it has no commercial company writing code for it. So, you know, it's more free, or something, and it's got a + in the name."
@Tomaz: one has to love a + :-)
The whole QT/KDE promo strategy is focused on exagerated hype about old or not-so-new stuffs, considering the amount of comments I daily find in blogs it seems they have more "community sellers" than developers...
@Bob and yet.. a week commit log from KDE is bigger than a month commit log from a lot of other projects... ( yah, I know, don't feed the trolls, but bléh. )
Mixing structure and code is an interesting design choice, it may be just me, but I really want structure, styling, and logic to be separated.
Now, Clutter, GObject introspection and Gjs or Seed and you have exactly that: JSON to describe the structure, ECMAScript to code the logic, and CSS for the styling (Mx/St inside gnome-shell).
@Damien: it should be possible combine 'Smoke libraries', the Qt/KDE equivalent of GObject Introspection, with 'JSmoke' a JavaScript binding like GJS or Seed, and QML to produce something similar. I'm looking forward to doing some experiments anyway to see if it makes sense.
I don't know about whether it is a good idea or not to separate the JSON/QML part from the CSS part though. I assume this is something the QML developers have thought about.
Richard: it is entirely feasible to allow for inline css in json, just like in html. It just has not been implemented yet.
By inline css i mean an object property that takes a CSS string, rather than an embedded stylesheet. Something like this:
{
"style":"background: red; border: 1px solid black"
}
@mathias: have you tried it for an extended period of time? The nice thing about it IMO is the simplicity and elegance of writing UI's, and the speed of implementation and deployment. Literally, just copy the QML files to mass storage on the N900 and it flies, GL/ES accelerated.. I know that other technologies do the same, and you're right that on a feature level there's nothing fundamentally new here (except maybe property binding to JS expressions?) What's so cool is how easy it makes life for both devs and designers, allowing them to work better together.. Well, that's my objective perspective anyway - I totally respect that others have alternative tools and feel more comfortable using them ;)
(1) """So yesterday I've skipped the chance to watch some "exciting" QML demos in Helsinki."""
(2) """Well, but actually I wonder for months: What's actually the fancy and awesome, the brilliant new, the exciting part of QML?"""
Maybe if you haven't skipped (1) you would have been able to answer (2)?
Note that I am not saying QML is the best invention since sliced bread: I have not tested it yet. Still, attending a demonstration about a new technology is probably a better way to learn about it than asking for some random comments on your blog.
To me the huge bonus of QML is that I can actually use it, note that I'm a designer that even as troubles with css, and cant touch real code like c++.
Even if the quality of my code is not great it allows me to pass a much better message to the coder implementing the software, he can see exactly as I want it to look like. Its a wonderful tool for prototyping designs for the mobile world.