[424024] [proposal] technology.californium
Bug: https://bugs.eclipse.org/bugs/show_bug.cgi?id=424024
diff --git a/technology.californium/README.txt b/technology.californium/README.txt
new file mode 100644
index 0000000..13afc4a
--- /dev/null
+++ b/technology.californium/README.txt
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Eclipse Foundation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Wayne Beaton (Eclipse Foundation)- initial API and implementation
+ *******************************************************************************/
+
+In this package, you will find several files. From a proposal author
+point of view, the only file you really need to concern yourself with is
+the proposal.html file. There are comments in that file that will help
+you pull the required pieces together.
+
+If you have the phoenix environment set up on your workstation, you can
+see how the proposal will look "live". However, you should be able to
+work successfully with just the HTML document. Please keep the formatting
+simple, as we will use style sheets to format the public version.
+
+Thank you for taking the time to author an Eclipse Project proposal.
+
+Direct any questions about this template to emo@eclipse.org
\ No newline at end of file
diff --git a/technology.californium/_projectCommon.php b/technology.californium/_projectCommon.php
new file mode 100644
index 0000000..741b7e0
--- /dev/null
+++ b/technology.californium/_projectCommon.php
@@ -0,0 +1,3 @@
+<?php
+include("../_proposalCommon.php");
+?>
diff --git a/technology.californium/functions.php b/technology.californium/functions.php
new file mode 100755
index 0000000..432bb72
--- /dev/null
+++ b/technology.californium/functions.php
@@ -0,0 +1,55 @@
+<?
+/*******************************************************************************
+ * Copyright (c) 2007 Eclipse Foundation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Wayne Beaton (Eclipse Foundation)- initial API and implementation
+ *******************************************************************************/
+
+function get_title_from_html_document($file_name) {
+ $header = get_header_from_html_document($file_name);
+
+ /*
+ * Break the header up into multiple lines. Handle the
+ * case where line breaks are lf, crlf, or cr.
+ */
+
+ $lines = preg_split("/\r?\n|\r/", $header);
+
+ /*
+ * Merge the lines into a single line so that eregi
+ * can find the title even if it is split over multiple
+ * lines
+ */
+ $one_line = implode(" ", $lines);
+
+ /*
+ * If we can match a title tag, extract it.
+ */
+ if (eregi("<title>(.*)</title>", $one_line, $title)) {
+ return $title[1];
+ }
+
+ return "An Eclipse Proposal";
+}
+
+function get_header_from_html_document(&$file_name) {
+ $handle = @fopen($file_name, "r");
+ $content = "";
+ while (!feof($handle)) {
+ $part = fread($handle, 1024);
+ $content .= $part;
+
+ /*
+ * Only read up to the part that includes the
+ * end tag for the header area.
+ */
+ if (eregi("</head>", $part)) break;
+ }
+ fclose($handle);
+ return $content;
+}
\ No newline at end of file
diff --git a/technology.californium/index.php b/technology.californium/index.php
new file mode 100644
index 0000000..d4afb48
--- /dev/null
+++ b/technology.californium/index.php
@@ -0,0 +1,32 @@
+<?php require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php"); require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); $App = new App(); $Nav = new Nav(); $Menu = new Menu(); include($App->getProjectCommon()); # All on the same line to unclutter the user's desktop'
+
+require_once("functions.php");
+$proposal_title = get_title_from_html_document("proposal.html");
+
+$pageTitle = $proposal_title;
+$pageKeywords = "Eclipse, proposal";
+$pageAuthor = "";
+
+
+ob_start();
+?>
+<div id="maincontent">
+ <div id="midcolumn">
+
+ <h1><?= $proposal_title ?></h1>
+
+ <?php
+ include_once($_SERVER['DOCUMENT_ROOT'] . "/projects/fragments/proposal-page-header.php");
+ generate_header($proposal_title);
+
+ include("proposal.html");
+ ?>
+ </div>
+</div>
+<?php
+$html = ob_get_contents();
+ob_end_clean();
+
+# Generate the web page
+$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
+?>
diff --git a/technology.californium/proposal.html b/technology.californium/proposal.html
new file mode 100644
index 0000000..2e7c393
--- /dev/null
+++ b/technology.californium/proposal.html
@@ -0,0 +1,307 @@
+<!--
+ 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>
+</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>
\ No newline at end of file