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