Table of Contents:
Apertis follows an app-centric architecture. This means that the development is more vertical and not layered as in automotive domain. This reduces dependency and leads to less time to market.
SDK is designed to make app development fast and easy while maintaining backward compatibility. The system gets upgraded periodically; however the applications should not be affected. This is achieved by writing apps against SDK APIs. The SDK APIs are ensured to maintained backward compatibility.
The SDK will not only expose native system services integrated into the OS, but also complete high level features which are of interest for multiple Applications. The APIs are classified into Enabling APIs and SDK APIs.
-
SDK APIs: Realize the high level features of the SDK behind the scene (e.g. an adressbook service which can be used by Apps to store and retrieve contact data in a joint place). They are dedicated APIs, provided with good documentation and sample code, easy to use and with backward compatibility guaranteed exposed with the intention to be used by the Apps.
-
Enabling APIs: These are APIs from libraries/services that are typically taken from Open Source (for example, Telepathy, Tracker). Apps which use these APIs directly need to maintain the stability on their own due to API or ABI breakages. Effort may be made to ease or remove transition issues when ABI or API breakages happen.
Trying to encapsulate these into SDK APIs will be a continuous process within Apertis.
-
OS APIs: These are more fundamental APIs, usually used by the Enabling APIs to provide higher-level functionality. Platform upgrades may require adapting applications to new APIs and/or ABIs for these.
The custom application framework based on the Canterbury app manager has been
removed from v2022dev2
in favor of upstream components like Flatpak, see the
application framework document for
more details.
Please see the contribution process for guidance if your application depends on a component that is not including in Apertis.
Many of the Apertis specific packages are named after sites in the UK where significant Roman archaeological hoards were found.
Core Applications
These are a basic set of applications that are bundled together with the system and get updated with the system:
- frampton: Audio player
Frampton has been removed from Apertis as of
v2022dev2
. - eye: video player
Eye has been removed from Apertis as of
v2022dev2
.
Infrastructure
Some infrastructure applications and services also need to be available as part of the system to provide the basic UI even if there are no user focused applications:
SDK services
-
mildenhall-launcher: Every app installed in the system will be listed by this graphical application and be available to be launched.
Mildenhall-launcher has been removed from Apertis as of
v2022dev2
.Purpose Git repository Application Launcher https://gitlab.apertis.org/pkg/mildenhall-launcher -
mildenhall-popup-layer: Graphical application for displaying popup notifications.
Mildenhall-popup-layer has been removed from Apertis as of
v2022dev2
.Purpose Git repository Popup Notifications https://gitlab.apertis.org/pkg/mildenhall-popup-layer -
mildenhall-settings: Provides access to system and app settings.
Mildenhall-settings has been removed from Apertis as of
v2022dev2
.Purpose Git repository System settings https://gitlab.apertis.org/pkg/mildenhall-settings -
mildenhall-statusbar: Status information shown at the top of the screen
Mildenhall-statusbarhas been removed from Apertis as of
v2022dev2
.Purpose Git repository Status Bar https://gitlab.apertis.org/pkg/mildenhall-statusbar
Enabling Components
OS APIs
- eglibc: Basic OS interfaces
- GLib: Basic programming framework
- OSTree: Atomic software updates
- systemd: Service
management service, used as both a system service and a user service. The
system instance is process 1 (the first process launched by the kernel after
leaving the early-boot environment), and is responsible for starting and
monitoring all system services and all user sessions. The per-user instance,
systemd --user
, manages user services.
Full package index
source package indices: Full package list in TSV format, categorized under different repository components, per platform release
UI Framework
Provides
- In apertis, Clutter library is provided for UI creation.
- Clutter is an open source software library for creating fast, compelling, portable, and dynamic graphical user interfaces.
- Use Open GLES for rendering.
- Comes with rich animation f/w with vast gesture support.
- Provides layout management for easy lay-outing of widgets.
SDK services
-
libthornbury: libthornbury is a bunch of user Interface utility libraries. Thornbury provides the helper function for customized JSON parsing which is used in view manager, texture creation for static .png files or download from the web sychronously/asynchronously using libsoup to create the texture using GdkPixbuf,View manager is intended to create/manage the views in an app using Clutter, ItemFactory is used to instantiate any given widget type which implements MxItemfactory. Model to give the MVC approach to the app inspired by ClutterModel.
libthornbury has been removed from Apertis as of
v2022dev2
.Purpose Git repository UI utility library https://gitlab.apertis.org/hmi/libthornbury -
liblightwood: libLightwood is a widget library. It has all the basic widgets like buttons, lists, rollers, webviews, widgets, multilines and textboxes, and can be extended to add functionality to these base widgets.
liblightwood has been removed from Apertis as of
v2022dev2
.Purpose Git repository Widget library https://gitlab.apertis.org/hmi/liblightwood -
Mildenhall: Provides the reference UI widgets, used by graphical applications.
Mildenhall has been removed from Apertis as of
v2022dev2
.Purpose Git repository User interface widget library https://gitlab.apertis.org/hmi/mildenhall
Enabling Components
OS APIs
- gdk-pixbuf: Image manipulation
- pixman: Low-level graphics
- Pango: High-level font rendering
- Mesa: Low-level graphics
- harfbuzz: Low-level font rendering
- freetype: Low-level font rendering
- JSON GLib: (De)serialization of JSON
- LLVM: Compiler technology
- libxml2: XML Parsing
- libxslt: XML Transformation
Application Framework
This section describes the components of the Canterbury legacy application
framework, which has
been removed in v2022dev2
and is therefore not recommended for new development.
See the application framework document
for further information on the new, replacement framework.
Provides
- Launching a new Application (Launch-mgr)
- Explicit or implicit information (Combination of Action, URI, and MIME) can be used to determine an app to launch
- Application life cycle management (activity-mgr)
- Managing application launch history (LUM)
- Audio management and audio priority handling(audio-manager)
- Sharing mechanism
- Application preferences (prefernce-mgr)
- IPC communication (D-Bus)
- View switching and in app back handling (View-Manager)
SDK services
-
Canterbury : The core process in the system which deals with launch and kill of applications to be run on the system, including management of applications life cycle, creation and maintenance of application stack, etc. It also interacts on a regular basis with few other services for resource management of applications’, interaction with audio service (for audio handling and management), data exchange service (to facilitate inter-application data exchange) being 2 examples.
Canterbury has been removed from Apertis as of
v2022dev2
.Purpose Git repository Application management and process control service https://gitlab.apertis.org/appfw/canterbury -
Didcot: Service which mediates file opening by media type (content type, MIME type), URL opening by URL scheme, and other data sharing between user applications.
Purpose Git repository Data sharing and file opening service https://gitlab.apertis.org/appfw/didcot -
Newport: It manages large downloads for applications and other services running on the system (browser, email, other devices, etc).
Purpose Git repository Download manager https://gitlab.apertis.org/appfw/newport -
Barkway: This service caters to the global UI, providing a popup management framework, consisting of a user service and libraries that interface with it.
Backway has been removed from Apertis as of
v2022dev2
.Purpose Git repository Global popup management framework https://gitlab.apertis.org/appfw/barkway -
libseaton: Provides interfaces to store persistent data. It is a shared library using SQLite as the backend database.
libseaton has been removed from Apertis as of
v2022dev2
.Purpose Git repository Persistent data management library https://gitlab.apertis.org/hmi/libseaton -
libclapton: Library which is used for system information and logging.
libclapton has been removed from Apertis as of
v2022dev2
.Purpose Git repository Logging library https://gitlab.apertis.org/pkg/libclapton -
Ribchester: The service responsible for managing the application and services mount point and preparing the partitions based on the framework.
Purpose Git repository Application installer/mounting service https://gitlab.apertis.org/pkg/ribchester Ribchester has been removed from Apertis as of
v2022dev2
. -
Rhosydd/Croesor: Rhosydd and Croesor are system services for handling access to sensors and actuators from applications. It provides a vendor-specific hardware API to connect to the services which control the hardware, and a SDK API for applications to use to access it.
Purpose Git repository Handling access to sensors and actuators https://gitlab.apertis.org/appfw/rhosydd Sensor backend utilities https://gitlab.apertis.org/appfw/rhosydd -
Shapwick: Shapwick is a platform component which monitors resource use. It provides a system service and a library for communication with the service.
Shapwick has been removed from Apertis as of
v2022dev2
.Purpose Git repository Resource Monitoring https://gitlab.apertis.org/pkg/shapwick
OS APIs
- SQLite: Data storage
- GMime: File format support
- D-Bus:
dbus-daemon
is a platform component, used as both a user service and a system service. The system bus,dbus-daemon --system
, connects applications and platform components to system services, and mediates their access to those system services. All components that are able to connect to the system bus may listen for signals (normally broadcasts) from authorized system services. All other accesses, including sending signals, are prevented unless they are specifically allowed by configuration. The per-user session bus,dbus-daemon --session
, is a user service which connects user applications and user services together and mediates their communication.
Connectivity
Provides
- Cellular and Wi-Fi Connection
- Connman manages internet connections (Automatically connects to last used network).
- Bluetooth
- Based on Bluez and profiles (PBAP, A2DP, PAN)
- Discovering / bonding / getting contacts from cell phone
SDK services
- Beckfoot: Beckfoot is performs connection management and handles system connectivity services like network handling, wifi management, management of Bluetooth devices etc.
Enabling components
OS APIs
- Bluez: Bluetooth technology
Internet Services
Provides
- http clients
- Connected services (PIM)
Enabling components
- libcurl: the multiprotocol file transfer library
- libecal (Evolution Data Sever)
OS APIs
Multimedia
Provides
- Playback of audio and video contents (local and streaming)
- Capturing images and recording audio and video
- Scanning & Playback of radio
- Complete audio management
- Extracting and displaying media content information
- Integration of External apps like VLC.
SDK services
-
libgrassmoor : libgrassmoor is a library responsible for providing media info and media playback functionalities
libgrassmoor has been removed from Apertis as of
v2022dev2
.Purpose Git repository Media information and playback library https://gitlab.apertis.org/hmi/libgrassmoor -
Tinwell: Is our Audio service. It focuses on complete audio handling for the system and provides facilities to play, buffer, record audio streams. It interacts with Canterbury to manage system audio effectively when multiple audio sources are active.
Tinwell has been removed from Apertis as of
v2022dev2
.Purpose Git repository Media playback service https://gitlab.apertis.org/hmi/tinwell -
Prestwood: This service manages media and handles any activity related to the removable media (such as mounting them), UPnP devices, etc and indicates when they are ready for other services to communicate with them.
Purpose Git repository Disk mounting service https://gitlab.apertis.org/hmi/prestwood
Enabling components
- Audio Manager: Audio Policy Management
- PulseAudio: Software mixing multiple audio streams
- Multiple-Format Codec: Various support of codec
- Media Content Service: Content management for media files
- WebKitGTK+: Web engine
- Poppler: PDF rendering
- Canberra: High-level sounds
- Grilo: Media indexing
- Tracker-extract, Tracker-miner, Tracker-sparql: Media indexing
OS APIs
-
GStreamer: Low-level multimedia
Apertis deploys only license verified Gstreamer plugins. Each Gstreamer plugin is developed under the LGPL license, but only gstreamer core, base and good provide license and patent-free plugins. The ugly and bad plugins are not considered safe from the license and patent issues. The “bad” plugins usually have API stablity issues as well as license problems. In addition, the plugins which have potential issues with patents, or license fees should be located in “ugly”. For more information, please refer to gstreamers documentation.
Navigation
Provides
- Location based services
- Map
- Route guidance
SDK services
- Traprain: Traprain is a set of libraries allowing navigation services,
such as a car GPS routing application, to share navigation and routing
information to third party applications.
Purpose Git repository Navigation and routing libraries https://gitlab.apertis.org/appfw/traprain
Enabling components
- Geoclue – Deliver location info from various positioning sources (http://freedesktop.org/wiki/Software/GeoClue/)
- libchamplain – Map rendering (https://wiki.gnome.org/Projects/libchamplain)
Telephony
Provides
- Call handling
Enabling components
- ofono - includes consistent, minimal, and easy to use complete APIs for telephony
VoIP, IM and Groupware
Provides
- IP telephony
- Chat, etc.
Enabling components
- Telepathy-GLib (http://telepathy.freedesktop.org/doc/telepathy-glib/)
- Telepathy: Communication framework
- libGData (https://developer.gnome.org/gdata/unstable/)
- SyncEvolution D-Bus (http://api.syncevolution.org/)
OS APIs
- Farstream: Communication