How I became a Qt advocate
Some personal news: I’m joining the Qt team to help making the Qt Project rock. A small change of floor at the Nokia offices in Sunnyvale (California) and barely a change to be noticed by my relatives and non-geek friends. Still, for me it is a big change, the end of a phase and the beginning of something fresh.
With a stable SDK released and a new product in the shops, this is the time when I would start shifting internally to the next product iteration. In fact this is what I’m doing now as well, but this time swimming upstream. In practice this means that I´m less conditioned by Nokia products (although they still pay my salary) and closer to the work of a wide community of organizations and individuals putting their bets in Qt.
My work keeps combining the big topics of community, openness, sustainability and fun – also understood by some as marketing & communication applied to OSS development. This is how I started contributing to the free software community around 2003, this is why Nokia recruited me for the Open Source Software Operations in 2007 and this is what I have done best since then.
At the beginning there was GNOME
I was introduced to the Nokia 770 in GUADEC 2005 by no less than the great Guillem Jover. In 2004 I wanted to recruit him but he had just moved to Helsinki to work for... Nokia! Two years later I would follow the same path.
Once a full time GNOME community contributor (founded by the Catalan government to assure a great GUADEC 2006 in Vilanova), my approximation to Qt has been directly related to the steps taken by Nokia in that direction. One day Ari Jaaksi (then the boss of my boss, Valtteri Halla) started to suggest the possibility to shift our basically GNOME Mobile compliant Maemo to Qt. A big debate followed and I contributed my dose of voice and brain. My strong arguments were that GNOME had a distributed setup combined with a more suitable license, plus Nokia was lacking the skills in house. Our team moved to Qt but I was never proven wrong. One morning we read in the news that Nokia was acquiring Trolltech, getting a big load of Qt skills in house. “Fair enough”, I told surprised to myself. Then the LGPL license came (a change I had been lobbying for since the Nokia-Trolltech deal was announced). And finally the Qt Project is here, willing to reach a diversified open governance setup like the Linux kernel, WebKit or GNOME itself.
My closer approach to Qt matters started after the Nokia N900 was released. As said, that was the time when I would start shifting to the next big iteration (Harmattan, a name that I had the honor to propose). The Qt 4.6 libraries were available for Maemo 5 and I felt it was the time to test the cross-platform compatibility promise. I proposed the Miniature project with only three hard requirements: chess, mobile & Qt. At the time C++ & QGraphicsView was the way, and good that Michael Hasselman was around, otherwise I wouldn’t have progressed at all. Things were not that easy yet.
Calling the Harmattan wind
By that time Peter Schneider was my manager and I was learning from him the usefulness of keeping activities and messages simple and focused (in this case in Qt). One day I started getting some tasks related to a project that one day would be introduced to the World as MeeGo. The fundamentals of that project were for me a dream come true: standard Linux & freedesktop.org stack plus Qt toolkit and development environment, developed openly by multiple parties, targeting multiple form factor devices.
Qt Quick started to emerge between the two equivalent frameworks that Maemo and Symbian were building. I became an internal advocate almost instantly, not because of any technical analysis (I’m not the guy for these things) but because of the basic principle of following and supporting the way proposed upstream, as opposed to attempting to create shortcuts on your own. It took a while, but one day a CEO called Stephen Elop made the call that no top manager had made before: focus on Qt Quick, other alternatives to be deprecated. In the meantime other old discussions had settled with similar trends: Qt Mobility, Qt Creator and the WebKit alignment.
Next Billion, no less
Between #feb11 and the Nokia N9 launch on #jun28 a lot happened and a lot was said, inside and outside Nokia. Everybody updated their CVs and so did I. Working in the USA as a foreigner with family and a visa tied to your company can be distressing in times of company changes. One morning I got a call from Daniel Kihlberg, who tomorrow will become my new manager. In short, he described a space where different dimensions needed to be combined successfully: Nokia’s Next Billion strategy, a truly open Qt Project and a rich Qt global ecosystem across different industries. Like all real-life equations, there are more factors, more dimensions and a lot of entropy. All in all the proposal fits my views and the type of game where I feel motivated and useful.
And here I am, ready for the next step. I’m permanently thankful to Carlos Guerreiro (and Zara) who actually pulled us to Helsinki. It has been a pleasure to be involved in ideas/projects like the Nokia open devices, the Hacker Editions, the Maemo Downloads (more than 100M!) and the Summits. It has been an extreme pleasure to work together with great people inside Nokia and out in the community, including brilliant unsung heroes like Soumya Bijjal or Niels Breet.
Let me say Big Thank You for these great years – even if I’m just moving downstairs.
Filed under: Qt | 38 Comments
Tags: GNOME, maemo, MeeGo, Nokia, Qt, Qt Project, qtquick
The Qt team started September with a Mega Release Day topped by a bunch of fresh information about Qt Developer Days, the main and dual headed event of the Qt community. I looked at the calendar and realized that I’m starting to be late on planning if I want to make it to Munich on October 24-26. I still don’t know about the European gathering, but I’m logically planning to be in the San Francisco event on Nov 29 – Dec 1.
Qt Dev Days is a good opportunity not only to learn and get to know about the latest technical progresses and plans: it is a chance to meet a wide variety of people face to face, discuss and exchange extensively. This is an element common to any good conference, but especially in the context of the Qt project here and now this aspect is essential. Qt has been in the eyes of many in the past 12 months, but too frequently simplified and polarized to levels that go far away from the reality of the Qt project and community today. I frequently refer to Qt as a jewel in the Linux and open source software stack. A very versatile and precious piece able to play with many different products, projects and organizations. Qt Dev Days shows this in a way no blog post or analyst insight can reflect.
I’m glad to see Intel, Canonical and Telecomm Italia in the keynotes, as well as other companies like Cisco or Panasonic Aviation in the Qt In Use sessions and the many sponsors taking the floor. The Qt project has many different stakeholders, and hearing about them helps enriching the perspective that (lately) is circulating almost obsessively around Nokia and handsets only. Of course Nokia and handsets are important for the Qt project, you will have a chance to see and grasp the latest Qt based products from Nokia and there are many sessions scheduled in the Technical Track covering that and more e.g. Qt in MeeGo, Symbian and Android. There are other sessions exploring the new areas such as Qt Quick in the desktop, training and tools specific for designers or te WebKit / HTML5 neighborhood.
Even if Qt Developer Days has been an event primarily professional, the trend has been to open the doors to the increasing interest and innovation coming from developers with not-for-profit motivations. If you are one of these, you have a way to make it to Munich / San Francisco and you have an objective way to show your Qt love and dedication, please poke me here or through my nokia.com address (easy to guess). We’ll do our best getting you to the event at a discounted price. Sorry, I can’t give more details now since I just poked the event organizers myself asking for details. In this context faster is better, just post/send a couple of lines with link(s) to your project(s).
Filed under: MeeGo | 5 Comments
Tags: Canonical, community, conference, development, Intel, Nokia, open source, Qt, qtquick
A month ago I downloaded the last Qt SDK, plugged my Nokia N9 to it and started writing from scratch a chess game UI. This week Miniature 0.3 Berlin Defence has been released sporting a demo UX running with real Qt Quick code of my own forge. I have learned a lot with the help of many and I can’t describe how happy I am now – even if this is only the beginning!
// Skippable background
This was my debut at programming, preceded only by HTML web pages in 1995-97 and a Basic sketchy game with 3 sprites that never went beyond the Commodore 64 we had at home around 1983. In fact as a teenager my vocation was always split between natural and artificial languages, and only after a close tie I started my studies in Communication Sciences – Journalism branch. Since then I’ve written a lot and I’ve learned to describe, specify and instruct by putting words one after another (still not as good in English as I would wish).
For what is worth I’m not a designer either. At the university I devoured the splendid collection of comic books of my faculty but I didn’t succeed at drawing my own strips. Still, I had the luxury of living surrounded by creative, practical and pragmatical people with a varied range of skills and tastes. Over the years I have developed some sense of how new things could look like and behave. Conscious of the big amount of time it takes me to use Gimps, Adobes and the likes only to come up with mediocre results, most of the times I resort to concepts on paper.
But let’s go back to the chess program.
// Skippable background about the chess program
Two years ago I had convinced the great Michael Hasselman (mikhas) and a few others to create the Miniature project, being my main tools of persuasion a plan on a wiki page plus a pencil draft. Not being a programmer or a designer, these are the weak arguments you have at reach to get things done. Miniature had a short and unstable life in the Maemo extras-devel repository for adventurous N900 users. You could say we didn’t succeed… yet some of my best moments with the N900 (and I had many) had Miniature running in the foreground. For instance, playing late night with the also great Iván Frade in Meritähti, the cozy and nutritious bar no tourist guide will recommend if you ever visit Helsinki.
After the N9 launch I saw with despair that proper mobile chess was still absent in the Qt catalog. I made a second call, and almost miraculously mikhas answered again, but this time stating clearly that he would focus on the backend and somebody else would need to work on the UI. I looked around. I looked myself in front of the mirror (mentally, I mean). The first Miniature had to deal with Qt 4.6 and QGraphicsView with no cutton or oil. Hardcore stuff. Now the declarative and Javascript friendly Qt Quick was at the forefront, waiving the slogan of Programmers and Designers Unite! I decided to give it a try, getting a tacit permission from my manager to call some of this time “training”.
And yes, this is great training! Sitting in front of tutorials and code examples for the sole purpose of learning is boring – at least for me. Trying out things, copypasting code from somewhere, asking on IRC and forums, building and rebuilding until the damn thing works is überexciting – at least for me.
// Finally some actual stuff
These are some pros and cons found during the first stages of this trip. I hope they are useful for others like me, getting started in Qt Quick and in programming. They are all mixed since frequently a con leads to a pro and vice versa. In some cases it’s not even clear whether the thing is a pro or con, but it’s remarkable anyway:
The Qt SDK is such a beast
And I got my way with relative ease. Accessing documentation while writing code, connecting to the device… The first time I couldn’t believe my dummy rectangle was showing up in the N9, an icon was added to the app grid and a .deb package was sitting in a local folder of my laptop.
But Qt Designer can’t be used yet
I had so much hope in Qt Designer for my first steps. I had played with it and it reminded me the old good Macromedia Fireworks, with the additional advantage of generating actual code. Then I found out that it was basically of no use here and now for MeeGo development.
Neither the Simulator, and even the emulator…
Qt Simulator didn’t digest MeeGo either, here and now. QEMU could but… Good that I had a device because the simu/emu would have required a lot more time for someone new like me, needing to see how things progress every 2 new lines.
Getting started with Qt Quick is really simple
Without Designer I quickly realized that typing directly the code in a proper SDK was simple enough and probably lead me to cleaner and more solid structures. I started to learn how QML thinks, and starting to guess what would and would not work even before pressing the build & deploy button.
The documentation is extensive, but still not consolidated
QML and Qt Quick have evolved a lot in a short amount of time, and different audiences with different background are meeting there almost for the first time together. All in all it feels that whatever is different from Qt/C++ is explained in detail (e.g. anchors or pure UI elements) while other parts closer to traditional Qt are mentioned with more brevity. This is surely fine for Qt/C++ developers, but this is also where the less experienced or more web oriented developers might get stuck. In some points I have missed more basic descriptions, wider code examples… oh, and many more screenshots showing how demo apps and components are supposed to look like without having to run them in the SDK.
The community is savvy and very helpful
Whenever you get stuck in something you start looking for help. I didn’t rely (much) on the professional developers sitting few steps away from my desk (except for really embarrassing basic questions). I put my immediate hopes in IRC, but being August and typing from PST got me more silence than expected in #qt-qml. Still I got some great answers from e.g. special and frals. #harmattan was a second resource but the Scratchbox – Python – middleware angle of that group is noticeable. #miniature is obviously useful but I didn’t want to exhaust the patience of mikhas… Then I decided to become a Lab Rat (now a Ant Farmer) in the Qt Developer Network and since then the forum hasn’t disappointed me once. Getting the attention of a troll, a certified specialist or just the right person with the same (solved) problem is just a luxury.
The veterans don’t have always the right advice for you
These days I’ve got many Qt answers to my QML questions… since I was asking to Qt savvy developers. That helped me understanding better my own questions, and finding out where to find the QML centric answers. Like for instance “how to put a link to a web page opened by the device browser?”. Sure, Qt and DBus can do wonders for you – but actually the right answer for me was something a lot simpler: Qt.openUrlExternally(). The feeling was familiar: years ago GNOME desktop developers would answer my questions with “open terminal and type…” when actually the desktop itself offered solutions not involving a console.
Backend and UI can really be developed in parallel
While mikhas has been working hard on a C/C++ backend containing abstract models, internal logics, capacity to talk to the Free Internet Chess Server via telnet and to plug into GNU Chess, I was able to define a UI with all its interactions almost autonomously. I actually started with an own QML project separate from Miniature, until mikhas liked what he saw and decided to integrate it. I just had to leave comments in the code: // FIXME this is a static string, the backend should hook here with a real variable. Now we are basically at the point where mikhas has a backend that play games you can’t see, while I got a nice UX that doesn’t know any chess. Sewing is happening as we speak.
Open source development is just great
If I started with Qt Quick from scratch one morning, on the afternoon I was already learning how to get that code and package out of my system, to be seen and tried by others. I didn’t get much attention at the beginning, but only the fact of writing publicly brought me to structure things as good as I could (still crappy, I know) and to comment a lot more and better that I would comment just for myself. Again the Qt SDK was useful here, generating packages that install and bridging with git nicely. Additional thanks go to the maintainers of paste.debian.net and to the various authors of little but useful code snippets borrowed here and there. Every time I said “I can’t be the first one having to do XYZ” turned out to be true. Someone had gone through that and was sharing the result with the World. Thank you, thank you very much.
// This is getting longer than expected. Again.
CONCLUSION
I feel a lot better, even if these days I’m suffering a lot more.
Playing with ListModel, GridView, states and animations hasn’t been always funny but after many trials and errors I got exactly the behavior and the effects I was looking for. Now a new Miniature contributor can come willing to implement the logics for e.g. chess by email and I know I will be able to help providing a decent UX. In the meantime Qt5 and myself are getting closer to deeper Javascript support, which looks promising and a sure continuation of the fun!
I’m about to start my second month of Qt Quick programming. Miniature 0.4, here we go!
Filed under: MeeGo | 6 Comments
Tags: chess, development, Harmattan, MeeGo, miniature, N9, N950, qml, Qt, qtquick



