| <!-- |
| ~ Copyright (c) 2021 Contributors to the Eclipse Foundation |
| ~ |
| ~ See the NOTICE file(s) distributed with this work for additional |
| ~ information regarding copyright ownership. |
| ~ |
| ~ This program and the accompanying materials are made available under the |
| ~ terms of the Eclipse Public License 2.0 which is available at |
| ~ http://www.eclipse.org/legal/epl-2.0 |
| ~ |
| ~ SPDX-License-Identifier: EPL-2.0 |
| --> |
| <!doctype html> |
| <html lang="en"> |
| |
| <head> |
| <meta charset="utf-8"> |
| |
| <title>Eclipse Ditto™ 2.0: Changes and roadmap</title> |
| |
| <meta name="description" content="Eclipse Ditto 2.0: Changes and roadmap"> |
| <meta name="author" content="Thomas Jäckle"> |
| <meta name="date" content="2021-06-22"> |
| <meta http-equiv="content-language" content="en"> |
| |
| <meta name="apple-mobile-web-app-capable" content="yes"> |
| <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> |
| |
| <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> |
| |
| <link rel="icon" type="image/png" href="../../images/favicon-16x16.png" sizes="16x16"> |
| <link rel="icon" type="image/png" href="../../images/favicon-32x32.png" sizes="32x32"> |
| <link rel="icon" type="image/png" href="../../images/favicon-96x96.png" sizes="96x96"> |
| |
| <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=News+Cycle"> |
| <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.13/css/all.css" |
| integrity="sha384-DNOHZ68U8hZfKXOrtjWvjxusGo9WQnrNx2sqG0tfsghAvtVlRW3tvkXWZh58N9jp" crossorigin="anonymous"> |
| |
| |
| <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.6.0/css/reveal.min.css"> |
| <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.6.0/css/theme/simple.min.css" |
| id="theme"> |
| |
| <!-- Theme used for syntax highlighting of code --> |
| <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.6.0/lib/css/zenburn.min.css"> |
| |
| <style> |
| @font-face { |
| font-family: "News Cycle"; |
| } |
| |
| #header-left { |
| position: absolute; |
| top: 0%; |
| left: 0%; |
| opacity: 1 !important; |
| } |
| |
| #header-right { |
| position: absolute; |
| top: 0%; |
| right: 0%; |
| opacity: 1 !important; |
| } |
| |
| .reveal section img { |
| background: none; |
| border: none; |
| box-shadow: none; |
| } |
| |
| .dim-background .slide-background { |
| opacity: 0.3 !important; |
| /*background: none !important; for printing ! */ |
| /* print with: file:///C:/...../index.html?print-pdf */ |
| } |
| |
| .chapter-background .slide-background { |
| opacity: 0.7 !important; |
| /*background: none !important;*/ /* for printing ! */ |
| } |
| |
| .print-pdf .reveal .slide-background { |
| opacity: 0.7 !important; |
| } |
| |
| .dim-background .slide-background.past { |
| display: none !important; |
| } |
| |
| .dim-background .slide-background.future { |
| display: none !important; |
| } |
| |
| .chapter-background .slide-background.past { |
| display: none !important; |
| } |
| |
| .chapter-background .slide-background.future { |
| display: none !important; |
| } |
| |
| /*.new-chapter h3 { color: #586e75; }*/ |
| .introlink a:link { |
| font-weight: bold; |
| color: #000000 |
| } |
| |
| /* unvisited links */ |
| .introlink a:visited { |
| font-weight: bold; |
| color: #000000 |
| } |
| |
| /* visited links */ |
| .introlink a:hover { |
| font-weight: bold; |
| color: #000000 |
| } |
| |
| /* user hovers */ |
| .introlink a:active { |
| font-weight: bold; |
| color: #000000 |
| } |
| |
| ul { |
| list-style: none !important; |
| } |
| |
| ul li { |
| padding-left: 1.3em; |
| } |
| |
| ul li:before { |
| list-style: none; |
| content: "→"; |
| display: inline-block; |
| margin-left: -1.3em; /* same as padding-left set on li */ |
| width: 1.3em; /* same as padding-left set on li */ |
| } |
| |
| .footer { |
| font-size: 12px !Important; |
| font-family: "News Cycle", Impact, sans-serif; |
| color: #687175; |
| position: absolute; |
| bottom: 15px; |
| left: 15px; |
| margin-bottom: 10px |
| } |
| |
| .footer a { |
| color: #003b6a; |
| text-decoration: none; |
| } |
| |
| /* active links */ |
| </style> |
| |
| <!-- Printing and PDF exports --> |
| <script> |
| var link = document.createElement('link'); |
| link.rel = 'stylesheet'; |
| link.type = 'text/css'; |
| link.href = |
| window.location.search.match(/print-pdf/gi) |
| ? 'https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.6.0/css/print/pdf.min.css' |
| : 'https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.6.0/css/print/paper.min.css'; |
| document.getElementsByTagName('head')[0].appendChild(link); |
| </script> |
| |
| <!--[if lt IE 9]> |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.6.0/lib/js/html5shiv.js"></script> |
| <![endif]--> |
| </head> |
| |
| <body> |
| |
| <div class="reveal"> |
| |
| <!-- 2. Create hidden header/footer <div> --> |
| <div id="hidden" style="display:none;"> |
| <div id="header"> |
| <div id="header-left"><img src="../../images/ditto.svg" style="width: 80px; padding-top: 10px; padding-left: 10px" alt="Ditto logo"></div> |
| <div id="header-right"><img src="../../images/iot_logo.svg" style="width: 120px; padding-top: 10px; padding-right: 10px" alt="Eclipse IoT logo"></div> |
| </div> |
| </div> |
| |
| <!-- Any section element inside of this container is displayed as a slide --> |
| <div class="slides"> |
| <!-- Section: Intro --> |
| <section> |
| <section id="title" class="new-chapter" data-background="../bg-images/background-twin-small.jpg" data-state="chapter-background"> |
| <!-- background source: https://unsplash.com/collections/425779/iot --> |
| <h1 style="line-height: 1em"> |
| <img src="../../images/iot_logo.svg" style="width: 15%;vertical-align: top; padding-right: 20px" alt="Eclipse IoT"> |
| <img src="../../images/ditto.svg" style="width: 15%;vertical-align: middle" alt="Eclipse Ditto"> |
| </h1> |
| <h1 style="margin-top: 0.6em; font-size: 2em;">Eclipse Ditto™ 2.0:<br/>Changes and roadmap</h1> |
| <h2 style="margin-top: 1.5em; font-size: 0.8em">06/2021</h2> |
| </section> |
| </section> |
| |
| <!-- Section: Ditto --> |
| <section style="clear: both;"> |
| <section id="ditto" style="clear: both;"> |
| <h2>Eclipse Ditto in context</h2> |
| <div style="text-align: left; float: left; width: 65%"> |
| <img src="../images/ditto-in-action-2020.png" style="width: 90%;padding-top:0.5em" alt="Ditto in action"/> |
| </div> |
| <p style="text-align: left; float: right; width: 35%; font-size: 0.8em">Ditto as <em>Digital Twin</em> "middleware"</p> |
| <ul style="text-align: left; float: right; width: 30%; font-size: 0.8em"> |
| <li class="fragment" data-fragment-index="1" style="padding-top:0.5em">digital representation of real physical devices</li> |
| <li class="fragment" data-fragment-index="1" style="padding-top:0.5em">act as broker for communicating with assets</li> |
| <li class="fragment" data-fragment-index="1" style="padding-top:0.5em">consumer-centric & industrial IoT scenarios</li> |
| </ul> |
| </section> |
| </section> |
| |
| <!-- Section: Ditto 2.0 --> |
| <section style="clear: both;"> |
| <section id="ditto-20-1" style="clear: both;"> |
| <h3>Breaking API changes (why 2.0)</h3> |
| <ul style="margin-top: 0.5em; font-size: 0.8em"> |
| <li>Removal of “API version 1” and @Deprecated code</li> |
| <li style="margin-top: 0.5em;">Restructuring of Ditto’s Maven modules</li> |
| </ul> |
| <div class="fragment" data-fragment-index="1" style="margin-top: 1em;"> |
| <h3>Non-functional enhancements</h3> |
| <ul style="margin-top: 0.5em; font-size: 0.8em"> |
| <li>Improvement of stability during rolling updates</li> |
| <li style="margin-top: 0.5em;">Sharding concept for Ditto internal pub/sub</li> |
| <li style="margin-top: 0.5em;">Background cleanup improvements</li> |
| </ul> |
| </div> |
| </section> |
| <section id="ditto-20-2" style="clear: both;"> |
| <h3>Functional enhancements</h3> |
| <ul style="margin-top: 0.5em; font-size: 0.8em"> |
| <li class="fragment" data-fragment-index="1">Merge/PATCH updates of digital twins</li> |
| <li class="fragment" data-fragment-index="1" style="margin-top: 0.5em;">Expiring policy subjects and policy actions</li> |
| <li class="fragment" data-fragment-index="1" style="margin-top: 0.5em;">Built-in acknowledgement for search updates</li> |
| <li class="fragment" data-fragment-index="1" style="margin-top: 0.5em;">Establishing connections to endpoints via a SSH tunnel</li> |
| <li class="fragment" data-fragment-index="2" style="margin-top: 0.5em;">Configurable OpenID Connect / OAuth2.0 claim extraction</li> |
| <li class="fragment" data-fragment-index="2" style="margin-top: 0.5em;">Prioritized recovery of connections after restarts</li> |
| <li class="fragment" data-fragment-index="2" style="margin-top: 0.5em;">Support for LastWill and retain flag for MQTT connections</li> |
| <li class="fragment" data-fragment-index="2" style="margin-top: 0.5em;">Provide JWT tokens to Websocket endpoint with browser APIs</li> |
| </ul> |
| </section> |
| </section> |
| |
| <!-- Section: Ditto roadmap --> |
| <section style="clear: both;"> |
| <section id="ditto-roadmap-1" style="clear: both;"> |
| <h3>Roadmap - Eclipse Ditto 2.1</h3> |
| <ul style="margin-top: 0.5em; font-size: 0.8em"> |
| <li class="fragment" data-fragment-index="1">Full Apache Kafka integration</li> |
| <li class="fragment" data-fragment-index="1" style="margin-top: 0.5em;">Integration with Eclipse Hono via Apache Kafka</li> |
| <li class="fragment" data-fragment-index="1" style="margin-top: 0.5em;">Automatic creation of digital twins, e.g. when automatically created in Eclipse Hono via certificate based device auth</li> |
| <li class="fragment" data-fragment-index="1" style="margin-top: 0.5em;">Improvements around logging (e.g. into ELK stack or to file)</li> |
| <li class="fragment" data-fragment-index="2" style="margin-top: 0.5em;">Support for HMAC based authentication methods, e.g. enabling additional |
| integration options for: |
| <ul> |
| <li>Azure (HTTP Monitor Data Collector API, IoT Hub, Service Bus REST API)</li> |
| <li>AWS (SNS, S3, <a href="https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html" target="_blank">other AWS services supporting Signature Version 4 signing</a>)</li> |
| </ul> |
| </li> |
| </ul> |
| </section> |
| <section id="ditto-roadmap-2" style="clear: both;"> |
| <h3>Looking ahead</h3> |
| <ul style="margin-top: 0.5em; font-size: 0.8em"> |
| <li>Tracing via OpenTelemetry</li> |
| <li style="margin-top: 0.5em;">Release of Go(lang) SDK</li> |
| <li style="margin-top: 0.5em;">Python SDK</li> |
| <li style="margin-top: 0.5em;">...</li> |
| </ul> |
| </section> |
| </section> |
| |
| <!-- Section: Questions and Answers --> |
| <section style="clear: both;"> |
| <section id="q-a" class="new-chapter" data-background="../bg-images/background-conclusion-small.jpg" |
| data-state="chapter-background"> |
| <br/> |
| <p>Links:</p> |
| <ul> |
| <li><a target="_blank" href="https://eclipse.org/ditto">Ditto website and documentation</a></li> |
| <li><a target="_blank" href="https://github.org/eclipse/ditto">GitHub</a> - please give us a star ;)</li> |
| <li><a target="_blank" href="https://gitter.im/eclipse/ditto">Chatroom to ask more questions</a></li> |
| <li><a target="_blank" href="https://developer.bosch-iot-suite.com/service/things/">Commercial offering incl. free plan</a></li> |
| </ul> |
| </section> |
| </section> |
| </div> |
| |
| </div> |
| |
| <div class="footer"> |
| Copyright ©2021 |
| <a href="https://www.bosch.io" target="_blank">Bosch.IO GmbH</a> All rights reserved. | |
| <a href="https://www.eclipse.org/ditto/intro-overview.html" target="_blank">Documentation</a> | |
| <a href="https://github.com/eclipse/ditto" target="_blank">GitHub</a> | |
| <a href="https://ditto.eclipseprojects.io" target="_blank">Sandbox</a> |
| </div> |
| |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.6.0/lib/js/head.min.js"></script> |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.6.0/js/reveal.min.js"></script> |
| |
| <script> |
| function getParameterByName(name, url) { |
| if (!url) { |
| url = window.location.href; |
| } |
| name = name.replace(/[\[\]]/g, "\\$&"); |
| var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), |
| results = regex.exec(url); |
| if (!results) { |
| return null; |
| } |
| if (!results[2]) { |
| return ''; |
| } |
| return decodeURIComponent(results[2].replace(/\+/g, " ")); |
| } |
| |
| // More info https://github.com/hakimel/reveal.js#configuration |
| Reveal.initialize({ |
| controls: true, |
| progress: true, |
| history: true, |
| center: true, |
| fragments: getParameterByName('fragments') === '', // only use "fragments" feature if queryParam 'fragments' is present |
| slideNumber: 'h.v', |
| |
| transition: 'convex', // none/fade/cube/slide/convex/concave/zoom |
| |
| // More info https://github.com/hakimel/reveal.js#dependencies |
| dependencies: [ |
| { |
| src: 'https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.6.0/lib/js/classList.js', |
| condition: function () { |
| return !document.body.classList; |
| } |
| }, |
| { |
| src: 'https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.6.0/plugin/markdown/marked.js', |
| condition: function () { |
| return !!document.querySelector('[data-markdown]'); |
| } |
| }, |
| { |
| src: 'https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.6.0/plugin/markdown/markdown.min.js', |
| condition: function () { |
| return !!document.querySelector('[data-markdown]'); |
| } |
| }, |
| { |
| src: 'https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.6.0/plugin/highlight/highlight.min.js', |
| async: true, |
| callback: function () { |
| hljs.initHighlightingOnLoad(); |
| } |
| }, |
| { |
| src: 'https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.6.0/plugin/zoom-js/zoom.min.js', |
| async: true |
| }, |
| { |
| src: 'https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.6.0/plugin/notes/notes.min.js', |
| async: true |
| } |
| ], |
| keyboard: { // for hama remote presenter: |
| 38: 'next', |
| 40: 'prev' |
| } |
| }); |
| |
| </script> |
| |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> |
| <script type="text/javascript"> |
| // 3. On Reveal.js ready event, copy header/footer <div> into each `.slide-background` <div> |
| var header = $('#header').html(); |
| if (window.location.search.match(/print-pdf/gi)) { |
| Reveal.addEventListener('ready', function (event) { |
| $('.slide-background').append(header); |
| }); |
| } |
| else { |
| $('div.reveal').append(header); |
| } |
| </script> |
| |
| </body> |
| </html> |