//SEIBERT/MEDIA bedeutet unter anderem Softwareentwicklung. Und als Softwareentwickler sind wir sehr an Nutzungsdaten interessiert. Nutzungsdaten helfen uns nämlich dabei, unsere Apps kundenorientiert weiterzuentwickeln und zu verbessern. Wir sammeln ausschließlich anonyme Nutzungsdaten der Linchpin Intranet Suite und all ihrer Apps.
Alle Apps von //SEIBERT/MEDIA, die auf dem Atlassian Marketplace zu finden sind, sind von dieser Entscheidung betroffen. Nur diese Apps können überhaupt Daten an uns übertragen. Es ist uns sehr wichtig, solche Entscheidungen transparent nach außen zu kommunizieren. Wir möchten außerdem, dass Sie verstehen können, welche Daten überhaupt gesammelt werden, wozu das getan wird und was Ihre Optionen sind.
Mit der Installation von //SEIBERT/MEDIA-Linchpin-Apps wird auch eine "Unter-App" namens Linchpin App Usage installiert. Diese App kann anonyme Nutzungsdaten an uns übertragen. Welche Daten überhaupt übertragen werden können, definiert ein JSON-Schema (Sie finden den Code und Erklärungen weiter unten). Die App kann keine sonstigen Informationen übermitteln.
Die übermittelten Daten können in keinster Weise Informationen enthalten, die auf einzelne User, Firmen oder spezifische Confluence-Instanzen zurückzuführen wären. Es gibt keine Möglichkeit, personenbezogene Daten zu übermitteln. Die Linchpin App Usage-App hat einzig und alleine den Zweck, uns mit statistischen Informationen zu versorgen, die bei der App-Entwicklung helfen. Solche Daten werden nicht durch die DSGVO geregelt.
1. Kann ich das Linchpin App Usage in meinem System deaktivieren?
Ja, das können Sie. Im Administrationsbereich Ihres Confluence-Systems findet sich die Konfiguration von Linchpin App Usage. Um dort zu gelangen, navigieren Sie zu Confluence-Administration > Linchpin Usage > Konfiguration.
Falls Sie das Tracking der Nutzungsdaten deaktivieren möchten, verschieben Sie den Schalter nach links (rote Farbe bedeutet, dass das Plugin deaktiviert ist).
Die Konfigurationsseite bietet eine kurze Beschreibung des Plugins. Außerdem können Sie hier einsehen, welche Apps aktuell das Plugin verwenden, um Nutzungsdaten an //SEIBERT/MEDIA zu übermitteln.
2. Wozu dient das Linchpin App Usage?
Mithilfe von anonymen Nutzungsdaten erfahren wir als Entwickler, wie unsere Software tatsächlich genutzt wird. Die gesammelten Daten dienen ergänzend zu User-Tests, Erfahrungen aus Projekten sowie Kundenfeedbacks als Hilfestellung um datenbasierte, fundierte Produktentscheidungen treffen zu können.
Auch wenn es sich etwas blöd anhören mag, interessieren wir uns nicht wirklich dafür, wer unsere Software benutzt. Wir haben kein Interesse an personenbezogenen Daten, weil sie uns nicht voranbringen. Wir interessieren uns für die Frage nach dem wie. Deshalb sind alle erhobenen Daten anonym - es ist irrelevant, wer einen Link anklickt. Wichtig ist, ob der Link überhaupt angeklickt wurde, und falls ja, wie oft.
Wie nutzen Menschen unsere Software? Werden alle Funktionen, Links, Knöpfe genutzt? Oder gibt es etwa Funktionen, die sehr selten bis gar nicht genutzt werden, und die wir durch (für den Kunden) sinnvollere Features ersetzen können? Solch ein anonymes Tracking ermöglicht es uns, sehr viel über unsere eigene Software zu lernen, damit wir sie stets weiterentwickeln können.
3. Wie arbeitet das Linchpin Usage Tracking?
3.1 Datentypen
In der Erhebung der Nutzerdaten unterscheiden wir zwischen zwei Datentypen: "View" und "Interaction".
View data
Wird genutzt, um Events zu analysieren, die über einen längeren Zeitraum hinweg betrachtet werden. Ein Beispiel hierfür wären zum Beispiel Ladezeiten oder die Verweildauer in der App.
Interaction data
Eine Interaktion beschreibt eine einzelne Aktion, die beispielsweise durch das Drücken eines Buttons, Links etc. "getriggert" wird.
3.2 Welche Daten können erfasst werden?
Es können nur Daten in die Datenbank geschrieben werden, die einem festen JSON-Schema entsprechen (siehe beigefügten Codeblock, der das aktuelle JSON-Schema abbildet). Alle möglichen Daten, die über einen Browser geschickt werden, die nicht Bestandteil dieses Schemas sind, werden weder an die Datenbank versendet noch in irgendeiner Form gespeichert.
Das JSON-Schema, das in Linchpin App Usage verwendet wird:
Aktuell getrackte Events:
App | Event | technischer Event-Name |
---|---|---|
Linchpin Suite Plugin | Klick auf Abbrechen oder "Leave Setup" oder "Assistant überspringen" inkl. Timestamp zur Berechnung der Zeit innerhalb des Assistants. | admin-assistant-skipped |
Timestamp, wenn die Seite "/linchpin-suite/setup.action" geladen wird. | admin-assistant-started | |
Timestamp, wenn der Setup Assistant abgeschlossen wird. | admin-assistant-ended | |
Hex-Wert (bspw. #ffffff) für die gesetzte Primärfarbe. | admin-assistant-color | |
Ausprägung des gewählten Dashboard: News, Collaboration oder Default | admin-assistant-dashboard | |
Auswahl ob Demo Content erstellt werden soll oder nicht. (True/False) | admin-assistant-demodata | |
Microblogging for Confluence | Klick auf den Bearbeiten-Knopf | edit-micropost |
Linchpin Enterprise News | Bei der Veröffentlichung einer News: welcher Newsteaser-Typ wurde ausgewählt? | newsteaser |
Linchpin Events | Anzeige des Event-Portals | le-event-hub |
Anklicken des Buttons zum Erstellen eines neuen Events im Event-Portal | le-portal-create-event | |
Anzeige des Dialogs zum Erstellen eines neuen Events | le-create-event | |
Anklicken des "Mehr Events anzeigen"-Buttons, um weitere Events nachzuladen | le-event-hub-load-more | |
Anklicken eines Kategorie-Filters in der linken Seitenleiste | le-event-hub-click-on-category | |
Anklicken des "Alle Events"-Eintrags in der linken Seitenleiste | le-event-hub-show-all-events | |
Anklicken des "Meine Events"-Filters in der linken Seitenleiste | le-event-hub-show-my-events | |
Zurücksetzen aller Filter im Event-Portal | le-event-hub-reset-filter | |
Anklicken des "Event duplizieren"-Eintrags im Kontextmenü eines Events | le-event-duplicated | |
Start Event bearbeiten | le-event-edit-start | |
Anzeige Einzelevent-Makro | le-event-macro | |
Sich selbst zu einem Event anmelden | le-event-self-signup | |
Sich selbst von einem Event abmelden | le-event-self-signoff | |
Anzeige Event-Listen-Makro | le-event-list-macro | |
Anzeige Einzelevent-Ansicht | le-event-detail | |
Andere Person zu einem Event anmelden | le-event-signup-other | |
Übernehmen eines Bilds von Unsplash | le-stockimage-set | |
Bildupload durchgeführt | le-image-uploaded | |
Event nach bearbeiten gespeichert | le-event-saved | |
Bildsuche bei Bilderdienst Unsplash | le-stock-image-search | |
Admin: Aktivieren der Unsplash-Integration | le-admin-stockimage-on-true | |
Admin: Deaktivieren der Unsplash-Integration | le-admin-stockimage-on-false | |
Linchpin User Profiles | Personenverzeichnis: Besuch der Seite: Ladezeit der Ergebnisse | lup-peopledirectory-view |
Personenverzeichnis: Besuch der Seite: Anzahl der Ergebnisseiten | lup-peopledirectory-view-available-pages | |
Personenverzeichnis: Suche oder Filter wurden benutzt: Länge der Sucheingabe | lup-peopledirectory-search-search-term-length | |
Personenverzeichnis: Suche oder Filter wurden benutzt: Anzahl der gewählten Filter | lup-peopledirectory-search-number-of-filters | |
Personenverzeichnis: Suche oder Filter wurden benutzt: Nur Personen mit persönlichem Bereich anzeigen? | lup-peopledirectory-search-only-personal | |
Personenverzeichnis: Suche oder Filter wurden benutzt: Anzahl der Ergebnisseiten | lup-peopledirectory-search-available-pages | |
Personenverzeichnis: Suche oder Filter wurden benutzt: Nummer der aktuellen Ergebnisseite | lup-peopledirectory-search-page-number | |
Personenverzeichnis: Suche oder Filter wurden benutzt: Anzahl der Suchergebnisse auf der aktuellen Ergebnisseite | lup-peopledirectory-search-results | |
Personenverzeichnis: Suche oder Filter wurden benutzt: Ladezeit der Ergebnisse | lup-peopledirectory-search-load-duration | |
Personenverzeichnis: "Filter zurücksetzen" wurde benutzt: Ladezeit der Ergebnisse | lup-peopledirectory-reset-filters-load-duration | |
3.3 Wie sieht ein exemplarischer Datensatz aus?
In der folgenden Tabelle sind drei vollständige Datensätze abgebildet, welche so in der Datenbank landen.
timestamp | name | sessionID | browser | resolution | maxUsers | hostVersion | plugin | pluginVersion | plugins | app | appVersion | apps |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2019-10-24 10:29:06.985 UTC | edit-micropost | 333b6eca-919d-4a4d-8479-c0ae5dd993d9 | Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/76.0.3803.0 Safari/537.36 | 800x600 | -1 | 6.12.4 | net.seibertmedia.plugin.confluence.microblog | 5.0.1-UPCOMING.1-X-license-inactive | {"net.seibertmedia.plugin.confluence.microblog":{"pluginKey":"net.seibertmedia.plugin.confluence.microblog","name":"Microblogging for Confluence (for internal use only)","version":"5.0.1-UPCOMING.1-X-license-inactive"}} | |||
2019-10-24 08:54:47.948 UTC | edit-micropost | 7b4de886-0c29-4b06-af85-c89cdcdbbc41 | Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36 | 1024x1280 | -1 | 7.0.1 | net.seibertmedia.plugin.confluence.microblog | 5.0.0 | {"net.seibertmedia.plugin.confluence.microblog":{"pluginKey":"net.seibertmedia.plugin.confluence.microblog","name":"Microblogging for Confluence ","version":"5.0.0"}} | |||
2019-10-24 06:21:40.981 UTC | edit-micropost | e0c80db6-e800-4d4c-8a13-f82478dbef7b | Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36 | 1920x1040 | -1 | 7.0.1 | net.seibertmedia.plugin.confluence.microblog | 5.0.0 | {"net.seibertmedia.plugin.confluence.microblog":{"pluginKey":"net.seibertmedia.plugin.confluence.microblog","name":"Microblogging for Confluence ","version":"5.0.0"}} |
Datenauswertung
Rechts sehen Sie eine exemplarische Auswertung der anonymen Nutzungsdaten, die wir mithilfe des Linchpin App Usage beziehen.
Es handelt sich hierbei um Daten des Typus "Interaktion". Die Auswertung erfolgte mithilfe von Google Data Studio.
3.4 In welchem Zyklus werden Daten gespeichert und versendet?
Die erfassten Daten werden im "Session Storage" gespeichert und jeweils mit einer zufälligen Session ID versehen. Diese wird im Browser pro Tab vergeben. Sessions können niemals über eine Session ID hinweg zugeordnet werden. Sie enthalten nie personenbezogene Daten.
Ein Datenpaket wird immer dann zur Datenbank gesendet, wenn fünf Interaktions- oder View-Events registriert wurden. Alternativ werden alle Datensätze beim Verlassen einer Seite, welche ein relevantes Event enthält, abgesendet.
Daten, die abgesendet wurden, sind nach dem Versand weder in Caches noch in Sessions sichtbar ("fire and forget"). Übertragene Daten landen bei einem Proxy, der von //SEIBERT/MEDIA verwaltet wird. Dieser Proxy validiert die übertragenen Daten erneut anhand des oben beschriebenen JSON-Schemas und stellt so sicher, dass ausschließlich solche Daten übertragen werden, die vom Schema definiert sind. Alle durch den Proxy validierten Daten werden an die Datenbank übertragen. Diese liegt auf einem Google Cloud Server.
This page in english: https://info.seibert-media.net/x/X4SEAg