拿来主义的陷阱——你真的充分的利用了开源项目了吗?

人们为什么不会参与到社区?参与到上游项目有着显而易见的好处,可是,人们总是能够找到一万个理由不去做。看看多年的布道开源经历的适兕是如何从心理和文化两个方面来进行分析总结的。

引子

在刚刚结束的COSCon’17会议上,适兕进行了新的分享内容——人们为什么不去参与上游?以下是根据现场速记进行整理的内容。

开场

先问现场的听众两个问题:

  1. 在座的各位,有谁是为上游社区做过贡献的?(提交代码、撰写文档等)
  2. 在座的各位,所在的公司提倡或已经为上游社区做过贡献?

获得的答案是,1是3位,2只有一位。而现场大约有不到40位听众。

自我介绍及显而易见的事情

我今天演讲的题目,叫做“拿来主义的陷阱”,是不是有点标题党?。

我先自我介绍一下,我叫李建盛,目前在一家叫做青云QingCloud的公司做产品经理,自封为开源布道师,我有一个博客叫做“开源之道”,右边的二维码是地址,大家可以扫一下,关注。主要是关注开源的方法论、文化。我过去是一名技术人员,现在依然是,做了十几年的技术,但是在2015年的时候,自己有一个转型,我发现我身边的人对技术上的职业 的成长,或者对一些项目,包括我们整体的大环境,都是发展得不尽人意,于是就想法和大家说明情况。

今天的议程分为四个部分:

  1. 上游优先显而易见的好处。
  2. 然而现实的情况是。
  3. 心理分析
  4. 文化分析。

首先我们来谈谈显而易见的益处。什么是显而易见的益处?就是说这个事情明明好处多多,大家都知道的事情,但是却就是没有人去做,犹如Hedman先生讲到的“房间里的大象”。如果你是个人开发者,现在各个大公司、大社,如果你的个人成就很高,在所有人面前都是很高的声望,对自己是有很多的益处的。商业上的公司也有很多好处,包括很多开源公司也赚了很多的钱,这里列举一下公司的好处有:

  1. 提升自己的产品的能力,社区是面向互联网的,如果你能在上游取得成绩,对于提升自己的产品是非常有好处的。
  2. 如果你在社区有影响力,公司就可以招一些社区活跃的人才。团队中拥有上游的关键人才,难点都知道,
  3. 软件开发,这个事情是有少数几个聪明人去做的,但是你怎么找到跟你差不多的人,怎么找到对应的人,这个过程是最难的,比如说茫茫人海中寻找跟你相同世界观的,太难了,仿若大海捞针,但是有一个社区,从代码里面提交的线下的一些东西等等,你发觉找一个人相对会很容易,宛若有一块磁铁,在吸引“针”,有这么一个机会寻找到合适的人。
  4. 开源社区有这么一个功能,还包括成本的节省、技术口碑的营销。代码量出来了,全世界都可以看得到,就是流量。
  5. 还有一个好处,在软件供应链上游占据,我们软件发展到现在,和超市的供应链相似,比如现在人工智能深度学习框架,所有的公司都开源出来了,今天Google的TensorFlow,在2013年就开发了,所有其他的公司在2015年才反应过来,但是你没辙。如果你在供应链上游,一切都好说。

说了这么多,如果你们还是觉得刚才说的那些都是空话的话,那我就开始算账,比如说Linux,有26年的历史了,代码行数16830609行,这个还是20几天前的代码行数,这个项目如果让一家公司,或者是重新开发一个操作系统去做的话,需要5472人年,如果这个还觉得很抽象的话,那就拿钱来算,5亿美元,怎么算的,还是openhub上的数据,这个钱,代码行数,每一行,5块钱也好,50块钱也好,这么算下来,这个项目不是谁都可以做到的。这是Linux,世界上非常庞大的项目之一。再比如说Kubermetes,在容器的调度上做的非常好,它是2014年开发的,现在达到1313439行代码行,相当于467人年,也不是哪一家小的公司行团队就能做出来的事情,价值也是2千万美元,其他的还有,TensorFlow、Mysql这些项目。

我讲这么多想说明白一个道理,如果你是一个开发者,你用这个项目的话,等于是站在巨人的肩膀上。如果你是一家公司的话,我们常见的现象是拿来主义,比如说ansible,从社区直接拿来,我就修改,社区照样发展,我自己过了半年以后也发展到1.0,修改了什么bug,做了什么应用。比如说你的团队10个人,20个人,半年,这半年、一年甚至两年的时间,和整个大项目相比,如果你没有做Upstream First的话,你的损失会很大,也就是说人家同时在成长的同时,你丢失了很多东西,这就是拿来主义的陷井,你真的以为拿来之后,你没有做到足够大的话,你就损失很大,错失了很多机会,失去了很大的竞争力。

然而现实的情况是

我讲了这么多,然而现实的情况却是,很少有人去做参与到上游社区,只有很少的个人和公司去做Upstream First,不是我们不具备编码能力或者写文档、做设计等等的一些能力,而只是这件事情没有人做,只有行少一部分人做,你会发现在社区里面起来的大牛很少,有的公司也提倡大家做Upstream First,但是都做不到,有很多有趣的事情可以跟大家分享,至于是为什么,这就是困扰我的一个问题。

