<!-- 
	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>Wakaama</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 Wakaama project is a proposed open source project under the
        <a href="http://projects.eclipse.org/projects/technology">Technology
        Top-level Project</a>.
    </p>
    <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>
        The Open Mobile Alliance (OMA) is a standards body which develops open
        standards for the mobile phone industry like Multimedia Messaging
        Service (MMS), OMA Data Synchronization (OMA-DS) and OMA Device
        Management (OMA-DM). In February 2012, OMA-DM reached 1.4 Billion
        deployment in commercial devices.
    </p>
    <p>
        Analysis Mason forecasts that the number of M2M connected devices will
        grow to 2.1 billion devices in 2020. Machina Research projects that the
        number of M2M connections will grow to 20 billion in 2020. There will
        be more M2M devices shipped each year than PCs, tablets, cell phones,
        set-top-boxes and gaming platforms put together. This is why the OMA is
        now looking at M2M and the Internet of Things.
        At the end of 2013, OMA released the specifications for Lightweight M2M
        (LWM2M).
    </p>
    <p>
        OMA Lightweight M2M is a protocol for device and service management.
        The main purpose of this technology is to address service and
        management needs for constrained M2M devices, over a number of
        transports and bearers. The crucial aspects in this work are:
    </p>
        <ul>
            <li>
                The target, that is a variety of devices “constrained” at very
                different levels
            </li>
            <li>
                Data collection and remote controlling without complex
                computing and UI operations
            </li>
            <li>
                The optimization of network resources, as a very large numbers
                of devices may be connected to the communication network
                simultaneously
            </li>
            <li>
                The fusion of device functionalities management and service
                manipulation in a single protocol</li>
        </ul>
    <p>
        LWM2M defines three logical components:</p>
        <ul>
            <li>
                The LWM2M Server which manages LWM2M Clients.
            </li>
            <li>
                The LWM2M Client executing the operations from the LWM2M Server
                and reporting results of the operations for the device
                management and the service enablement.
            </li>
            <li>
                The LWM2M Bootstrap Server which configures the LWM2M Clients.
            </li>
        </ul>
        <p>And four interfaces between these logical components:</p>
        <ul>
            <li>
                Device Discovery and Registration<br/>
                This interface allows a LWM2M Client let the LWM2M Server know
                its existence and information (e.g., capability).
            </li>
            <li>
                Bootstrap<br/>
                This interface is used by the LWM2M Bootstrap Server to set
                initial parameters and configurations on the LWM2M Client.
            </li>
            <li>
                Device Management and Service Enablement<br/>
                This interface allows the LWM2M Server to perform the device
                management and M2M service enablement. Over this interface, the
                LWM2M Server can send operations to the Client and gets
                response of the operations from the LWM2M Client.
            </li>
            <li>
                Information Reporting<br/>
                This interface allows the LWM2M Client to report resource
                information to the LWM2M Server. This Information Reporting can
                be triggered periodically or by events.
            </li>
        </ul>
    
    <p>The LWM2M has the protocol stack defined as below:</p>
        <img src="liblwm2m_pic1.png" />
        <ul>
            <li>
                LWM2M Objects: LWM2M Objects are designed for each
                functionality the LWM2M Client provides. The LWM2M
                specification provides Standard Objects.
            </li>
            <li>
                LWM2M Protocol: defines logical operations and
                mechanisms per each interface.
            </li>
            <li>
                CoAP: LWM2M utilizes the IETF Constrained Application Protocol
                as an underlying transfer protocol across UDP and SMS bearers.
                This protocol defines the message header, request/response
                codes, message options, and retransmission mechanisms. LWM2M
                only uses the subset of features defined CoAP.
            </li>
            <li>
                DTLS: DTLS is used to provide security channel between the
                LWM2M Server and the LWM2M Client for all the messages
                interchanged.
            </li>
            <li>
                UDP Binding is mandatory and SMS Binding optional.
            </li>
        </ul>
    <p>
        Like in OMA-DM, in LWM2M the LWM2M Server manipulates resources on
        LWM2M Clients using commands like Read, Write, Execute, Create or
        Delete. The LWM2M Client may have any number of Resources, each of
        which belongs to an Object.
        An Object defines a grouping of Resources, for example the Firmware
        Object contains all the Resources used for firmware update purposes.
        The LWM2M enabler defines standard Objects and Resources and other
        Objects may be added to enable a certain M2M Services.
    </p>

