blob: 07ebd64eb8e379d849a7bfe66dd7762d0c957283 [file] [log] [blame]
<!--
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>