blob: 5c957ed594943001d554c61ff2d057c4a90c6895 [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>Mihini</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;
}
.archiBlock {
font-family: sans-serif;
font-variant: small-caps;
color: #FFF;
padding: 5px;
margin-bottom: 0.8em;
margin-top: 1em;
display: inline-block;
border: solid 3px;
display: inline-block;
}
#agent {
background-color: #abc66a;
border-color: #83943b;
}
#api {
background-color: #5e95cb;
border-color: #3e6c9b;
}
</style>
<body>
<p>
The Mihini project is a proposed open source incubator project under
the <a
href="http://www.eclipse.org/projects/project_summary.php?projectid=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>
<!--
Optionally provide the background that has lead you to creating this project.
-->
<pre>
[Wikipedia] : Machine-to-Machine (M2M) refers to technologies that
allow both wireless and wired systems to communicate with other devices
of the same ability.
</pre>
<p>
<img src="images/m2m-overview.png" alt="m2m-overview" />
</p>
<p>One big challenge when it comes to developing an embedded
application, and this is even more true for M2M development, is to
hide the complexity inherent to embedded and wireless systems.</p>
<p>
While many M2M embedded applications are often reduced to a simple
problem consisting in collecting data on physical assets and sending
them to a server so as this data can be processed, there are many
obstacles that can seriously slow down the implementation of such
applications: constrained resources (memory, CPU, &#8230;),
communication with different kind of hardware by using specific
protocols, low-bandwidth/unreliable mobile networks, &#8230;<br />
There are open source solutions facilitating the development of M2M
solutions but they are usually targetting embedded devices powerful
enough in terms of memory and processing power, thus offering no
viable solution for devices with more limited resources.
</p>
<p>For this reason, the proposed Mihini project aims at delivering
an M2M Application Framework leveraging the Lua programming language
&mdash; a lightweight embeddable script language &mdash; that can
easily be used on constrained targets running Linux.</p>
<h2>Scope</h2>
<!--
All projects must have a well-defined scope. Describe, concisely, what
is in-scope and (optionally) what is out-of-scope. An Eclipse project
cannot have an open-ended scope.
-->
<p>The scope of the Mihini project is to provide an open source
implementation of an embedded runtime exposing high-level Lua API that
can be used to develop portable M2M applications easily.</p>
<p>The Mihini project may contain server-side runtime components
that can be used for testing purposes but does not aim at delivering
components that can be reused directly in M2M servers.</p>
<h2>Description</h2>
<!--
Describe the project here. Be concise, but provide enough information that
somebody who doesn't already know very much about your project idea or domain
has at least a fighting chance of understanding its purpose.
-->
<p>The goal of the Mihini project is to deliver a first-class, easy
to learn and easy to port, embedded framework for M2M development,
that integrates well with Eclipse tools.</p>
<img src="images/mihini-architecture.png" alt="mihini-architecture" />
<p>The Mihini Framework will expose Lua API for the following key
features:
<ul>
<li><strong>Data Management</strong> &mdash; The Mihini
Application Framework will expose
API to consolidate and send data corresponding to physical assets
connected to an M2M system, without having to worry about underlying
network constraints ;</li>
<li><strong>I/O Management</strong> &mdash; Mihini aims at facilitating the access to system I/Os
(serial port, GPIO, &#8230;) and provide a consistent API to
implement protocol parsers ; </li>
<li><strong>Device Management</strong> &mdash; Mihini will
propose an API to interact with the underlying system to perform
low-level operations (reboot, AT commands, &#8230;) ;</li>
<li><strong>Application Management</strong> &mdash; Mihini will
allow to remotely control the installation and execution of
applications, independently of their language. This includes allowing
an IDE to monitor and deploy applications easily ;</li>
<li><strong>Application Settings Management</strong> &mdash;
Mihini will include an API to manipulate the configuration settings
of applications developed using the Application Framework.</li>
</ul>
<p>Mihini will be designed so as to enable first-class support by
development tools (remote debugging, application monitoring,
communications tracing, &#8230;), and in particular it will provide a
REST API giving access to core features of the framework.</p>
</p>
<h2>Why Eclipse?</h2>
<!--
Answer these two questions: What value does this project bring to the Eclipse
community? What value do you expect to obtain from hosting your project at Eclipse?
What value do you get by having your project at Eclipse over and above the value
of hosting at Eclipse Labs?
-->
<p>Since Mihini is providing an M2M framework, it has by nature
strong relationships with the M2M activities at Eclipse:</p>
<ul>
<li>The API provided by the Mihini project will be defined by the
<strong>M2M Industry Working Group</strong> ;
</li>
<li>The tools for Mihini will be developed by the <strong>Koneki</strong>
project team. In particular, Mihini will benefit from the already
existing Lua Development Tools, and it is expected that Koneki will
be enhanced with a Target Management feature that will allow easy
remote debugging and deployment of Mihini applications ;
</li>
<li>The <strong>Paho</strong> project delivers implementations of
M2M messaging protocols. Mihini will initially use HTTP and TCP as
transport layers, and aims at being compatible with the messaging
protocols delivered by Paho.
</li>
</ul>
<p>While Mihini is focusing on delivering a Lua API, the project
team will work on providing OSGi bundles that interact with the Mihini
runtime to allow better integration between the Java and Lua virtual
machines, therefore a possible collaboration with the Equinox project
team is expected.</p>
<h2>Initial Contribution</h2>
<!--
Projects are expected to arrive at Eclipse with existing code.
Describe the existing code that will be contributed to the project. Please provide
a couple of paragraphs describing the code with modest detail, including important
information like code ownership (who holds the copyright?), and some consideration
of community that exists around the code. Include a listing of third-party libraries
and associated licenses.
-->
<p>The Mihini project will be seeded with an initial contribution
from Sierra Wireless:</p>
<ul>
<li>A <u>provisional</u> Lua API for I/O management, Asset Management,
and Device Management ;</li>
<!-- <li>An implementation of these APIs relying on an embedded agent
written in C and an enhanced version of the Lua virtual machine ;</li>
-->
<li>The specification of a protocol used to interact with an M2M server ;
</li>
<!--
<li>An initial set of OSGi bundles that allows interacting with
the core feature of the embedded Agent from a Java/OSGi environment ;</li>
-->
<li>A documentation explaining how to port the Mihini framework
on a Linux target.</li>
</ul>
<h2>Legal Issues</h2>
<!--
Please describe any potential legal issues in this section. Does somebody else
own the trademark to the project name? Is there some issue that prevents you
from licensing the project under the Eclipse Public License? Are parts of the
code available under some other license? Are there any LGPL/GPL bits that you
absolutely require?
-->
<p>
The Mihini initial contribution is based on an enhanced version of the
Lua VM which has already been approved for the Koneki project (CQ
5575).<br /> While Mihini dependencies are mostly libraries in the
public domain or in MIT licenses with pretty clear pedigree, there is
one LGPL library that might require a slight refactoring in order to
be turned into a "works-with" dependency.
</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>
<b>Benjamin Cab&eacute;</b>, Sierra Wireless (project co-lead)
</dt>
<dd>
Benjamin is leading Sierra Wireless effort in the M2M Industry
Working Group, as well as the Koneki project (tools for M2M).<br />
He is a long-time contributor on many Eclipse projects (Eclipse, PDE,
EMF, ECF, &#8230;) and committer on e4 and PDE. He
loves spreading the good word about Eclipse awesomeness at various
conferences and by writing blogs and articles.
</dd>
<dt>
<b>Cuero Bugot</b>, Sierra Wireless (project co-lead)
</dt>
<dd>Cuero is leading the development effort on Mihini. He brings over
10 years of experience in embedded systems. He is one of the original
creators of this project based on Lua, and he invests a fair amount
of his time rallying people around this wonderful programming language!</dd>
<dt>
<b>Laurent Barth&eacute;l&eacute;my</b>, Sierra Wireless
</dt>
<dd>Laurent is an Embedded Software developer at Sierra Wireless, one of the initial developers
of Mihini. He has more than 5 years of experience with embedded systems, software
developments and M2M environments.</dd>
<dt>
<b>Simon Bernard</b>, Sierra Wireless
</dt>
<dd>Simon is the lead developer of Sierra Wireless Tools for
Embedded Development, and is the architect and main developer of
Koneki Lua Development Tools. He has 5+ years of experience with
Eclipse development (RCP, EMF, GMF, CDT, &#8230;), and knows the
Eclipse Development Process well.</dd>
<dt>
<b>Fabien Fleutot</b>, Sierra Wireless
</dt>
<dd>Fabien is an expert in embedded systems and programming languages semantics, as well
as an active member of the Lua community.
He has over 12 years of experience with embedded, distributed and networked systems,
both in academia and in the industry, including 5 years at Sierra Wireless designing
better ways to create and deploy M2M solutions.
</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>Chris Aniszczyk, Twitter.</li>
<li>Marting Oberhuber, Intel Windriver.</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>Rick Bullotta, Thingworx.</li>
<li>Ranganathan Panchapakesan, Wipro Technologies.</li>
<li>Justin Cormack, ljsyscall project.</li>
<li>Mimi K. Tam, Verizon.</li>
<li>Pascal Rapicault.</li>
</ul>
<h2>Tentative Plan</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.
-->
<ul>
<li>Oct 2012 &ndash; Sierra Wireless initial contribution
<ul>
<li>Lua API for Device, Asset and I/O management</li>
<li>Documentation (API, porting guide)</li>
</ul>
</li>
<li>Q4 2012
<ul>
<li>Lua API for Application Management</li>
<li>Collaboration with Koneki project team to deliver Target
Management tools</li>
<li>First Eclipse release (0.8)</li>
</ul>
</li>
<li>early 2013
<ul>
<li>Implementation of REST remote control API</li>
</ul>
</li>
<li>June 2013
<ul>
<li>Release 1.0 version with Kepler (tentative)</li>
</ul>
</li>
</ul>
<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>16-Jul-2012</td>
<td>Document created</td>
</tr>
<tr>
<td>16-Aug-2012</td>
<td>Updated bios of initial contributors.<br/>
Added interested parties and AC mentors</td>
</tr>
</table>
</body>
</html>