拿来主义的陷阱——你真的充分的利用了开源项目了吗?
Wed Nov 22, 2017 | 4000 Words | 大约需要阅读 8 分钟 | |
引子
在刚刚结束的COSCon’17会议上,适兕进行了新的分享内容——人们为什么不去参与上游?以下是根据现场速记进行整理的内容。
开场
先问现场的听众两个问题:
- 在座的各位,有谁是为上游社区做过贡献的?(提交代码、撰写文档等)
- 在座的各位,所在的公司提倡或已经为上游社区做过贡献?
获得的答案是,1是3位,2只有一位。而现场大约有不到40位听众。
自我介绍及显而易见的事情
我今天演讲的题目,叫做“拿来主义的陷阱”,是不是有点标题党?。
我先自我介绍一下,我叫李建盛,目前在一家叫做青云QingCloud的公司做产品经理,自封为开源布道师,我有一个博客叫做“开源之道”,右边的二维码是地址,大家可以扫一下,关注。主要是关注开源的方法论、文化。我过去是一名技术人员,现在依然是,做了十几年的技术,但是在2015年的时候,自己有一个转型,我发现我身边的人对技术上的职业 的成长,或者对一些项目,包括我们整体的大环境,都是发展得不尽人意,于是就想法和大家说明情况。
今天的议程分为四个部分:
- 上游优先显而易见的好处。
- 然而现实的情况是。
- 心理分析
- 文化分析。
首先我们来谈谈显而易见的益处。什么是显而易见的益处?就是说这个事情明明好处多多,大家都知道的事情,但是却就是没有人去做,犹如Hedman先生讲到的“房间里的大象”。如果你是个人开发者,现在各个大公司、大社,如果你的个人成就很高,在所有人面前都是很高的声望,对自己是有很多的益处的。商业上的公司也有很多好处,包括很多开源公司也赚了很多的钱,这里列举一下公司的好处有:
- 提升自己的产品的能力,社区是面向互联网的,如果你能在上游取得成绩,对于提升自己的产品是非常有好处的。
- 如果你在社区有影响力,公司就可以招一些社区活跃的人才。团队中拥有上游的关键人才,难点都知道,
- 软件开发,这个事情是有少数几个聪明人去做的,但是你怎么找到跟你差不多的人,怎么找到对应的人,这个过程是最难的,比如说茫茫人海中寻找跟你相同世界观的,太难了,仿若大海捞针,但是有一个社区,从代码里面提交的线下的一些东西等等,你发觉找一个人相对会很容易,宛若有一块磁铁,在吸引“针”,有这么一个机会寻找到合适的人。
- 开源社区有这么一个功能,还包括成本的节省、技术口碑的营销。代码量出来了,全世界都可以看得到,就是流量。
- 还有一个好处,在软件供应链上游占据,我们软件发展到现在,和超市的供应链相似,比如现在人工智能深度学习框架,所有的公司都开源出来了,今天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,老板就会问我为什么要花那个钱,为什么我花钱雇佣人要为公共做贡献?然后你讲那么一大堆,他就把这句话给你堵死,所以这个心理是健康的还是不健康的?还有和友商差距化的地方,你怎么证明有超强生产力?你怎么证明自己是社区的,怎么证明自己是专业的,这是非常难证明的,这就涉及到你招了一个人,或者你希望证明自己有能力为上游做贡献,这就是两难的问题。
文化分析
谈到文化,有几个方面:
- 只许州官点灯,不需百姓防火。这就正如Niclas Hedhman先生在上午的Keynote中所提到的一样,我们的文化中遵从权威,总是某些等级上说了算,这个大家可以很好的理解。
- 刻舟求剑,这是我自己的发现,非常地常见,就是说他是静态地看这个问题,无论你是基与开源的项目或者软件做事情,或者是你基于开源软件做一个商业产品,或者是把它当作第三方,去做一个事情,均是从上游切出一个分支,基于这个分支蒙头做事,而上游社区的项目是一直不断的发展的方,但是我们一定会做这样一件事情,前段时间Linux发了4.4,我基于这个做事情,或者我基于个开发,然后这几个人就开始做这个事情,到半年或一年之后,发生了什么情况?上游已经发了2个版本,已经5点几了,发现我自己的东西没有它全,或者是我这边也修了bug,要付出的代价非常大,因为有的接口变了。这种现象太常见了,你环顾下四周到处都是。
- 历史包袱,本土的人们是不相信完美的,大家不相信公共的,没有人相信真的是会实现的,没有人相信那个东西真的能成真,因为有失败的案例。
- 公地悲剧,就是说我为什么要去做贡献。
- 读书人窃书,不叫偷。我们对知识产权太陌生,不管是开源软件也好,还是专有软件也好,它的前提是承认这个软件是谁写的,但是我们我们国家,盗版的软件或者盗版的光碟或者盗版的书籍,这些根深蒂固的对于知识产权的漠视非常严重,开源软件,不管什么协议,应该说就说这段代码是我写的。但是我们不,我们会看到很多笑话,比如说拿USB驱动去申请国家专利,这个是现象,比如说“我们首创”,这是很可怕的事情,要慢慢的改变。
- 对于创新的恐惧,我们的文化还是缺少创新,我们只会跟着别人改。认为自己是对的就一直走下去,这种精神是开源人员特别需要的,有的东西就是需要时间去证明的,比如说开源从1998年到现在20多年,如果说没有这种敢于直面的精神,是很难做的。
- 教会徒弟,饿死师傅。最大的障碍,在公司推行参与到社区,最大的障碍是来自于研发人员本身,这个是我原来没有想到的。其实远比这个复杂的多,比如说一个老板说我要大数据的解决方案,问一个项目总监,5个月能不能做?可以,然后他确实是从上游拿一个项目来,然后改一该就ok,如果半年之后有人问,你这么做是有巨大的损失,瞬时了多少钱,丧失了多少市场机会,丧失了多少影响力,首先这个研发人员就站出来批评你,这个东西是我做的,不是你做的,不是开源社区的事情。就回到了之前拿钱算的事情来,我从上游社区拿了一个价值500万的项目,然后我投入了10个人,花了20万就解决了。当这个东西功能非常完善,能解决一部分问题的时候,这个时候他就成为最大的阻力去不做这件事情,直到一年之后这个项目失败,甚至是亏损。这是我看到的一些案例,当然还有其他的。你会发现做这么一件Upstream First简单的事情,大家都能看到利益的事情,却非常非常难。
总结
最后和大家周知一下,青云最近开源了一款很酷的上游项目,扫描二维码可以了解。感谢青云QingCloud开源为我这次演讲提供的赞助。
这次就跟大家分享这么多,最后,希望大家去积极参与到上游,无论是你个人,还是你所在的公司,要把那些显而易见的好处讲给你的老板和讲给你自己听,现在你在开源社区里面以Upstream First的心态做事情,你的职业生涯会更好,你的公司也受益良多。谢谢大家!