在过去的几个月里,维护人员和开发人员组成的平台团队一直在讨论未来的发展方向。我们今年的目标之一是引入命名空间。这是一项非常庞大的工作,随着工作的进展,我们意识到向后兼容性将是一场持续的斗争。其负面影响之一是,如果我们在该版本中引入命名空间,Joomla CMS 将无法在一段时间内使用计划中的平台 13.1 版本。
经过内部和社区中其他开发人员的大量讨论,为了解决这个问题,并利用一些新的机会,我们决定对平台进行一些更改。
将名称更改为 Joomla 框架
由于命名空间更改的影响非常重大,再加上下面概述的其他更改,我们决定将 Joomla 平台的名称改回 Joomla 框架(这是 2011 年 Joomla 1.6 发布之前的原始名称)。
更改名称非常重要,因为它划清了 Joomla CMS 运行的引擎(即 Joomla 平台)与更广泛的 PHP 社区可以使用的一套库之间的界限,这些库可以用于在 Joomla 代码之上构建任何类型的应用程序。
使用 Composer 发布
目前,获取 Joomla CMS 最简单的方法是访问下载页面并获取最新版本。但是,将 Joomla 平台集成到软件项目中并不容易。但是,PHP 社区有一些分发库代码的方法。PEAR 已经存在很多年了,但最近一个名为 Composer 的系统变得可用并被广泛采用。
新的 Joomla 框架现在可以通过 Composer 安装,您可以在 Packagist.org 上找到软件包列表。
独立软件包
除了使 Joomla 框架可在 Composer 上使用所需的更改外,我们还采取措施尽可能使每个软件包独立,并具有最少的依赖项。这样做将允许您
- 仅安装自定义应用程序或甚至 Joomla CMS 扩展所需的代码;以及
- 仅升级需要升级的代码
新的邮件列表
我们已关闭并存档了当前的 Joomla 平台邮件列表,并重新开放了 2009 年启动的旧 Joomla 框架邮件列表。
新的源代码存储库
有一个新的 Joomla 框架 存储库。
当前的 Joomla 平台代码存储库 将被标记为 13.1 版本(很快),此代码将被冻结作为 Joomla 平台的最后一个官方版本。该存储库将在可预见的未来保持公开,但您将无法发布问题,任何拉取请求都将被关闭。
软件包的语义版本控制
旧的 Joomla 平台使用基于当前日历年的顺序编号系统。最初,这是一个易于遵循的系统,但随着时间的推移,它被证明存在一些缺陷。新的 Joomla 框架将遵循语义版本控制实践,就像 Joomla CMS 当前所做的那样。这将使代码中何时进行了重大更改(由于主版本号的增加)更加清晰。
总而言之,所有新创建的 Joomla 框架软件包版本将同步,并且我们正在重置版本编号。
Joomla 框架套件的 1.0 版将是首次发布版本,在 GPL 下发布。开发人员将能够使用 Composer 将框架包含在他们的软件项目中。
如果一切按计划进行,Joomla 框架套件的 2.0 版将在 LGPL 下发布,并准备供更广泛的 PHP 社区使用。目前,我们无法估计何时发布,因为它取决于我们与法律团队就许可证变更进行的讨论。
新的文档
我们正在新的 Joomla 框架存储库本身中提供基于 phpDocumentor2 构建的最新 API 文档。
每次向 master 推送时,API 文档都会自动刷新。
此外,旧的平台手册已被分解成 README 文件,现在位于每个单独软件包的根目录中。这将特定的软件包信息与软件包一起放置,使其更容易查找。
新的测试策略
单元测试现在位于每个软件包中的 /Tests/ 文件夹中,并且它们能够独立运行。与文档一起,这将与每个软件包相关的所有内容集中在一个地方。
将平台合并回 CMS
Joomla CMS 不会立即包含新的 Joomla 框架代码 - 这只会导致 Joomla 3.1 出现太多问题和混淆。但是,CMS 将从冻结的 Joomla 平台存储库中复制平台代码,并在可能的情况下包含它。Joomla 错误小组将继续维护平台代码的角色,它已经这样做,但在一个地方而不是两个地方(从而减少了双重处理)。
它还将在下一个开发周期(Joomla 3.2)中进行以下更改
- libraries/cms 文件夹将包含特定于 CMS 的类。这将使“CMS 属性”变得清晰。
- libraries/joomla 文件夹将包含来自外部提供商的库代码,以及 CMS 实际运行所需的 Joomla 项目维护的平台代码。
- libraries/legacy 文件夹将包含计划在 CMS 的下一个主要版本中删除的所有类。这将包括由于批准新的自动加载约定而创建的所有类代理。它还清楚地表明开发人员在维护扩展时应该避开哪些代码。
新的 Joomla 框架的未来
以下是我们对新 Joomla 框架的愿景
- 使框架在 Composer 上可用会激发更广泛的 PHP 社区的兴趣,并鼓励那些通常不会考虑使用 Joomla 代码的人尝试使用它。
- 将框架分解成独立的软件包将允许每个软件包比所有软件包都绑定到单个整体版本时更容易发展。
- 删除所有弃用的代码和最后剩余的“CMS 代码”使我们能够专注于更好地做事,而不是不断地与“这是否会破坏当前 CMS”的问题作斗争。
- 使用 Composer 和更现代的开发实践将吸引新的开发人员加入 Joomla 项目,包括 CMS。
Joomla CMS 的未来
即使新的框架不会立即集成到 Joomla CMS 中,它也为 CMS 带来了许多短期、中期和长期的益处。
将框架分解成软件包将允许 CMS 在将来仅升级它当时需要的框架部分。目前,CMS 需要获取平台的单个版本,并且您无法在 CMS 的先前版本中升级它。例如,如果 Joomla 2.5 和 Joomla 3.0 能够运行在同一版本的平台上,那不是很好吗?现在无法做到这一点,但如果我们计划得当,将来使用新的安排就可以做到。
当 CMS 准备好对其架构进行技术刷新时,我们现在在框架上进行的所有实验和工作都将准备好并经过测试,以便 CMS 采用。
未来一段时间,事情会有些不同,但这并不意味着 Framework 和 CMS 不能也不会为了共同目标而协作。例如,Chris Davenport 正在努力为 Joomla CMS 开发一个新的 Web 服务层。该层可以构建在新的 Joomla Framework 之上,并允许 CMS 团队以及扩展开发者更容易地适应新的范例。像新的 Joomla 问题跟踪器这样的项目也可以从今天开始使用 Joomla Framework,其他任何人在 Joomla 代码之上开发其他类型的 Web 或命令行应用程序也可以使用它。
最终,Joomla 项目的整体使命是“提供一个灵活的数字出版和协作平台”,而这些对 Framework 的更改是朝着实现这一目标迈出的重要一步。