资讯动态

QOwnNotes 匿名使用统计(Metrics)机制全解析:数据收集范围、隐私边界与关闭指南

发布时间:2026/10/14 21:05:03 来源:尧图企业网站定制
桌面应用【免费下载链接】QOwnNotesQOwnNotes is a plain-text file notepad and todo-list manager with Markdown support and Nextcloud / ownCloud integration.项目地址https://gitcode.com/gh_mirrors/qo/QOwnNotes点击查看免费下载QOwnNotes 内置了一套基于自托管 Matomo 的匿名使用统计metrics系统用于指导这个以单人业余开发为主的笔记应用在众多平台与发行版上的维护与迭代决策。本文以官方 FAQ英文版、荷兰语版为骨架并结合仓库源码逐条核实统计为什么存在、数据存到哪里、具体收集什么、如何匿名化、怎样一键关闭以及为什么默认开启。读完你既能弄清自己的隐私边界也能掌握从源码审计“到底发了什么数据”的具体方法。为什么 QOwnNotes 需要统计指标QOwnNotes应用本身绝大部分由一个人利用业余时间开发而它的发布版要为大量平台和发行版其中很多是非常古老的版本构建并持续维护这是一项繁重的工作。在这种背景下统计数据是关于 QOwnNotes 究竟运行在哪些平台、哪些发行版版本上的唯一可靠信息来源官方 FAQ 原文表述为 “the only dependable source of information”。统计还能显示哪些功能最受欢迎从而支持三方面的决策决定退役哪些旧版本当某个平台/发行版的用量趋近于零时可以停止为其构建发布版决定哪些功能需要投入更多工作高频功能优先优化识别几乎没人使用的功能避免在这些功能上浪费维护精力。同样的逻辑也适用于用户首选语言的分布统计——哪门语言的使用者多就优先改进哪门语言的翻译质量参见webpage/src/faq/metrics.md。统计指标存储在哪里官方 FAQ 明确指出统计数据被发送并存储在一台自托管的 Matomo 服务器上只有两位主要开发者有权访问这些数据不向任何第三方共享。这一事实同样可以在源码中得到印证。metricsservice.cpp 中MetricsService构造函数创建了PiwikTracker指向https://p.qownnotes.org并使用站点 IDsiteId 5QT_DEBUG调试构建时为6。Matomo 本身就是开源自托管分析平台自托管意味着统计数据的存储与访问权完全掌握在项目维护者自己手中而非商业第三方分析公司。统计数据如何被收集与匿名化官方 FAQ 承诺了两层隐私处理匿名化指标在到达 Matomo 服务器后会被匿名化处理例如剥离 IP 地址内容隔离任何个人可识别信息都不会被收集或存储在服务器上包括你输入的笔记文本和笔记名称。从实现角度看数据经由仓库内置的 PiwikTracker 客户端库位于 src/libraries/piwiktracker/发出所有上报都收敛在 metricsservice.cpp 的sendVisitIfEnabled、sendEventIfEnabled、sendHeartbeat、sendLocaleEvent等接口中并统一受设置项appMetrics/disableTracking总开关与appMetrics/disableAppHeartbeat心跳开关控制。值得说明的是每次发送前代码都会读取设置做一次开关判断metricsservice.cppvoid MetricsService::sendVisitIfEnabled(const QString path, const QString actionName) { SettingsService settings; if (!settings.value(QStringLiteral(appMetrics/disableTracking)).toBool()) { sendVisit(path, actionName); } }也就是说任何埋点都不会绕过用户开关强行上报——关闭统计后这些调用只是空操作。到底收集了什么从源码出发的完整清单官方 FAQ 给出的概要包括“屏幕分辨率、操作系统、使用的 QOwnNotes 版本”等基础信息以及在应用内使用动作时发送的事件。要得到精确清单官方建议直接在源码中搜索sendVisitIfEnabled与sendEventIfEnabled。以下是从当前仓库实际核实的上报内容启动时的基础信息main.cpp在 main.cpp#L365-L418 的应用启动流程中依次上报app/start访问事件页面路径 “App Start” 动作名事件Qt 构建版本、Qt 运行时版本、当前图标主题theme、release 标识、是否便携模式portableSnap 构建下还会上报可用的样式styles列表操作系统发行版类型product-type、平台类型linux / mac / windows区域语言locale事件sendLocaleEvent。通过自定义维度携带的元信息在 metricsservice.cpp#L22-L30 中PiwikTracker设置了多个自定义维度维度 ID内容1编译时的VERSION版本号2系统区域设置QLocale::system().name()3是否为 debug 构建0/17操作系统产品名 CPU 架构Qt ≥ 5.49发布渠道标识qApp-property(release)这些维度共同构成了“在什么平台、什么架构、什么版本、什么语言环境下运行”的统计画像——均为环境元信息与笔记内容无关。使用过程中的行为事件动作跟踪mainwindow.cpp#L5815-L5832 的trackAction会对每个触发的 QAction 发送action/objectName访问事件对话框与页面跳转欢迎向导的每一步welcome-dialog/next、welcome-dialog/finished、welcome-dialog/close等都会打点见 welcomedialog.cpp其他对话框以dialog/objectName形式上报当前笔记切换note/current-note/changed功能使用事件例如是否配置了云同步app/has-cloud-settings、编辑器配色方案数量app/editor-color-schema-count见 mainwindow.cpp#L550-L561心跳heartbeatfrequentPeriodicChecker中每20 分钟1200 秒发送一次心跳首次为app/heartbeat访问、后续为 ping见 noteindexmanager.cpp#L1188-L1195 与 metricsservice.cpp#L74-L85关闭统计时的知情事件在设置中关闭统计或心跳时会分别发送settings/app-metrics-disabled、settings/app-heartbeat-disabled访问事件见 networksettingswidget.cpp#L62-L76。与更新检查的关系updateservice.cpp#L58-L62 显示版本更新检查的查询参数中只有当统计或心跳未被全部关闭时才会附带客户端 IDcid对应设置项PiwikClientId用于关联同一安装实例避免重复计数。测试用例佐证单元测试 test_metricsservice.cpp 覆盖了sendEventIfEnabled与sendVisitIfEnabled两个核心发送路径事件测试因上游问题在 Linux 上被条件编译禁用可用于验证上报接口的行为。如何关闭统计指标官方 FAQ 提供了两种关闭途径首次启动时在欢迎向导welcome dialog中直接关闭之后任意时间在设置对话框settings dialog中关闭。对应到源码欢迎向导包含专门的WelcomePages::MetricsPage页面welcomedialog.cpp#L61-L64进入该页时即标记appMetrics/notificationShown已提示设置的网络页SettingsDialog::NetworkPage中提供两个复选框见 networksettingswidget.cpp#L38-L83appMetricsCheckBox→ 写回设置项appMetrics/disableTracking关闭统计总开关appHeartbeatCheckBox→ 写回设置项appMetrics/disableAppHeartbeat关闭心跳上报。由于统计与更新检查共用同一开关体系关闭统计后相关网络流量也会相应减少。此外勾选“关闭使用统计”复选框时程序会弹出一个确认对话框说明匿名使用数据用于决定下一步改进方向与排查 Bug并默认聚焦在“不关闭”上networksettingswidget.cpp#L181-L196——这既尊重用户选择也避免误触。早退欢迎向导的“第二次提示”FAQ 特别提到如果你过早结束了欢迎向导应用还会弹出第二个对话框再次告知统计事宜。对应实现是 mainwindow.cpp#L4624-L4647 的showAppMetricsNotificationIfNeeded()——只要设置项appMetrics/notificationShown尚未置位它就会在启动时弹出一个信息框“QOwnNotes 将跟踪匿名使用数据……你可以在设置中关闭该行为”并提供“打开设置”按钮直达网络设置页mainwindow.cpp#L478-L479 在启动时调用。为什么统计指标默认不关闭官方 FAQ 的回答很直白“Defaults are king”默认值是王道。如果默认关闭统计项目将完全得不到有意义的统计数据——没人会主动去打开它。大多数用户并不关心统计默认开启不会给他们带来困扰真正在意统计、并且不希望“用数据投票”决定开发方向与支持范围的人可以在首次启动时轻松关闭即便跳过欢迎向导随后的第二次通知对话框也会确保每个用户都被告知而不是默默收集。也就是说默认开启换来的是对全平台用户真实使用情况的有效采样而“知情 随时可关”则保证了隐私边界由用户掌控。这些内容在 webpage/src/faq/metrics.md 中有明确阐述且与上述源码行为一一对应。如何自行审计一劳永逸的核查方法由于 QOwnNotes 是完全开源的免费开源软件任何用户都可以随时自行核查它到底发送了什么。官方给出的方法是在源码中搜索sendVisitIfEnabled和sendEventIfEnabled即可看到实际发送的内容。在本文涉及的所有埋点之上你还可以在仓库中全局搜索这两个函数名逐一核对每个调用点的path、eventCategory、eventAction、eventName与eventValue参数从而确认没有任何上报包含你输入的文本或笔记名称官方 FAQ 以加粗强调个人文本与笔记名绝不被收集。这一审计路径同样适用于想要深度理解该系统、或计划自行打包分发该应用的开发者。小结为什么收集单人维护 多平台分发统计是决定版本退役、功能优先级与翻译投入的唯一可靠依据存哪里自托管 Matomohttps://p.qownnotes.org仅两位主要开发者可访问不共享第三方怎么匿名服务器端剥离 IP不收集笔记文本与名称等个人可识别信息收集什么屏幕分辨率、操作系统、版本、语言、架构、启动/动作/心跳等环境与行为事件全部可通过源码中的sendVisitIfEnabled/sendEventIfEnabled逐一核对怎么关闭欢迎向导的统计页或设置 → 网络页中的两个复选框过早结束欢迎向导还会收到第二次提醒对话框为何默认开启默认值是王道——只有默认开启才能获得有意义的数据且关闭入口足够显眼、随时可用。赞分享桌面应用【免费下载链接】QOwnNotesQOwnNotes is a plain-text file notepad and todo-list manager with Markdown support and Nextcloud / ownCloud integration.项目地址https://gitcode.com/gh_mirrors/qo/QOwnNotes点击查看免费下载相关推荐QOwnNotes 匿名使用指标Metrics机制全解析数据收集原理、隐私边界与关闭方法QOwnNotes 匿名使用指标Metrics机制全解析数据收集原理、隐私边界与关闭方法 QOwnNotes 作为一款开源的纯文本笔记与待办事项管理应用桌面应用QOwnNotes 匿名使用统计App Metrics机制详解数据收集、存储与关闭方法QOwnNotes 匿名使用统计App Metrics机制详解数据收集、存储与关闭方法 QOwnNotes 作为一款开源的纯文本笔记与待办事项管理软件其桌面应用QOwnNotes 匿名使用数据Metrics机制全解析采集内容、存储方式与关闭指南QOwnNotes 匿名使用数据Metrics机制全解析采集内容、存储方式与关闭指南 QOwnNotes 会在默认开启的状态下向自托管的 Matomo 服桌面应用创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