blob: 958e4ebfdc7f5b323066ef8371716c6f7d9b2f53 [file] [log] [blame]
<!--
This document is provided as a template along with some guidance for creating
your project proposal. This is just a template. Feel free to change it as
you see fit (add sections, remove section). We feel, however, that the
suggestions represented in this document represent the reasonable minimum
amount of information to move forward.
Please keep the formatting in this document simple. Please do not edit
this document in Microsoft Word as it adds huge piles of markup that make
it difficult to restyle.
More information is available here:
http://wiki.eclipse.org/Development_Resources/HOWTO/Pre-Proposal_Phase
Direct any questions about this template to emo@eclipse.org
-->
<html>
<head>
<!--
Include the title here. We will parse it out of here and include it on the
rendered webpage. Do not duplicate the title within the text of your page.
-->
<title>Kura - OSGi-based Application Framework for M2M Service Gateways</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
</head>
<!--
We make use of the 'classic' HTML Definition List (dl) tag to specify
committers. I know... you haven't seen this tag in a long while...
-->
<style>
dt {
display: list-item;
list-style-position:outside;
list-style-image:url(/eclipse.org-common/themes/Phoenix/images/arrow.gif);
margin-left:16px;
}
dd {
margin-left:25px;
margin-bottom:5px;
}
</style>
<body>
<img src="images/kura_logo_small.png" width="160" height="48"/>
<p>The Eclipse Kura project is a proposed open source incubator project under the <a
href="http://www.eclipse.org/projects/project_summary.php?projectid=technology">
Eclipse Technology Project</a>.</p>
<!--
The communication channel must be specified. Typically, this is the
"Proposals" forum. In general, you don't need to change this.
-->
<p>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
<a href="http://www.eclipse.org/forums/eclipse.proposals">Eclipse Proposals</a>
Forum.</p>
<h2>Background</h2>
<!--
Optionally provide the background that has lead you to creating this project.
-->
<p>
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.
</p>
<p>
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.
</p>
<h2>Scope</h2>
<!--
All projects must have a well-defined scope. Describe, concisely, what
is in-scope and (optionally) what is out-of-scope. An Eclipse project
cannot have an open-ended scope.
-->
<p>
The goals of the Eclipse Kura project can be summarized as:
</p>
<ol>
<li>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.</li>
<li>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.</li>
<li>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.</li>
<li>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.</li>
</ol>
<p>
Kura offers a foundation on top of which other contributions for higher-level M2M protocol
implementations like ModBUS, CanBUS, ProfiBUS can reside.
</p>
<h2>Description</h2>
<!--
Describe the project here. Be concise, but provide enough information that
somebody who doesn't already know very much about your project idea or domain
has at least a fighting chance of understanding its purpose.
-->
<p>
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.
</p>
<p>
Kura is currently planning this initial set of services:
</p>
<ul>
<li><strong>I/O Services</strong>
<ul>
<li>Serial port access through javax.comm 2.0 API or OSGi I/O connection</li>
<li>USB access and events through javax.usb, HID API, custom extensions</li>
<li>Bluetooth access through javax.bluetooth or OSGi I/O connection</li>
<li>Position Service for GPS information from a NMEA stream</li>
<li>Clock Service for the synchronization of the system clock</li>
<li>Kura API for GPIO/PWM/I2C/SPI access</li>
</ul>
</li>
<li><strong>Data Services</strong>
<ul>
<li>Store and forward functionality for the telemetry data collected by the
gateway and published to remote servers.</li>
<li>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.</li>
</ul>
</li>
<li><strong>Cloud Services</strong>
<ul>
<li>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.</li>
<li>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.</li>
</ul>
</li>
<li><strong>Configuration Service</strong>
<ul>
<li>Leverage the OSGi specifications ConfigurationAdmin and MetaType to provide
a snapshot service to import/export the configuration of all registered services
in the container.</li>
</ul>
</li>
<li><strong>Remote Management</strong>
<ul>
<li>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.</li>
</ul>
</li>
<li><strong>Networking</strong>
<ul>
<li>Provide API for introspects and configure the network interfaces available
in the gateway like Ethernet, Wifi, and Cellular modems.</li>
</ul>
</li>
<li><strong>Watchdog Service</strong>
<ul>
<li>Register critical components to the Watchdog Service, which will force a
system reset through the hardware watchdog when a problem is detected.</li>
</ul>
</li>
<li><strong>Web administration interface</strong>
<ul>
<li>Offer a web-based management console running within the Kura container
to manage the gateway.</li>
</ul>
</li>
</ul>
<p>
Kura will provide a pre-made build for popular open hardware platforms like the RaspberryPi.
</p>
<h2>Why Eclipse?</h2>
<!--
Answer these two questions: What value does this project bring to the Eclipse
community? What value do you expect to obtain from hosting your project at Eclipse?
What value do you get by having your project at Eclipse over and above the value
of hosting at Eclipse Labs?
-->
<p>
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:
</p>
<ul>
<li><a href="http://www.eclipse.org/paho/">Eclipse Paho</a> 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.</li>
</li>
<li>Eclipse Equinox is the default OSGi container for Kura.</li>
<li><a href="http://www.eclipse.org/proposals/rt.concierge/">Eclipse Concierge</a>,
a small-footprint OSGi container optimized for embedded devices, will be considered
as another runtime platform for Kura.</li>
</ul>
<p>
Kura originates from Eurotech Everyware Software Framework.
The UI client view of that framework has already been contributed to the Eclipse Paho
project.
</p>
<h2>Initial Contribution</h2>
<!--
Projects are expected to arrive at Eclipse with existing code.
Describe the existing code that will be contributed to the project. Please provide
a couple of paragraphs describing the code with modest detail, including important
information like code ownership (who holds the copyright?), and some consideration
of community that exists around the code. Include a listing of third-party libraries
and associated licenses.
-->
<p>
The initial contribution of the Kura project will be a large subset of the current
Eurotech Everyware Software Framework. In particular:
</p>
<ul>
<li>Kura source code and build system for most of the services described above
including the web management administration UI</li>
<li>A Kura M2M application developer's guide with an example application</li>
<li>Documentation on the Kura application protocol to perform remote resource management
and remote administration of M2M applications</li>
<li>A build of Kura for an open-hardware platform like the RaspberryPi</li>
</ul>
<h2>Legal Issues</h2>
<!--
Please describe any potential legal issues in this section. Does somebody else
own the trademark to the project name? Is there some issue that prevents you
from licensing the project under the Eclipse Public License? Are parts of the
code available under some other license? Are there any LGPL/GPL bits that you
absolutely require?
-->
<p>
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.
</p>
<p>
Kura has already been tested on open Java VM implementations like OpenJDK.
</p>
<h2>Committers</h2>
<!--
List any initial committers that should be provisioned along with the
new project. Include affiliation, but do not include email addresses at
this point.
-->
<p>
The following individuals are proposed as initial committers to the project:
</p>
<dl>
<dt>Wes Johnson, Eurotech</dt>
<dd>Wes Johnson is the Director of Software Engineering at
Eurotech Inc. He is one of the initial promoters and developers of
Eclipse Kura. He specializes in framework design, Java, OSGi, Cloud
Computing, the Internet of Things (IoT), Machine-to-Machine (M2M)
communications, and application software development. He lives in
Vancouver Washington where he earned a BS in Computer Engineering and
Physics from Portland State University.</dd>
<dt>Marco Carrer, Eurotech</dt>
<dd>Marco Carrer is leading the M2M software efforts at Eurotech.
He was one of the architects of the Eclipse Kura project and he
actively contributed the integration of the Eclipse Paho technology
into the Kura Data Services. Before joining EUROTECH as VP of
Software Engineering, Marco spent 13-years in Oracle, where he was
responsible for the design and development of several products in the
areas of Web Services, Enterprise Collaboration, and CRM Service.
Marco Carrer holds a Laurea in Electronic Engineering from University
of Padova, a Master in Computer Science from Cornell University, New
York.</dd>
<dt>Cristiano De Alti, Eurotech</dt>
<dd>Cristiano De Alti is a principal software developer at
Eurotech S.p.A. He is one of the initial developers and designers of
Eclipse Kura where he contributed the remote configuration management
service, the remote deployment management service, and the data
service. He has 10+ years of experience in designing and deploying
embedded systems, especially in the area of firmware development for
microcontrollers, embedded Linux distributions and wireless sensor
networks. He received his degree in electronic engineering at the
University of Padua.</dd>
<dt>Dave Woodard, Eurotech</dt>
<dd>David was the project lead for Arrow Electronic's Arrow Cloud
Connect initiative. This initiative provides engineers with a low
overhead introduction to IoT technologies. Since joining Eurotech,
David has been contributing to the Eclipse Kura project especially in
the area of the networking and web administration. David holds a
Masters of Engineering degree in Electrical Engineering from Portland
State University</dd>
<dt>Elbert Evangelista, Eurotech</dt>
<dd>Elbert has over ten years of experience, previously
developing embedded software for printers and multi-function devices
at Xerox, then working on data collection services for cloud
connected energy monitors at Verlitics. He joined Eurotech in 2012
and has been contributing primarily to the networking and web admin
services on the Kura project. He has a BS in Computer Science and
Physics from the University of Portland.</dd>
<dt>Pierre Pitiot, Eurotech</dt>
<dd>Pierre has been working in embedded software development for
25 years with systems deployed in a variety of verticals including
oil fields, industrial and railway transportation. Pierre is part of
the Eclipse Kura development team in Eurotech contributing the
support for high-level protocols. He holds a PhD in geology and an
engineering degree in Software and Electronics in Lyon (France)
University.</dd>
<dt>Walt Bowers, Hitachi</dt>
<dd>Chief Architect OSGi Solutions at Hitachi.</dd>
<dt>Will Frazer</dt>
<dd>Will Frazer has more 20+ years of experience in embedded
systems especially in the area of embedded Linux customization and
firmware development. His contributions to Kura focus on the I/O
Service including support for GPIO and I2C. He graduated in
Electronic Engineering at Limerick Institute of Technology, Ireland.
</dd>
<dt>Ilya Binshtok</dt>
<dd>Ilya has over 15 years of embedded software development
experience across multiple platforms. He specializes in C, Java,
OSGi, and wireless networking. Ilya contributes to the Eclipse Kura
project by supporting various cellular and Wi-Fi devices. He earned a
BS in Computer Engineering from the University of Kansas.</dd>
<dt>Alberto Codutti</dt>
<dd>Alberto is the newest member of the Eclipse Kura project. He
recently joined the team and is going to contribute on the Kura web
management interface.</dd>
<dt>Hitesh Dave</dt>
<dd>Mr. Hitesh Dave is a Solutions Architect in Hitachi with
expertise in enterprise application integration and development. He
bring over more than 20 years of experience in developing software
solutions utilizing various middleware technologies. His expertise
include service oriented architecture, middleware messaging
technologies, networking protocols and java based application
development. He is well versed in the M2M architecture and embedded
systems development. He was one of the key contributor of the
Internet of Things (IoT) in Motion demo development presented during
JavaOne 2013.</dd>
</dl>
<p>We welcome additional committers and contributions.</p>
<!--
Describe any initial contributions of code that will be brought to the
project. If there is no existing code, just remove this section.
-->
<h2>Mentors</h2>
<!--
New Eclipse projects require a minimum of two mentors from the Architecture
Council. You need to identify two mentors before the project is created. The
proposal can be posted before this section is filled in (it's a little easier
to find a mentor when the proposal itself is public).
-->
<p>The following Architecture Council members will mentor this
project:</p>
<ul>
<li>Benjamin Cabé</li>
<li>Gunnar Wagenknecht</li>
</ul>
<h2>Interested Parties</h2>
<!--
Provide a list of individuals, organisations, companies, and other Eclipse
projects that are interested in this project. This list will provide some
insight into who your project's community will ultimately include. Where
possible, include affiliations. Do not include email addresses.
-->
<p>The following individuals, organisations, companies and projects have
expressed interest in this project:</p>
<ul>
<li>Dave Locke, IBM</li>
<li>Andy Piper, Eclipse Paho project co-lead</li>
<li>Pascal Rapicault, Rapicorp, Inc.</li>
<li>Kai Kreuzer, openHAB</li>
<li>Werner Keil, Eclipse UOMo Project lead</li>
<li>Paul Pishal, Hitachi CTA</li>
<li>Walt Bowers, Hitachi CTA</li>
</ul>
<h2>Project Scheduling</h2>
<!--
Describe, in rough terms, what the basic scheduling of the project will
be. You might, for example, include an indication of when an initial contribution
should be expected, when your first build will be ready, etc. Exact
dates are not required.
-->
<p>
Kura aims at the initial contribution to be completed by Q4 2013.
</p>
<h2>Changes to this Document</h2>
<!--
List any changes that have occurred in the document here.
You only need to document changes that have occurred after the document
has been posted live for the community to view and comment.
-->
<table>
<tr>
<th>Date</th>
<th>Change</th>
</tr>
<tr>
<td>16-June-2013</td>
<td>Document created</td>
</tr>
<tr>
<td>30-June-2013</td>
<td>Incorporated Eurotech's internal feedback</td>
</tr>
<tr>
<td>11-July-2013</td>
<td>Incorporated Benjamin Cabé's feedback</td>
</tr>
<tr>
<td>15-July-2013</td>
<td>Incorporated Dave Locke's feedback</td>
</tr>
<tr>
<td>10-Aug-2013</td>
<td>Add more interested parties and Kura logo</td>
</tr>
<tr>
<td>21-Oct-2013</td>
<td>Added additional initial committers. Added bios for all committers.</td>
</tr>
</table>
</body>
</html>