按此:与 Alain Schlesser 合作的 WP-CLI 的向后兼容性难题

已发表: 2022-05-17

欢迎来到来自 WMR 的 WordPress 社区播客 Press This。 在这里,主持人 David Vogelpohl 与来自社区的客人坐下来讨论 WordPress 开发人员面临的最大问题。 以下是原录音的抄录。

由 RedCircle 提供支持

David Vogelpohl:大家好,欢迎来到 WMR 上的 WordPress 社区播客 Press This。 这是您的主持人,David Vogelpohl,我通过我在 WP Engine 的角色来支持 WordPress 社区,我喜欢将最好的社区带给您,每周在新闻上听到这个提醒,您可以在 Twitter @wpdavidv 上找到我,或者您可以在 iTunes、iHeartRadio、Spotify 上订阅按此,或在 wmr.fm 下载最新剧集。 在这一集中,我们将讨论与 WP CLI 的向后兼容的兼容性连接器。 加入我们这次谈话的人是对 WP CLI 相当了解的人。 我们是 XMPP 的 WP CLI 的贡献者 我想欢迎 Alain Schlesser。 阿兰,欢迎按此。

阿兰·施莱瑟:大卫。 你好。 很高兴来到这里。

DV:很高兴有你。 这至少是你第二次参加这个节目了。 多年来,我们一直在向您询问有关 WP CLI 的问题,我真的很高兴有您参与。 对于那些听。 WP CLI 是 WordPress 生态系统的重要组成部分,特别是围绕自动化和工作流程以及 WordPress 构建的其他方面,我们今天要介绍的是对去年 BPCL AI 所取得成就的想法。 什么向后兼容性变化摆在面前。 您知道向后兼容性是 WordPress 优势的重要组成部分,但也是软件开发人员面临的挑战,当然还有如何解决这些挑战,以及关于您最终可以为 WP CLI 做出贡献的方式的分享。 所以我真的很期待面试。 所以接下来我会问你同样的问题,我问每一位客人,我以前问过你这个问题,但如果可以的话,我希望你再说一遍。 你能告诉我你的 WordPress 起源故事吗? 您第一次使用 WordPress 是什么时候?

AS:嗯,是的,所以我的起源故事就像大多数 WordPress 故事一样,都是从一个较小的弯路开始的。 我在卢森堡担任政府代理人。 在某一时刻,我真的厌倦了一切的政治。 我想在我的生活中做点别的事情并尝试不同的职业。 我决定做自由职业者开发,因为我之前已经做过开发,但从未以自由职业者的身份做过。 当到了真正决定关注什么的时候,我只是看看那里有什么以及曾经拥有最大市场份额的东西。 众所周知,这恰好是 WordPress。 我刚开始使用 WordPress 开发,因为我认为作为一个从 0 开始的新自由职业者,这是最容易获得客户的。

DV:我选择 WordPress 作为首选平台的原因与我记得我在 Drupal 和 WordPress 之间的一个伟大的代理机构相同的原因,我认为当时 Drupal 是正确的选择,但这并不是人们所说的哦,但这是 2010 年,你知道,就在自定义帖子类型和元字段的风口浪尖。 我只是想知道你是什么时候做出这个决定的

AS:嗯,那是 2014 年的一些 2014 年,我认为 WordPress 大约是 332 版或类似的版本。 我不敢说实话。

DV:所以对于作为自由开发者的你来说,自定义帖子网站的好处已经被释放了。 所以你有点走进这个生态系统并看到了这些能力。 不过,WP CLI 还需要两年时间。 所以我猜它并没有完全满足您作为开发人员所需的一切,但很高兴看到您现在管理该项目。 现在,了解您确实使用 XMPP。 我们会告诉我 XMPP 做什么以及你在那里做什么。

AS :所以 X Delta P 是一家专注于高性能企业级 WordPress 项目的机构。 主要关注的是性能,但不仅仅是网站加载的速度,还有它如何满足您的业务。 我和 XWP 一起工作了大约两年半,在那段时间里,我一直在研究 amfa WordPress 插件,然后一起研究 WordPress 插件的页面体验。

