| <!-- |
| 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, …), |
| communication with different kind of hardware by using specific |
| protocols, low-bandwidth/unreliable mobile networks, …<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 |
| — a lightweight embeddable script language — 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> — 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> — Mihini aims at facilitating the access to system I/Os |
| (serial port, GPIO, …) and provide a consistent API to |
| implement protocol parsers ; </li> |
| |
| <li><strong>Device Management</strong> — Mihini will |
| propose an API to interact with the underlying system to perform |
| low-level operations (reboot, AT commands, …) ;</li> |
| |
| <li><strong>Application Management</strong> — 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> — |
| 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, …), 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é</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, …) 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élé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, …), 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 – 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> |