2016年各大互联网公司为啥要开源项目

公司对开源项目的投入是很有远见的行为,做优秀开源项目的好处主要有以下几个方面:
可以建立社区:优秀的开源项目会吸引一大批用户,并不断促成一个优秀的社区。例如对互联网发展影响非常大的 Linux 社区。如果没有开源社区,Google,Facebook,Microsoft 等世界级互联网大公司可能就不是现在这样了。为了让更多人能够使用优秀的产品,需要有人来愿意把自己的产品免费给他人使用。很多开源社区的贡献者都是为了建立,维持这样一个互助互利的社区而不断努力的。2. 广交朋友:在开源社区中经常能遇到很多志同道合的好朋友。你帮我改代码,我帮你加功能,说不定两个人就认识成了好朋友。因为都在一个开源社区,都有相同的兴趣方向或工作方向,交朋友更加容易,找合作伙伴也很容易。

3. 帮助他人,提升个人影响力:开源最妙的就是,大家把自己的工作成果和经验免费分享出来,遇到相同问题的人不用花一分钱,就可以直接用你探索出来的经验和成果解决问题。这可以大大降低重复劳动现象的出现,帮助他人的同时,也可以提升个人影响力。 在看到 @神奈川 的一个回答非常赞,原回答详见:
为什么要开源?在此引用其中一部分,站在自私的角度分析,公司和个人开源项目有什么好处:
从自私的角度看,个人为什么要开源?
1. 提升代码质量:开源是提升个人代码质量的好方法。这个有两个方面:首先,如果你知道你的代码要给别人看,你会不自觉的把代码写的更干净一点,多加点说明。其次,开源之后别人会建议怎么改(如果你的项目有一定影响力),给你建议的人多了,你也大概就有概念怎么把代码写的更好了。 2. 展示个人代码:如果你在找工作,这个很可能会是你的主要动机。公司实际上很好奇你写的代码质量如何,但是光从1个小时的面试实在看不出太多。所以很多公司会非常喜欢看你的开源项目,来评估一下你的代码质量如何。同样,如果你面试的时候告诉公司,“我有个开源项目,你们可以去看看”,这将是个不错的加分项。 3. 建立个人品牌:如果你足够厉害,把一个优质项目开源是个迅速提升影响力的好方法。很多在大公司工作过的顶级工程师,我们都是通过他们的开源项目认识的。git的发明人,Linus Torvalds,就是一个好例子。一个工程师如果在工作之外想要树立个人品牌的话,写一个高质量的开源项目是个相当好的选择。 4. 备份个人项目:其实很多人把项目放到Github的时候根本没想这么多。。。他们只是想把家庭作业,代码练习啥的备份到网上去而已。。。其实Github当中绝大部分项目都是这种实际没啥用的代码备份(只是Github没让你看到)。。 从自私的角度看,公司为什么要开源?
1. 树立品牌形象:公司与个人开源的动机不同。公司开源很多情况下是为了提升外界对公司的形象认知。任何一个大科技公司,肯定用了多多少少用了开源项目(Linux,至少吧?)。如果连一个开源项目都没有,这很容易给人造成,“这公司总是索取,却不回馈给开源社区”的形象(尤其在美国)。 2. 发掘潜在员工:比如,我读了谷歌的Android的代码,发现里面有个大安全漏洞,然后我提交一个修改把漏洞给补了。你说谷歌想不想拉起我去工作?很多公司一个很好的招聘渠道是开源项目的贡献者。如果能在公司开源项目做出有意义贡献的话,这个对于公司来说是比面试好很多的能力证明。 3. 实现额外功能:这点实际上很有意思,有的公司/项目实际上有很多想做的小功能,但是没时间也没人力去单独做。这个时候开源的力量就体现出来了,项目开源之后很多时候能吸引到开源贡献者来做一些自己感兴趣,项目想要,但项目没时间做的feature。我之前在http://Socket.io做的时候写的就是这样的一个小feature。 4. 扩大影响范围:公司开源项目的质量,很多时候能反映公司的影响力。所以硅谷的很多大公司,都有一些厉害的开源项目。一方面是回馈社区,一方面是展示公司的影响力和代码质量,吸引更多人才。同样,如果一个公司很希望自己的一个产品有更大影响力的话,开源是个好方法。苹果的Swift就是个好例子。Swift开源之后,能够用在不少iOS之外的领域。说不定之后我们还能看到用Swift写的网站架构。 5. 用作战略武器:开源项目还可以作为公司的战略武器。最好的例子就是谷歌的Android。通过开源和病毒式的传播一下追上iOS。这里面有很多弊端(比如碎片化严重),不过谷歌这么一招给了开发者十分大的力量,Android一下成为一个和iOS比肩的选项。


推荐阅读