DV:它们听起来像 MIDI 项目。 我对它们非常熟悉,我对 WordPress 不熟悉,我还没有玩过页面体验,我知道你知道 XMPP,我们实际上已经有几个来自 XMPP 的人在按此。 他们做了一些非常酷的项目。 听起来你正在研究一些最酷的东西。 这太棒了。 不过,相对于我们的节目主题,今天,WP CLI 来自高层,假设会有一些听众不知道 WP CLI 是什么,我想知道你是否可以把它框起来,这样他们就可以理解 WP CLI 是什么是。

AS:是的,当然。 因此,WordPress 有它的管理后端,您可以在其中对站点进行所有维护,您可以在其中对配置选项进行更改。 WP CLI 是用于控制 WordPress 网站的不同界面。 它是您可以从命令行使用的界面。 因此,您以文本形式键入命令来控制您的站点。 它允许您执行管理后端所做的一切以及更多操作。 并且通过使用恰好是比管理后端更具表现力的界面的命令行,您可以解决许多非常特定于您的用例的问题,其中管理后台中没有预先制作的用户界面元素结尾。 您可以在任何地方混合和匹配 WP CLI 命令来解决这些问题。 然后更进一步,您可以使用 WP CLI 执行任何操作,您也可以将其放入脚本中,最终,您可以自动化所有管理流程,甚至可以远程执行它们。 因此,转到基于文本的界面有很多功能,而 WP CLI 允许您使用 WordPress 来做到这一点。

DV:哇,那真的很优雅。 我认为您在营销方面还有另一个职业。 这是一种非常好的构建 VCI 的方式,尽管它非常好,但记得描述一下。 好的,所以在我看来,我有一个关于 WordPress 历史上关键时刻时间表的小备忘单,当我听到人们的起源故事时,我会使用它来询问他们何时进入以及发生了什么时间。 WP CLI 实际上是我在这里提到的 WordPress 历史上的关键时刻之一。 早在 2016 年的时间线视图中,我就维护它,所以我认为它非常重要。 而且我知道你知道有这种推动发​​布越来越多的特性和功能,但我只是好奇的亲戚想说最近一批与特性或重构有关的版本,你在最近的版本中最兴奋的是什么?

AS:所以一个非常令人兴奋的功能是添加全局上下文,因为自从 YouTube 建立以来,我们一直在讨论该工具应该执行的上下文,如果它应该作为前端进程或管理进程或其他东西执行介于两者之间。 所有的方法总是伴随着自己的一系列问题。 所以从来没有真正干净的解决方案。 CLI 默认执行的方式是这种奇怪的混合,既不是管理进程也不是前端进程。 由于历史原因,但这意味着某些检查当前请求是否为管理员请求的进程,例如,它们将自动失败。 当您运行更新时,这种情况在高级插件和主题中最为臭名昭著。 因此,通常,您会看到它们在管理后端工作的那些更新。 但是使用 WP CLI,管理员不是可见的更新,或者它们不能按预期工作。 那是因为为每个插件管理这些更新的自定义逻辑,他们检查管理进程当然不会减慢前端,并自动执行 WP CLI。 所以现在有了这个新的上下文标志,我们可以选择要运行的上下文,这允许您将上下文切换到管理上下文。 例如,当您进行插件更新时,突然间所有高级集成都按预期工作。 这是非常令人兴奋的。 抱歉,这不是很令人兴奋的新功能。 它是与 cloudways 合作构建的,因为我们目前正在一个默认情况下不启用的阶段进行测试。 所以你需要手动这个自动配置将在下一次迭代中成为默认值。

