Linux application frameworks overview

The diagram below gives an overview of the Linux application frameworks (aka Linux user space components), that rely on Linux kernel.
It shows the main components, grouped per functional domains, but it does not intend to be exhaustive: the user can add or remove components via OpenEmbedded recipes to fit with his application needs.

Zoom out to OpenSTLinux distribution
OpenSTLinux OE.png

OpenSTLinux OE legend.png

Generally speaking, the application frameworks (aka middlewares) are software pieces that are neither the Linux kernel or the device drivers, nor the applications. In other words, they are the intermediate software between the application software and the kernel or device drivers software. Thus, they are abstraction layers used by different applications to ensure and ease their flexibility, portability, security and interoperability. The main advantage of such application frameworks is to reduce the complexity of the applications with the provided generic services that would be duplicated in the applications otherwise. The counterpart is that they might introduce an overhead, which might impact the overall performance.

Examples of such application frameworks:

  • The libusb library for a generic access to USB devices
  • The libiio library to ease the development of software interfacing Linux Industrial I/O (IIO) devices
  • The Advanced Linux Sound Architecture (ALSA) libraries for audio functionalities
  • The Wayland-Weston display/graphic framework
  • The GStreamer multimedia framework (library for constructing graphs of media-handling components)
  • and much more as illustrated in the figure above