blob: c240b34f84f8c880c05e0796012e42d2a47e979b [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>Eclipse SmartHome</title>
</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>
<p>The Eclipse SmartHome project is a proposed open source project under the <a
href="http://www.eclipse.org/projects/project_summary.php?projectid=technology">Eclipse Technology Top-Level 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>
<p>Since the emergence of broadband internet connections, smartphones and tablets the smart home market shows a remarkable upsurge.
This has led to a very fragmented market, which makes it difficult for customers to "bet on the right horse". In fact,
there is not one system, protocol or standard that could possibly fulfill all potential requirements. There is hence
a need for platforms that allow the integration of different systems, protocols or standards and that provide a uniform
way of user interaction and higher level services.</p>
<h2>Scope</h2>
<p>The goals of the Eclipse SmartHome project can be summarized as:</p>
<ol>
<li>Provide a flexible framework for smart home and ambient assisted living (AAL) solutions. This framework
focuses on the use cases of this domain, e.g. on easy automation and visualization aspects.</li>
<li>Specify extension points for integration possibilities and higher-level services. Extending and thus
customizing the solution must be as simple as possible and this requires concise and dedicated interfaces.</li>
<li>Provide implementations of extensions for relevant systems, protocols or standards. Many of them can
be useful to many smart home solutions, so this project will provide a set of extensions that can be included
if desired. They can also be in the shape of a general Java library or an OSGi bundle, so that these
implementations can be used independently of the rest of the project as well.</li>
<li>Provide a development environment and tools to foster implementations of extensions. The right tooling can
support the emergence of further extensions and thus stimulates future contributions to the project.</li>
<li>Create a packaging and demo setups. Although the focus is on the framework, it needs to be shown how to
package a real solution from it, which can be used as a starting point and for demo purposes.</li>
</ol>
<h2>Description</h2>
<p>The Eclipse SmartHome project is a framework that allows building smart home solutions that have a strong focus on
heterogeneous environments, i.e. solutions that deal with the integration of different protocols or standards. Its
purpose is to provide a uniform access to devices and information and to facilitate different kinds of interactions
with them. This framework consists out of a set of OSGi bundles that can be deployed on an OSGi runtime and which
defines OSGi services as extension points.</p>
<p>The stack is meant to be usable on any kind of system that can run an OSGi stack - be it a multi-core server,
a residential gateway or a Raspberry Pi.
<p>
Currently planned initial features and extension points of this framework include:
</p>
<ul>
<li><strong>Data Handling</strong>
<ul>
<li><strong>Type System:</strong> A basic but extensible type system for smart home data and commands
that provides a common ground for an abstracted data and device access.</li>
<li><strong>Data Registry:</strong> Keeps track of data point instances and their values.</li>
<li><strong>Event Mechanism:</strong> Passes data and operations asynchronously in a loosly coupled way
between components.</li>
<li><strong>Bindings:</strong> Infrastructure to exchange data and commands with external systems and devices,
e.g. through regular polling or background threads. Useful binding implementations such as HTTP, NTP or
TCP will be part of the project.
</ul>
</li>
<li><strong>Rule Engine</strong>
<ul>
<li>An implementation of a flexible rule engine that allows changing rules during runtime.</li>
<li>Provides triggering upon events or on a temporal basis.</li>
<li>Extensible through rule actions that are made available to all rules</li>
<li>Simple but powerful textual representation of rules</li>
</ul>
</li>
<li><strong>Declarative User Interfaces</strong>
<ul>
<li>A simple way of describing user interface content in a declarative way.</li>
<li>Defines a set of standard widgets and a hierarchy of pages.</li>
<li>Structure is made available through REST APIs to be easily consumable by UI implementations</li>
</ul>
</li>
<li><strong>Persistence Management</strong>
<ul>
<li>Infrastructure that allows automatic data processing based on a simple and unified configuration</li>
<li>Persistence targets can be anything like databases, log files, IoT cloud services etc.</li>
<li>Implementations of persistence services such as logging or cli will be part of the project.</li>
</ul>
</li>
<li><strong>REST API</strong>
<ul>
<li>Provides all relevant information and services to user interfaces (e.g. native clients)</li>
<li>Extensible to provide additional resources specific to a solution</li>
<li>Integrates with persistence services to serve time series for interactive charts</li>
</ul>
</li>
</ul>
<p>Besides the runtime framework and implementation, the Eclipse SmartHome projects also provides different kinds
of tools and samples:</p>
<ul>
<li>Eclipse editors for editing configuration models and rules. These provide full IDE support, such
as content assist and syntax validation.</li>
<li>Maven archetypes to easily create skeletons for extensions</li>
<li>Demo packaging with Eclipse RT</li>
</ul>
Planned additions for the future include:
<ul>
<li>Remote management for configuration models, possibly through REST</li>
<li>Meta-data based configuration of extensions</li>
<li>Definition of rule modules (triggers and actions) that can be easily plugged together</li>
<li>Notification APIs to easily administrate notification channels</li>
<li>Interfaces for natural language processing / voice recognition</li>
</ul>
<h2>Why Eclipse?</h2>
<p>Targeting the vertical market of smart homes, this project fits nicely into the recent activities around IoT/M2M.</p>
<p>Besides this, Eclipse provides many projects that are a perfect fit for this project (and which are in fact used
by the initial contribution):</p>
<ul>
<li>Eclipse Equinox is used as the default OSGi runtime.</li>
<li>Eclipse Jetty serves as an embedded HTTP server for the REST API and other HTTP services.</li>
<li>Eclipse Modelling Framework is the basis for all configuration models</li>
<li>Eclipse Xtext provides IDE support for the textual editors and furthermore provides with Xbase
the basis for the textual rule representation</li>
</ul>
<p>Other Eclipse projects can be of interest in the future as well:</p>
<ul>
<li>Concierge: a small-footprint OSGi container optimized for embedded devices can be an interesting alternative
to Equinox when being used on constrained devices.</li>
<li>Kura: Lower level services offered by Kura, such as I/O connectivity, remote management and configuration can
perfectly complement the Eclipse SmartHome stack.
<li>Paho: As an MQTT extension is planned as a communication channel, Paho is the natural choice here.</li>
<li>Ponte: Ponte can be used as a uniform way of binding custom M2M devices and solutions to the smart home.</li>
</ul>
<h2>Initial Contribution</h2>
The initial contribution of the Eclipse SmartHome project will be a large subset of the current code of
openHAB (open Home Automation Bus). In particular:
<ul>
<li>Source code for all mentioned interfaces and services of the framework</li>
<li>Source code of a couple of extensions (openHAB bindings, actions and persistence services)</li>
<li>Documentation of the architecture and its extension points</li>
<li>Build scripts and sample files</li>
</ul>
<h2>Legal Issues</h2>
<p>openHAB is currently available under GPLv3 license. The openHAB project owners will make the code base available under
EPL (with the agreement of all contributors). Most dependencies of the openHAB core framework are already under EPL
and even taken from Eclipse Orbit. For all other dependencies of the core framework, the project owners will go through
the Eclipse legal review process to make sure that they are eligible for contribution.</p>
<p>Many of the existing extensions (bindings, actions, etc.) include third-party libraries that might not be moved to
Eclipse. As a result, only a small subset of these extensions will be contributed to the Eclipse SmartHome project
while the rest will stay within the openHAB project.</p>
<h2>Committers</h2>
<p>The following individuals are proposed as initial committers to the project:</p>
<dl>
<dt>Kai Kreuzer, Deutsche Telekom AG (Project lead)</dt>
<dt>Thomas Eichstädt-Engelen, innoQ Deutschland GmbH (Project co-lead)</dt>
<dt>Thomas Letsch, Thomas Letsch IT Solutions</dt>
</dl>
<p>We welcome additional committers and contributions.</p>
<h2>Mentors</h2>
<p>The following Architecture Council members will mentor this
project:</p>
<ul>
<li>Mike Milinkovich</li>
<li>Benjamin Cabé</li>
</ul>
<h2>Interested Parties</h2>
<p>The following individuals, organisations, companies and projects have
expressed interest in this project:</p>
<ul>
<li>Bastian Nordmeyer, Tinkerforge GmbH</li>
<li>Eclipse SCADA</li>
<li>Falk-Moritz Schaefer, Communication Technology Institute, TU Dortmund University</li>
<li>Georg Gr&uuml;tter, Robert Bosch GmbH</li>
<li>Prof. Gottfried Zimmermann, Stuttgart Media University, Responsive Media Experience Research Group</li>
<li>Prof. Dr. Heiner Klocke, Cologne University of Applied Sciences</li>
<li>Jochen Hiller, Deutsche Telekom AG</li>
<li>Lars Pfannenschmidt, Deutsche Telekom AG</li>
<li>Dr. Marco Eichelberg, OFFIS Institute for Information Technology</li>
<li>Myriam Lipprandt, OFFIS Institute for Information Technology</li>
<li>Stefan Feilmeier, FENECON GmbH & Co. KG</li>
<li>Stefan Tilkov, innoQ Deutschland GmbH</li>
<li>Stefan Vaillant, Cumulocity GmbH</li>
</ul>
<h2>Project Scheduling</h2>
Eclipse SmartHome aims at the initial contribution to be completed by the end of 2013.
A first release is planned early 2014, mainly based on the refactored initial contribution.
<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>09-August-2013</td>
<td>Document created</td>
</tr>
<tr>
<td>19-August-2013</td>
<td>Added interested parties</td>
</tr>
<tr>
<td>29-August-2013</td>
<td>Added further interested parties</td>
</tr>
<tr>
<td>06-September-2013</td>
<td>Added further interested parties</td>
</tr>
<tr>
<td>17-October-2013</td>
<td>Added further interested parties<br/>
Changed project name from Smart Home to SmartHome</td>
</tr>
</table>
</body>
</html>