iota Proposal

Abstract

The Apache Foundation has been very successful in bringing together key software components that have enabled people to interact with each other via a variety of content platforms and it will no doubt continue to do so. At the same time modern society is becoming increasingly dependent on devices that interact with each other and with people. The amount of data that will be produced by devices will be orders of magnitude greater than what has been produced by humans in the past. In addition, the orchestration of devices and people will be an important area of growth for the foreseeable future. This new dynamic will eventually become manifest in a growing number of Apache projects that enable this to occur. Our wish is to contribute to this movement by contributing the iota system to the Open Source Community via the Apache Foundation. Apache iota is an open platform to interconnect any and all devices, sensors, people, and applications, henceforth referred to as points, through a scalable, secure, and modular architecture, enabling applications to generate analysis, create actions and/or add intelligence to their behaviors and patterns.

Proposal

Perhaps you are a homeowner configuring the interaction between your family and all the smart devices in your home. Or you might be a global company orchestrating millions of devices and people across different continents. Either way you face the same fundamental problem; namely, how do you manage many points in a secure robust and meaningful manner? Apache iota is an open source software system that enables homeowners and global companies to download a software system that provides secure and robust orchestration.

The iota system consists of a variety of components:

  • A basic but extensible desktop
  • An extensible mechanism for capturing data from a variety of sources
  • A set of translators that feed the data capture mechanism and a framework for the development of additional translators
  • A secure means of moving data using digital envelopes based on symmetric and asymmetric encryption and decryption via Apache Kafka
  • Optionally maintaining data encrypted in a datastore
  • Support for a variety of data repositories
  • Authentication and authorization using OAuth2
  • Secure APIs for access to data and the system information
  • User management
  • Device management
  • Automated software upgrades via Salt
  • Configuration management
  • Robust basic infrastructure based on Apache Mesos that enables scalability
  • Dockerized applications

Background

We are in the midst of a revolution in which the Internet of Things (IoT) is poised to impact the development of our society in ways we can not even begin to imagine. Unfortunately, we know of no coherent OSS (Open Source Software) solution that can harness the potentialities of this increasingly important trend. Manufacturers of IoT devices, both in the consumer and industrial spaces, continue to develop proprietary systems. Apache iota is an open source IoT system that creates an open source solution enabling the orchestration of IoT devices that brings the benefits of OSS to this space. Apache iota was initially developed by Litbit and is deployed in a growing number of Industrial contexts, especially in the context of Data Center Infrastructure.

Rationale

Apache iota is a general platform for orchestrating IoT devices in both consumer and industrial contexts. It is complementary to the existing Apache projects and is itself built using of a number of Apache projects. Bringing iota into Apache is very beneficial to both the Apache community and the IoT community.

The rapid growth of IoT needs to be harnessed in the Open Source Community. We believe the Apache Foundation is a great fit as the long-term home for iota, as it provides an established process for community-driven development and decision making by consensus. This is exactly the model we want for future iota development.

Initial Goals

  • Move the existing codebase to Apache
  • Integrate with the Apache development process
  • Ensure all dependencies are compliant with Apache License version 2.0
  • Incremental development and releases per Apache guidelines

Current Status

Apache iota has undergone a major release (0.1) and is being used in production by several global organizations. The iota codebase is currently hosted at github.com, which will seed the Apache git repository.

Meritocracy

We plan to invest in supporting a meritocracy. We will discuss the requirements in an open forum. Several companies have already expressed interest in this project, and we intend to invite additional developers to participate. We will encourage and monitor community participation so that privileges can be extended to those that contribute.

Community

The need for an open source IoT orchestration system is tremendous. Apache iota is currently being used by several organizations worldwide. By bringing iota into Apache, we believe that the community will quickly grow and become a significant Apache offering.

Core Developers

iota was initially developed at Litbit by the following individuals:

  • Rutvij Clerk
  • Miron Costant
  • Tony Faustini
  • Reza Hajebi
  • Amirhossein Jabbari
  • Shahin Mowzoon
  • Scott Noteboom
  • Sydney Noteboom
  • Omkar Prabhu
  • Don Shields

Alignment

IoT orchestration is in need of an Open Source Solution. We believe iota can be that solution and fill this need in the Apache Foundation's offerings. We believe that iota will remove the barriers imposed by proprietary solutions and usher in significant growth for the Apache Foundation. The alignment is also beneficial to other Apache communities (such as Zookeeper, Kafka, and Mesos). We could include additional sub-projects in the future.

Known Risks

Orphaned Products

There will be an initial need to ensure the availability and robustness of an initial offering so that contributors and users are highly incentivized to continue development. To this extent, organizations can be encouraged to build critical business applications around iota and the risk of the project being abandoned will be minimized.

Inexperience with Open Source

Our lack of experience with Open Source is an area we will need significant accompaniment with. We are more than willing to invest time and resources to create a healthy open source project. During that time, we will curate an open-source community and attract growing numbers of developers from a diverse group of contributors.

Homogenous Developers

The initial committers will be from Litbit, a well funded startup. We plan to grow iota with an active community of developers, and we are committed to recruiting additional committers based on their contributions to the project.

Reliance on Salaried Developers

It is expected that iota development will occur on both salaried time and on volunteer time, after hours. The majority of initial committers are paid by Litbit to contribute to this project. However, they are all passionate about the project, and we are confident that the project will continue even if no salaried developers contribute to the project. We are committed to recruiting additional committers including non-salaried developers.

Relationships with Other Apache Products

As mentioned in the Alignment section, iota is closely integrated with Zookeeper, Kafka, and Mesos. We look forward to collaborating with those communities, as well as other Apache communities.

An Excessive Fascination with the Apache Brand

