<!-- 
	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>