From ac1290a170cbf3c4427cbfea079c982dd0571cc1 Mon Sep 17 00:00:00 2001 From: Shivek Khurana Date: Tue, 23 Mar 2021 12:11:21 +0530 Subject: [PATCH] Add overview doc (#2173) --- _docs/app-metrics.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 _docs/app-metrics.md diff --git a/_docs/app-metrics.md b/_docs/app-metrics.md new file mode 100644 index 000000000..e4b7237e4 --- /dev/null +++ b/_docs/app-metrics.md @@ -0,0 +1,22 @@ +# App Metrics + +`appmetrics` is a way to capture and transfer app usage data, anonymously over Waku to a Status managed key. + + +## History +To learn more about the history, background and debates around this feature, refer to this detailed note: https://notes.status.im/anonymous-metrics + + +## Implementation +On the Go side, the metrics system is just a table, which can store predefined events and the their values, along with metadata like create time, app version and operating system. The collected data will never contain any personally identifiable information like three letter public name or the public wallet address. There is a validation layer that ensures (to some extent) that developers don't capture sensitive data by mistake. + +### Opt-in system +These data points are saved in the local sqlite database, and are not transferred to our servers until the user opts-in to share metrics. If the user opts-out, we stop capturing data. + +### Validation and audit +The interesting bit is the validation process, which serves two purposes: +1. validates the metric before saving it to local db: ensures that we don't capture any sensitive information +2. acts as an audit layer: anyone who wishes to check the kind of data being captured, can do so by auditing just one file: https://github.com/status-im/status-go/blob/develop/appmetrics/validators.go + +### Transmission and deletion +Transmission happens over Waku, and as of now, all data will be deleted locally after transmission, however (in future) we might want to keep a copy of the data locally.