Contents |
The MeeGo compliance program is designed to make sure things stay compatible, such that the devices supporting a particular MeeGo version can run the same software, and so that app developers know how to build software which will run across the family. Simply put, we want to make it possible for an application developer to write a MeeGo compliant application once and run it on any MeeGo compliant device.
MeeGo compliance addresses two categories of compliance: MeeGo compliant applications and MeeGo compliant devices / software products (which will be referred to simply as "devices"). In both cases, the use of the MeeGo brand will be granted based on being compliant. Following is an overview of the approach for each of these categories.
For MeeGo compliant devices, we're taking a stack-based compliance approach, meaning that all MeeGo devices must use the same core software stack. Referring to the MeeGo architecture diagram, this core software stack is the MeeGo OS base layer plus the MeeGo OS Middleware layer.
In addition to a sharing the same core software stack, MeeGo compliance will have profiles for each device category (Netbook, Handset, and so on). A profile specifies additional required components for the profile (e.g. providing device category APIs), minimum hardware requirements and minimum hardware component requirements (such as cellular modem in the handset profile).
It's important to note that the device profiles won't require the inclusion of a complete user experience - but rather the UI framework providing core user interaction and APIs.
A MeeGo compliant device would be compliant to the MeeGo core software stack definition and one (or more) device category profiles.
Given that definition of compliance for devices / software products, MeeGo compliance for applications will verify that an application's external dependencies are satisfied by a MeeGo compliant device (in other words, that any libraries or other dependencies of the application are provided within the core software stack and target device profile)
An application can be written to be dependent only on the MeeGo core software stack - in which case it would run on any MeeGo compliant device. However, applications with UI would typically target a specific device profile - so for example an application could be MeeGo Handset Compliant - meaning that it would run on any device compliant with the MeeGo Handset profile.
Stack-based compliance means that a compliant device / software product must use the MeeGo package set without re-packaging - including the MeeGo version of RPM and the MeeGo package names.
Compliance requires the use of the MeeGo source packages for required components, and that any applied patches (e.g. to fix bugs found in the field) must not effect API, ABI, or defined functionality of interfaces.
Additional packages (beyond those required by compliance) may be added as long as they don't override MeeGo packages or provide functions with the same namespace of MeeGo APIs. Of course there will also be additional packages and components required to adapt MeeGo to run on a specific hardware platform (we call this "Hardware Adaptation Software" in MeeGo) - the compliance specification will call out any specific packages or components that may vary based on hardware capabilities.
A core part of the program is the Compliance Specification, which describes the rules and requirements for complying. There's more to the program (trademark licensing, application process, etc.) which will be added later.
The specification is intended to match up with MeeGo releases, so it uses a similar numbering scheme. Completed specifications are approved by the TSG. The current approved version is Spec 1.1
Some pre-release review versions are archived: Spec 1.0.99.9 | Spec 1.0.99.5 | Spec 1.0.99.4 | Spec 1.0.99.3 | Spec 1.0.99.2 | Spec 1.0.99.1 | Spec 1.0.99.7 Spec 1.0.80.8
Comments on the specification can go to the meego-dev mailing list (until we get kicked off!). For concrete bugs, feature requests, etc. please file bugs in the MeeGo bugzilla, there is a Compliance category.
Work in progress:
The Compliance Tools are used to check compliance for MeeGo Distributions or MeeGo Applications. The reference input is the MeeGo core package/file list and a minimal MeeGo reference image created by MIC2, which will contain all the required core packages, as well as source rpms.
For MeeGo distribution compliance checking, the input needs to include the OS image and the source rpms for all the packages.
For MeeGo Application compliance checking, the input is the application rpm file.
See ComplianceTools for details.
Tasks:
At the Meego Conference 2010, Mark Skarpness gave a talk on this subject.
http://conference2010.meego.com/session/app-compatibility-and-meego-compliance-program