开源的那些热点问题
2009-11-28 19:56:19 阿炯

【IT168 特别评论之七问】
1.制约“桌面Linux”发展的原因是什么?
我在博客上发表两篇文章:《桌面Linux绝地反击》、《桌面Linux起飞进行时》,文中都谈到:“桌面Linux”是Linux发展中的软肋,其发展受制于驱动和应用的短缺以及兼容性的不足,这是对的;进一步思考:制约“桌面Linux”发展的主要原因是至今还没有找到合适的商业模式。 Ubuntu 9.10(桌面版)是一个优秀的“桌面Linux”操作系统,但Ubuntu创始人Mark Shuttleworth今天也还在继续寻找其商业模式。

2.为什么“桌面Linux”的发展还不如“Mac OS”?
从今天全球操作系统的市场份额来看,“桌面Linux”约占1-2%,苹果公司Mac OS-X约占6-10%。其原因是:Mac OS-X不是一个通用操作系统,它不面向消费市场,苹果的MacOS-X操作系统(软件)是为其自产电脑(硬件)专配的(而苹果电脑是具有一定数量客户及其需求的专有市场)。

3.如何看待“免费Linux”与“付费Linux”?
Linux分免费和付费两类。纯粹免费的Linux操作系统做不出产品、形不成产业、进不了市场;付费的Linux操作系统具有商业模式,人们正在探索那种具有间接低价收费性质的商业模式,这时开源软件是“免费”的,但与之关联的媒介是收费的,如开源软件的商业模式:像Red Hat那样,软件“免费”、产品整合“收费”(企业根据用户需要,通过软件向用户提供产品整合、定制并按其价值向用户“收费”),或像一般Linux发行商那样软件“免费”、服务“收费”等;还有正在探索的商业模式,如软件“免费”而与其捆绑的媒介(如OEM、嵌入式/硬件、内容、网络运营、广告等)是 “收费”的,Linux可从中提成(从而构成Linux的商业模式),一般人以为这种Linux也是“免费”的。

4.“桌面Linux”何时起飞?
今年是“Linux的桌面年”,如今“桌面Linux”起飞正值“进行时”。

5.如何看待Google的Chrome OS?
Google于美国西部时间11月19日上午10时举行Chrome OS新闻发布会,一时热评如潮。Chrome OS是一款Linux的网络操作系统,其短期目标针对上网本。如此说来,Google开发Chrome OS的短期目标不是想以其网络操作系统全面取代微软Windows桌面操作系统,而是想用以压缩微软Windows的桌面市场;配置Chrome OS的上网本的所有应用软件全部是Web应用,也不同于配置一般Linux上网本既运行桌面应用程序(或本地应用程序)也运行Web应用程序。
这样开源社会并不担心Chrome OS会冲击到其他Linux操作系统,而是乐观其成;至于微软,在Google把桌面平台迁移到网络平台之际,担心在网络大战中自己输在起跑线上,因此反而对Google的举措非常重视,而且自己也有一套相应的对策准备出台。

6.如何看待上网本?
早年就指出,要给上网本正确的市场定位,上网本不是单纯的简化本、备用的第二本、超低价的山寨本;上网本既要保持桌面的基本功能,还要开发集成新的网络功能,它是具有节能、便携、低价特点的电脑。上网本对微软是双刃剑。上网本是“桌面Linux”的“中间站”。上网本决不是台式电脑或笔记本的桌面功能的简单删减,以Moblin(Linux)2.1上网本为例,它开发了具有3D动画技术的Clutter全新界面,以及开发了多点触摸屏、手势输入、屏幕键盘等创新技术,这便是很好的例证;我们知道,Chrome OS也把上网本作为其配置的短期目标,这时所有应用软件都是Web应用,所有体验都在浏览器内进行,Chrome OS还利用创新技术处理打印任务。因此看待上网本要有一个全新包容的视角。

7.如何看待Xen虚拟化技术?
我关注各种虚拟化平台,如Citrix的Xen,Red Hat的KVM,VMWare的VSphere4,微软的Hyper-V,前两者是开源的,后两者是闭源的;很高兴国内也在研发虚拟化技术。
2009年11月19日参加“Xen研讨会”,我在会上的发言中指出:“Xen的虚拟化技术和应用是优秀的、领先的,在云计算领域基于Xen的公共云占 80%,在企业服务器市场Xen占18%”,“我是通过Intel认识Xen的,Intel与Xen合作,创建了Xen安全虚拟化架构,对虚拟化监控器提供了硬件支持,对Xen 的一些性能进行了优化”;“Xen的虚拟化技术与开源关系密切,Linux基金会早在发布Linux2.6.23时,Linus Torvalds就把Xen的虚拟化技术以补丁形式纳入到Linux内核中,直到最新发布的版本Linux2.6.32连续10个版本均纳入了Xen的虚拟化技术”。


开源社区呼唤“年轻一代”

开源已成为这个社会的根基,从上世纪 80 年代 Richard Stallman 发起的自由软件运动,到 Linux、GitHub 以及互联网的崛起,开源的发展也已经经历了不止一代人。2023年10月中旬,分析机构 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 在 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 项目相提并论。“所以还是要放下执念,不同生命周期的项目维护者的年龄分布肯定是不一样的,不要强求。”