DV:非常好,非常好。 我明白你为什么会为此感到兴奋。 而且我认为你的想法真的很聪明,好吧,会有前端还是管理员,但实际上,通过给开发人员选择让你有能力解决,或者至少是开发人员解决一次用于多个用例。 我明白你为什么会为此感到兴奋。 特别是考虑那个英雄用例并且无法为高级插件呈现更新。 这是一个非常常见的用例。 并想象许多其他人从中级联。 不过,我确实有一些问题,你知道,有点像闯入路线图并考虑向后兼容性考虑。 但我们要开始我们的第一次休息。 我们马上回来。 是时候插播广告了。 请继续关注更多紧迫的问题。 欢迎大家回来按我给 Omar 的 WordPress 社区播客,您的主持人 David Vogel。 保罗。 我正在采访一个关于 WP CLI 和一些向后兼容性连接器的发布出租人。 就在休息之前,您正在分享您最喜欢的功能,或者最近的 WP CLI,它是一个全局上下文,用于切换标志,以确定它是前端还是管理进程。 我认为这真的很聪明。 在我进入未来路线图和向后兼容性之前,您想添加的任何内容。

AS:是的,我想补充一点,我真的很期待,因为这可能是 WP CLI 收到的最常见的支持请求之一。 为什么更新在 WP CLI 中运行时在管理存储桶中运行?

DV:是的,那个高级插件 repo 过程的东西抬头了,我在 WordPress 中找到了很多不同的地方,但是是的,我可以看到这是人们喜欢的核心功能,为什么它不这样做? 这对 WordPress 来说太基础了。 太棒了。 当您考虑 WP CLI 的未来时,我想立即引入向后兼容性考虑,但我们喜欢您对未来感到兴奋的前两三个功能。

AS:所以我已经计划了很长时间的计划是彻底检修 WP CLI 的脚手架。 脚手架命令是一个使用模板让您生成代码的命令,例如生成空主题生成空插件。 我想完成超级碗,它不再是一个入门工具,而是一个持续的开发帮助,就像在 Laravel 空间中使用自闭症命令一样,在 WordPress 开发中使用的每个概念都有自己的命令生成它的规范版本。 这不仅会大大加快开发速度,还将成为一个巨大的学习工具,并有助于塑造 WordPress 空间的整体质量。

DV:那个听起来确实不错,我也可以开始想象向后兼容性可能会在哪里产生摩擦,因为还有其他类似的路线图功能吗? 那是一个很好的任何其他您要添加吗?

AS:目前还有一项工作正在重写 Profile 命令,该命令仍然是第三方命令。 它还没有捆绑。 但是一旦重写完成,我还想捆绑该命令,以便每个人都可以轻松地进行分析。 网站请求并查看我需要执行哪些操作,查看主要性能瓶颈被卡住的过滤器。

DV:那是另一个很好的。 好的,所以你有两个多汁的路线图项目。 我敢肯定,不仅仅是你在考虑未来,而其他贡献者也在考虑未来。 但显然,向后兼容性在 WordPress 中是一件大事。 那么,当您考虑实现该路线图的能力时,您会考虑哪些因素?

AS:是的,WP CLI 就是它的工作方式,它的内部工作与 WordPress 核心的向后兼容性策略直接相关。 现在 WordPress Core 仍然支持至少 PHP 5.6 WP CLI 也是如此。 WP CLI 有一项政策,即无论 WordPress 的最低要求是多少,只要情况发生变化。 WP CLI 将至少推迟一年的更改,让每个人都有机会使用 WP CLI 从旧站点迁移。 到新站点。 而且由于 WP CLI 通常是用于从旧站点迁移的工具,因此它仍然需要在导出人员上工作。 所以 WP CLI 永远无法引领支持较新版本的 PHP 和类似的方法。 因为它将无法实现其主要目的,即访问旧站点并允许您进行迁移。 所以在这方面,在 WP CLI 中以一种保持代码新鲜和可维护的方式进行开发真的很难,但仍然坚持使用 WordPress 核心的这个非常低的 PHP 最低要求,这造成了越来越多的麻烦

DV:他们什么时候会或者你知道core什么时候会提高5.6的最低版本号。 下一个你有 AB 是因为 5.6 已经过去了很多变化,而且很难保持那么远你知道什么时候更新的版本会是最低限度的吗?

AS:老实说,我不能说我在 subhappy 项目上投入了很多工作,我有很多机制可以使 WordPress 代码在技术上可行,以便在这一点上快速转向更新版本的 PHP,所有技术先决条件都是那里。 这只是做出决定的问题。 我不能说什么时候会发生。 因为它已经计划了很长一段时间,但到目前为止还没有发生任何事情。

