作为这项工作的一个例子,我们彻底重构了游戏(Games)分类。F-Droid 2.0 不再将所有游戏归在一起,而是细分为 17 种不同的游戏类型,让用户更容易找到自己真正喜欢玩的游戏。
搜索功能也得到了显著改进。除了应用名称,现在还可以搜索应用描述、分类和翻译内容,这让用户更容易根据应用的功能而非名称来找到它们。
我们还为使用中文、日文和韩文搜索的用户做了重大改进。新的搜索系统对中日韩(CJK)文字系统提供了更好的支持,帮助用户用自己的语言更可靠地找到相关应用。
搜索还会记住你最近的查询,让你无需重新输入即可快速返回之前的搜索。
浏览和搜索只是其中一部分。F-Droid 2.0 还引入了强大的筛选功能,帮助你在庞大的应用列表中精准缩小范围,找到所需内容。
筛选器可以通过多重条件组合使用,例如应用分类、设备兼容性或反特性(anti-features)。例如,你可以选择只查看与设备兼容的动作游戏,并排除依赖非自由网络服务的应用。
为了帮助用户发现这些及其他高级功能,F-Droid 2.0 在应用内引入了引导界面。功能不再隐藏在复杂的设置背后,而是通过情境化引导,帮助新用户和资深用户充分利用 F-Droid。
长期以来,点击安装或更新的体验一直被 Android 限制在二流水平。如今,主要得益于欧盟《数字市场法案》(DMA)和全球各地反垄断行动的压力,Android 为所有应用商店提供了一种比以往更流畅、更自动化的安装和更新体验选项。F-Droid 2.0 在利用这些新能力方面做了开创性工作。这使得 F-Droid 能够对所有安装使用统一安装器——无论是系统内置的还是用户自行安装的。统一安装器利用了新的预批准(pre-approval)API,因此在支持的设备上,用户可以在决定安装应用后立即确认,而不是在应用下载完成之后。这使得在官方 Android 设备上,F-Droid 的安装体验更接近内置应用商店所能提供的水平。
如此规模的重设计意味着需要仔细斟酌哪些内容应保留在新应用中、哪些可以换种方式处理、哪些已不再值得延续。为了使 F-Droid 2.0 更加精简、更易于维护,一些熟悉的功能发生了变化、被移动或被移除,但没有牺牲核心功能或用户依赖的特性。
F-Droid 2.0 现在默认自动获取并安装应用更新。如果你希望有更多控制权,别担心,你现有的偏好设置仍然会被尊重。
一些用户怀念通过下拉刷新手势来检查所有仓库更新的功能。在 F-Droid 2.0 中,下拉手势专门用于滚动。这之所以成为可能,是因为应用现在可以在后台自动检查更新。我们没有保留这个熟悉的操作,而是专注于消除对它的需求。最好的刷新按钮,是你永远不需要按的那个。
希望拥有更多控制权的用户仍然可以使用细粒度和手动更新选项。如果你曾使用下拉刷新来手动触发更新,现在可以在“我的应用”(My Apps)界面的操作溢出菜单(即“三个点”)中找到该功能。
F-Droid 让你掌控何时下载什么内容。这契合了我们遍布全球、需求各异的用户群体。许多用户能廉价使用移动数据,而对另一些人来说移动数据价格高昂;一些用户有更高的隐私要求,需要控制网络流量;还有用户使用的设备性能有限,F-Droid 后台更新时会导致卡顿。控制这一切的设置已被重新设计,让 F-Droid 更直观地适应你的需求。
一些 F-Droid 用户所处的环境中,仅仅安装某些应用甚至使用 F-Droid 本身就可能招致不必要的关注。为了支持这些用户,F-Droid 长期以来包含了一整套隐私和安全功能,旨在保护用户及其数据。
一个关键的隐私工具是 Tor。F-Droid 长期支持对所有网络连接使用 Tor,并为仓库和镜像使用 Tor Onion Services。自 Tor 支持首次集成以来,Tor 与 Android 集成的方式已发生很大变化。现在有 TorVPN、Orbot、TorServices 等多种方案。我们借此机会简化了设置,并移除了已不再可靠的自动检测功能。如果你启用了“使用 Tor”,该选项将被迁移到通用代理设置中。今后,Tor VPN 是实现便捷 Tor 支持的推荐方式,代理设置仍可供需要手动控制的用户使用。
另一个关键部分是“panic”(紧急)功能集,允许用户在紧急情况下快速从设备上清除某些特定的敏感信息。这些功能仍保留在 F-Droid 2.0 中,并继续是为安全需求较高的用户提供支持的重要组成部分。
值得注意的是,F-Droid 的应用隐藏功能已被简化,以让用户准确了解他们能获得何种程度的保护。F-Droid 是最早提供应用隐藏功能以保护用户隐私的应用之一,包括我们的“panic”功能——将 F-Droid 应用伪装成一个简单的计算器应用。许多用户曾提出这一简单功能的需求,此后 Orbot、TorVPN、Signal 等应用也加入了类似的伪装功能。随着时间推移,广泛使用的应用之间形成了一种标准设计,我们在新版本中也采用了这种设计。这一功能旨在让用户更好地了解伪装的局限性。现在,伪装只影响应用图标和名称,仅此而已,而不再让应用看起来和运行起来像一个简单的计算器。这可以让用户明白 F-Droid 应用仍会出现在“应用”设置中,并且在取证检查时可能被发现。希望这一变化能让用户更容易理解此功能的局限性,同时在需要时仍能使用它。
还有一个尚未回归的功能,是响应 Ripple 等 panic 触发应用时移除并擦除应用的能力。我们认识到,一些用户出于隐私和人身安全的考虑依赖此功能,并理解这不仅仅是一个可用性特性。然而,维护它需要高度专业化的工作,考虑到其用户群体较小,我们认为它不应再阻碍如此多其他重要改进。
应用擦除功能仍然很重要。我们特别欢迎使用该功能的用户反馈,帮助我们了解它的使用方式和场景,以便我们在持续改进 F-Droid 2.0 的过程中评估最佳前进路径。依赖当前应用擦除实现的用户可以选择暂缓更新到 F-Droid 2.0,等待我们评估是否恢复该功能。
F-Droid 被设计为可集成到任何版本的 Android 或 AOSP 中,正如我们在 CalyxOS、emteriaOS、iodéOS、Lineage-for-microG 和 ShiftOS 中所看到的。每个系统都可以通过“附加仓库”机制默认包含自己的仓库。如果你使用这些系统之一,这些仓库将显示在你的仓库概览中。有关变更的更多信息,请查看这篇博客文章。
此外,F-Droid 特权扩展(FPE)目前不受 2.0 支持。这意味着即使安装了 FPE,F-Droid 2.0 也不会使用它。此次重构专注于对 Android “session” 安装器的完整功能支持。这让 F-Droid 能够在任何较新的 Android 版本上运行后台更新,而无需 FPE。与这里的任何变更一样,我们欢迎反馈。
虽然 F-Droid 2.0 的许多改进在表面上可见,但一些最重要的变化发生在幕后。
这项工作中的所有新代码都采用了现代 Android 代码标准和设计。这为我们提供了一个更易于维护、测试,以及未来更容易扩展新功能的代码库。
重写的目标之一是降低新贡献者的门槛。过去十年 Android 开发发生了巨大变化,F-Droid 2.0 现在使用 Kotlin 构建——这种语言已成为现代 Android 开发的标准。这让熟悉当今 Android 生态系统的开发者更容易为项目做贡献。
新用户界面使用 Jetpack Compose 构建——这是 Android 应用的标准工具包。除了简化开发,这还帮助我们将 F-Droid 与 Material Design(贯穿 Android 的设计系统)更紧密地对齐。因此,F-Droid 对 Android 用户来说感觉更加熟悉,同时保持了自己的特色和价值观。
最重要的是,这些变化为 F-Droid 未来十年的发展提供了基础。通过减少维护负担并让贡献更容易,我们可以把更多时间花在改善用户体验上,而不是与技术债务作斗争。一些新工具还依赖于 Android 本身的修复,其中一项修复是在 Android 7 中加入的,这迫使我们放弃对 Android 6 的支持。一如既往,旧版 F-Droid 将继续在旧版本 Android 上运行。
F-Droid 2.0 是我们历史上规模最大、最具雄心的项目之一。将它变为现实所需要的远不止软件开发。它涉及用户研究、设计、测试、文档、社区反馈、质量保证、大量新代码、一次安全审计,以及关于 F-Droid 应如何在未来十年演进的无数次讨论。
这项工作的实现离不开许多组织和个人的支持。Torsten Grote 在新应用上的开发工作由 NLnet 通过 Mobifree 基金资助。Open Technology Fund 的用户体验与发现实验室支持了用户研究和设计工作,邀请 Ura Design 协助进行用户测试、开发用户故事并完善我们的人机界面指南。
更多支持来自 Open Technology Fund 的自由及开源软件(FOSS)可持续发展基金、NGI、Mobifree 和 Calyx Institute,后者的赞助帮助支持 F-Droid 生态系统的持续维护和长期可持续性。
作为这项工作的一部分,Open Technology Fund 的安全实验室与 Convocation 对 F-Droid 2.0 进行了独立安全审查。我们分析并处理了与新应用相关的所有发现,帮助确保该版本符合用户所期望的高安全标准。我们期待在审计报告获准发布后分享完整报告。
同样重要的是,F-Droid 2.0 体现了众多志愿者的贡献。在整个重设计过程中,社区成员贡献了代码、测试、错误报告、设计反馈、翻译、文档、UX 讨论以及无数想法。无论是资深贡献者还是首次贡献者,都帮助塑造了最终成果。
最后,没有你的支持,这项工作将无法完成。捐赠帮助资助许多拨款并不总能覆盖的、不那么显眼但至关重要的活动,包括社区管理、处理 issue 积压、质量保证、发布管理和项目协调。这些贡献有助于让 F-Droid 在特定的拨款资助项目结束后长期保持健康运转。
F-Droid 2.0 代表了一个重要里程碑,但这并不是故事的终点。重建应用为我们打下了更坚实的基础,但前方仍有许多工作要做。
随着发布覆盖更多用户,我们期待从实际使用中学到很多。社区反馈从最初的设计讨论到众多 alpha 和 RC 版本,一直在塑造 F-Droid 2.0,并将继续指导未来的改进。一些想法未能进入初始版本,而另一些功能仍在随着我们收集反馈和完善设计而不断演进。