The Mihini project is a proposed open source incubator project under
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
[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
- 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
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
- 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
- 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
||Updated bios of initial contributors.
Added interested parties and AC mentors