Skip to main content
  • Log in
  • Manage Cookies
projects.eclipse.org
Download
  • Projects
  • Working Groups
  • Members
  • Community
    • Marketplace
    • Events
    • Planet Eclipse
    • Newsletter
    • Videos
    • Blogs
  • Participate
    • Report a Bug
    • Forums
    • Mailing Lists
    • Wiki
    • IRC
    • Research
  • Eclipse IDE
    • Download
    • Learn More
    • Documentation
    • Getting Started / Support
    • How to Contribute
    • IDE and Tools
    • Newcomer Forum
  • More
      • Community

      • Marketplace
      • Events
      • Planet Eclipse
      • Newsletter
      • Videos
      • Blogs
      • Participate

      • Report a Bug
      • Forums
      • Mailing Lists
      • Wiki
      • IRC
      • Research
      • Eclipse IDE

      • Download
      • Learn More
      • Documentation
      • Getting Started / Support
      • How to Contribute
      • IDE and Tools
      • Newcomer Forum
  1. Home
  2. Projects
  3. Eclipse IoT
  4. Eclipse Ditto™
  5. 2.0.0
  6. 2.0.0 Release Review

Eclipse Ditto™ 2.0.0 Release Review

Type: 
Release
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.

Wednesday, April 21, 2021
Project: 
Eclipse Ditto™
Release: 

2.0.0

Description: 

Eclipse Ditto 2.0.0 contains the following API breakages:

  • Removal of API version 1 (from HTTP and all Java APIs), deprecated in Ditto 1.1.0
  • Removal of public Java APIs marked with @Deprecated
  • Restructurization of Ditto's maven modules in order to simplify/ease further development

It includes the following topics/enhancements:

  • Merge/PATCH updates of digital twins
  • Configurable OpenID Connect / OAuth2.0 claim extraction to be used for authorization
  • Establishing connections to endpoints (via AMQP, MQTT, HTTP) utilizing a Ditto managed SSH tunnel
  • Addition of a DevOps API in order to retrieve all known connections
  • Expiring policy subjects + publishing of notification message prior to expiry
  • Built-in acknowledgement for search updates to have the option of twin updates with strong consistency of the search index
  • Addition of policy actions in order to inject a policy subject based on a provided JWT
  • Restoring active connection faster after a hard restart of the Ditto cluster via automatic prioritization of connections
  • Support for LastWill/Testament + retain flag for MQTT connections
  • Provide JWT tokens to Websocket endpoint with browser APIs

The following notable fixes are included:

  • Fixing that "content-type" of a Ditto Protocol JSON message describes the content of the "value" of the message
  • Fixing password encoding/decoding for AMQP 1.0 connections when special characters like "+" were used
  • Fix merging "extraFields" into thing payload when using "normalization" mapper in connections

The following non-functional work is also included:

  • Improvement of stability during rolling updates
  • Addition of sharding concept for Ditto internal pub/sub enabling connection of e.g. tens of thousands websocket sessions
  • Background cleanup improvements in order to have less impact on DB rountrip times
  • Update of third party libraries (e.g. Akka)
  • Documentation of deployment via K3S
API Certification: 

The project leadership certifies that the APIs in this release are "Eclipse Quality".

Architectural Issues: 

Ditto's codebase is implemented in Java. By default Java objects are mutable which does not work well in highly scalable, message driven architectures, as possible side-effects during runtime may occur when concurrently modifying objects. Because of that the Ditto team decided to use immutable objects wherever and whenever possible. Immutablity of the objects is ensured in unit tests.

Ditto's model modules and also the Ditto Java client are OSGi bundles so that they may be used in OSGi environments without much effort. The model modules are configured to be checked by a "binary compatibility checker" in the Maven build so that APIs are not broken unintentionally.

On a level higher than the model, Ditto uses a microservice based architecture. As Ditto's microservices are interacting via an event driven approach, Ditto provides a very modular setup on the microservice level meaning that single services must be not started at all if their functionality is not needed. Another benefit from this architecture is that the services may be scaled horizontally if more resources are required.

Ditto utilizes the CQRS and EventSourcing pattern and mainly uses "inserts" (append only) into the database in favor to "updates" in order to get a better performance when doing database writes. The only exception is the "search" microservice which uses traditional CRUD in order to update its search index.

Security Issues: 

There are no security issues known at the time of this writing.

Non-Code Aspects: 

Ditto comes with:

  • A project site containing the documentation (including basic concepts, architecture, definition of the Ditto Protocol, etc.)
  • A "Hello World" example
  • An OpenAPI based HTTP/REST documentation and applied HTTP concepts
  • A GitHub repository with ditto-clients (SDKs for Java + JavaScript)
  • A GitHub repository with ditto-examples
  • A Blog with the latest examples tutorials, release announcements, etc.
  • Presentations of Ditto
  • A sandbox installation where Ditto can be tried out without setting it up locally
Conforms To UI/UX Guidelines: 
Not applicable (project doesn't provide UI)
Usability Details: 

Ditto does not provide a UI yet.

End of Life: 

Removal of API version 1

API version 1 and ACLs are removed in Ditto 2.0.

Standards: 

Ditto is able to process AMQP 1.0, AMQP 0.9.1, MQTT 3.1.1 and MQTT 5 messages which are all standardized (IoT) protocols.

Ditto can use JSON Web Tokens specified by RFC 7519 in order to extract "subjects" (e.g. a user-id) to use for the access control to twins.

Ditto's API documentation is defined using the OpenAPI specification 3.0.0 allowing both creation of an interactive HTML-based documentation and creation of skelettons for various programming languages based on that specification.

Communities: 

Users of Ditto ask their questions via these channels:

  • The Gitter chatroom of Ditto
  • Directly via GitHub issues (the Ditto teams labels with "question")
  • A Stackoverflow tag "eclipse-ditto" on which community quersions are answered by our committers
  • The mailing-list (ditto-dev@eclipse.org) contains mainly administrational topics regarding the Ditto project

Ditto seeks for a good integration with Eclipse Hono in order to being able to create digital twins for all devices connected via Hono. The Ditto team is also in regular discussion with the Hono team.

Some of the Ditto team are committers in the Eclipse IoT Packages project aiming to simplify deployment and integration between Eclipse Hono and Ditto.

Links: 
GitLab tracking issue
  • Sign in to post comments.
Eclipse Ditto™

Project Links

  • Website

Related Projects

Related Projects:

  • Eclipse IoT
    • Eclipse Hono™
    • Eclipse EdiTDor

Project Hierarchy:

  • Eclipse IoT
  • Eclipse Ditto™

Tags

Technology Types
  • Internet of Things
Other Tags
  • twin
  • iot

Eclipse Foundation

  • About Us
  • Contact Us
  • Donate
  • Members
  • Governance
  • Code of Conduct
  • Logo and Artwork
  • Board of Directors

Legal

  • Privacy Policy
  • Terms of Use
  • Copyright Agent
  • Eclipse Public License
  • Legal Resources

Useful Links

  • Report a Bug
  • Documentation
  • How to Contribute
  • Mailing Lists
  • Forums
  • Marketplace

Other

  • IDE and Tools
  • Projects
  • Working Groups
  • Research@Eclipse
  • Report a Vulnerability
  • Service Status

Copyright © Eclipse Foundation. All Rights Reserved.

Back to the top