微信号:infoqchina

介绍:有内容的技术社区媒体

开源|Facebook开源的真正原因

2015-08-03 11:38 曹知渊

在OSCON的第三天,来自Facebook的James Pearce带来了一场主题演讲,我也有幸在场。


Pearce解释了Facebook为何大规模开源其软件。他告诉我们,Facebook每个月都会发布数个开源项目,并且有数百个工程师会持续地支持这些项目——他们参与全世界的各个开源社区,改进软件的体验。


但是,Facebook究竟为何要使用、支持和发布开源项目?这个问题比探究Faceboot如何做开源更有意思。


Pearce大可以带我们回顾一下历史性的那一天,Mark Zuckerberg坐在宿舍房间里,选择了LAMP作为Facebook的基础;他大可以跟我们说说Facebook的黑客社区;他也大可以侃侃Facebook所感受到的社会责任,但他没有这么做。这些都是真的,但都不是这家公司走上开源之路的真正原因。


真正原因到底是什么?对公司有利,仅此而已,Pearce说道。

他的这个论断,一般人可能难以得其要领——我整个教学生涯也一直为这个问题所困扰——但Pearce提出了以下几个很棒的理由来解释从事开源的原因:


共享Facebook的代码(通常是软件“栈”,偶尔也包括硬件设计)促进了这个世界的创新。这些代码帮助他人更快地开发软件。因为Facebook不是一家软件公司,所以它在开源过程中没有面临竞争对手的威胁,相反,开源带来的价值在逐渐显现。用户使用Facebook的开源代码可以更快地构建应用,而他们也乐于回馈代码,使Facebook从中受益。


拥抱开源,意味着Facebook必须一开始就写出更优秀的软件。如果他们知道某个软件从诞生起就要公开,那就必须要好好做,提高可用性和可靠性,因为将来外面的人都会用它。这种压力也会给公司内部带来更多的价值。


开源带来了共享挑战的机会。开源项目面临的难题会吸引一些外部的优秀人员,而结果是,他们也带动了公司内部人员的能力提升。每天Facebook都承载了超过一亿人的沟通互联,何以能做到?唯有开源的力量。


Facebook的GitHub账户有274个代码库,收到了39000次fork、提交了79000个commit,并且拥有242000个关注者。他们开源的这些项目可不是黑客聚会上随便想出来的点子,或者实习生练手的代码。这些工具都是Facebook在产品中使用的。Facebook 只会拿他们真正在用的代码来开源——这样,人们才会相信Facebook提供的代码有价值,并且会得到持续的维护。仔细审视这些产品,Facebook的工作方式就会在你眼前呈现。


Facebook的开源办公室只有两个员工,所以开源项目团队的工作必须高效,他们需要自己去收集数据来判断项目的当前状态。他们大量使用GitHub的API去获取尽可能多的数据,每分钟都在获取。然后他们把这些数据收集起来实时地共享,并且每个月会做个月报。这给工作带来了些许刺激的趣味,开发人员们可以互相竞赛,看谁的项目表现更好。尽管被成功的光环笼罩,Facebook总是力求做得更好。这就是为什么Facebook要加入ToDo,这就是为什么Facebook要参加今年的OSCON。


投稿请联系:lillian@infoq.com

版权归属InfoQ,禁止私自抄袭转载。

回复关键词React | 架构师 | 运维 | 云 | 开源 | 物联网 | Kubernetes | 架构 | 人工智能 | Kafka | Docker | Netty | CoreOS | QCon | Github | Swift | 敏捷 | 语言 | 程序员



有话想说?!戳“写评论”👇

 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 敏捷破冰之旅(三) 再议携程Android动态加载框架DynamicAPK 浅析Python装饰器 我们需要更多的程序员,而不是更好的工具 给初学者的 6 个 Android 加密工具