Ponte - M2M Bridge Framework for REST developers

The project has been created. Please visit the project page.

Ponte - M2M Bridge Framework for REST developers

The Ponte project is a proposed open source project under the Eclipse Technology Project.

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 Eclipse Proposals Forum.

Background

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.

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.

See also: Introducing the QEST broker: Scaling the IoT by bridging MQTT and REST M Collina, GE Corazza, A Vanelli-Coralli - Personal Indoor and Mobile Radio Communications, 2012.

Matteo Collina's Presentation at EclipseCon France 2013: "Exposing M2M to the REST of us"

Exposing M2M to the REST of us from Matteo Collina

Scope

The scope of the Ponte project is threefold:

  1. Define a simple REST API to expose the machines needs through REST, exposing multiple protocols (MQTT, CoAP) through the same API.
  2. 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).
  3. Define and build a user-driven security solution to support the communication between all these devices.

Description

The following are the plan items for the Ponte project:
  1. Build a reusable solution for bridging several M2M protocols to REST:
    1. Formalize a REST API for reading, writing and accessing the history of sensors and actuators.
    2. Expose the MQ Telemetry Transport, also hosted within Eclipse, through the REST API.
    3. Expose the Constrained Application Protocol (CoAP), which is being standardized by the IETF, through the REST API.
    4. Define an internal API for adding new protocols easily, through plugins.
  2. Define a a JSON-based support for message formats, and add converters between them. The converters API should be exposed to Ponte through plugins.
  3. 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.

Why Eclipse?

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.

Initial Contribution

All the source code of QEST, an initial implementation for bridging REST and MQTT world, which is available at GitHub: http://github.com/mcollina/qest. QEST is written in CoffeeScript, but it is in the process of migrating to plain Javascript.

Licenses

Ponte will be dual licensed under the Eclipse Public License (EPL) 1.0 and Eclipse Distribution License (EDL) 1.0.

Legal Issues

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.

Committers

The following individuals are proposed as initial committers to the project:

Matteo Collina, University of Bologna

We welcome additional committers and contributions.

Mentors

The following Architecture Council members will mentor this project:

  • Benjamin Cabé, Sierra Wireless
  • Ian Bull, EclipseSource

Interested Parties

The following individuals, organisations, companies and projects have expressed interest in this project:

  • University of Bologna
  • Sierra Wireless
  • Gregor Schiele, Digital Enterprise Research Institute
  • Andy Piper, Eclipse Paho project co-lead
  • Werner Keil, Eclipse UOMo Project lead
  • Toby Jaffey
  • Rupen Patel, Mercurium
  • Mavigex
  • Niranjan Shukla, Accenture
  • Vatsal Shah, Litmus Automation

Project Scheduling

Changes to this Document

18-Jul-2013 One more interested party
03-Jul-2013 One more interested party
12-Jun-2013 One more interested party
06-Jun-2013 Added "Exposing M2M to the REST of us" presentation done at EclipseCon France 2013
27-May-2013 Added new mentor and interested parties
24-May-2013 Added interested parties
09-May-2013 Document created