Creation Review

Type
Creation
State
Successful
End Date of the Review Period

Reviews run for a minimum of one week. The outcome of the review is decided on this date. This is the last day to make comments or ask questions about this review.

Proposal

ioFog

Thursday, July 21, 2016 - 01:11 by Kilton Hopkins
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 community. Please login and add your feedback in the comments section.
Parent Project
Proposal State
Created
Background

There are many great ways to build IoT software in the cloud. And there are many great ways to store and analyze the large amounts of data produced by sensors and devices.

Yet there are few ways to build IoT software that runs in a real-world location such as a warehouse or a hospital room. Developing and deploying software to these edge locations can be time consuming, expensive, and inflexible.

ioFog was created to solve these problems. The goal is to make developing IoT edge software feel like developing for the cloud, but with even more power.

Scope

1. A software agent, ioFog, that provides a universal runtime for IoT micro services

2. A node controller allowing to control ioFog instances

3. SDKs in multiple programming languages, allowing developers to program containerized edge applications and micro-services

4. Development tools to author and simulate various deployment scenarios

Description

The Eclipse ioFog set of technologies is a fog computing layer that can be installed on any hardware running Linux. Once installed, it provides a universal runtime for microservices to run on the edge. In addition to a common runtime, ioFog also provides a set of useful services including a message bus, dynamic configuration of the microservices, and remote debugging.

Automated interconnection of ioFog instances is provided by the ComSat component. This relieves developers from writing code just to move data from one place to another.

Orchestration and management of microservices (the edge software) is provided by the ioAuthoring application and the ioFog instances receive their instructions through the fabric controller.

Working together, these components provide a full set of technologies for building and running IoT software the executes wherever the developer chooses.

 

In greater detail, the fog computing layer is comprised of the following:

1. A fog computing software agent that runs on various operating systems and provides a universal runtime for IoT microservices. This is called "ioFog".

 

2. A fog computing node controller that runs on popular Linux distributions and gives dynamic instruction to the ioFog instances. It has an API that allows for various tooling to be built for controlling the fog computing fabric. This is called "Fabric Controller".

 

3. An internetworking utility that runs on popular Linux distributions and provides a way for ioFog instances to interconnect, even through private network layers and firewalls. This is called "ComSat".

 

4. A design-time interface for creating, saving, editing, and deploying microservices schemas that are called "tracks". It runs on popular Linux distributions and uses the Fabric Controller API to do its work. This is called "ioAuthoring".

 

5. Software Development Kits (SDKs) in multiple programming languages that provide developers with the convenience of programming against objects instead of using the native REST API that exists within the ioFog.

 

6. A local software development tool that mimics the fog computing runtime and gives developers a way to test their code against simulated situations before making the effort to package their code as a microservice. This is called "Test Message Generator".

Why Here?

The community will gain a standard development model for IoT edge processing that frees them from the constraints of specific languages and specific hardware, and a set of technologies for provisioning and managing the edge processing.

By hosting our project with this community, we expect to augment our ecosystem of microservice developers and receive feedback that helps strengthen the technology.

 

There is strong potential for collaboration with other Eclipse IoT projects. Here are some examples:

hawkBit - by leveraging microservices running on the ioFog, remote updates can be achieved for devices that have complex update processes or connectivity that requires intellitent interfacing.

Vorto - the meta definitions of real-world objects can be represented in the ioAuthoring interface, with the implementation happening on a per-object basis through the use of microservices running on the edge near the actual physical object.

Kura - the ioFog (along with ComSat) can be used to add remote connectivity and servicability for Kura gateways that remain safely behind a firewall or NATed network. Microservices can be instantiated on the ioFog to work with Kura gateways and add layers of behavior for large groups of them.

Future Work

Additional functionality:

Enhanced fabric controller API

IDE integration

Rich microservice publishing functionality

 

Community activities:

Hold industry-specific developer workshops to address particular current IoT challenges

Introduce adapter microservices to provide easy integration with other projects and backend systems

Project Scheduling

Initial contribution of core ioFog immediately upon project creation. A fully functional version already exists.

Updated build of ioFog in September, 2016 with some additional features. This version is already in development.

All system components available in extensible, distributed format by January, 2017. This includes ioFog, ComSat, ioAuthoring, and the Fabric Controller.

 

Java, Python, and Node.js SDKs contributed immediately.

Two additional SDKs prioritized and contributed in October, 2016.

Further SDKs contributed in January, 2017.

Project Leads
Committers
Kilton Hopkins (This committer does not have an Eclipse Account)
Interested Parties

Ian Skerrett

Benjamin Cabé

Richard Soley

Samsung

Motorola Solutions

Initial Contribution

All code and copyrights are owned by the contributing organization (iotracks, inc.).

The existing code that will be contributed consists of the ioFog Linux service, the ComSat Linux service, the ioAuthoring application for creating and managing ioFog instances and publishing microservices, and the fabric controller application for orchestrating the instantiation of microservices on ioFog instances.

 

Github public repository:

https://github.com/iotracks/iofabric

 

Third-party libraries:

Netty (Apache 2 license)

HornetQ (Apache 2 license)

Docker-Java (Apache 2 license)

Source Repository Type