[maemo-commits] [maemo-commits] r16867 - projects/haf/doc/mvo
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Fri Dec 5 03:25:39 EET 2008
- Previous message: [maemo-commits] r16866 - projects/haf/tags/hildon-fm
- Next message: [maemo-commits] r16868 - projects/haf/trunk/dbus/debian
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: marivoll Date: 2008-12-05 03:25:38 +0200 (Fri, 05 Dec 2008) New Revision: 16867 Modified: projects/haf/doc/mvo/system-model-2.txt Log: Modified: projects/haf/doc/mvo/system-model-2.txt =================================================================== --- projects/haf/doc/mvo/system-model-2.txt 2008-12-04 15:55:30 UTC (rev 16866) +++ projects/haf/doc/mvo/system-model-2.txt 2008-12-05 01:25:38 UTC (rev 16867) @@ -73,18 +73,27 @@ Source packages are released by their maintainers and compiled into binary packages. Binary packages are installed into devices etc. -In the following, "package" refers to a binary package. Source -packages are mostly ignored and treated as an implementation detail. +A source package is a file tree that follows the Debian policy for +source packages. (I.e., it has a "debian/" directory in it.) The +files can be, for example, stored directly in a filesystem, they can +be archived into a tarball, or hosted in a version control system. -Maemo supports multiple machine architectures. If a package is +A binary package is a file following the Debian policy for binary +packages. It usually has a name of the form +"package_version_architecture.deb". + +Maemo supports multiple machine architectures. If a binary package is machine architecture dependent, its sources are compiled once for each architecture. These separate compilation results are stored in -separate files, but this text still treats them as a single package. +separate ".deb" files, but this text still treats them as a single +binary package. In other words, successfully building a package means compiling its sources for each machine architecture successfully. Different machine architectures are not allowed to drift apart. +In the following, "package" refers to binary packages. + A package has a name and a version, both strings. The name and version uniquely identifies a package. If a package with a given name and version already exists in the Maemo archive, no other package with @@ -92,38 +101,124 @@ * System architecture -Maemo is purposeful and flexible. +The Maemo system is documented as a set of hypertext documents. This +set is generated from information found in the Maemo archive. Some of +it is manually written and extracted from specially marked packages, +other parts are generated programmatically under control of other +packages. ** Components -Components are in packages. +Components are the basic software artifacts: static ones like +programs, libraries, modules, plugins, functions, classes and dynamic +ones like data bases, processes, objects, pipes. Static components +are contained in packages and the package management tools can map +from many static components to package names. Dynamic components +appear at run-time. +Components are identified and named in an ad-hoc manner when it is +helpful. Components are expected to change frequently and are not +formally tracked in the architecture documentation. + +** Subsystems + +A subsystem is a collection of source packages that are functionally +related and maintained in close cooperation. Subsystems roughly mark +the boundaries between "us" and "them", where cooperation between +developers no longer happens automatically and can benefit from a +little formality. + +Subsystems have unique names and are tracked in the architecture +documentation. + +Every source package must belong to exactly one subsystem, and a +source package formally declares its subsystem. Thus, the source +packages of a subsystem do not need to be listed manually in the +subsystem documentation; rather, that list is extracted from the +packages. + ** Interfaces -Interfaces have names. Packages provide interfaces. Usually, the -package name is the name of the single interface it provides. +[ Need some input from the services discussion here. ] -Interfaces might have versions. If the name of the interface is the -name of a package, the version of the package is the version of the -interface. Otherwise, ... +Interfaces are contracts between components. However, interfaces are +only tracked on a subsystem level. -Packages depend on interfaces, which they formally declare, or just -use interfaces if they happen to be available. Whether or not a -interface is available needs to be determined in a way specific to the -interface. The package management system does not help. +Interfaces have a name, and optionally a version. -** Subsystems +Two things about interfaces are of interest: finding clients of +interfaces so that changes to interfaces can be managed, and finding +providers of required interfaces so that a working system can be +assembled from the available components. -Collections of functionally related packages. Packages declare their -subsystem. +In general, a subsystem should list all interfaces that it provides, +with pointers to their documentation. That list might be made by +automatically finding all interfaces provided by the packages of the +subsystem and filtering out the intra-subsystem interfaces by hand. +The interfaces used by a subsystem should be found automatically, as +far as possible, and the generated list should be included in the +documentation automatically. +Packages that use the interfaces provided by this subsystem should be +found automatically and listed as well. + +There are different kinds of interfaces, which are explained in more +detail below: package interfaces, virtual package interfaces, D-Bus +interfaces, file-based configuration modification interfaces, and +unclassified interfaces. + +A package interface is a interface that is made available by +installing a specific package. Examples are shared libraries, header +files to compile against shared libraries, programs, or sets of data +files such as translations. Package interfaces should follow Debian +policy. The name and version of the package is the name and version +of the interface. The package management tools make sure that package +interface dependencies are satisfied. + +A subsystem need only list those package interfaces of the ones it +provides that people will have to specify by hand (e.g. build +dependencies). Package interfaces that are handled automatically by +the build-tools need not be listed. + +A virtual package interface is a interface that is made available by +installing any one of the set of packages that "provide" the interface +(in the sense of Debian policy). The name used in the "provide" +declarations is the name of the interface. Virtual package interfaces +have no version. The package management tools make sure that virtual +package interface dependencies are satisfied. Virtual package +interface names must be unique in the Maemo archvie and must not be +the name of any package. + +A D-Bus interface is a connection that can be found on the session or +system D-Bus with a well-known bus name. The well-known bus name of +the connection is the name of the interface. D-Bus interfaces have no +versions. There is no automatic way to find clients or providers of +D-Bus interfaces statically, but there probably should be one. + +A configuration file modification interface ("file interface" for +short) is a interface that clients use by modifying well known files +or directories. For example, dropping .desktop files into +/usr/share/applications/hildon/ is a file interface. The well-known +name of the file or directory is the name of the file interface. File +interfaces have no version. Clients and providers of file interfaces +are hard to find automatically, but we should try. The provider of a +file interface might help with the process. + *** Top-level interfaces +A set of interfaces. + ** Layers -Subsystem completely in one layer. No dependencies from (a package in -a subsystem in a) lower layer to an upper layer. +The Maemo system is roughly structured into three layers: base, +middleware, and applications. +A subsystem must be contained completely in one layer. Thus a layer +is defined by listing its subsystems. + +A package in a lower layer can not depend on a package in an upper +layer. + *** Base Bottom layer, basic OS services such as hardware adaptation, network, @@ -142,12 +237,11 @@ *** Applications -Subsystems in the application layer are mostly independent from each -other. +Subsystems in the application layer are independent from each other. ** Domains -Collection of subsystems, maps to teams. +Collection of subsystems, map to teams. * Archive
- Previous message: [maemo-commits] r16866 - projects/haf/tags/hildon-fm
- Next message: [maemo-commits] r16868 - projects/haf/trunk/dbus/debian
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]