<h2>Scope</h2>
    <p>
        The Wakaama project covers the LWM2M Protocol, CoAP, and DTLS layers of
        the LWM2M protocol stack for all three logical components: LWM2M
        Client, LWM2M Server and LWM2M Bootstrap Server.
        An application using Wakaama can fill any LWM2M roles or all of them
        at once.
    </p>
    <p>
        The CoAP and DTLS layers may be provided by external components.
    </p>
    <p>
        Regarding LWM2M Objects, Wakaama only covers the objects required to
        have a functional LWM2M stack: LWM2M Security Object, LWM2M Server
        Object and optionally Access Control Object.
        Other LWM2M Objects are added as plugins to Wakaama by the application.
    </p>

<h2>Description</h2>
    <p>
        Wakaama is not a library but files to be built with
        an application. It is written in C and designed to be portable on POSIX
        compliant systems.<br/>
        Two compilation switches are used: LWM2M_CLIENT_MODE and
        LWM2M_SERVER_MODE. Defining LWM2M_CLIENT_MODE enables the LWM2M Client
        interfaces. Defining LWM2M_SERVER_MODE enables the LWM2M Server
        interfaces. Both can be defined at the same time.
    </p>
    <p>
        Wakaama is mono-threaded. An application can call a HandlePacket API
        to feed Wakaama with received LWM2M packets and a Step API to perform
        any pending LWM2M operations.
    </p>
    <p>
        Wakaama provides APIs for a server application to send commands to
        registered LWM2M Clients. On client applications, Wakaama checks
        received commands for syntax and access rights and then dispatches them
        to the relevant objects.
    </p>

<h2>Why Eclipse?</h2> 
    <p>
        Providing an OMA Lightweight M2M protocol implementation to the Eclipse
        community will help developers to write interoperable M2M services
        without having to deal with the complexity of the standard or having a
        deep knowledge of it.<br/>
        Being hosted by Eclipse, this project will welcome further
        contributions more easily, help the interoperability and thus reduce
        the fragmentation, to the best benefit of the technology and the
        industry.
    </p>

<h2>Initial Contribution</h2>
    <p>
        Wakaama initial implementation is currently available on
        <a href="https://github.com/01org/liblwm2m">GitHub</a>.
    </p>
    <p>
        The code is functional and implements the Device Discovery and
        Registration interface, the Device Management and Service Enablement
        interface and the Information Reporting interface.<br/>
        The missing features are the Bootstrap interface, the DTLS layer and
        the Access Control Object.<br/>
        Wakaama comes with two test applications: a LWM2M Client and a LWM2M
        Server. Both features a basic command line interface.
    </p>
    <p>
        The LWM2M protocol engine copyright is held by Intel Corporation with
        some contributions by Sierra Wireless.<br/>
        Wakaama includes files from the Erbium CoAP Engine for Contiki which
        is copyrighted by the Institute for Pervasive Computing, ETH Zurich and
        released under a BSD 3-clause license.
    </p>

<h2>Legal Issues</h2>
    <p>
        Wakaama is currently released under the BSD 3-clause license.<br/>
        The proposed licensing for this project will rely on dual license,
        Eclipse Distribution License and Eclipse Public License.
    </p>

<h2>Committers</h2>
    <p>
        The following individuals are proposed as initial committers to the
        project:
    </p>

    <dl>
	    <dt>David Navarro, Intel Corporation</dt>
        <dt>Julien Vermillard, Sierra Wireless</dt>
        <dt>Manuel Sangoï, Sierra Wireless</dt>
    </dl>

    <p>
        We welcome additional committers and contributions.
    </p>

<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>
            Benjamin Cab&eacute;
        </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>
    </ul>

<h2>Project Scheduling</h2>

<!-- 
	Describe, in rough terms, what the basic scheduling of the project will
	be. You might, for example, include an indication of when an initial contribution
	should be expected, when your first build will be ready, etc. Exact
	dates are not required.
 -->

<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>04-December-2013</td>
		    <td>Document created</td>
	    </tr>
    </table>
</body>
</html>