导语 | 正处于井喷前期的国内开源项目,能从全球最大的开源基金会 Apache 学到什么?个人开发者应该如何参与到开源中来?腾讯云最具价值专家(TVP)刘天栋,专注开源发展,让我们一起来听听他的答案。(本文编辑:尾尾,戳——>「独家视频」查看本次采访视频。)
受访者简介:Ted Liu ,刘天栋。开源社联合创始人兼理事长,腾讯云TVP。开源社是2014年10月成立的,国内志愿者组成的非营利的开源组织联盟。Ted 的一半精力在国内的开源社区,也就是开源社,另外一部分精力是在国际开源社区,主要是在 Apache 软件基金会(Apache Software Foundation - ASF)。Ted 是 ASF 全球七百多名正式成员之一,是其开源项目孵化器委员会成员及项目孵化导师,也是其筹款委员会的赞助伙伴大使,负责服务中国的 Apache 赞助伙伴。是国内少数的全职的开源志愿者。
看国内开源现状:发展可喜,但依旧有需要进步的地方
从2000年开始,我就在Linux的一个发行版公司工作,后来我在甲骨文、微软的职业生涯中,也都跟开源都有直接或者间接的关系。所以,从2000年到现在,这将近20年时间,我也算是见证到国内开源的起起伏伏,对国内的开源有一定的了解。
记得开源社在2015年时,组织了第一次由中国草根主办的 Apache 中国路演。那时候中国只有三个项目是在Apache项目孵化器中孵化的,而且这三个项目全都是来自于 eBay 中国研究院的。大家可能很清楚这个项目,就是 Apache Kylin,它是中国第一个正式从 Apache 项目孵化器中毕业,成为顶级项目的。在2015年 Apache 中国路演之后,到现在2019年,已经有19个源自中国的项目在 Apache 项目孵化器里孵化,其中已经有9个正式毕业成为顶级项目,另外10个正在孵化中。这是非常可喜的发展。
我们可以看到,这些项目绝大多数都是包括腾讯在内的大公司在运营的,有一定的“领头羊”效应。大公司已经认识到,贡献开源其实就是成就自己,对自己公司的利益是有好处的。这在2015年之前是没有的。大家已经真正认识到开源对企业、对自己社区发展的好处。
另外就是,我发现国内对开源治理还有一些不理解的地方。什么叫做开源治理呢?第一点,包括开源相关风险的治理;第二点是开源社区的治理,怎么把社区治理好。第三点是开源项目的治理。国内很多都是专注在项目技术上,而不是在治理上。这部分是我觉得国内开源还不够成熟的地方,还需要不断学习不断成长的地方。由于不理解的关系,有些公司开源的目的实际上是想增长自己的用户,在这样对背景下开源的项目有个问题,就是对于项目核心贡献者之外的人来说,门槛较高。这样一来,该项目就很难成为多元化社区,凝聚力就会下降,一旦核心开发者离开,或者公司 KPI 更改,这个社区就分崩离析了,最后就进到仓库里面,或者就直接捐赠出去了。
对于一个开源项目,如果没有一个好的多元化的社区,那么它的发展是不可持续的。在2018年,开源社做了一个《2018中国开源年度报告》,指出了要从两个维度衡量一个开源项目的健康程度,一个是它的活跃度,从项目的提交数、拉取数、贡献者数来看,而不是从Star 数来看。第二个维度是,社区多元化的程度。例如,一个项目的贡献者邮箱后缀都是同一个公司,那么说明其多元化程度是不够的,很容易成为一个 “KPI” 项目。今年我们也会产出一个《2019年中国开源年度报告》,欢迎大家关注。
看国际开源优秀经验:公开透明,社区大于代码
国际上,我参与比较多的是 Apache 软件基金会,另外就是 Linux 基金会。这两个基金会的途径是不太一样的:Apache 软件基金会是由下自上的,以个人成员为单位的基金会。Linux基金会是以公司会员为主的,是自上而下的。
这两个基金会都发展非常好。我们可以看到,国内越来越多的公司都赞助、参与或者捐赠项目到这些国际顶级基金会,所以也有了非常多的互动,在这个过程中会学习到很多相关经验。
Apache 软件基金会是全球最大的开源基金会,它目前有300多个开源项目,所以有人说“从数据中心到手机,人类的生活离不开 Apache 软件基金会”。我个人参与 Apache 软件基金会比较多,也比较推崇 Apache 软件基金的方式。Apache 软件基金会叫做“社区的社区”(community of communities)。Linux基金会也与之类似,除了Linux 操作系统之外。它下面也是好多项目,有相应的好多基金会,所以国际大的基金会都是“社区的社区”、“基金会的基金会”。以 Apache 为例,它会为项目提供很好的帮助,例如品牌保护、项目推广宣传、基础设施等。
我个人觉得可以从 Apache 学到很多经验,这里我想重点说以下六点。
很重要的一点是“Apache之道”——它的开源治理方式、原则和文化。其中特别一提的是,“精英治理”(Meritocracy),也就是说当你贡献越多的时候,你的发言权越大,同时责任也会越大。有点像蜘蛛侠,能力越大,责任越大。
第二点是,Apache 认为社区重于代码。这一点对国内的开源建设是非常有启发的。国内原来是“我是代码英雄,我是老大,你们都要听我的”。但是Apache 不这样认为,它认为太完美的代码就不会有社区,个人英雄不是真正的英雄,帮助大家成为英雄才是真正的英雄。代码一般,没有关系,只要大家愿意贡献进来,愿意投入精力让这个项目越来越好,这样才是一个好的开源社区。社区重于代码这一点对国内来讲,还是有很多启发的。我认为国内做开源相关的公司或者个人,一定要将社区重于代码一点放到第一个考量中去。
第三点,在 Apache 社区中所有人都是平等的,不是说谁资深,谁就有大的发言权。这在传统企业中,是看不到的。
第四点,公开透明。它所有的事情都必须要在邮件列表中体现或者实现,有一句话是说“没有在邮件列表中发生的,就没有发生过”。邮件在72小时之内,全球所有时区的人都要看到并给出反映出来。私底下的沟通是不算的。
第五点,共识机制。这是传统企业中没有的文化,共识机制是减少投票。不是说5个人中有3个人投票,就可以忽略另外2个人的意见。任何人都可以提出自己的意见,只要有反对意见提出正当理由及/或替代方案,大家就会停下讨论,这是我在其他组织中没有看到的。
最后一点,社区自治。Apache 下的300多个项目社区都是社区自治的。Apache 提供品牌保护等横向的支持,但各个项目社区都是自治的,每个月交一个报告就可以,不需要董事会进行各种各样的批准。除非违反了品牌或者法律其他方面的原则,董事会才会出面。
国内开源项目正处于井喷前期,国际基金会的这些模式值得借鉴的点,对于国内正在做开源工作相关的人来说是有非常好的示范作用。很多企业也都在学习其治理之道。
看厂商参与开源:利益驱动是好事,但不能走偏
利益驱动对任何个人或者组织来讲都是好事。对于个人来讲,他们期望获得成就感和满足感,对于企业来讲,有其利益诉求也是好事。
但是推动企业参与开源来讲,最大的动力就是经济动力,是经济效应的动力和生产力动力。几年前,Henrik Ingo 做了一个《研究报告》,在国际九大开源基金会下运营的开源项目的规模是一般单一公司或单一组织下属社区所运营项目的经济回报的10倍;其生产力提升是5倍。这是他对很多项目进行调研而总结出来的。包括对项目对活跃度等进行的统一考量。
如果是在基金会下面,社区的活跃度和多元化程度都会更加健康。比如,将一个项目开源出去,会有各式各样的开发者来帮你提升这个项目,其质量会有显著提升,成本也会降低。所以大家发现,在一个好的项目社区,其经济效益会提升,成本会降低。
当然也会有一些走了弯路或者走偏的。比如我有问到一些公司,为什么要将项目开源,他们回答说“很简单呀,我要增加我的用户”——这其实在一开始就是走偏了的,很容易就被大家看穿手脚——并不是要吸引更多人参与,而是为了卖产品。这是不可持续的。
所以,有经济利益的驱动是好事,但是不能走偏,要用更合理的指标来衡量。
看国际关系对开源影响:无需过多担心,担心风险可做国内镜像
国际关系是否会影响到开源,今年对于这方面的讨论和争论是比较多的,我们也在开源社的公众号上做了比较多的阐述。国内其实还是有很多误解,我们第一时间和国际的相关组织,包括 ASF、GitHub 等取得联系并获得了正面回应。
以美国为例,开源基金会下的项目和代码属于出版物,是获得宪法保护的。只要在开源项目中不涉及加密算法,就可以自由进出口。即使有加密算法,只要先报备,影响不会太大。所以对于基金会中的项目,大家不需要担心太多。
如果大家对 GitHub 有一些担心,那么在国内做一些托管或者镜像,也是可以的。毕竟 GitHub 是一个商业公司,会受到美国法律的管束。GitHub 的CEO Nat Friedman 在2018年有参与过中国开源年会,他是一个非常年轻、阳光的小伙子,非常关注中国开发者的发展。
另外一点,关于国外一些厂商,或者说是开源项目的提供者,他们可能会修改证书或者为了自己的利益修改许可证的相关做法。我个人认为这是无可厚非的。我在最近一次参加北美的 Apache Conference (2019年9月,拉斯维加斯) ,我当时的美国室友说,他对开源项目做了很多贡献,但是很多企业不买账,不会给他支付相关的费用。所以他就说,应该发明一种 license(许可证),当你的公司市值达到某个上限后(比如10亿美金),就要开始对其所使用对开源项目付出一定的代价。所以我们可以看到,即使在欧美这种开源比较发达的地区,开源贡献者依旧会受到一些不太公平的待遇,这是为什么有人会想去修改许可证的原因之一。
商业利益驱动下,不可能会有一批人永远饿着肚皮给大家干活,开源项目的提供者也要生存。所以改变许可证防止非善意的商业组织单方获得他们的利益,却不贡献给社区。我不评价这个行为的好坏,但是我建议大家,有一些宽松型的开源许可证,大家在选用时可以采用或者参考。比如 Apache 许可证第2版、BSD、MIT,没有太多限制。至于新发明的一些许可证,对网络或者互联网服务的许可证,大家可以去了解和参考。
看个人参与开源:有想法就即刻参与,社区沟通注意礼仪
有些人会说,我比较累啊,没有时间,工作压力大,996,回到家还要带小孩等。但是我看到越来越多的人,他们在工作压力和生活压力很重的情况下还会参与开源中来。大家不再是衣食足而知荣辱这样的初级阶段,大家都更想去实现自己的价值,在获得很多的帮助之后,想要回馈给这个社会。这也是开源社这样一个非营利的草根组织,在成立到现在将近5年的时间,为什么能够快速成长的原因。我为此感到非常开心。如果想参与到开源中来,没什么好说的,马上加入某个社区,开始贡献!不管是组织、翻译、宣传,还是写代码。
另外就是想提醒大家注意社交礼仪。就是说社交礼仪在社区里是非常重要的,维持一个社区的凝聚力跟它的互敬互重这样一个很好的互动是非常关键的。有的人说:我不管,我这个人反正就是个性直,我搞技术,我什么都不用管,你错的话,我不但说你错了,我还要骂你祖宗八代。——这样就不太好了,大家应该就事论事,把问题给解决掉,而不是说非要对个人进行攻击,各种不雅的、不堪的什么都要在论坛上面骂。这是我看到的国内一些不太好的现象。
我给大家两个范例,可以去关注一下。有一位吴晟,是国内唯一的一个个人项目变成世界顶级社区的顶级项目,叫 SkyWalking,他今年在中国开源年会发表了一个主题演讲,讲述了如何从个人项目变成了一个全球顶级项目。他现在也是Apache 基金会好几个项目的导师,好几个都是中国项目。
另外一位是李辉,Python Web 开发框架 Flask 维护者之一,是《Flask Web 开发实战》的作者。关于个人如何参与到开源项目中,他分享了三个要点:不要工作、不要谈恋爱、多一点冲动,想到就开始做,而且开始做的时候就要广而告之,让所有人都知道你要做这个事情。他就是这样开始的,他当时有个朋友想做一个网站,虽然他只有一点点了解,但是就站出来说“我来做”,看他满口答应下来,人家觉得他很厉害,他就开始做了。接下来几个月的时间,他就强迫自己去学习,很快就把网站做好了。这个过程中,他花了很多时间去社区中请教大神问题,把相应的答案很快就应用起来。之后,他发现很多人还会跟他一样问类似的问题,他也会去回答一下,获得了一些满足感。回答多了之后呢,他也慢慢地成为了“大神”,就有出版社来找他,说,你这么厉害,来写一本书吧。他就又满口答应下来——这就是他分享的要多一点冲动,而且要广而告之——他告诉大家,自己要写本书,大家要注意看。最后书也顺利出版了。他作为一个90后,这种“不要工作、不要谈恋爱、多一点冲动”的观点还是非常有意思的。但是我并不是鼓励大家不去谈恋爱,因为实际上他从台湾 COSCUP 开源大会回来之后,就在朋友圈秀出了一个女朋友给他发的奖杯来秀恩爱。他在2019年中国开源年会也发表了演讲,感兴趣的同学可以去看下。
看腾讯开源:开源方向明确,和对的人一起加入开源运动
腾讯在以前一直是比较保守的,现在可以说开源的方向是非常明确了的。我参加了几次TVP的会议,都听到了腾讯开源已经确定了一些方向。在今年的Apache Conference,更是看到了腾讯宣布开源 TubeMQ,以及之后的腾讯云Techo开发者大会,更是一口气开源了Kona, TBase, TKEStack等4个重量级的项目。可以看出,腾讯开源的路线图是非常清晰的。
我对腾讯开源的建议是,要找到对的人,要找到真正深入参与过开源社区,有过真正开源贡献的实质贡献者,就像堵俊平这样对 Hadoop、Spark 等项目委员会中做过多年贡献的人。腾讯把他请回来,真正开始一步一脚印地推动了腾讯的开源之路。当然,腾讯还有其他的,像 Angel、Tars、TSeer 这种真正到了 Linux 基金会的项目。
总之,我对腾讯开源对建议就是找到对的人,找到真正了解开源、贡献开源的人,参与到腾讯的开源的运动中来。
看TVP:“贵宾级”礼遇,期望开源话题越来越多
我在TVP享受的是腾讯的“贵宾级”的待遇,我看到大家都非常愿意参与和贡献,愿意支持TVP相关的活动。未来,我希望TVP将来能够多谈一些开源相关的话题,因为腾讯现在在的很多方面的事情,不管是云计算、大数据、人工智能、区块链、物联网、车联网,甚至是 5G,如果没有开源,都谈不了的,因为这些所有的技术基本上都是开源的。腾讯要拥抱、优化、回馈开源,所以我希望TVP能够多谈一些开源技术,同时,在此之上我希望能够多谈一些开源的治理,例如社区治理,项目治理,风险治理等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。