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