Link Search Menu Expand Document

Telemetry

Overview

The term telemetry refers to the collection of certain usage data to help improve the quality of a piece of software. Dendron uses telemetry primarily for collecting usage data.

This page describes the overall telemetry approach for Dendron, what kind of data is collected and how to opt-out of data collection.

Why does Dendron collect metrics?

Telemetry helps us better understand how many users are using our products and how often they are using our products. Unlike many telemetry services, our telemetry implementation is intentionally limited in scope.

We use telemetry to answer the following questions:

  • how many people are actively using Dendron?
  • how performant is Dendron over time and how do new changes impact performance?
  • what features are most useful for users?

What is not collected

Dendron will never collect data inside your notes. We believe that your personal knowledge is for your eyes alone.

What is collected

The below is a collection of common fields that are collected

FieldAttributesDescription
extensionVersionstringCurrently installed version of the product (e.g. 1.0.0-rc0)
ideVersionstringCurrently installed version of the IDE (e.g. 1.0.0-rc0)
ideFlavorstringThe specific IDE in question(e.g. VSCodium)
archstringClient's operating system architecture (e.g. amd64).
osstringClient's operating system (e.g. darwin).
nodeVersionstringClient's node version (e.g. v12.12.0).
anonymousIdstringRandom, non-identifiable signature UUID (e.g. 91b014df3-9dda-4a27-a8a7-15474fd899f8)
timestampstringWhen the request was made

When is data collected?

Data is collected in scenarios that are described below.

Startup

When Dendron initializes, we collect data about on initialization time. This helps us measure the performance impact of changes that run before startup as well as improvements to our indexing performance over time.

FieldAttributesDescription
durationnumberNumber of seconds for startup
numNotesnumberNumber of notes across all vaults (rounded to the nearest 10 notes)
numVaultsnumberNumber of vaults in workspace
noCachingbooleanCheck whether caching is disabled

Installation/Upgrade

When Dendron is first installed or upgraded, we collect information about both previous and current versions. This helps us plan deprecation policies.

FieldAttributesDescription
previousVersionstringPrevious version of Dendron

Lookup

When lookup is performed, Dendron collects profiling information for different phases of lookup. This helps us measure the performance impact of optimizations and features we add to lookup.

Events

  • Lookup Show: when lookup is presented
  • Lookup Update: when lookup items are updated
  • Lookup Accept: when a result from lookup is accepted
FieldAttributesDescription
flavorstringWhat kind of lookup ("schema" or "note")
errorbooleanDid an error happen during this phase?
sourcestringWhat initiated the lookup? ("onValueChange", "updatePickerBehavior:journal", etc )
createNewNotebooleanWas a new note created during this phase?

Telemetry Toggle

When telemetry is disabled or enabled, we collect information about the event to let us get an estimate of the number of untracked clients

How to opt out of data collection

You can disable telemetry from Dendron either on a per-workspace level or globally. To disable on a workspace level, set noTelemetry to true in dendron.yml.

To disable telemetry across all workspaces, you can run the Disable Telemetry command.

Why not have opt-in telemetry?

The goal of telemetry is to make data driven decisions about features and use cases that can make the most difference to our users.

One way we could collect data is to conduct surveys but traditionally, these had very low participation and are also biased towards users that are already active in our community. Having telemetry allows us to collect feedback from our larger user base and avoids this bias.

Opt-in telemetry, at best, gives us a narrow and biased set of users. At this point, we are back to make decisions based on limited data. Opt-out telemetry that is limited in scope is the tradeoff we made in terms of preserving user privacy while still gathering meaningful data that can help improve the product.