近日,Pidgin 团队发布了 Pidgin 3.0 的第四个实验性快照,版本号为 2.93.0。该版本仍属于预 alpha 阶段,面向开发者与爱好者进行早期测试与反馈,而非面向普通终端用户的稳定发布。发布包已上传到 SourceForge,并将在 Flathub Beta 上架,方便采用 Flatpak 的用户体验新特性。 与以往实验性发布一样,2.93.0 是一个时间点快照,反映了当前核心开发分支的进展。开发者和高级用户可以通过 Flatpak Beta、在本地构建 Flatpak 包或使用 Meson devenv 的方式运行该版本,从而避免直接修改系统环境,也便于回退与多版本并存。官方 README 中提供了构建与运行的具体步骤,建议打算尝试的用户优先选择这种"容器化"或开发环境方式。
本次发布的核心亮点之一是面向开发者的迁移文档。Pidgin 团队正逐步把旧版 libpurple(Purple 2)的 API 与概念迁移到 Purple 3,相关迁移指南已发布在 docs.imfreedom.org/purple3/migrating.html。这份迁移指南对于扩展开发者、协议插件维护者和希望把插件或协议移植到新架构的社区贡献者非常关键。它详细说明了新的类型、vfunc 约定、以及如何替换或重构原有接口。 数据持久化方面,2.93.0 引入了更模块化的后端抽象机制。许多需要在程序退出后保留的数据源现在通过后端接口进行统一处理。
以会话管理为例,Purple.ConversationManager 可以被配置为不持久化会话,或使用提供的 SQLite 后端 Purple.ConversationManagerSeagullBackend 进行存储。该模式为未来添加更多后端(例如不同数据库、云同步或纯内存测试后端)提供了便利,也让 UI 层与持久化逻辑进一步解耦。 会话持久化的改善带来了更贴近现代客户端的体验。Pidgin 现在会追踪上次运行时打开的会话,并在下次启动时恢复这些对话,无需提前把频道加入联系人列表或设置自动加入。该行为对私信、群组对话和频道等均适用,提升了用户连续性的体验,但由于当前仍为实验版本,可能会在某些边缘情形下出现恢复异常,建议在生产环境使用前备份数据。 界面与可用性方面,Pidgin 3.0 引入了新的应用图标,由 Hykle Bons 设计,以更现代的视觉语言传达项目形象。
与此同时,新增的色彩方案偏好可以让用户选择跟随系统主题或强制设定为浅色或深色模式,这对于希望与桌面主题一致的用户来说是重要改进。界面仍未完全打磨,后续实验版本预计会进一步优化布局、图标与控件行为。 开发代码层面,libpurple 的重构工作有大量进展。核心包括把字符串相关处理迁移到 birb 字符串函数、移除旧的 GdkPixbuf 依赖并用更现代的 Purple.Image 替代旧的头像 API、将 Tags 转换为 Gio.ListModel、增加调度器与任务系统 Purple.Scheduler 与 Purple.ScheduleTask、以及创建更模块化的 AccountManagerBackend 和 ConversationManagerBackend。这样的改动为插件体系、协议实现和未来的跨平台支持打下了基础,但也意味着旧插件需要按照迁移指南进行适配。 安全与隐私相关改动也值得关注。
项目删除了旧的网络 API 并重构了凭证管理相关的代码,提供了更一致的帐户设置接口 Purple.AccountSettings 及相关类型。移除历史 API 的决定可能影响现有的历史访问方式,开发者需要使用新版接口重新实现相关功能。由于这些变更覆盖面广,维护者在打包或分发前应充分测试并准备兼容适配方案。 协议与插件方面,常见协议插件也在逐步适配新架构。IRCv3 插件实现了 /me 命令修复了状态消息存储问题,并迁移到了新的帐户设置体系。SIP 插件去除了对 sofia 的依赖,示意开发者可选择更轻量或不同实现路径。
示例或演示协议也被更新以使用 ProtocolDirectory,以便更好地展示新 API 的使用方法。 对于 macOS 用户,开发团队修复了部分与原生文件系统和菜单项相关的问题,隐藏了重复菜单项并改进了主窗体与账户管理窗口的父子关系,这意味着在 macOS 上运行 2.93.0 的体验在某些场景下会比之前更稳定。但仍需注意,实验版本在跨平台细节上的差异可能导致本地特性未完全实现或存在兼容性问题。 打包与分发方面,官方特别提醒发行包管理者暂时不要将该实验版打包面向常规用户分发。因为众多 API 尚未稳定,界面与功能仍存在大量未完成项,若被广泛部署会带来大批支持请求,超出当前维护资源。对于爱好者和测试者,Flathub Beta 与源码构建是更合适的选择,也方便开发者收集有针对性的反馈而非大量终端用户报告。
如果你是开发者,迁移重点包括核对并替换被弃用的 API、适配新的后台接口、更新插件元数据以适配 GSettings 和新的命名约定,以及利用新的 Gio.ListModel 与 Purple.Image 等现代 GLib/GIO 设施重构界面相关的逻辑。团队已经在代码库中添加了若干单元测试,示范如何调用新的 CommandManager 和 ConversationManager 接口,建议开发者结合这些测试作为迁移参考。 对普通用户与社区贡献者来说,参与测试并提交可重复的 bug 报告将极大帮助项目稳定。报告中应包括重现步骤、运行平台、是否使用 Flatpak、日志输出和是否在 Meson devenv 中运行等关键信息。对于希望贡献代码的人员,阅读贡献指南与迁移文档是最有效的入门路径,项目也欢迎围绕文档、打包脚本、测试用例与 UI 改善的贡献。 关于后续计划,Pidgin 团队已经规划了实验性 5 的发布节奏,定于 2025-12-31 并使用版本号 2.94.0。
该版本会包含目前列出的若干票据中的任务,但实现优先级可能随开发进度调整。社区可以通过项目的 Burndown Chart 跟踪进度,关注哪些任务被列入下一个实验版并参与讨论或贡献补丁。 在实际安装与测试时,推荐使用 Flatpak Beta 或在独立的 Meson devenv 中运行,避免直接在生产系统上覆盖现有 Pidgin 安装。若选择源码构建,请先确保系统依赖满足 Meson 和 Flatpak 的要求,并参考仓库内的 CI 测试配置以避免常见构建错误。对于想临时试用的用户,SourceForge 上的发布包也是一个快速入口,但同样建议在沙箱环境中运行。 关注日志与调试信息有助于缩短问题定位时间。
实验版本新增或调整了若干调试宏与日志子系统接口,开发者在提交问题时附上详细日志将显著提高修复效率。若在 macOS 或 Linux Flatpak 中运行,注意将平台特有的日志与运行权限一起记录,便于开发者复现运行环境。 Pidgin 社区同时在持续维护非功能性项目资源,例如项目商店、捐赠页面与周边商品商店,这些都是维持项目运转的支持途径。对于有能力赞助或长期参与的个人与组织,项目欢迎以捐赠、赞助或贡献开发时间等多种形式支持长期开发。 总的来看,Pidgin 3.0 实验性 4(2.93.0)标志着向现代化架构迈出的一大步,核心在于更清晰的后端抽象、更现代的 API 与更利于插件生态的重构。尽管当前仍存在大量未完成项与已知 bug,但对协议维护者、插件开发者和技术爱好者来说是一次重要的早期测试机会。
通过参与测试、提交问题与贡献补丁,社区可以帮助塑造最终面向终端用户的 3.0 正式版。 希望开发者与测试者在尝试新版本时做好数据备份,并优先在沙箱或容器中运行。对于想要深入了解迁移细节的人,建议直接阅读官方迁移文档并在开发渠道中提问或讨论。关注官方发布渠道、Burndown Chart 与后续的 State of the Bird 更新,可以及时掌握项目进度与下一个实验版本的重点变化。 。