经过多年的技术研究和基础工作,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 应用服务接下来的发展。请现在就试一试,并告诉我们你的想法!

