F-Droid метрики и чистые данные
Posted on 2021-03-01 by
Сообщество F-Droid уже давно обсуждает, как измерить, какие приложения популярны. С 2012 по 2015 некоторые простые подсчеты загрузок велись в fdroiddata. Мы также набросали идею, основанную на конкурсе Debian “Popularity Contest”. Затем мы определили безопасный способ сбора логов с наших веб-серверов.
Одна из главных идей всегда заключалась в том, что хорошая система метрик для F-Droid никогда не будет включать любую персонально идентифицируемую информацию (PII), такую как телефонные номера, IP-адреса, MAC, SSID, IMSI, IMEI, учетные записи пользователей и т.д.. Кроме того, любой дополнительный сбор данных должен осуществляться по желанию пользователя, например, все, что будет сообщено клиентским программным обеспечением.
Недавно у меня появилось немного времени для изучения реальных метрик, благодаря проекту Guardian Project Clean Insights для частных, этичных метрик. Теперь у людей есть реальные цифры, с которыми можно работать!
Сайты F-Droid
Мы добавили новые настройки протоколирования с сохранением
конфиденциальности на все наши веб-серверы, кроме f-droid.org.
Конфигурации
Apache
используют формат “privacy+geo
”, который очищает дату/время/временную зону
только до даты, удаляет IP-адрес, агент пользователя и реферер. В
конфигурациях nginx используется формат журнала
“privacy+geo
”, который также удаляет IP-адрес, агент пользователя и
реферер. Ключевым отличием является то, что в конфигурации журналов nginx
невозможно нормализовать дату, поэтому они хранятся нетронутыми. Журналы
хранятся не более двух недель, после чего удаляются. Процесс
metrics запускается на самом сервере,
затем только обработанные данные отправляются в частные git-репозитории для
каждого сайта. Они остаются
закрытыми для основных участников на случай утечки конфиденциальных данных.
Затем их можно вручную удалить, прежде чем они станут общедоступными.
Более строгий формат журналов Apache со временем появится на f-droid.org. Пока что мы придерживаемся существующей настройки сохранения журналов Apache по умолчанию. Это большой сайт, а мы - маленькая команда, поэтому нам нужно быть очень консервативными в отношении изменений. Метрики, поступающие с f-droid.org, в настоящее время обрабатываются и проверяются вручную. Публичные, дезинфицированные данные для f-droid.org генерируются с использованием того же строгого процесса, что и для остальных сайтов.
Все эти данные затем собираются и публикуются для всеобщего пользования на сайте https://fdroid.gitlab.io/metrics. В настоящее время это просто файлы данных в формате JSON: index.json перечисляет доступные отчеты за неделю, затем каждый отчет называется по имени первого дня отчета, например 2021-02-15.json. Отчетным периодом является понедельник 0:00:00 - воскресенье 23:59:59.
Эти санированные JSON-данные также загружаются в аналитический экземпляр Clean Insights Matomo (под управлением Guardian Project), чтобы проверить, является ли Matomo полезным аналитическим инструментом для данных без PII. Несмотря на то, что скрипт отправки работает только с дезинфицированными данными, отчеты отправляются в Clean Insights Matomo Proxy (CIMP), который удаляет ненужную информацию, включая IP-адрес, перед отправкой в Matomo. Затем CIMP отправляет обработанные данные в Matomo, который генерирует представления по этим данным.
Интерпретация данных
Для всех веб-серверов, кроме f-droid.org, они представляют собой простую, односерверную установку. Это означает, что журналы веб-сервера будут включать все посещения веб-сайта Для f-droid.org это более сложно. Текущие метрики получены с канонического веб-сервера. Это означает, что большинство посещений останавливается на кэширующих серверах и никогда не отображается в журналах канонического веб-сервера. Журналы с кэширующих серверов в настоящее время не обрабатываются и нигде не публикуются.
Клиент F-Droid
Существует также metrics submission для официального клиента F-Droid для Android. По своей сути, он собирает информацию за предыдущую неделю (например, за последнюю завершенную неделю) и помещает ее в JSON-отчет. Затем этот JSON отправляется на https://metrics.cleaninsights.org, соблюдая сетевые предпочтения, например, требуя Tor. Сначала его нужно включить, включив “Экспертный режим”, затем “Вести историю установки”, затем “Отправить в F-Droid Metrics”. В окне просмотра “История установки” есть средство просмотра отчетов. Если это окажется полезным и не будет утечек конфиденциальной информации или других этических проблем, его можно будет расширить. Тем не менее, это всегда будет опционально. Сейчас это глобальный переключатель. Мы изучаем возможность опции для каждого отчета и другие идеи для обеспечения того, чтобы метрики всегда в первую очередь учитывали пожелания пользователя.
В качестве примера приводим актуальный, но относительно простой отчет:
{
"events" : [ {
"action" : "isPrivilegedInstallerEnabled",
"category" : "device",
"name" : "true",
"period_end" : 1613606400,
"period_start" : 1613001600,
"times" : 1
}, {
"action" : "Build.VERSION.SDK_INT",
"category" : "device",
"name" : "25",
"period_end" : 1613606400,
"period_start" : 1613001600,
"times" : 1
}, {
"action" : "Build.SUPPORTED_ABIS",
"category" : "device",
"name" : "[armeabi-v7a, armeabi]",
"period_end" : 1613606400,
"period_start" : 1613001600,
"times" : 1
}, {
"action" : "PackageInfo.firstInstall",
"category" : "APK",
"period_end" : 1614211200,
"period_start" : 1613606400,
"times" : 1
}, {
"action" : "PackageInfo.firstInstall",
"category" : "APK",
"name" : "org.fdroid.fdroid.privileged",
"period_end" : 1614211200,
"period_start" : 1613606400,
"times" : 1
}, {
"action" : "PackageInfo.lastUpdateTime",
"category" : "APK",
"name" : "org.fdroid.fdroid.privileged",
"period_end" : 1614211200,
"period_start" : 1613606400,
"times" : 1
}, {
"action" : "org.fdroid.fdroid.installer.Installer.action.INSTALL_STARTED",
"category" : "package",
"name" : "ryey.easer.beta",
"period_end" : 1614211200,
"period_start" : 1613606400,
"times" : 1
}, {
"action" : "org.fdroid.fdroid.installer.Installer.action.INSTALL_COMPLETE",
"category" : "package",
"name" : "ryey.easer.beta",
"period_end" : 1614211200,
"period_start" : 1613606400,
"times" : 1
} ],
"idsite" : 3,
"lang" : "en",
"ua" : "F-Droid 1.12-alpha1-4-gbc8ae2144-debug"
}