DV:所以从那一刻起,尽管你有一年的时间,WP CLI 可以提高其最低支持的 PHP 版本。 当您考虑交付路线图的能力时,是否还有软件堆栈或语言的其他部分或任何其他部分,或者主要是 PHP

AS:是在向后兼容性方面吗? 主要是php。 WP CLI 是用 PHP 和 gherkin 以及 shell 脚本构建的。 所以 gherkin 是一种测试语言,它并不是一个真正的问题,而且它们的 shell 脚本已经 20 年没有改变了。 我认为短期内不会有问题。

DV:很明显,保持软件与非常旧版本的 PHP 兼容的影响是什么,但帮助我理解一下,它有什么挑战性? 由于坚持支持 5.6,您必须做出哪些权衡取舍

AS:单独支持五对六并不是什么大不了的事。 它只是语言的一个版本,而且是一种更丑陋的语言。 那个时候,不过还是很实用的。 问题是您是否还希望能够在最新版本的 PHP 上运行。 所以你需要覆盖整个范围。 只要我们不提高最低版本,我们只是添加越来越多需要支持的 PHP 版本,但现在的节奏是每年都有一个新的主要版本出现,所以他们打电话它是次要版本,但就功能而言,它们是主要版本,最近几个版本在语言上发生了更大、更彻底的变化。 现在真的很难以一种同时在五个、六个和八个两个上同时工作的方式构建更底层、更底层的结构,而且随着时间的推移只会变得更糟。 更重要的是,您需要在 PHP 中工作的工具,您需要运行单元测试,您需要运行功能测试等等。 所有这些工具,它都坚持使用 PHP 单元的 PHP 节奏。 例如,现在很难以这样一种方式编写测试,即测试本身可以跨 PHP 单元的所有版本工作。 您需要使用来涵盖所有这些 PHP 版本。

DV:好的,所以这是所有这些多个群组的重量,如果你愿意的话,PHP 类型单元 TA,然后我猜你也可能在为你知道如何将不同版本中的函数用作新函数而苦苦挣扎变得可用并被弃用。 听起来所有额外工作的集合都是摩擦,会降低你提供新功能的能力,这听起来公平吗?

AS:是的,嗯,PHP 也越来越严格了。 因此,当您需要映射多个 PHP 版本之前,您可以保持代码模糊,这样它就不会遇到一个版本或另一个版本的任何问题。 现在这变得越来越难了,因为惠普经常发出大量的通知、警告和弃用问题。 对于现在最细微的细节,有时这意味着您创建一个需要多次运行 build 的函数,并有一种机制来提取该函数的正确版本,具体取决于您运行的 PHP 版本,哪个一切的维护工作呈指数级增长。

DV:是的,这完全有道理。 好吧,好吧,我想开始探索一下,你知道,你如何打扮它,甚至你对 WordPress 总体上如何做得更好的想法,你知道,打扮向后兼容性,但我们我们要休息一下,我们会马上回来的。 是时候插播广告了。 请继续关注更多紧迫的问题。 欢迎大家回来在 W EMR 上按此 WordPress 社区播客。 我们正在与发射出租人讨论 WP CLI 的后向可居住性难题我应该为这个节目选择一个不那么绕口令的标题。 但我们在这里。 很长,是一本好书。 是的,喜欢它,我必须在它结束之前快速说三遍。 但是好的,所以在休息之前,当您开始处理多个版本的 PHP 时,您正在谈论这种指数级维护问题,我不知道这是否会让您感觉更好,但就像 100% 的 WP 引擎一样客户在现代版本的 PHP 中进行了修补,我们强制进行了这些更新,但显然不是每个人都这样做。 对? 不是每个主机都不是每个托管网站的人都做这些事情,所以这只会产生一些过时的 oshin 预留,软 PHP 版本甚至 WordPress 肯定是插件。 因此,您知道 WordPress 的这种性质,这种向后兼容的想法是 WordPress 的一部分,如果我自己设置它,它的受欢迎程度确实很重要。 WP CLI 必须滞后,因为它正在为需要升级的人工作。 所以这是一件好事,对吧? 这是这种动态的一个很好的部分。 但我只是想知道您对 WP CLI 或 WordPress 作为一个整体如何改进保留这些好的部分并可能避免更多的坏部分(例如向后兼容性的指数维护要求)有何想法。 你对那份大令状有什么看法?

