简介:前言 很多朋友都问过我,开源技术究竟好在哪里,一个公司拥抱开源是不是加分项,参与开源的人是不是很酷的技术大牛。 本文抛开虚浮
前言
很多朋友都问过我,开源技术究竟好在哪里,一个公司拥抱开源是不是加分项,参与开源的人是不是很酷的技术大牛。
本文抛开虚浮的情怀和热情,我们从商业和管理的角度看一看软件开源。
远古期的计算机没有版权概念,每一份代码都是一份全人类都可以学习借鉴的教学数据。
随着商业软件的兴起,商业软件公司倾向于将代码当做秘方保护,引入了版权的概念。闭源软件实操过程中有如下缺点:
IT技术无法跨软件跨公司进行交流,行业人才培养的很慢;
一个软件只能在很小可控范围内迭代,软件的进步速度偏慢;
公司的商业策略以盈利优先,可能会掐灭技术革新;
一个黑盒化的交付物,交付质量只能靠商业信誉保障;
商业软件总是试图建立垄断,黑客们警惕着垄断的恶行。
在版权限制下感到压抑的IT精英,自发推动开放源代码的交付方式,其中最出名的是GNU计划。GNU计划的重点是对抗IT技术认知垄断,更自由的传播IT知识;GNU等开源计划既不是为了开源公司的商业利益,也没要给参与者发高级技工证书,更不会因为开源而强行免费。
在上个世纪程序员人数很少但都是精英黑客,参与开源的目的是以码会友,不会发表太烂的代码,顺着开源社区容易找到技术大师,几个IT高手也容易蹭出商业火花。
现在越来越多的公司参与到开源项目中,甚至主导了很多商业开源项目;现在开源项目的精英理想主义色彩褪去,但打破认知垄断的初心没变。
开源软件是打破软件专利垄断,而且大部分都很便宜甚至免费,这就很适合做商业降维打击。这个篇幅太长我不展开细谈,只抛出三个案例:
IBM提供AIX技术帮助完善了Linux,SUN和微软的服务器操作系统都不太好卖了。
Java、Golang的开发者生态比 dot Net要友好热烈,这些程序员的待遇差距越来越大。
硬件公司Intel支持开源云计算项目,这些软件可以促进自家CPU、主板、SSD和网卡的销售。
中国有句俗话叫“财散则人聚”,老外终于学会了“源码散则厂商聚”。对于以IT技术为核心竞争力的企业,降低门槛既可用于绝地反击,又可用于做大行业生态。
在开源模式下,厂商仍然有很多盈利模式,甚至比闭源授权更赚钱:
开源软件不是免费软件,仍然可以收取授权费;社区主导的项目有GPL等方法避免被厂商剽窃代码;厂商主导的开源协议可以禁止其他人用于商业竞争,开源专利也是专利。
开源软件可以收取维护和技术咨询费用,Redhat起家是做Linux系统支持,也卖过JBOSS等软件的文档。
核心基础功能开源免费负责扩大客户群,管理平台和高级功能是闭源付费。比如Extmail邮件系统就有企业版,Zstack云计算平台也有企业版。
个人开源软件都接受捐赠,最近几年他们可收了很多比特币,哈哈^_^。
总而言之,IT精英需要用开源自由交流思想,IT公司要用开源推进产业发展,但IT工程师不会给全世界做义工,实际上蛋糕越大我们吃的越饱。感谢开源赐予我们食物,赞美图灵和Stallman。
有一类拥抱开源的公司——比如LinkedIn开源了Kafka、爱奇艺开源了Andromeda和DPVS,他们的主营业务不可能从开源软件牟利,他们做开源更多是技术团队的内部福利。
这些部门需要高素质的技术人才,组织有挑战的开源项目就像种下了梧桐树,更方便吸引到金凤凰。员工参与这些项目验证和增强个人能力,没参与项目也是在个有实力有美誉的技术部上班,这对技术人员是比年终奖更好的奖励。
某些技术大牛承认把内部项目开源了就能带着源码跳槽,但不开源脑子一样有代码。而这套源码依赖的环境也容易招到新牛补位,招聘高级研发的JD是千篇一律,而最佳验证源码的环境是万一挑一。
这类公司肯开源的项目都不是核心竞争力项目,相当于零成本结了个善缘,比单纯靠高薪招人要灵活方便。
开源是个高热度的正向概念,自然也就少不了搭便车蹭热度的投机分子。
开源社区参与者的素质在变低,开源社区的代码质量在变差。菜鸟一样能参与开源项目刷履历,而主导开源项目的可能是个技术投机分子。老一代精英做的开源项目有顶层架构设计和全场景测试,而码农主导的低质量项目只看代码和功能。
开源社区的技术交流氛围也在发生变化,开源本意是以码会友,但现在提pr提issue的码农,有几个看过前人写下的代码的?大部分都是看一眼说明文档就来github上指点江山了。现在的码农只关注能出名能赚钱的热门项目,像OpenSSL这种核心项目,冷清到几乎没人关注。
对于一个公司来说,“拥抱开源”只是一种融入生态的策略,投入大量码农并不等于主导项目,主导项目不等于独裁式控制项目,独裁制控制项目是逼着Mysql变成MariaDB。大公司投入再多码农去做开源,本质上还是在开源协作场景里增加自己关注的功能,无关道德只有利益。
结束语
开源是一件好事,但只有对的人才能把这件事做好。
希望本文让大家评估开源的商业价值、产品价值、管理价值时,能有一些新的认识。
附录:关于开源软件质量
一切软件都是人写的,设计和实现者的能力决定了软件的质量。
软件的质量并不能简单看开源还是闭源,软件的设计思路一样能被相互借鉴,但架构不同实现手段也不能抄袭;这就像做开源的猪肉饺子和闭源的肉沫狮子头,两者可以相互借鉴口味和风评,但你看透我的原材料也不能照搬抄袭。
开源软件的安全性在于大家都能看到软件源码并报告问题,但前提条件是大家都肯看源码,能发现有安全漏洞,还肯上报安全问题。OpenSSL的heartbleed漏洞存在了好几年时间,但骇客是静悄悄的利用该漏洞,而不做任何漏洞上报。而闭源软件的安全问题,和开源软件一样看写代码和查漏洞的人。
新接触开源软件的开发者经常带着皈依者狂热去鼓吹开源软件质量,但这种狂热没有实质性帮助,贡献更好的代码、观摩精妙的架构,才是开源精英应该做的事情。