Last active
December 17, 2015 17:19
-
-
Save mcollina/5644841 to your computer and use it in GitHub Desktop.
Ponte Technology Proposal
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!-- | |
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 [email protected] | |
--> | |
<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>M2M Bridge Framework for REST developers - Ponte</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>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é, 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> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment