blob: bc1d2bf3e07d024a924fc4fef966e4473759be5d [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>Ponte - M2M Bridge Framework for REST developers</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 Ponte project is a proposed open source project under the <a
href="http://www.eclipse.org/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>
<p>
The advent of the World Wide Web revolutionized the way we work, communicate, socialize,
and how business is done: the Internet has become one the most pervasive technology.
Recently, smartphones and mobile broadband enabled us to carry the Internet in our pocket,
seamlessy integrating it in our lives.
However, everyday objects remain disconnected from the virtual world, while the "Internet of Things" (IoT)
movement is exploring how to interconnect them.
This technology shift is supposed to be greater than the advent of mobile phones, and a 2020 scenario
where non-phone interconnected devices will be 10 times the phone devices (50 vs 5 billions) is foreseen.
</p>
<p>
Billions of interconnected devices is a challenge for the whole Internet and for the objects themselves,
and in order to operate at that scale several major issues should be resolved.
Billions of interconnected devices is a challenge for software developers: every device must be able to
communicate to every other possible device. However, there is no lingua franca between all these devices.
The devices, often called Machines, can be divided into sensors and actuators.
Sensors reacts to events from the real world, while actuators reacts to events from the virtual one.
Thus, event processing is a core feature of every IoT project. Most event processing systems are built
around the popular publish/subscribe pattern. As of today, there exist several protocols for interconnecting machines,
and they all fall under the label Machine-To-Machine (M2M).
The requirements of machines and people are distinctly different, and it may be hard to define a protocol
and the associated best practices to statisfy both of them. However, we can address these compelling requirements
by bridging these protocols, and let developers access the M2M world from within their comfort zone.
</p>
<p>
See also: <a href="http://scholar.google.com/scholar?oi=bibs&hl=it&cluster=3449236268741788404&btnI=Lucky">Introducing the QEST broker: Scaling the IoT by bridging MQTT and REST</a>
M Collina, GE Corazza, A Vanelli-Coralli - Personal Indoor and Mobile Radio Communications, 2012.
</p>
<p>Matteo Collina's Presentation at EclipseCon France 2013: "Exposing M2M to the REST of us"</p>
<iframe src="http://www.slideshare.net/slideshow/embed_code/22537154" width="427" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC;border-width:1px 1px 0;margin-bottom:5px" allowfullscreen webkitallowfullscreen mozallowfullscreen> </iframe> <div style="margin-bottom:5px"> <strong> <a href="http://www.slideshare.net/matteocollina/exposing-m2m-to-the-rest-of-us" title="Exposing M2M to the REST of us" target="_blank">Exposing M2M to the REST of us</a> </strong> from <strong><a href="http://www.slideshare.net/matteocollina" target="_blank">Matteo Collina</a></strong> </div>
<h2>Scope</h2>
<p>
The scope of the Ponte project is threefold:
</p>
<ol>
<li>Define a simple REST API to expose the machines needs through REST, exposing multiple protocols (MQTT, CoAP) through the same API.</li>
<li>Embrace multiple data formats, such as JSON, XML, Msgpack, Bysant and provide ways to automatically convert between them;
eventually, common representation of sensors and actuators data will be defined (or adopted from Paho).</li>
<li>Define and build a user-driven security solution to support the communication between all these devices.</li>
</ol>
<h2>Description</h2>
The following are the plan items for the Ponte project:
<ol>
<li>
Build a reusable solution for bridging several M2M protocols to REST:
<ol type="a">
<li>Formalize a REST API for reading, writing and accessing the history of sensors and actuators.</li>
<li>Expose the MQ Telemetry Transport, also hosted within Eclipse, through the REST API.</li>
<li>Expose the Constrained Application Protocol (CoAP), which is being standardized by the IETF, through the REST API.</li>
<li>Define an internal API for adding new protocols easily, through plugins.</li>
</ol>
</li>
<li>
Define a a JSON-based support for message formats, and add converters between them.
The converters API should be exposed to Ponte through plugins.
</li>
<li>
Study an OAuth 2 solution that can be embedded inside the machines,
to allow the end user, and eventually the owner, to authorize or deny every access.
</li>
</ol>
<h2>Why Eclipse?</h2>
<p>In recent years, Eclipse has attracted several machine-to-machine projects, such as Paho, Koneki and Mihini. Thanks to all these contributions, the Eclipse Software Foundation has built an thriving community of M2M developers.
The initial contribution of Ponte is based upon QEST, which is developed as part of Matteo Collina's Ph.D. This project has the aim to build a platform to make the developing of new, M2M solution easy for web developers.</p>
<h2>Initial Contribution</h2>
<p>All the source code of QEST, an initial implementation for bridging REST and MQTT world, which is available at GitHub: <a href="http://github.com/mcollina/qest">http://github.com/mcollina/qest</a>.
QEST is written in CoffeeScript, but it is in the process of migrating to plain Javascript.</p>
<h2>Licenses</h2>
<p>Ponte will be dual licensed under the <a href="/org/documents/epl-v10.php">Eclipse Public License</a> (EPL) 1.0
and <a href="/org/documents/edl-v10.php">Eclipse Distribution License</a> (EDL) 1.0.</p>
<h2>Legal Issues</h2>
<p>As QEST is built on top of Node.js, the framework dependency needs to be approved. Moreover, the permission of moving QEST to Eclipse will be needed by the University of Bologna.</p>
<h2>Committers</h2>
<p>The following individuals are proposed as initial committers to the project:</p>
<dl>
<dt>Matteo Collina, University of Bologna</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>Benjamin Cab&eacute;, Sierra Wireless</li>
<li>Ian Bull, EclipseSource</li>
</ul>
<h2>Interested Parties</h2>
<p>The following individuals, organisations, companies and projects have
expressed interest in this project:</p>
<ul>
<li>University of Bologna</li>
<li>Sierra Wireless</li>
<li>Gregor Schiele, Digital Enterprise Research Institute</li>
<li>Andy Piper, Eclipse Paho project co-lead</li>
<li>Werner Keil, Eclipse UOMo Project lead</li>
<li>Toby Jaffey</li>
<li>Rupen Patel, Mercurium</li>
<li>Mavigex</li>
<li>Niranjan Shukla, Accenture</li>
<li>Vatsal Shah, Litmus Automation</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.
-->
<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>
<td>18-Jul-2013</td>
<td>One more interested party</td>
</tr>
<tr>
<td>03-Jul-2013</td>
<td>One more interested party</td>
</tr>
<tr>
<td>12-Jun-2013</td>
<td>One more interested party</td>
</tr>
<tr>
<td>06-Jun-2013</td>
<td>Added "Exposing M2M to the REST of us" presentation done at EclipseCon France 2013</td>
</tr>
<tr>
<td>27-May-2013</td>
<td>Added new mentor and interested parties</td>
</tr>
<tr>
<td>24-May-2013</td>
<td>Added interested parties</td>
</tr>
<tr>
<td>09-May-2013</td>
<td>Document created</td>
</tr>
</table>
</body>
</html>