User:Stskeeps/SailfishOS

Architecture overview
Sailfish OS is a collection of source code software packages making up as a whole a full mobile operating system.



It is divided into three layers, the Sailfish OS Core and the Sailfish OS UX and a per-device product hardware adaptation which is typically not considered part of Sailfish OS.

The Sailfish OS Core essentially consists of a minimal viable set of software packages (such as systemd, coreutils, bash, glibc etc.) needed to boot a modern GNU/Linux mobile system with the Qt 5 UI framework on top along with enablers and background processes to support the SailfishOS application model and the basic SailfishOS applications.

The SailfishOS UX centers around the Sailfish Silica UI component set and the Sailfish OS homescreen, which hosts the application environment and provides basic system services such as notifications, window handling, window composition and display management. The Sailfish OS Apps make out the typically expected basic functionality of a mobile device such as a Clock, E-mail, Browser app, etc., which are all built using the Sailfish Silica UI component set.

The Sailfish OS Core and Sailfish OS UX architecture has been built with a framework approach in mind, as to accomodate additional points of plugging in open or closed source features or functionality, such as codecs, cryptographic algorithms, account support, preinstalled apps etc. This is shown by the ability to plug in a commercial offerings for Sailfish OS such as Android application runtime, 3rd party input methods, Exchange ActiveSync, etc.

The Hardware Adaptation layer is not shared across all device products like the Sailfish OS Core, UX and Apps are; as it deals with the unique properties of the hardware of a particular device product. This separation also makes it easy to port Sailfish OS between different hardware and chipset types without having to re-compile the entire OS for a specific device product. The hardware adaptation layer is however expected to provide shared common hardware adaptation interface towards the hardware for the use by the Sailfish OS Core and UX.