“Dying since 1995”的 PHP 怎么还活着

原创
2021/12/20 00:12
阅读数 1.3W
AI总结

 上篇回顾:Rust 社区求变,PHP 大旗不倒?

"PHP 社区可能是该语言最大的特性。" 

这是 PHP 社区偶像 Cal Evans 的评价。之所以称 Cal Evans 为偶像,是因为他在很长一段时间内都被评为社区影响力第三的成员,其中第一是 PHP 之父,第二是 PHP 社区。

Cal Evans 成为一名程序员之后,坚持使用最长时间的语言就是 PHP,除了 PHP 语言本身易于使用外,Cal Evans 坚持的原因是由于 PHP 最大的资产——社区,“那么多优秀的人都能坐下来一起分享,从核心开发人员到用户组负责人,再到刚刚编写第一句‘Hello World’的新手——PHP 社区太棒了!”

Cal Evans   图源:7PHP

PHP 绝对可以称得上是一个巨大的开源项目。此前曾有人评价,对于一种广泛使用的语言来说,和其他开源项目相比,PHP 的管理方式是独一无二的,甚至可以说是异类。PHP 的治理发展成了相对其规模来说,相当民主的东西。

社区贡献几乎没有守门人

和许多依靠社区起家的开源项目一样,PHP 的治理很大程度上取决于社区的意见,尤其是在项目初期,有开发者评论,那个时候“几乎没有看门人”。

任何想要做出贡献的开发者,基本上只要解释得通该贡献的技术功能,其代码便可以很快就出现在代码库中。PHP 社区的长期成员和积极贡献者 John Coggeshall 在讨论 PHP 社区治理时回忆:“2000 年代初期,如果您知道如何去做并且让其看起来合理,那么大多数情况下,您的代码都会被发布到新版本中。”

社区低门槛或许为 PHP 壮大之后的埋下隐患,但是在诞生初期,这是 PHP 之父 Rasmus Lerdorf 开放给所有人的权利,同时也是 PHP 快速壮大的原因。

Rasmus Lerdorf

1994 年,彼时名不见经传的程序员 Rasmus Lerdorf 为了维护个人网页,使用 C 语言开发了一组简单的通用网关接口(CGI)二进制文件,用于追踪对 Rasmus Lerdorf 的在线简历访问,他将这套脚本命名为 “Personal Home Page Tools” ,简称“PHP 工具”。

次年 6 月,Rasmus 发布了 PHP 工具的源代码,同时允许、鼓励用户为代码中的错误提供修复,并对整体进行改进。

PHP 另外两位奠基人 Andi Gutmans 和 Zeev Suraski 便是因为想要改善当时的 PHP,而和 Rasmus 相识,三人一起创办的 Zend 公司后来也成为 PHP 发展路上不可或缺的核心力量。

Rasmus 发布“PHP 工具”源码之后很快做了可扩展 ,并在 1995 年 9 月使用 FI(“Forms Interpreter”的缩写)发布了自己的成果,涵盖今天我们所知的 PHP 一些基本功能,如类似 Perl 的变量、表单变量的自动解释和 HTML 嵌入语法等。1996 年 4 月,Rasmus 结合此前的版本名,发布第二代 PHP/FI,开始实现 PHP 从一套工具到编程语言的真正演变。

1997 年 11 月, PHP/FI 2.0 发布,当时还在以色列海法理工学院读书的 Andi Gutmans 和 Zeev Suraski,需要使用 PHP/FI 2.0 开发一个电子商务应用程度的后端。他们发现 PHP/FI 2.0 效率低下且缺乏功能,开始完全重写底层解释器,他们还在网上联系到 Rasmus,讨论对 PHP 的重新开发。

至此,PHP 的三位元老聚齐。

到了 1999 年,融合了 Zeev 和 Andi 名字的 Zend 公司成立。Zend 自成立以来一直是 PHP 创新和开发的源泉,它做出了核心改进以及用户空间包和框架以及开发环境工具等等贡献。

投资 PHP 社区就是投资自己

翻一翻 PHP 社区中重要人物的言论,许多人在给建议的时候,都提到非常重要的一点——多去各种会议、社区转一转。曾有人采访了众多 PHP 贡献者,得出一个结论:投资 PHP 社区就是投资自己。

Cal Evans 甚至还提出一条非常“实际”的建议:如果你坚持参与一个会议两年,第三年你将可以提交演讲并成为演讲者。

PHP 在全球范围内的会议和社区数量都很多。最早一次全球性的 PHP 会议在日本举行,此后,国际性 PHP 会议召开的惯例延续。此外,全球多地都会举办区域性的 PHP 会议,许多 PHP 贡献者的成长之路都是从这些会议上开始的。

