Child pages
  • Linchpin App Usage - Anonyme Nutzungsdaten
Skip to end of metadata
Go to start of metadata

//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 App 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:

JSON Schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "http://usage.seibert-media.io/event.json",
  "type": "object",
  "title": "The JSON Schema for validating events sent to usage.seibert-media.io",
  "required": ["metadata", "events", "apps"],
  "properties": {
    "metadata": {
      "type": "object",
      "required": ["sessionID", "environment"],
      "properties": {
        "sessionID": {
          "type": "string",
          "description": "A unique sessionID to link events"
        },
        "environment": {
          "type": "object",
          "required": ["browser", "resolution", "hostVersion", "maxUsers"],
          "properties": {
            "browser": {
              "type": "string"
            },
            "resolution": {
              "type": "string"
            },
            "hostVersion": {
              "type": "string"
            },
            "maxUsers": {
              "type": "integer"
            }
          }
        }
      }
    },
    "apps": {
      "type": "object",
      "additionalProperties": {
        "type": "object",
        "required": ["version"],
        "properties": {
          "sen": {
            "type": "string"
          },
          "version": {
            "type": "string"
          }
        }
      }
    },
    "events": {
      "type": "array",
      "items": {
        "type": "object",
        "required": ["kind", "name", "timestamp", "app"],
        "if": {
          "properties": { "kind": { "const": "view" } }
        },
        "then": {
          "required": ["kind", "name", "timestamp", "app", "loadDuration"]
        },
        "properties": {
          "kind": {
            "enum": ["view", "interaction"]
          },
          "name": {
            "type": "string"
          },
          "timestamp": {
            "type": "string"
          },
          "app": {
            "type": "string"
          },
          "loadDuration": {
            "type": "number"
          },
          "data": {
            "type": "object",
            "required": [],
            "properties": {},
            "additionalProperties": true
          }
        }
      }
    }
  }
}

Aktuell getrackte Events:

App

Event

technischer Event-Name

Microblogging for ConfluenceClick auf den Bearbeiten-Knopfedit-micropost
[...]

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.



  • No labels