iota will become a healthy and well known open source project. This proposal is not for the purpose of generating publicity. Rather, the primary benefits to joining Apache are those outlined in the Rationale section.

Documentation

The reader will find these websites highly relevant:

  • iota website: Coming soon
  • iota documentation: Coming soon
  • Codebase: Becoming public soon
  • User group: Coming soon

Source and Intellectual Property Submission Plan

The iota codebase is currently hosted on Github. To give you some idea of what we will be contributing here are some basic statistics from our current Github

OAuth Server

  • 30 text files.
  • 30 unique files.
  • 5 files ignored.

http://cloc.sourceforge.net v 1.64 T=0.17 s (168.9 files/s, 101341.2 lines/s)

Language

files

blank

comment

code

CSS

7

2724

70

12148

Javascript

5

144

254

1054

Python

14

73

60

129

HTML

2

15

7

119

SUM

28

2956

391

13450

Data Server

  • 21 text files.
  • 20 unique files.
  • 9 files ignored.

http://cloc.sourceforge.net v 1.64 T=0.08 s (208.7 files/s, 19657.5 lines/s)

Language

files

blank

comment

code

Python

15

196

290

829

make

1

30

6

156

SUM

16

226

296

985

Management Server

  • 114 text files.
  • 110 unique files.
  • 16 files ignored.

http://cloc.sourceforge.net v 1.64 T=0.40 s (260.1 files/s, 59749.4 lines/s)

Language

files

blank

comment

code

CSS

7

2724

70

12148

Python

31

757

340

3203

HTML

61

383

32

2823

Javascript

5

144

254

1054

make

1

30

6

156

SUM

105

4038

702

19384

Data Pipeline

  • 81 text files.
  • 81 unique files.
  • 26 files ignored.

http://cloc.sourceforge.net v 1.64 T=0.32 s (177.3 files/s, 15377.2 lines/s)

Language

files

blank

comment

code

Java

54

609

909

2915

Maven

1

16

24

408

XML

2

0

1

63

SUM

57

625

934

3386

Orchestration

  • 5 text files.
  • 5 unique files.
  • 3 files ignored.

http://cloc.sourceforge.net v 1.64 T=0.03 s (90.1 files/s, 32463.5 lines/s)

Language

files

blank

comment

code

Python

3

113

78

890

SUM

3

113

78

890

Data Collector

  • 13 text files.
  • 12 unique files.
  • 4 files ignored.

http://cloc.sourceforge.net v 1.64 T=0.04 s (256.8 files/s, 18873.7 lines/s)

Language

files

blank

comment

code

Cython

1

50

49

318

Python

8

56

40

220

Bourne Shell

1

0

0

2

SUM

10

106

89

540

This is the exact codebase that we would migrate to the Apache foundation.

Upon entering Apache, iota will migrate to an Apache License 2.0 with all contributions licensed to the Apache Foundation. In certain cases if individuals or organizations hold copyright, we will ensure they grant a license to the Apache Foundation. Going forward, all commits will be licensed directly to the Apache foundation through our signed Individual Contributor License Agreements for all committers on the project. Upon entering Apache, Litbit will sign a Software Grant Agreement (SGA): https://www.apache.org/licenses/software-grant.txt

External Dependencies

To the best of our knowledge, all of iota dependencies (except 0MQ) are distributed under Apache compatible licenses. Upon acceptance to the incubator, we would begin a thorough analysis of all transitive dependencies to verify this fact and introduce license checking into the build and release process (for instance integrating Apache Rat).

iota has used 0MQ for some types of internal messaging, and 0MQ is licensed under the GNU Lesser General Public License. We are in the process of making the iota messaging layer pluggable, and plan to use Netty (which is licensed under Apache License v2) as our default messaging plugin (while keeping 0MQ as an optional plugin).

Cryptography

We do not expect iota to be a controlled export item due to the use of encryption. iota enables encryptions via a digital envelope using:

  • RSA 128 Bits
  • AES 128 Bits

Required Resources

Mailing lists

  • iota-user
  • iota-dev
  • iota-commits
  • iota-private (with moderated subscriptions)

Subversion Directory

Git is the preferred source control system: git://git.apache.org/iota

Issue Tracking

JIRA iota (IOTA)

Initial Committers

  • Rutvij Clerk <rutvij at litbit dot com>
  • Miron Costant <miron at litbit dot com>
  • Tony Faustini <tony at litbit dot com >
  • Reza Hajebi <reza at litbit dot com>
  • Amirhossein Jabbari < amirhossein at litbit dot com>
  • Shahin Mowzoon <shahin at litbit dot com>
  • Scott Noteboom < notebooms at litbit dot com>
  • Sydney Noteboom <sydney at litbit dot com>
  • Omkar Prabhu <omkar at litbit dot com >
  • Bill Salter <bsalter at enviseco dot com >
  • Don Shields <dshields at litbit dot com >

Affiliations

  • Rutvij Clerk - Litbit
  • Miron Costant - Litbit
  • Tony Faustini - Litbit
  • Reza Hajebi - Litbit
  • Amirhossein Jabbari - Litbit
  • Shahin Mowzoon - Litbit
  • Scott Noteboom - Litbit
  • Sydney Noteboom - Litbit
  • Shailesh Patel - e2logy
  • Omkar Prabhu - Litbit
  • Bill Salter - Envise
  • Don Shields - Litbit

Sponsors

Champion

  • Hadrian Zbarcea <hadrian at apache dot org>

Nominated Mentors

  • Sterling Hughes <sterling at apache dot org>
  • Daniel Gruno <humbedooh at apache dot org>
  • Justin Mclean <justin at classsoftware dot com>
  • Hadrian Zbarcea <hadrian at apache dot org>

Sponsoring Entity

The Apache Incubator

  • No labels