我们一直致力于尽可能高效地运作,但有时事情并不顺利,这会给我们的用户群和测试和准备发布的社区成员带来压力和困扰。上周就是我们发布过程中遇到一些困难的例子,虽然没有任何个人或团队应该为我们最近发布中遇到的问题负责,但它们确实突出了我们的团队和工作流程可以改进的地方。

2.5.26/3.2.6/3.3.5 升级错误

在昨天的 2.5.26、3.2.6 和 3.3.5 版本中,引入了一个错误,影响用户通过 Joomla! 更新组件更新其网站的功能。为应对上周发布后不久报告的 安全漏洞,对该更新系统背后的代码进行了更新。由于此代码源自 Akeeba Backup 的 Admin Tools,并在 Joomla! 和 Akeeba 产品中使用,因此这两个团队协调发布了包含此更新代码的版本。在昨天发布后不久,我们收到了 Akeeba 团队的联系,并被告知安全修复可能导致升级问题,经过彻底测试后,确认会影响这两个团队的产品。我们很快获得了补丁,以便将其包含在下一个版本中,当时我作为当前 Joomla! 版本的发布负责人,决定尽快发布。在准备下一个版本时,我们需要确保能够为所有受影响的用户提供适当的文档,因为升级路径不再是典型的“一键式更新”。我们还选择在更新组件本身中包含一个回退升级机制,以便如果再次发生这种情况,我们可以专门为更新组件提供补丁。为了确保所有用户都清楚,该错误本身并没有妨碍 Joomla! 网站的正常功能;唯一受影响的功能是更新组件本身,以及执行更新的实际代码。如果更新组件无法正常工作,则可以使用回退机制进行更新,这需要用户通过扩展管理器更新其网站,类似于 Joomla! 1.6 和 1.7 的更新方式。

3.3 版本中的回归问题

另一个影响我们最近 3.3 版本的问题是,代码中引入了几个回归问题,尽管在许多情况下这些问题相对较小,但它们导致了网站一般使用上的中断。最近出现的两个回归问题是电子邮件隐藏插件和组件分页。在电子邮件隐藏插件的情况下,代码中进行了一项更改,导致隐藏的电子邮件地址在 `

` 元素中呈现,这错误地修改了网站的输出,甚至在 joomla.org 网站上也能看到。在组件分页的情况下,问题是在为了更准确地使用声明的 API 而对数据库查询逻辑进行了更改时引入的,但更改没有在 JModelList 中为其使用的计算分页的方法进行调整。虽然这个错误本来可以被捕获,如果它被应用到一个具有足够内容的环境中,但许多通过 Joomla! Bug Squad 积极参与我们开发工作流程的社区成员没有针对生产风格的网站测试问题,而是针对包含很少内容或在其典型网站配置中使用的扩展很少的裸机安装测试。

发布时间

我们典型的发布计划旨在每 6 到 8 周发布一次常规维护版本。不幸的是,这个计划并不总是受我们控制,可能会由于各种原因而大幅度改变,其中一个原因涉及安全问题。如上面链接的安全漏洞中所述,安全问题直到上周发布版本发布后才报告给 Joomla!。如果报告早一两天出现,这些版本很可能就会延迟发布,以便包含该修复。在出现安全问题的情况下,我们力争及时地为社区成员提供修复,并尽最大努力避免因连续快速发布而给任何人带来不便。

经验教训

从最近发布以及发布中包含的问题中,我们可以汲取很多经验教训。生产领导团队将寻求改进我们的发布程序和测试覆盖范围(通过用户交互和自动化测试),但重要的是要注意,我们无法保证一个完美的系统。错误会发生,重要的是将它们最小化,并在发生时从中吸取教训。