Kura - OSGi-based Application Framework for M2M Service Gateways

Proposal posted 3 months ago

Kura - OSGi-based Application Framework for M2M Service Gateways

The Eclipse Kura project is a proposed open source incubator project under the Eclipse Technology Project.

This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process) and is written to declare its intent and scope. We solicit additional participation and input from the Eclipse community. Please send all feedback to the Eclipse Proposals Forum.

Background

Until recently, machine-to-machine projects have been approached as embedded systems designed around custom hardware, custom software, and custom network connectivity. The challenge of developing such projects was given by the large customization and integration costs and the small re-usability across similar engagements. The results were often proprietary systems leveraging proprietary protocols.

The emergence of the service gateway model, which operates on the edge of an M2M deployment as an aggregator and controller, has opened up new possibilities. Cost effective service gateways are now capable of running modern software stacks opening the world of M2M to enterprise technologies and programming languages. Advanced software frameworks, which isolate the developer from the complexity of the hardware and the networking sub-systems, can now be offered to complement the service gateway hardware into an integrated hardware and software solution.

Scope

The goals of the Eclipse Kura project can be summarized as:

  1. Provide an OSGi-based container for M2M applications running in service gateways. Kura complements the Java 6 SE and OSGi platforms with API and services covering the most common requirements of M2M applications. These extensions include but they are not limited to: I/O access, data services, watchdog, network configuration and remote management.
  2. Kura adopts existing javax.* API for its functionalities when available - for example javax.comm, javax.usb, and javax.bluetooth. When possible, Kura will select an open source implementation of such API that is compatible with the Eclipse-license and package it in an OSGi bundle to include it in the Kura default build.
  3. Design a build environment, which isolates the native code components and makes it simple to add ports of these components for new platforms in the Kura build and distribution.
  4. Provide a development environment which allows developers to run M2M applications in an emulated environment within the Eclipse IDE, then deploy them on a target gateway and finally remotely provision the applications to Kura-enabled devices on the field.

Kura offers a foundation on top of which other contributions for higher-level M2M protocol implementations like ModBUS, CanBUS, ProfiBUS can reside.

Description

Kura aims at offering a Java/OSGi-based container for M2M applications running in service gateways. Kura provides or, when available, aggregates open source implementations for the most common services needed by M2M applications. Kura components are designed as configurable OSGi Declarative Service exposing service API and raising events. While several Kura components are in pure Java, others are invoked through JNI and have a dependency on the Linux operating system.

Kura is currently planning this initial set of services:

  • I/O Services
    • Serial port access through javax.comm 2.0 API or OSGi I/O connection
    • USB access and events through javax.usb, HID API, custom extensions
    • Bluetooth access through javax.bluetooth or OSGi I/O connection
    • Position Service for GPS information from a NMEA stream
    • Clock Service for the synchronization of the system clock
    • Kura API for GPIO/PWM/I2C/SPI access
  • Data Services
    • Store and forward functionality for the telemetry data collected by the gateway and published to remote servers.
    • Policy-driven publishing system, which abstracts the application developer from the complexity of the network layer and the publishing protocol used. Eclipse Paho and its MQTT client provides the default messaging library used.
  • Cloud Services
    • Easy to use API layer for M2M application to communicate with a remote server. In addition to simple publish/subscribe, the Cloud Service API simplifies the implementation of more complex interaction flows like request/response or remote resource management.
    • Allow for a single connection to a remote server to be shared across more than one application in the gateway providing the necessary topic partitioning.
  • Configuration Service
    • Leverage the OSGi specifications ConfigurationAdmin and MetaType to provide a snapshot service to import/export the configuration of all registered services in the container.
  • Remote Management
    • Allow for remote management of the M2M applications installed in Kura including their deployment, upgrade and configuration management. The Remote Management service relies on the Configuration Service and the Cloud Service.
  • Networking
    • Provide API for introspects and configure the network interfaces available in the gateway like Ethernet, Wifi, and Cellular modems.
  • Watchdog Service
    • Register critical components to the Watchdog Service, which will force a system reset through the hardware watchdog when a problem is detected.
  • Web administration interface
    • Offer a web-based management console running within the Kura container to manage the gateway.

Kura will provide a pre-made build for popular open hardware platforms like the RaspberryPi.

Why Eclipse?

Being an M2M project, Kura aims at becoming another component of the interesting set of technologies grouped under the Eclipse M2M Industry Working Group umbrella. Kura already has a strong relationship with other Eclipse projects:

  • Eclipse Paho is the default message protocol library used in Kura. The default communication protocol in Kura is MQTT and it is used to transport both data and device management messages.
  • Eclipse Equinox is the default OSGi container for Kura.
  • Eclipse Concierge, a small-footprint OSGi container optimized for embedded devices, will be considered as another runtime platform for Kura.

Kura originates from Eurotech Everyware Software Framework. The UI client view of that framework has already been contributed to the Eclipse Paho project.

Initial Contribution

The initial contribution of the Kura project will be a large subset of the current Eurotech Everyware Software Framework. In particular:

  • Kura source code and build system for most of the services described above including the web management administration UI
  • A Kura M2M application developer's guide with an example application
  • Documentation on the Kura application protocol to perform remote resource management and remote administration of M2M applications
  • A build of Kura for an open-hardware platform like the RaspberryPi

Legal Issues

Eurotech will go through the Eclipse legal review process to make sure all Kura dependencies are eligible for contribution. While Kura has selected open-source components with friendly licenses, a detailed review will be conducted with the Eclipse legal team.

Kura has already been tested on open Java VM implementations like OpenJDK.

Committers

The following individuals are proposed as initial committers to the project:

Wes Johnson, Eurotech
Marco Carrer, Eurotech
Cristiano De Alti, Eurotech
Dave Woodard, Eurotech
Elbert Evangelista, Eurotech
Pierre Pitiot, Eurotech

We welcome additional committers and contributions.

Mentors

The following Architecture Council members will mentor this project:

  • Benjamin Cabé
  • Gunnar Wagenknecht

Interested Parties

The following individuals, organisations, companies and projects have expressed interest in this project:

  • Dave Locke, IBM
  • Andy Piper, Eclipse Paho project co-lead
  • Pascal Rapicault, Rapicorp, Inc.
  • Kai Kreuzer, openHAB
  • Werner Keil, Eclipse UOMo Project lead
  • Paul Pishal, Hitachi CTA
  • Walt Bowers, Hitachi CTA

Project Scheduling

Kura aims at the initial contribution to be completed by Q4 2013.

Changes to this Document

Date Change
16-June-2013 Document created
30-June-2013 Incorporated Eurotech's internal feedback
11-July-2013 Incorporated Benjamin Cabé's feedback
15-July-2013 Incorporated Dave Locke's feedback
10-Aug-2013 Add more interested parties and Kura logo