My first Maemo 5 creation, 100 Boxes, is publicly available for download on maemo.org catalog (also known as Maemo Extras).
Now I can report my experience as a free software developer for Maemo platform. Read on.
Background: I know Linux quite well, but before this project I had never developed anything with GTK, nor I had created a new project with GNU autotools, nor I had created Debian packages. These are my impressions.
- SDK. It is easy enough to use, once understood the approach. At www.maemo.org there are installation instructions. Recently at Forum Nokia a graphic install wizard has been released. Mature integration with an IDE is currently missing (Eclipse integration is a promising work in progress and future Qt development with Qt Creator should be even better), but scratchbox is a fine cross-compilation environment. Simulation of a Maemo 5 machine is allowed for testing and debugging.
- APIs. There is a very rich collection of open source libraries that have been used on GNU/Linux systems for many years. In particular I used GTK and Hildon for graphical user interface, curl for HTTP connections and libxml2 from GNOME for XML parsing. All in all, programming in C for Maemo is not difficult by virtue of the power of available libraries.
- Documentation. All libraries are well documented, due to their maturity in mainstream Linux distributions. In the developer’s area of www.maemo.org there are links to all needed documentation. Moreover, many useful guides, tips and examples can be found on the Web. Maemo developer guide on www.maemo.org website is a work in progress: some sections are complete and very accurate (the one on autoconf/automake is particularly excellent, I have never seen such a clear and detailed guide), other ones are more superficial.
- Quality assurance process. Maemo community has defined a rigorous policy for quality assurance of hosted open source projects. Basic quality checks are automated. Further quality assurance is provided by a sort of peer review process among community members. A package must receive 10 approval votes by members that have tested software and can assure it passes the quality checklist defined by the community. Therefore the process leading to the approval of an application can be quite long, also due to limited human resources in the community. [In my case, I submitted my first application release on November 6th and three times community members pointed out problems in packaging e documentation. Finally the fourth revision, released on December 5th, received the tenth vote on December 22th and the next day it was published. The next release (version 0.6, the current one) was also submitted three times due to bugs discovered in new features by testers. The third revision was submitted on January 10th and received the final approval on February 16th.] As you may understand, though far from perfect, this process ensures that software in maemo.org catalog does not cause system instability, does not crash often, does not drain the battery too much, is well documented and provides indications on how to report bugs.
- Maemo Garage. garage.maemo.org is the incubator of all open source projects of the community. It provides useful tools, such as a task tracking system, a Web space for the project website and a version control system (either Subversion or Git). A key advantage of open soure projects is the possibility to see code written by other people. This way I was able to learn how to do some things that were not documented thoroughly, such as the use of recursive makefiles and some details on deb packaging tools.
- The community. The heart and brains of Maemo: a community of passionate, competent and helpful people. Without www.maemo.org Wiki resources, Garage projects, the developer mailing lists, the comments in QA stage, it would be much more difficult to create good software for this platform. Let’s hope that, thanks to the success of the N900, more and more people join in with collaborative and constructive attitude. There’s no need to be a programmer: the work of software testers, bug/feature requesters and translators is as much as important. The key is to follow community guidelines and spend some time with goodwill.
All in all, it has been a very interesting and instructive experience in multiple aspects, both technical and organizational. I am very willing to continue Maemo development, both improving 100 Boxes and working on other projects. Finally, I hope that passion, infrastructure facilities and experience in process governance will be transfered into the newborn MeeGo community.