Eclipse Thingweb

Basics
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: 
Background: 

There is broad agreement about the huge potential for services for the Internet of Things (IoT) across a wide range of application domains, e.g., homes, offices, healthcare, cities, electrical grids, retail, and manufacturing. However, this potential is being held back by fragmentation with a lack of interoperability across platforms, a bewildering variety of standards, and a rapid evolution of the low-level IoT technologies themselves.

The W3C Web of Things (WoT) seeks to counter the fragmentation of the IoT by using and extending Web standards (e.g., metadata and APIs) and providing re-usable technological building blocks in order to enable easy integration across IoT platforms and application domains. This is expected to drive down the costs and risks involved in developing services, and help realizing the full potential for the IoT. In short, W3C WoT seeks to extend the Web from a Web of pages to a Web of Things.

Abstract WoT Architecture

The abstract architecture of the Web of Things spans from the device level over edge nodes such as gateways to the cloud. The technological building blocks are intended to be of use at any level and foster a Web-like experience for the Internet of Things. A detailed introduction to the abstract architecture and deployment scenarios, but also use cases and requirements can be found in the Web of Things (WoT) Architecture document, a W3C Working Draft.

Scope: 

The Eclipse Thingweb project is intended as open-source toolkit for the Web of Things ecosystem with modular implementations of the technological building blocks standardized by the W3C. The toolkit may include implementations of the same building block for different platforms, frameworks, or languages. The initial building blocks currently being standardized are:

Once these documents reach Candidate Recommendation status, the W3C WoT activity intends to re-charter the WoT Working Group to standardize the next set of building blocks. This is being explored and identified by the WoT Interest Group, which operates in parallel to the Working Group. Thingweb intends to grow with new building blocks being defined in the future. This may include early work by the WoT Interest Group that is not part of the standards track yet.

Furthermore, Thingweb shall include auxiliary tools for the WoT ecosystem such as user interfaces or visualizers for Things, converters to the Thing Description and its serializations, semantic processors around the Thing Description, etc.

Description: 

The Eclipse Thingweb project will start with three sub-projects in the toolkit:

Thingweb node-wot

node-wot is the official reference implementation of the W3C WoT Working Group and implements the so-called "Servient Architecture":

Servient Architecture

node-wot provides a WoT Thing Description parser and serializer, several "Protocol Binding" implementing the WoT Binding Templates, as well as a runtime system ("WoT Runtime") providing the WoT Scripting API for applications. It is based on Node.js and its fundamental module structure.

Thingweb Directory

A Thing Directory is a directory service for WoT Thing Descriptions (TDs) that provides a Web interface to register TDs (aligned with draft-ietf-core-resource-directory) and look them up (e.g., using SPARQL queries or CoRE Link Format). The Thingweb Directory implements this service using the Apache Jena triple store and SPARQL endpoint.

Thingweb WebUI

Thingweb also intends to provide tooling around the Web of Things ecosystem. The WebUI is an AngularJS browser app to visualize TDs and enable the interaction with Things from the Web browser.

Why Here?: 

While there are already a number of committers for the existing implementations from standardization, the W3C Web of Things will only succeed with a broad acceptance also in the IoT developer community. Eclipse IoT is seen as the best fit, as "Eclipse IoT provides the technology needed to build IoT Devices, Gateways, and Cloud Platforms", and hence is spot on the W3C WoT idea of technological building blocks that span all levels of IoT systems.

Project Scheduling: 

The initial contribution is already available under https://github.com/thingweb/.

Assuming the project proposal is accepted, there would be an initial release that implements the status of the W3C "First Public Working Drafts" of the building block specifications mentioned above. For each following W3C "Working Draft" release, there would be another Thingweb release. Note that these will be "0.*" releases.

The 1.0 release of Thingweb is expected with the acceptance of the Working Drafts as W3C "Candidate Recommendation".

After that 1.* releases will follow for bugfixes and adoptions of new features.

Future Work: 

The 2.0 release of  Eclipse Thingweb is expected after a Working Group re-charter and the next set building blocks reaching W3C "Candidate Recommendation" status.

In addition, Thingweb aims for broadening the building block implementations to other platforms, frameworks, and languages, and for enriching the toolbox with the help of the Eclipse IoT community.

People
Interested Parties: 

Organizations

  • W3C Web of Things Working Group
  • W3C Web of Things Interest Group

Companies

  • Siemens AG
  • evosoft GmbH
  • EcoG GmbH
  • Intel Corporation
  • Ericsson AB
  • CEA Tech
  • EURECOM
Source Code
Initial Contribution: 

Thingweb node-wot

License: W3C
Language: TypeScript / JavaScript
Dependencies:

  • Node.js (MIT)
  • NPM modules (all MIT)

Thingweb Directory

License: MIT (to be changed to W3C)
Language: Java
Dependencies:

  • Apache Jena (Apache 2.0)
  • Eclipse Californium (EPL+EDL)
  • Eclipse Jetty (Apache 2.0 / EPL)
  • Apache Lucene (Apache 2.0)

Thingweb WebUI

License: MIT (to be changed to W3C)
Language: JavaScript / HTML
Dependencies:

Source Repository Type: 
Michael McCool's picture

This set of projects is in support of an important W3C standards initiative for the Internet of Things.   The code in questoin is likely to get used in commercial embedded devices and other IoT products, such as gateways, and so it is very important that the code be managed well.  Placing these projects under Eclipse will help to provide these assurances.

Michael McCool, Principal Engineer, Intel