经过多年的技术研究和基础工作,Fedora Badges 应用服务已从零开始重建,并即将投入生产。无论你是多年收集徽章的老手,还是 Fedora 项目社区的新人,以下是你在那里会遇到的内容。

完全现代化的用户界面

过时的服务器渲染页面已不复存在。Fedora Badges 应用服务现在运行在现代化的单页应用上,提供更快、反应更迅速的体验,并适配各种屏幕尺寸和设备类型,无需整页刷新或前端重载。

导航也经过了重新设计。不过别担心——如果你收藏了旧的服务链接,它们应该会重定向到正确的位置。

配色方案与暗色模式

现在你可以从八种配色方案中自定义 Fedora Badges 应用服务的外观。你的选择会贯穿前端各个元素——从导航栏到边框,从图表到强调色等。暗色/亮色模式切换会遵循你的系统偏好,也可以手动切换。

你的选择保存在会话存储中,在多次访问之间持续保留。只要使用同一会话,配色方案和暗色模式设置就会保持不变。

焕然一新的徽章收集体验

个人资料页不仅展示你珍贵的徽章,还显示一个雷达图,映射你在各个类别中的收集情况。这是一种粗略衡量进度并发现尚未探索领域的方法,有助于丰富活动类型,鼓励更多人参与。

刷新后的历史页面还增加了收集时间线图表,一目了然地展示你(以及你的朋友)在数月或数年内的贡献活动。

与朋友比较(或竞争)

全新的差异页面让你可以将自己的徽章收藏与朋友的进行比较。看看你们共同拥有的徽章、只有你拥有的徽章,以及最重要的——他们已获得而你尚未获得的徽章。这是发现新徽章和探索新贡献方式的有趣途径。

你还可以根据社区成员的贡献活动和收集的徽章,联系他们寻求潜在的指导机会。

按稀有度探索徽章

每个活跃徽章现在都有一个基于当前持有用户数量的稀有度等级:

  • Fedorable — 难以获得的东西
  • Legendary — 神话般的声望
  • Epic — 值得炫耀
  • Rare — 有原则的努力
  • Uncommon — 奋斗的未来
  • Common — 温暖的问候

你现在可以按稀有度等级浏览活跃徽章,轻松找到那些较少人获得的徽章。这不仅让你发现新的贡献途径,还能感受到社区活动中等待你的有影响力的工作和相关方向。

语义化统一查找

告别分别搜索徽章和用户的方式,搜索栏现在支持跨徽章和用户的统一查找。开始输入后,结果会立即出现,查找结果也更好。当查询足够宽泛、返回超过八个结果时,这些结果就会出现。

为节省服务器资源,异步搜索请求仅在搜索栏中输入至少四个字符后才会开始。

带时间导航的排行榜

告别受限的排名页面,现在可以在排行榜页面请求自定义时间段过滤。过滤器可以基于天、周、月和年。你可以看到谁在这些时间段内获得了最多的徽章,并回顾社区在一段时间内的进展。

排名是确定性的,可以通过分享链接与他人共享,该链接会自动应用相同的过滤器,从而创建可复现的资源。

更清晰的徽章活动生命周期

徽章现在可以在不再授予用户后手动标记为遗留(已退役、不可获得)。例如,加入 Fedora Linux Release Party 42 的徽章在 2026 中不应再对新用户开放。因此,在计算稀有度等级时不应再考虑它们。

而且——我们不会从已经获得徽章的用户那里收回徽章。这些退役徽章仍会在历史记录中可见。

更强大的底层基础支持

这次重构不仅仅是前端。支撑应用服务的数据层也进行了重大改革。处理所有数据库操作的 Database Library 项目在同一时期经历了 105 次提交,涉及 7 位贡献者,版本从 1.4.1 提升到 1.5.5。

