Californium (Cf) CoAP Framework
The Californium (Cf) CoAP framework 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.
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.
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.
ScopeCalifornium (Cf) provides an implementation of the Constrained Application Protocol (CoAP) standard. The scope of this project can be summarized as follows:
- Maintain the base implementation of CoAP by providing bug-fixes, optimizations, and necessary documentation.
- Continue implementing complementary specifications by the IETF CoRE working group.
- Maintain the included Web resource framework for M2M and Internet of Things applications.
- Provide seamless integration with M2M projects for OMA Lightweight M2M and OneM2M such as the OM2M proposal.
- Implement a security API that allows for authentication and authorization as defined by IETF, OMA, and OneM2M activities. Californium (Cf) comes with the Scandium (Sc) project as DTLS implementation.
- Extend Android support of the CoAP base implementation.
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.
The CoAP framework already provides the following features:
- Implementation of the Proposed Standard of CoAP ( draft-ietf-core-coap-18)
- Implementation of the Observe draft ( draft-ietf-core-observe-11)
- Implementation of the Blockwise Transfers draft ( draft-ietf-core-block-14)
- Implementation of the Resource Directory draft ( draft-ietf-core-resource-directory-00)
- CoAP-HTTP cross-proxy support through httpcore-nio and guava
- Web resource framework with an advanced concurrency model for the implementation of Internet of Things applications
- Basic DTLS 1.2 support through Scandium (Sc)
- Wrapper for OSGi
- Benchmark tool for measuring the performance of CoAP servers
Additional work is currently carried out on the following topics:
- Group communication through IP multicast and management through draft-ietf-core-groupcomm-17
- Advanced congestion control
Why Eclipse?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.
The Californium (Cf) project will be provided with an initial contribution from ETH Zurich:
- The Californium (Cf) CoAP framework in Java
- The Scandium (Sc) DTLS 1.2 implementation
- The Actinium (Ac) application server implementation
- The element-connector module, which allows modularization of the project for different platforms and use cases.
Californium will be dual-licensed under the Eclipse Public License (EPL) 1.0 and the Eclipse Distribution License (EDL).
Matthias Kovatsch and ETH Zurich own the full copyright of the initial contribution, which was published under 3-clause BSD license.
Californium (Cf) currently includes the following third party libraries via Maven for the optional HTTP-CoAP cross-proxy support:
- Apache HttpCore NIO 4.2.1, ASL 2.0
- Apache HttpClient 4.2.1, ASL 2.0
- Guava, ASL 2.0
The optional Actinium (Ac) extension currently includes the following third party libraries via Maven:
- Mozilla Rhino 1.7R3, MPL 2.0
- E4XUtils 1.0 by Anthony Elder, permission to use and distribute
The following individuals are proposed as initial committers to the project:
- Matthias Kovatsch, ETH Zurich
- Matthias Kovatsch is the creator and main architect of the Californium (Cf), Scandium (Sc), and Actinium (Ac) projects and will be project (co-)lead.
- Martin Lanter, ETH Zurich
- Martin Lanter is the main developer of the initial Californium (Cf) and Actinium (Ac) projects and will contribute to the base implementations of CoAP.
- Julien Vermillard, Sierra Wireless
- Julien Vermillard is the author of the Leshan OMA Lightweight M2M server implementation. He will contribute LWM2M functionality in this new project.
We welcome additional committers and contributions.
The following Architecture Council members will mentor this project:
- Chris Aniszczyk
- Wayne Beaton
The following individuals, organisations, companies and projects have expressed interest in this project:
- Sierra Wireless
- Thierry Monteil and Mahdi Ben Alaya, LAAS-CNRS (France)
- Kai Hudalla, Bosch Software Innovations GmbH
Project SchedulingThe initial contribution is already available on GitHub with automated Travis-CI builds and a Maven repository.
Changes to this Document
|Added Martin Lanter as committer and Android under scope
|Added Sierra Wireless and LAAS-CNRS as interested party