这个现象和这个世界上很多事情一样,是非常复杂的,有着众多的原因,不是简单的某个单一的原因,

比如认知的问题,认知决定一个人的高度,你能看多远,只有看到才能去奋斗努力争取,认知的问题确实是非常大的。

再比如是视野,你能够在开源里面看到什么,有的人看到的仅仅是代码,有的人看到的是解决方案,有的人看到的是社区,有的人看到的是赚钱等等,视野决定了思考方式。

再如科学,科学就是坚持不懈的,做开源项目是一个很需要的能力和毅力的事情,需要坚持不懈地努力,比如说Linux经历了整整26年,在1991年发布之后,到发展起来,到成为目前世界上最成功的软件项目之一。在最开始的时候,很多事情都是小众人做的事情,这些发展起来的成熟的项目,都是经过历史的沉淀,一直坚持不懈地做,所谓的科学,这个就很难去评判了。

还有环境,有市场的大环境,但我们今天只是分享我们身边的片面的看到的东西。

心理分析

心理因素,心理突破不了的话也是很困难的,如果是你所在的公司的老板,你劝你老板说参与Upstream First,老板就会问我为什么要花那个钱,为什么我花钱雇佣人要为公共做贡献?然后你讲那么一大堆,他就把这句话给你堵死,所以这个心理是健康的还是不健康的?还有和友商差距化的地方,你怎么证明有超强生产力?你怎么证明自己是社区的,怎么证明自己是专业的,这是非常难证明的,这就涉及到你招了一个人,或者你希望证明自己有能力为上游做贡献,这就是两难的问题。

文化分析

谈到文化,有几个方面:

  1. 只许州官点灯,不需百姓防火。这就正如Niclas Hedhman先生在上午的Keynote中所提到的一样,我们的文化中遵从权威,总是某些等级上说了算,这个大家可以很好的理解。
  2. 刻舟求剑,这是我自己的发现,非常地常见,就是说他是静态地看这个问题,无论你是基与开源的项目或者软件做事情,或者是你基于开源软件做一个商业产品,或者是把它当作第三方,去做一个事情,均是从上游切出一个分支,基于这个分支蒙头做事,而上游社区的项目是一直不断的发展的方,但是我们一定会做这样一件事情,前段时间Linux发了4.4,我基于这个做事情,或者我基于个开发,然后这几个人就开始做这个事情,到半年或一年之后,发生了什么情况?上游已经发了2个版本,已经5点几了,发现我自己的东西没有它全,或者是我这边也修了bug,要付出的代价非常大,因为有的接口变了。这种现象太常见了,你环顾下四周到处都是。
  3. 历史包袱,本土的人们是不相信完美的,大家不相信公共的,没有人相信真的是会实现的,没有人相信那个东西真的能成真,因为有失败的案例。
  4. 公地悲剧,就是说我为什么要去做贡献。
  5. 读书人窃书,不叫偷。我们对知识产权太陌生,不管是开源软件也好,还是专有软件也好,它的前提是承认这个软件是谁写的,但是我们我们国家,盗版的软件或者盗版的光碟或者盗版的书籍,这些根深蒂固的对于知识产权的漠视非常严重,开源软件,不管什么协议,应该说就说这段代码是我写的。但是我们不,我们会看到很多笑话,比如说拿USB驱动去申请国家专利,这个是现象,比如说“我们首创”,这是很可怕的事情,要慢慢的改变。
  6. 对于创新的恐惧,我们的文化还是缺少创新,我们只会跟着别人改。认为自己是对的就一直走下去,这种精神是开源人员特别需要的,有的东西就是需要时间去证明的,比如说开源从1998年到现在20多年,如果说没有这种敢于直面的精神,是很难做的。
  7. 教会徒弟,饿死师傅。最大的障碍,在公司推行参与到社区,最大的障碍是来自于研发人员本身,这个是我原来没有想到的。其实远比这个复杂的多,比如说一个老板说我要大数据的解决方案,问一个项目总监,5个月能不能做?可以,然后他确实是从上游拿一个项目来,然后改一该就ok,如果半年之后有人问,你这么做是有巨大的损失,瞬时了多少钱,丧失了多少市场机会,丧失了多少影响力,首先这个研发人员就站出来批评你,这个东西是我做的,不是你做的,不是开源社区的事情。就回到了之前拿钱算的事情来,我从上游社区拿了一个价值500万的项目,然后我投入了10个人,花了20万就解决了。当这个东西功能非常完善,能解决一部分问题的时候,这个时候他就成为最大的阻力去不做这件事情,直到一年之后这个项目失败,甚至是亏损。这是我看到的一些案例,当然还有其他的。你会发现做这么一件Upstream First简单的事情,大家都能看到利益的事情,却非常非常难。

总结

最后和大家周知一下,青云最近开源了一款很酷的上游项目,扫描二维码可以了解。感谢青云QingCloud开源为我这次演讲提供的赞助。

这次就跟大家分享这么多,最后,希望大家去积极参与到上游,无论是你个人,还是你所在的公司,要把那些显而易见的好处讲给你的老板和讲给你自己听,现在你在开源社区里面以Upstream First的心态做事情,你的职业生涯会更好,你的公司也受益良多。谢谢大家!