为什么一个成功的组织会抛弃一个优秀的开源 Web 开发平台,而这个平台拥有狂热的开发者社区? 这就是我今天要讲述的故事。
如果 eZ Systems 这个名字对您来说不熟悉,请允许我们自我介绍:eZ 是一家商业开源软件供应商。 我们提供一个内容管理系统 (CMS) 和平台,称为 eZ Publish,它很快将被称为 eZ Platform。 eZ 作为数字业务的基础,在我们开源 CMS 平台上提供增值解决方案。
现在我们已经完成了寒暄,让我们开始进入正题
大约在 2011 年,eZ 决定“重新平台化”。 但这意味着什么呢?
这意味着重写软件的核心。 我们的目标是改变其工作方式,以便改进它。 从本质上讲,我们必须检查引擎盖下的东西,并在考虑改进外观之前加强我们的产品。
首先让我描述一下当时的情况。 在 2011 年春季,eZ Publish 达到了 4.5 版本。 它是从 3.x 代开始的漫长系列中的最后一个版本之一,每个版本都基于相同的内核、相同的架构和最初在 2002 年引入的相同代码库。
在这一点上,eZ Publish 非常稳定。 它因其强大的可扩展性、核心概念和代码质量而受到认可。 与其他基于 PHP 的开源软件相比,它具有更“企业级”的特点。 这些概念非常先进,并且具有广泛的功能范围和企业趋势。 它还为开发人员提供了很好的基础,可以通过自定义和扩展它来构建。
毫无疑问,这些能力是 eZ Publish 成功的关键因素。 代码库即使不完美,也显示出很高的质量,这在 PHP 应用程序中仍然有些不寻常。
它为开发人员提供了大量工作:一个相当先进的扩展系统、一个 Web 框架和一个模板引擎。 eZ 绝对处于基于 PHP 的 Web 应用程序平台和框架的前沿。
然后我们决定重新平台化。
为什么? 因为我们的首要目标之一是重新开发核心业务逻辑——内容存储库及其 API——因为现有版本不是一种可以满足未来可扩展性和云基础设施需求的架构。
主要目标中的另一个——由第一个目标推动——是抛弃我们的 Web 框架(模板引擎、控制器、扩展系统、缓存系统等),并用 Symfony 框架全栈替换它。 采用全栈与像其他一些系统那样部分使用 Symfony 框架有很大不同,但那是另一个故事了。
抛弃一些有效的东西是疯狂的,你不觉得吗? 当时这引起了很多人的质疑,但时间已经过去,我们对我们的决定非常满意。
转移焦点
焦点是首要原因。 每家公司,尤其是以产品为基础的公司,都可以通过专注于其核心业务来获得很多好处。
Web 框架与内容管理系统相当解耦。 它也是一种商品,成为商品并没有什么负面的——非常成功的企业都以商品产品为中心。
当您可以专注于第二个——这才是我们真正的产品时,您没有理由同时开发 Web 框架和 CMS。
eZ Publish 3 和 4 出现在一个没有强大的 Web 框架的时期,尤其是在 PHP 堆栈上,所以我们有历史原因来做我们自己的。 但正如鲍勃·迪伦所说,“时代在变”。 十年后,情况已经不一样了!
因此,就像苹果和微软不制造其计算机核心的芯片一样; 或者像通用汽车和宝马不制造其汽车的轮胎、刹车、排气管或计算机一样; 或者像索尼、佳能、尼康或徕卡不制造其数码相机的传感器一样,我们决定不自己构建 eZ Platform 使用的框架。
社区之间的交叉授粉
eZ 之外还有一个世界。 eZ 社区 只是众多社区之一。 作为一个整体,我们需要(并且将始终需要)与其他社区保持联系——相互交流想法、思想、创新、经验和观点。
用一个浮夸的词来说,这是关于促进不同人群、组织和应用程序之间的思想和项目的交叉授粉。
通过使用全球化和标准化的框架,我们使这成为可能。 像 eZ 这样的公司正在向其他具有不同议程、产品和商业模式的公司学习。 这种转变是为了产生新的想法、新的实验,并加速跳出框框的思考——尤其是跳出我们 eZ 的框框。
为了说明这一点,我最近参加了一个会议——由我们的一些合作伙伴 Netgen 等组织的 eZ 和 PHP 夏令营。 在那里,我了解到我们的一些合作伙伴正在将 eZ Publish 与其他组件(如 Sylius,一个基于 Symfony 的新兴电子商务解决方案)结合使用,以构建涵盖内容管理和电子商务的全球解决方案。
这只是冰山一角。 通过使用最流行的 Web 框架,我们的客户可以选择轻松地与许多最流行的电子商务、PIM 和 CRM 系统集成。
目睹这种协作显然增强了我们的信念。 这在封闭和孤立的世界中是不可能发生的。
促进贡献
转向 Symfony 的第三个原因是促进对 eZ 及其他领域的贡献。
过去,我们收到了许多对 eZ Publish 扩展的贡献——projects.ez.no 有超过 10,000 个扩展可用。 它过去是,现在仍然是一个真正伟大的分享和贡献者群体。 然而,我们对 eZ Publish 本身的贡献较少,几乎没有对框架层本身更深层次部分的贡献,例如我们自己的模板引擎库。
对此的一种解释可能是它不需要相同的技能组合。 开发库的人可能与开发网站和应用程序的人不是同一批人。
另一种可能的解释是,我们的框架以某种方式深深地隐藏在 eZ 中,人们没有动力去那里。 当然,一些社区成员能够做出贡献,最终他们也这样做了,但对于普通的 eZ Publish 开发人员来说,这显然太复杂了。
通过依赖像 Symfony 这样的框架,我们鼓励 eZ 开发人员轻松地在各个层面做出贡献,包括框架。 如果他们愿意,他们可以为 Symfony 本身做出贡献,因为它是一个拥有强大社区的开源项目。 许多贡献者和大量资源使这变得容易。 他们还可以为 Symfony 构建通用事物(“Bundles”),这些事物可以与整个 Symfony 社区共享。
最后,我们受益于与 eZ 无关但有相同需求的人们对核心框架的贡献!
使自定义和扩展更容易
采用 Symfony 全栈最务实的原因是促进人们自定义和扩展 eZ 的方式。
与许多其他内容管理系统不同,eZ 一直被构建为一个平台,并努力满足扩展和自定义的需求。 你永远无法给开发人员足够的灵活性。 即使 eZ Publish 4.x 在这方面做得很好,我们仍然希望抓住任何机会做得更好。
我们对 Symfony 进行了大量研究,最初有点像竞争对手,因为我们也在生产框架和库。 但年复一年,我们看到 Symfony 项目发展成非常有趣的东西,可以为我们的用户带来很多价值。
列举一些
- Twig: Symfony 使用的底层模板引擎。 与我们之前的模板引擎相比,Twig 在可用性和活跃维护者方面有了明显的改进。
- Composer: PHP 的包管理器,也是 Symfony 的好伴侣,将 PHP 应用程序的部署提升到了一个新的水平。 它更面向企业。
- Doctrine: 数据库层为那些扩展 eZ 和访问其他数据集和其他数据库的人提供了很多功能。
- YAML: Symfony 的语义配置带来了一种更加现代、易于理解和高效的方式来处理设置和配置。
- HTTP 缓存: 原生 http “视图”缓存系统(我们对其做出了贡献,因为我们广泛使用它)为开发人员提供了更多机会,可以使用 Varnish 获得极致性能,同时仍然保持其在线内容是最新的。
- 还有很多很多。
这就是为什么 eZ 抛弃了一些完全有能力且自制的东西,而选择了更好的东西。
仍然认为这个举动很疯狂吗?
随着时间的推移,我们一次又一次地从社区中“遗留”的 eZ 开发人员那里听到,他们是旧 eZ 框架的粉丝,他们最终拥抱了这种改变并喜欢它。 这是我们最想听到的,因为它有力地验证了我们的选择。
我上面列出的四个原因的根源都在于同一个想法
软件的全部意义在于人
你对他们越开放,就越好。 没有使用它的人,技术就什么都不是。 通过从自制框架转向标准框架,我们使大量开发人员更容易有机会使用我们的解决方案。 这是一种认识到我们并不孤单的方式,如果我们试图独自完成一切,我们将不会走远。
开源很棒,但如果它只停留在源代码定义上,它就会失去大部分力量。
开源之所以伟大,是因为它将人们联系起来并帮助他们协作,尽管他们从事不同的主题、有不同的目标、不同的愿景和不同的技能。
我们希望依赖一个开源的软件基础设施,这当然是我们在使用 Symfony 之前就做到的,因为我们所有的内部组件都是开源的。 但最重要的是,我们希望依赖一个被我们自己特定用例之外的许多人使用的软件基础设施。 现在已经做到了!
CMS
本文是 Robin Muilwijk 协调的 The Open CMS column 专栏的一部分。 分享您在使用开源内容管理系统 (CMS) 和平台(如 Drupal、Joomla、Plone、WordPress 等)方面的故事。
评论已关闭。