在 PHP 社区,开发者会被鼓励做自己想做的事情。Cal Evans 曾提到,在他所在的 PHP 社区中,他会公开拒绝任何寻求权利的领导者,无论追求权利的心态以何种方式表现出来。在他看来,没有一个领导者有足够的权利告诉他,需要拒绝某些人的领导,“我们大多数人都是成年人,可以自己做决定。”

同时,他奉劝别人,试图作出决定时,不要指望领导、个人,“任何人试图告诉你该如何看待某个社区成员,都要非常小心。自己寻找,自己决定……PHP 社区由您决定,让它成为适合您的社区。

PHP 的学习曲线和社区的气质一脉相承。尽管 PHP 被认为“过于简单化”并且无法与 Java 等成熟的编程语言相提并论。但是,PHP 作为一种语言非常灵活,易于学习并且可以用它塑造任何自己想要的东西。

一度是 PHP 社区影响力排名第四的开发者 Michelangelo van Dam 便是一个从 Java 和 Perl 向 PHP 投诚的开发人员。在接触到 PHP 的工作,了解到其强大功能之后,他参与使用 PHP 运行速度更快、更稳定且可扩展的应用程序,并取代了大多数现有的 Java 后端,“在这个千年的最初几年,我对 PHP 有了热情,并意识到没有什么挑战是 PHP 无法解决的。”

PHP 的灵活也有弊端,Michelangelo van Dam 指出,当人们随心所欲,没有所谓“单一方式”做事时,每个人都可以拿起这门语言并声称他们是 PHP 专业人士。

John Coggeshall 也提出过类似看法,认为民主不可避免地带来一定混乱,“PHP 治理仍然是一项混乱的努力,关于语言应该如何发展,各种思想阵营之间不断存在冲突。”

但整体而言,PHP 社区的开发者们非常拥戴自己的语言,比起“PHP是世界上最好的语言”,另外一句流传的评价或许更贴切:“PHP 社区是最慷慨的社区,人们分享知识、互相帮助、热情和自由地推广 PHP 事业。”

PHP 社区会议列表   图源:php.net

第 26 年,谈谈现实 

尽管 PHP 的社区大体上是个能让开发者感到舒适、有所成长的圈子,但仅靠爱发电绝不是个明智的选择。

PHP 社区成员开始寻求改变的导火索是 Nikita Popov 的离开。2011 年,Nikita 还在上高中,开始接触研究 PHP,在 PHP 5.5 中作出自己的第一个贡献。

Nikita Popov   图源:JetBrains

此后 10 年,Nikita 为 PHP 实现了很多功能。2016 年,Nikita 进入 JetBrains 工作,期间为 PHP 7.4、8.0、8.1 三个主要版本做过许多贡献。但是,Nikita 同时也是 Rust 和 LLVM 的贡献者。12 月 1 日,Nikita 从 JetBrains 离职,并且大大减少了花在 PHP 上的时间。

作为 Nikita 的老东家 PHP 重要贡献方,JetBrains 对 Nikita 的离开非常难过,“失去 PHP 的主要贡献者之一对社区是一个打击……Nikita 的离开将支持 78% 的网络的 PHP 语言置于一个脆弱的位置上,更不用说这对其他维护者来说是压倒性的负担。不幸的是,在 OSS 的世界中,这常常导致人们筋疲力尽。 ”

另一位 PHP 贡献者 Joe Watkins 评价,他认为“PHP 源代码的某些部分只有少数人理解”,并且该语言的未来取决于两个人,即 Dmitry Stogov 和 Nikita Popov。这在大多数开源社区都通用——少数的几个开发者事实上影响了整个项目的走向。所以,每一个开源社区都希望尽可能扩大社区规模,并尽可能让社区稳定。

痛定思痛,JetBrains 决定牵头为 PHP 打造一个牢固的基础。极具 Geek 气质的 JetBrains 公司也是 PHP 重要贡献方,为许多专注 PHP 语言和生态的工程师提供了职位。JetBrains 还计划每年为 PHP 基金会捐款 100,000 美元。

2021 年 11 月 22 日,PHP 基金会成立,初创成员包括 Zend、Laravel、Acquia、Automattic、Craft CMS、Private Packagist、Tideways、PrestaShop、Symfony 公司。PHP 基金会的主要目标之一是为 PHP 编程语言的持续开发提供资金和支持。 

“我们预计 PHP 的开发方式不会立即发生变化,”Benmoshe 说。“随着时间的推移,基金会管理部门将在 PHP 社区的帮助下正式确定未来的工作流程。然而,此时的首要任务是雇用和支持更多的核心开发人员。”

PHP 基金会通过 Open Collective 构建,预计每年筹集约 300000 美元,筹集和管理资金透明。自成立以来,已经有 1088 人捐赠了资金。

拥有 600 多万开发者的 PHP 正在用力回击那句非官方口号:“Dying since 1995”。

展开阅读全文
加载中
点击加入讨论🔥(13) 发布并加入讨论🔥
13 评论
6 收藏
4
分享
AI总结
返回顶部
顶部