AS:是的,我认为现在我们正处于 WordPress 通过坚持它目前关于 PHP 的非常极端的向后兼容性方法而对其用户群造成伤害的地步,因为所有迹象似乎都指向这一事实我们将慢慢进入无法让 WordPress 继续在最新版本的 PHP 上运行的阶段,这是一个真正的问题。 而且我们需要大量时间来处理兼容性问题,因为现在 PHP 发生了更多的变化。 解决这个问题的唯一方法是有一个持续的方法来适应 PHP 周期,它可能会落后于 PHP,但它不可能比 PHP 具有更低的速度,这只会使问题变得越来越糟。 所以它需要与 PHP 的速度相匹配,即使它并没有落后两年。 然后我们需要确保我们能够保持工具、测试、工具等的所有内容都是最新的,以便我们始终能够支持最新版本的 PHP,因为现在看起来, PHP 9 可能是第一个版本,因为现在看来,如果我们不改变方法,WordPress 将无法适应。 希望,好吧,是的。

DV:我想说的是,你在 WP CLI 上处理的这个指数问题听起来有点复杂,如果你愿意的话,在整个 WordPress 中,如果你愿意的话,它有点抬头,就像你提到的挑战一样对于 PHP 九。 因此,就这样而言,这种推动 WordPress 必须更好地维护的力量与这种速度相匹配,因此它们不会落后于服务太远,也不会落后于 PHP 版本太远。 在这里的最后几分钟,我知道向后兼容性存在很多挑战。 我知道您一直在提供出色的功能,并且您希望提供更多功能。 就像我看到 Gutenberg 的大量贡献者一样,我只是觉得我不会做任何服务,除非我们在这个为贡献者的播客中对 WP CLI 有点爱。 人们如何为 WP CLI 做出贡献,以帮助保持 WordPress 这个非常重要的部分的活力和驱动力?

AS:首先,我们有主要的 wordpress.org Slack 团队。 我们有一个 CLI 频道。 因此,您可以跳上该频道并打个招呼并提出问题。 如果你想开始,总会有人很乐意帮助你加入 WP CLI 贡献。 还有网站 make wordpress.org/cli,它是所有文档的入口点,并链接到一个好的第一个问题等等。 然后理想情况下,您将加入现在再次发生的网络摄像头贡献者日之一。 我真的很高兴。 因为在这些贡献者的日子里,人们实际上可以帮助您设置自己的机器以进行适当的本地开发。 这将阻止这件作品的直播,因为有时入职是人们必须安装的最困难的障碍。

DV:是的,我可以证明这一点。 一些已经做出贡献的朋友以及他们克服了什么。 我知道那里有很多人几乎没有课程和指导,当然让 WordPress 在文档方面也有这方面的东西,但这是一个非常好的观点和贡献者日在这方面提供帮助。 我也很喜欢你呼唤加入 Slack 频道的方式。 这让我想起了 Mike Liddell 如何参与 WordPress 回答我在 Mac Mullenweg 博客文章上的评论,但在社交环境中做出贡献的想法会带来更大的成就。 嗯,这太酷了。 感谢您今天加入我们。

AS:谢谢你邀请我。

DV:很高兴有你在这里。 如果您想了解更多关于 Alon 的做法。 请访问 make wordpress.org 并查找 WP CLI 站点或在 wordpress.org slack 和 WP CLI 频道中找到他。 感谢大家收听 WMR 上的 WordPress 社区播客。 同样,这是您的主持人 David Vogelpohl。 我通过我在 WP Engine 的角色来支持 WordPress 社区。 我喜欢每周在 Press This 上为您带来最好的社区。