以下是底层的变化及其重要性:

  • 更快的查询 — 消除了冗余的数据库查找,添加了外键索引,分页现在在数据库层面进行,而不是在应用代码中。列出徽章或用户的页面加载明显加快,尤其是在徽章或用户数量增长时。
  • 有效的查找 — 导航栏中的搜索由 API 新增的搜索方法驱动,涵盖徽章和用户。这不仅使搜索明显更快,而且实际过程在同步数据库访问层上也更高效。
  • 稀有度计算 — 徽章页面上的稀有度等级由 API 代码中的更新算法每天计算。现在也处理了各种边缘情况。当拥有徽章的用户数为零时,回退设置为常见等级。
  • 遗留支持 — 进行了模式级更改,在 badges 表中引入新的 legacy 列,以区分活跃徽章和已退役徽章。API 代码内置了过滤功能,前端在用户请求时会在单独页面上显示它们。
  • 类别规范化 — 徽章标签现在存储在自己的表中,而不是作为原始的逗号分隔字符串。这使得类别浏览更加可靠。
  • 级联删除 — 在紧急情况下删除徽章时,现在会正确清理其数据库中的断言,清除孤立数据。
  • 移除邀请 — 邀请是软删除而非硬删除。这保留了访问历史,同时防止意外断言。
  • 质量保证 — 几乎每个新功能都附带测试用例。放弃了对 Python < 3.9 的支持,转而支持 Python > 3.13。

更顺畅的认证流程

认证已重新设计。旧的基于会话的登录已完全被使用 OpenID Connect 的现代基于令牌的流程取代。应用服务现在拥有自己的专用认证客户端,因此通过 Fedora Accounts 登录与其他服务更加一致。

如果你是首次访问,与多年来的情况一样,你的用户账户会自动创建,无需任何额外步骤。

你的隐私真的很重要

电子邮件地址不再出现在各种 API 响应中。它们会在作为异步响应发送前进行哈希处理,供 Libravatar 使用。用户可以选择完全退出 Fedora Badges 应用服务。在这种情况下,他们将不再因社区任务而获得徽章奖励。

出于性能和效率考虑,RSS 源现在仅提供最近的条目,因此你仍然可以随时了解应用上的最新活动。

面向徽章创建者、维护者和管理员

如果你是团队的一员,新界面为你提供了一套完整的工具。

  • 高级数据库管理前端
  • 创建和撤销用户的奖励
  • 创建徽章邀请并使其过期
  • 创建和撤销用户的授权
  • 创建和更新徽章
  • 创建和更新用户

访问控制是分层的——社区成员看到服务体验,而授权团队成员获得他们需要的管理控制。

数字背后的进展

这次重构(代号 स्वातंत्र्य 或 Svātantrya)代表了一年内在两个仓库中的积极工作,包括 Tahrir 中的 165 次提交和 Tahrir API 中的 105 次提交。这是在多年的技术研究和基础工作之后进行的,最终代码库更精简,净减少了 13,320 行代码。

感谢我们出色的贡献者

我真心地说,没有以下这些人的帮助,这次重构将无法实现(按字母顺序排列):

  • Akashdeep Dhar
  • Aurelien Bompard
  • Awwal Adetomiwa
  • Chibuezem Marvinrose
  • Daniel Mungai Chege
  • Emma Kidney
  • Gregory Sutcliffe
  • John Iweh
  • Joy Aruku
  • Kevin Fenzi
  • Michael Scherer
  • Michal Konecny
  • Olamide Peter Ojo
  • Payal Sumbhe
  • Shounak Dey
  • Vanshikha Shri
  • Yash Sheorey
  • Xavier Lamien

当然,还有来自 Flock 2026 上 Fedora Badges 重构项目工作坊的参与者:

  • Ankur Sinha
  • Cornelius Emase
  • Emmanuel Seyman
  • Guillermo Leiro
  • Jakub Jelen
  • Jona Azizaj
  • Jonáš Hubený
  • Justin Wheeler
  • Mat Holmes
  • Matthew Miller
  • Misia Mary
  • Shawn Dunn
  • Vít Smolík
  • Vittorio Cioe

这个重构项目曾在一段相当长的时间里陷入开发困境。多亏了上述人员以及过去十四年左右帮助维护该项目的无数其他人,它才得以走出困境。如今,是时候把这个火炬传递给其他能够帮助维护它的人了。

项目代码库目前位于 Fedora Infrastructure 的 GitHub 命名空间中。请考虑提供反馈和贡献更改,以帮助维护这些项目。你也可以在 Fedora 项目 Matrix 服务器上的 Fedora Badges 聊天室与我们交流,了解更多信息。

去试试吧!

生产部署应该在本文公开发布时已经上线。前往 Fedora Badges 探索焕然一新的体验。由于上线初期可能有些粗糙,请耐心等待,我们会根据你提供的有用报告修复各种问题。

你的意见将影响 Fedora Badges 应用服务接下来的发展。请现在就试一试,并告诉我们你的想法!