|Getting Started with MeeGo|
You do not need to sign a contributor agreement to start working on MeeGo (or assign copyright), but you are required to attach a "signed-off-by" tag to your patches certifying that the patch contains your work, is your property, and adheres to the appropriate open source license.
Next, you will want to find the appropriate project and project maintainers to start directly participating. Remember that MeeGo tries to work with upstream projects whenever possible, so you may actually discover that the subsystem you wish to contribute to is actually hosted elsewhere and maintained by a different project. For the MeeGo-hosted projects, however, most of the ongoing development discussion is done on mailing lists. The MeeGo wiki lists them all — there is a core MeeGo-dev list for general development discussion, plus specific development lists for each UX, and development lists for each core component of the MeeGo Architecture. The project also uses the Freenode IRC network, with channels reserved for open discussion, regular meetings, and other collaborative topics.
There are several important non-code contributions you should consider working with as well, most importantly bug reporting and triage, updating and maintaining the documentation on the wiki, and executing QA tests to locate and document bugs. In addition, the MeeGo project maintains an active forum for developers and end-users which is also always looking for regular contributors.
Developing MeeGo Applications
But don't think that hacking on MeeGo itself is the only interesting way to get involved in the project. The core MeeGo releases include a suite of productivity and networking applications, but enabling third-party developers to write new apps for — or port existing apps to — the OS is one of the most important tasks for MeeGo's long-term success. As mentioned above, device makers may customize the user interface or build their own apps, but at its heart MeeGo is a Linux distribution, and needs open source apps from independent developers to really be interesting.
To get started, take a look at the MeeGo API documentation, starting with the API view of the overall MeeGo architecture. The system provides the familiar Qt application framework for application developers, supplemented by the QtMobility framework that adds common services necessary for portable and mobile devices (such as contacts management,location-based services, and mobile messaging), as well as OpenGL ES for 3-D graphics and hardware-accelerated 2-D graphics.
There are currently four "platform" APIs in the MeeGo stack that are available, but are regarded as "testing" libraries from a stability standpoint: the MeeGo Touch framework, which supports touch capabilities not in Qt or QtMobility, the GStreamer multimedia framework, the PulseAudio audio server, and the MeeGo Web Developer Library, which enables Web developers to write standards-based Web apps for MeeGo. If you need the advanced functionality of these APIs today, you can count on their presence, but in the long term the project is planning on integrating support for them into the Qt and QtMobility APIs recommended for general usage.
Once you know what is available to you, you can start setting up your development environment. The app development cycle begins with the MeeGo SDK. The SDK includes the Qt Creator IDE, plus toolchains for both Intel and ARM architectures, compilation targets for each UX, and MeeGo runtime images for the QEMU emulator. The SDK is officially tested on both Fedora and Ubuntu, though the community regularly tests it on other Linux distributions and maintains a wiki page with its current status. To get started, read the installation and setup document, which explains the hardware and software prerequisites, plus how to download and install targets and runtime images, and how to set up Qt Creator to use the MeeGo SDK toolchain.
Before you distribute your code to others, you will also need to package it for MeeGo. Although MeeGo uses the RPM package format, it is a distinctly different experience from Red Hat, Fedora, or other RPM-based distros. You should read the packaging guidelines to get a feel for how MeeGo packages are built, although a portion of that document pertains only to packages that are part of MeeGo itself. For third-party apps, there is a tutorial from the 1.0 release of the SDK that walks you through the process, which should be updated for 1.1 in the near future.
You can build your own local packages, but that may not be the easiest solution. The newest addition to the development cycle is the availability of the MeeGo Community build system. This is an instance of the openSUSE project's Open Build Service, which allows third-party community developers to build and package their code against stable MeeGo build targets. At the moment, the infrastructure is still being set up, so you can request access, since accounts are not being automatically created. Check the OBS wiki page for instructions as they are updated.
You can also use the community OBS to host a personal or team package repository, which makes it easy to distribute your work to testers and end users. The community OBS will power the MeeGo Garage, a third-party application repository for community-created, open source applications. It has not launched yet, but it is a direct descendant of the successful Maemo Garage project. You certainly are not required to use the community OBS or MeeGo garage, however: you can distribute your applications individually, or through third-party repositories or "app stores."
Much of the wiki documentation is directed at developers of new applications, but many existing Linux apps will run on MeeGo with very little alteration. The porting guide is filled with general information about porting from other distributions to MeeGo, and guidelines for meeting the MeeGo compliance program specifications. It covers packaging supporting libraries, adapting your code to the MeeGo architecture, working with the MeeGo security framework, and specific instructions for trickier components like X, audio, and the input components used by handheld devices.
Finally, although Qt is the officially-supported development framework for third-party applications, GTK+ applications can run on MeeGo as well, often with very little adaptation. There is a special porting page on the wiki outlining what is required to port existing GTK+-based apps to run on MeeGo.
MeeGo is a different creature in the realm of Linux. In some respects, it is much like any other Linux distro — focusing on packaging, integration, building and supporting releases, and helping third-party developers. But in other respects it is very unusual; something like a "metadistribution" — because it ships multiple UXes designed for different types of hardware, but it also expects customers to take its code and modify it heavily before delivering it to consumers. Once you dig into the project, however, you can see that it's just Linux underneath — although the opportunity it offers app developers to write open source programs for netbooks, phones, and other devices is certainly new territory.