The Mihini project is a proposed open source incubator 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.
[Wikipedia] : Machine-to-Machine (M2M) refers to technologies that allow both wireless and wired systems to communicate with other devices of the same ability.
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.
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, …
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.
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.
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.
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.
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.
The Mihini Framework will expose Lua API for the following key features:
- Data Management — 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 ;
- I/O Management — Mihini aims at facilitating the access to system I/Os (serial port, GPIO, …) and provide a consistent API to implement protocol parsers ;
- Device Management — Mihini will propose an API to interact with the underlying system to perform low-level operations (reboot, AT commands, …) ;
- Application Management — 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 ;
- Application Settings Management — Mihini will include an API to manipulate the configuration settings of applications developed using the Application Framework.
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.
Since Mihini is providing an M2M framework, it has by nature strong relationships with the M2M activities at Eclipse:
- The API provided by the Mihini project will be defined by the M2M Industry Working Group ;
- The tools for Mihini will be developed by the Koneki 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 ;
- The Paho 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.
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.
The Mihini project will be seeded with an initial contribution from Sierra Wireless:
- A provisional Lua API for I/O management, Asset Management, and Device Management ;
- The specification of a protocol used to interact with an M2M server ;
- A documentation explaining how to port the Mihini framework on a Linux target.
The Mihini initial contribution is based on an enhanced version of the
Lua VM which has already been approved for the Koneki project (CQ
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.
The following individuals are proposed as initial committers to the project:
- Benjamin Cabé, Sierra Wireless (project co-lead)
Benjamin is leading Sierra Wireless effort in the M2M Industry
Working Group, as well as the Koneki project (tools for M2M).
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.
- Cuero Bugot, Sierra Wireless (project co-lead)
- 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!
- Laurent Barthélémy, Sierra Wireless
- 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.
- Simon Bernard, Sierra Wireless
- 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.
- Fabien Fleutot, Sierra Wireless
- 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.
We welcome additional committers and contributions.
The following Architecture Council members will mentor this project:
- Chris Aniszczyk, Twitter.
- Marting Oberhuber, Intel Windriver.
The following individuals, organisations, companies and projects have expressed interest in this project:
- Rick Bullotta, Thingworx.
- Ranganathan Panchapakesan, Wipro Technologies.
- Justin Cormack, ljsyscall project.
- Mimi K. Tam, Verizon.
- Pascal Rapicault.
- Oct 2012 – Sierra Wireless initial contribution
- Lua API for Device, Asset and I/O management
- Documentation (API, porting guide)
- Q4 2012
- Lua API for Application Management
- Collaboration with Koneki project team to deliver Target Management tools
- First Eclipse release (0.8)
- early 2013
- Implementation of REST remote control API
- June 2013
- Release 1.0 version with Kepler (tentative)
Changes to this Document
|16-Aug-2012||Updated bios of initial contributors.
Added interested parties and AC mentors