Open webOS
Drag
             

Open webOS Architecture Diagram


architecture_diagram.png

Architecture Details

Core Applications

Core-apps include the following Enyo 1.0 applications: accounts, calculator, calendar, clock, contacts, email, and memos, and the Node.js-based services required to run them.

The core-apps repo is available here.

The repo for app-services, which is used by core-apps, is available here.

Back to top

Enyo

Enyo is an object-oriented JavaScript application framework emphasizing modularity and encapsulation.

The Enyo site is here.

Back to top

System Manager

The luna-sysmgr GitHub repository is here. It contains the webOS System Manager, which is a key webOS component responsible for:

  • Managing the application and service interface for physical devices, such as keys, accelerometer and vibrator.
  • Managing the running of applications and passing of messages between applications.
  • Managing the installation and removal of applications.
  • Managing display and notify applications and services.
  • Managing the sharing of system resources between different applications and services.
  • Managing the dock mode status.
  • Managing the security policy and access to a locked device.
  • Providing for the display of notifications.
  • Providing for system menus.
  • Providing for the coordinated rendering of applications.
  • Rendering webOS card view, lock screen, status bar, system menus, virtual keyboard, notifications, and launcher, in addition to other system management features that are viewable in the System Manager User Interface.

WebAppMgr is provided by System Manager and is responsible for running Enyo applications.

Back to top

Browser and Browser Server

Open webOS uses a version of QtWebKit to render web pages and apps. Code-named "Isis Project", it uses a client-server model that separates the rendering process from the user interface. This architectural approach delivers smooth scrolling and a responsive user experience. The Isis Browser uses the highly portable Qt framework with the goal of delivering a cross-platform browser in the future. The code may be found in the Isis Project repository on GitHub.

Rendering Subsystem: Rendering is achieved through a set of policies orchestrated by luna-sysmgr, relying on Qt, qtWebKit and OpenGL/ES and supporting hardware rendering.

Novacom: Novacom and Novacomd provide a generic communication toolset to allow communication between a host and an embedded device using sockets over USB. New devices can be supported by adding a new vendor ID in the USB device stack.

The repo for Novacom can be found here. The repo for Novacomd can be found here.

Back to top

System Services

System Services policy features are implemented on top of the Platform Portability Layer. They include:

The repos can be found here:

DB8: DB8 is the database service provider for webOS components. The initial release provides a partial implementation on top of the LevelDB database engine. Future releases will provide an implementation based on LevelDB.

The repo for DB8 can be found here. Access to DB8 is provided via the API documented here.

Luna-service2: Luna-service2 provides a bus-based IPC mechanism used between components in Open webOS. Luna-service2 is composed of a client library and a central hub daemon. The client library provides API support to register on the bus and communicate with other components. The hub provides a central clearinghouse for communication. Utilities for monitoring and debugging the bus are included.

The repo for Luna-service2 is here.

Node.js: Node.js is an open source project which can be found at http://nodejs.org. The Node.js release in Open webOS provides minimal extensions to enable access to the webOS system bus and extended system access for Node.js services. This includes the node_spawner tool used to launch Node.js services within webOS.

The repo for Node.js is here.

Back to top

Platform Portability Layer

The Open webOS platform portability layer (PPL), code-named "Nyx Project", is used to isolate the upper layers of webOS from dependencies on the hardware and the core OS upon which it is running. It is implemented as a shared library that exposes a uniform client API and expects to call into a series of platform-dependent modules that implement the API for a particular device. The code may be found in the Open webOS repository on GitHub.

Open webOS is intended to be built on any standard Linux kernel, with the Platfor Portability Layer providing platform abstraction.

Back to top

Build and Development Environments

Our OpenEmbedded-based Build System: OpenEmbedded is specially targeted at managing porting to multiple platform architectures and is an ideal base for contributors interested in bringing Open webOS to new hardware. The OpenEmbedded build supports an ARM emulator which boosts to System Manager running the core apps.

Our Linux Desktop Build: Develop on your own desktop, where you have access to your own tools and code. This is the ideal, productive environment for OS developers to enhance the user experience and integrate other best-of-breed open source technologies. The desktop build supports running System Manager as an application on your desktop and the Core Applications running within System Manager.

Back to top