开源已成为这个社会的根基。从上世纪 80 年代 Richard Stallman 发起的自由软件运动,到 Linux、GitHub 以及互联网的崛起,开源的发展也已经经历了不止一代人。
近日,分析机构 RedMonk 发表了一篇文章,指出 Postgre 核心开发社区正在逐渐老龄化,其平均年龄可能在 50 岁左右,主力开发已经 68 岁。这些老牌开源社区,希望唤起年轻人对开源的重视。InfoQ 也就“项目维护者老化与项目可持续性之间的关系”、“开源项目如何招募更多年轻开源爱好者”等问题采访了开源社区的资深专家,希望给大家带来启示。
Postgres 开源社区的“老龄化”问题
PostgreSQL 是一个功能强大的开源关系型数据库系统,其起源可以追溯到 1986 年,作为加州大学伯克利分校 Postgres 项目的一部分,经过几十年的发展,在当前数据库领域发挥着举足轻重的作用。
最近,Postgres 提交者兼 EnterpriseDB 首席数据库科学家 Robert Haas 统计了该项目的贡献者情况,发现了该社区面临的一个比较严重的问题,即核心开发社区正在逐渐老龄化,其平均年龄可能在 50 岁左右。比如现年 68 岁 Tom Lane 仍然是 Postgres 项目的支柱。
Hacker News 上也有网友指出,Postgres 已经好几年没有新的 committer 了。因此,Postgres 开源项目的可持续性的确令人担忧:“我们假设 Postgres 在 20 年内仍然强劲,那么 20 年后谁会从事这项工作?”
“Postgres 引擎的不断发展非常重要。”致力于 Serverless Postgres 的 Neon 公司首席执行官 Nikita Shamgunov 指出,“Postgres committer 人群年龄都在 50、60 岁左右,也许还有一些 30 多岁的。我们希望能够雇用更多初级人员,培训他们成为 committer 并希望最终成为维护者。成为 committer 需要付出很大的努力,但成为 contributor 则没那么难——你只需要编写好的代码即可。”但作为一家商业公司,他又对花钱雇佣初级人员这事儿有点犹豫,“目前尚不清楚这种花钱的方式是不是最好的。”
分析机构 RedMonk 认为,队列老化不是 Postgres 独有的问题,但 Postgres “在任何意义上”都没有做到努力去吸引新用户。“让年轻开发人员进入大型机领域 IBM 在这方面就做得非常出色,例如他们发起的大学职业教育项目。”
无独有偶,Linux 缔造者 Linus Torvalds 也曾在几年前表述过类似的问题。
2020 年,Linus 在一次会议连线中谈到了为开源操作系统寻找未来维护者时的问题:Linux 社区项目管理者是 Torvalds 这批五零后、六零后,但社区终归要考虑代际变更的问题,在目前这一代维护者逐渐老去之后,Linux 项目该怎么发展?
Linus Torvalds 当时表示,跟那些 30 岁上下的年轻人相比,他们确实是越来越老了。而且“事实证明,维护者真的不好找。我们的维护者确实不够。”而 Linux 社区的其他核心贡献者也非常担心自己变老精力变差,但年轻一代没有像当初贡献者们那样充满热情,导致“人才匮乏已经成为 Linux 实现进一步增长的最大障碍。”
如何改变“老龄化”现状?
从某种程度上来说, Postgres 和 Linux 都希望新生代程序员能够加入到项目维护中,来改变社区“老龄化”问题。
那么项目维护者老化会影响项目可持续性吗?如果年轻人较少会有什么影响?开源项目如何招募更多年轻开源爱好者?我们采访了开源社区的一些资深专家。
只要项目维护者精力还足够,年龄变大其实也不是很大的问题。国外有不少 50、60 岁还活跃在一起的程序员,战斗力其实也不差。如果确实已经年龄很大了,对项目的长期发展肯定还是有影响的,“需要尽早做打算”,Apache 软件基金会 Member、Apache HBase PMC 主席张铎指出。
但 Postgres 和 Linux 可能还不同于全部开源社区的整体情况,这两个社区属于“老牌”开源社区。
天工开物开源基金会、执行副秘书长庄表伟认为“整个开源社区在经过早期的飞速发展期之后,应该进入稳定期,年龄分布应该趋近于整个社会的工作人群的正常年龄分布(甚至还应该再年轻一些)。而老牌的开源项目,除非能够经过高妙的运营手段,焕发新的生机,再加上老项目的技术能够保持先进性,否则对于年轻人的吸引力,就是会出现‘自然下降’的现象。”
因此,庄表伟认为开源社区的老龄化,可能是一个伪命题:“老牌开源项目的老龄化,虽然的确是一个现实问题,但是真正应该关注的是:老牌开源项目(技术),在日新月异的开源技术发展浪潮中,如何保持先进性的问题。”
项目维护者退休的确会影响项目的可持续发展,但很多开源项目背后也有多个商业公司开发新分支。对于如何吸引年轻人,并要保持项目的持续健康发展,Apache RocketMQ 作者王小瑞认为,商业公司的支持也能发挥重要作用,“只有在开源项目上投入的资源足够多,产生的商业价值足够大,自然就会有更多的年轻人参与。因为不但会为年轻人带来荣誉,甚至会成为年轻人一生的事业,让他们将贡献开源作为业余爱好变为主要职业。(这样原创社区作为最大投入方,吸引了最多的爱好者,创造了最大的商业价值,就能避免商业公司开发新分支,导致生态分裂等问题,也能在项目维护者退休后有更多年轻人接棒,形成正循环。)”
Apache 软件基金会董事姜宁,以及张铎两位老师则提出了一个有实施前例的方案:“需要项目创始人适当的退出一下,围绕着项目构建起健康的社区,这样能保证项目的可持续发展。”
通常来说,只要项目还有足够的使用场景,总是会有新开发者进入的。这中间的关键点就在于原来的核心维护者需要花心思培育一个活跃的社区,并且逐步后退,把更多的责任交给社区里的其他人。这样后续项目发展的问题就变成了一个社区维护的问题,只要社区能一直维护好,原核心开发者是否退出影响就没有那么大了。
这个典型的例子就是 Apache NuttX 项目。
Nuttx 是一个基于实时操作系统 (RTOS) 的开源项目,旨在提供一个可嵌入、可移植、可扩展和可靠的操作系统解决方案。其创始人 Gregory Nutt (http://www.scguild.com/Resume/7465R.html )在 2007 年正式对外开源了 Nuttx 项目。在这之后的很长时间里,基本都是由 Gregory Nutt 一个人在维护。
到了 2019 年左右,Gregory Nutt 已经 69 岁了,也到了“该考虑未来的时候了”。因为项目本身的特色,小米选择了这个项目作为 IoT 操作系统的基座。所以这一年,Gregory Nutt 和小米就项目的未来进行了讨论,在成立新的基金会挂靠,以及选择加入现有的几个基金会(Apache,SPI)之间进行比较之后,最终选择加入 Apache 进行孵化。该项目于 2023 年毕业,成为了顶级项目。
现在,Gregory Nutt 已经不是项目里最活跃的贡献者了,甚至代码写的也不多了。但当前项目依然非常活跃,贡献者高达 400 多人,每个月都有近百个开发者贡献代码。目前基本可以确定,NuttX 项目可以在脱离 Greg 完全控制之后也能发展的很好。
吸引年轻人,项目本身也可以做出一些改变,张铎提到了一些其他办法:例如发掘一些新的技术方向,引入一些新的技术,比如 Linux 的 eBPF 现在就非常火,和云原生结合,就可以吸引到大量新的开发者,以及在 linux kernel 中引入 Rust,也是一个吸引更年轻开发者的办法。
他同时认为开源项目其实也不必拘泥于一定要年轻人,只要不停的有新鲜血液进来就可以。年轻人总是会追热点的,并且老的技术方向,市场容量本身也有限。一个操作系统项目,在对年轻人吸引力显然无法和一个 AI 项目相提并论。“所以还是要放下执念,不同生命周期的项目维护者的年龄分布肯定是不一样的,不要强求。”
参考链接:
https://www.infoq.cn/article/NfU1d3oCcfpgXc06NXlg
https://en.wikipedia.org/wiki/NuttX
https://github.com/apache/nuttx/graphs/contributors
https://incubator.apache.org/projects/nuttx.html
评论 2 条评论