| <!-- |
| 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>Californium (Cf) CoAP Framework</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 Californium (Cf) CoAP framework project is a proposed open source project |
| under the <a href="http://projects.eclipse.org/projects/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>In July 2013, the Internet Engineering Task Force (IETF) accepted a new Web |
| protocol for machine-to-machine (M2M) communication as Proposed Standard: the |
| Constrained Application Protocol (CoAP). It is designed within the Constrained |
| RESTful Environments (CoRE) working group. Implementing the REST architectural |
| style, it can be transparently mapped to HTTP. However, CoAP also provides |
| features that go beyond HTTP such as native push notifications and group |
| communication.</p> |
| |
| <p>This makes CoAP an excellent choice for M2M applications. Thus, it is part of |
| several M2M standards such as OneM2M and OMA Lightweight M2M. The Eclipse M2M |
| Industry Working Group already encompasses several framework and protocol |
| projects, but is still missing an implementation of CoAP, which currently |
| gains more and more attention.</p> |
| |
| <h2>Scope</h2> |
| |
| Californium (Cf) provides an implementation of the Constrained Application |
| Protocol (CoAP) standard. The scope of this project can be summarized as follows: |
| |
| <ul> |
| <li>Maintain the base implementation of CoAP by providing bug-fixes, |
| optimizations, and necessary documentation.</li> |
| <li>Continue implementing complementary specifications by the IETF CoRE |
| working group.</li> |
| <li>Maintain the included Web resource framework for M2M and Internet of |
| Things applications.</li> |
| <li>Provide seamless integration with M2M projects for OMA Lightweight M2M |
| and OneM2M such as the <a |
| href="http://eclipse.org/proposals/technology.om2m/">OM2M proposal</a>. |
| </li> |
| <li>Implement a security API that allows for authentication and |
| authorization as defined by IETF, OMA, and OneM2M activities. |
| Californium (Cf) comes with the <a |
| href="https://github.com/mkovatsc/Scandium">Scandium (Sc)</a> project |
| as DTLS implementation.</li> |
| <li>Maintain the <a href="https://github.com/mkovatsc/Actinium">Actinium |
| (Ac)</a> App-server for Californium with its server-side JavaScript |
| support for lightweight M2M and Internet of Things applications.</li> |
| <li>Extend Android support of the CoAP base implementation.</li> |
| </ul> |
| |
| <h2>Description</h2> |
| |
| <p>Californium (Cf) is an open source implementation of the Constrained |
| Application Protocol (CoAP). It is written in Java and targets unconstrained |
| environments such as back-end service infrastructures (e.g., proxies, resource |
| directories, or management services) and less constrained environments such as |
| embedded devices running Linux (e.g., smart home controllers or vehicle |
| sensors). Californium (Cf) has been running code for the IETF standardization of |
| CoAP and was recently reimplemented to straighten changed design decisions, but |
| also to improve its performance with focus on scalability. The new |
| implementation was successfully tested at the ETSI CoAP#3 and OMA LWM2M |
| Plugtests in November 2013.</p> |
| |
| <p>The CoAP framework already provides the following features:</p> |
| |
| <ul> |
| <li>Implementation of the Proposed Standard of CoAP |
| (<a |
| href="http://tools.ietf.org/html/draft-ietf-core-coap-18"> |
| draft-ietf-core-coap-18</a>)</li> |
| <li>Implementation of the Observe draft |
| (<a |
| href="http://tools.ietf.org/html/draft-ietf-core-observe-11"> |
| draft-ietf-core-observe-11</a>)</li> |
| <li>Implementation of the Blockwise Transfers draft |
| (<a |
| href="http://tools.ietf.org/html/draft-ietf-core-block-14"> |
| draft-ietf-core-block-14</a>)</li> |
| <li>Implementation of the Resource Directory draft |
| (<a |
| href="http://tools.ietf.org/html/draft-ietf-core-resource-directory-00"> |
| draft-ietf-core-resource-directory-00</a>)</li> |
| <li>CoAP-HTTP cross-proxy support through httpcore-nio and guava</li> |
| <li>Web resource framework with an advanced concurrency model for the |
| implementation of Internet of Things applications</li> |
| <li>Basic DTLS 1.2 support through <a |
| href="https://github.com/mkovatsc/Scandium">Scandium (Sc)</a></li> |
| <li>Wrapper for OSGi</li> |
| <li>Benchmark tool for measuring the performance of CoAP servers</li> |
| </ul> |
| |
| <p>Additional work is currently carried out on the following topics:</p> |
| |
| <ul> |
| <li>Group communication through IP multicast and management through |
| <a href="http://tools.ietf.org/html/draft-ietf-core-groupcomm-17"> |
| draft-ietf-core-groupcomm-17</a></li> |
| <li>Advanced congestion control</li> |
| <li>Upgrade of the Actinium (Ac) JavaScript application server to the |
| new version of Californium (Cf)</li> |
| </ul> |
| |
| <h2>Why Eclipse?</h2> |
| |
| The Eclipse foundation can provide a long-term home for the project. With the |
| M2M Industry Working Group, it can produce more attention to the Californium |
| (Cf) project to attract more contributors to improve the support. In the other |
| direction, the M2M Industry Working Group can gain from the CoAP support, which |
| is currently missing for corresponding M2M projects. |
| |
| <h2>Initial Contribution</h2> |
| |
| <p>The Californium (Cf) project will be provided with an initial contribution |
| from ETH Zurich:</p> |
| |
| <ul> |
| <li>The <a href="https://github.com/mkovatsc/Californium">Californium |
| (Cf)</a> CoAP framework in Java</li> |
| <li>The <a href="https://github.com/mkovatsc/Scandium">Scandium (Sc)</a> |
| DTLS 1.2 implementation</li> |
| <li>The <a href="https://github.com/mkovatsc/Actinium">Actinium (Ac)</a> |
| application server implementation</li> |
| <li>The <a href="https://github.com/mkovatsc/element-connector">element-connector</a> |
| module, which allows modularization of the project for different |
| platforms and use cases.</li> |
| </ul> |
| |
| <h2>Legal Issues</h2> |
| |
| <p>Californium will be dual-licensed under the Eclipse Public License (EPL) 1.0 |
| and the Eclipse Distribution License (EDL).</p> |
| |
| <p>Matthias Kovatsch and ETH Zurich own the full copyright of the initial |
| contribution, which was published under 3-clause BSD license.</p> |
| |
| <p>Californium (Cf) currently includes the following third party libraries |
| via Maven for the optional HTTP-CoAP cross-proxy support: |
| <ul> |
| <li>Apache HttpCore NIO 4.2.1, ASL 2.0</li> |
| <li>Apache HttpClient 4.2.1, ASL 2.0</li> |
| <li>Guava, ASL 2.0</li> |
| </ul> |
| </p> |
| |
| <p>The optional Actinium (Ac) extension currently includes the following |
| third party libraries via Maven: |
| <ul> |
| <li>Mozilla Rhino 1.7R3, MPL 2.0</li> |
| <li>E4XUtils 1.0 by Anthony Elder, permission to use and distribute</li> |
| </ul> |
| </p> |
| |
| <h2>Committers</h2> |
| |
| <!-- |
| List any initial committers that should be provisioned along with the |
| new project. Include affiliation, but do not include email addresses at |
| this point. |
| --> |
| |
| <p>The following individuals are proposed as initial committers to the project:</p> |
| |
| <dl> |
| <dt>Matthias Kovatsch, ETH Zurich</dt> |
| <dd>Matthias Kovatsch is the creator and main architect of the Californium |
| (Cf), Scandium (Sc), and Actinium (Ac) projects and will be project |
| (co-)lead.</dd> |
| <dt>Martin Lanter, ETH Zurich</dt> |
| <dd>Martin Lanter is the main developer of the initial Californium (Cf) |
| and Actinium (Ac) projects and will contribute to the base |
| implementations of CoAP.</dd> |
| <dt>Julien Vermillard, Sierra Wireless</dt> |
| <dd>Julien Vermillard is the author of the Leshan OMA Lightweight M2M server |
| implementation. He will contribute LWM2M functionality in this new |
| project. |
| </dd> |
| </dl> |
| |
| <p>We welcome additional committers and contributions.</p> |
| |
| <!-- |
| Describe any initial contributions of code that will be brought to the |
| project. If there is no existing code, just remove this section. |
| --> |
| |
| <h2>Mentors</h2> |
| |
| <!-- |
| New Eclipse projects require a minimum of two mentors from the Architecture |
| Council. You need to identify two mentors before the project is created. The |
| proposal can be posted before this section is filled in (it's a little easier |
| to find a mentor when the proposal itself is public). |
| --> |
| |
| <p>The following Architecture Council members will mentor this |
| project:</p> |
| |
| <ul> |
| <li>Mentor 1</li> |
| <li>Mentor 2</li> |
| </ul> |
| |
| <h2>Interested Parties</h2> |
| |
| <!-- |
| Provide a list of individuals, organisations, companies, and other Eclipse |
| projects that are interested in this project. This list will provide some |
| insight into who your project's community will ultimately include. Where |
| possible, include affiliations. Do not include email addresses. |
| --> |
| |
| <p>The following individuals, organisations, companies and projects have |
| expressed interest in this project:</p> |
| |
| <ul> |
| <li>Sierra Wireless</li> |
| <li>Thierry Monteil and Mahdi Ben Alaya, LAAS-CNRS (France)</li> |
| <li>Kai Hudalla, Bosch Software Innovations GmbH</li> |
| </ul> |
| |
| <h2>Project Scheduling</h2> |
| |
| The initial contribution is already available on GitHub with automated Travis-CI |
| builds and a Maven repository. |
| |
| <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> |
| <th>Date</th> |
| <th>Change</th> |
| </tr> |
| <tr> |
| <td>10-December-2013</td> |
| <td>Added Martin Lanter as committer and Android under scope</td> |
| </tr> |
| <tr> |
| <td>04-December-2013</td> |
| <td>Added Sierra Wireless and LAAS-CNRS as interested party</td> |
| </tr> |
| <tr> |
| <td>29-November-2013</td> |
| <td>Document created</td> |
| </tr> |
| </table> |
| </body> |
| </html> |