facebook 开源

以下是詹姆斯·皮尔斯 ( James Pearce )的部分抄录 OSCON会话在Facebook重新启动开源 。


数百年来,开放已胜过封闭—共享已胜过保密。

以一种谦逊的方式,这通知了我们Facebook的程序。 我们在Facebook上有200个活跃项目,提供了1000万行代码。 有数百名工程师从事这些工作,拥有超过100,000个关注者和20,000个分支。 我们为广泛的项目做出了贡献(即kernel , mercurial , D等)。 我们甚至在开放计算机项目中开源了数据中心和机器的设计。 我们希望分享在此过程中学到的东西。

为什么这个这么重要?

开源是对宿舍友好的原因。 我们的根源可以追溯到2004年的一个年轻的大学生,他们选择了可用的FOSS(免费和开源)软件,即经典的灯管。 我们参与社区建设更美好生活的能力已经增强。

当我们找到一块开源软件(OSS)时,我们首先尝试对其进行扩展,然后找到一个项目的局限性。 因此,我们尝试改进它们并使它们在扩展的环境中工作,并且我们看到这种模式反复发生。 马克(Mark)使用PHP的决定有局限性。 我们构建了HipHop“编译器” HHVM项目,甚至最近,PHP增强语言Hack于三月发布。 数据,Web,基础设施,前端以及我们所有的技术堆栈。 它与我们的黑客文化以及组织的看法紧密相关。 我们问我们的员工...

“您知道Facebook上的开源软件程序吗?”

  • 2/3说“是”
  • 1/2表示该计划他们为我们工作的决定做出了积极贡献

这些不是边际数字,我希望这种趋势会持续下去。

这些人中有很多人说,他们在公开场合使用我们的项目的经验有助于他们在被雇用之前得到提升。 对于我们公司而言,这是一个巨大的胜利。

这就是为什么开源对我们公司有价值的重要部分。 而且您需要能够阐明其价值。

#0:始终清楚地说明FOSS为您的公司带来的价值

总会有成本和投资,因此请了解您的回报是什么。 天真的意识形态仅此而已,您需要数据来支持延续性。 我们相信它可以帮助我们做得更好。 它可以帮助我们保持技术的新鲜度,合理的架构决策,使更多的人关注我们的代码。 开源就像打开的窗口中的微风。 它可以防止事情过时。

但是,如果您将时间倒回一年,将会发现此three20项目已中止……我们PHP SDK……已弃用。 我们的Memecache分支,带有“测试”的描述,并提交“ 5”,“ 6”和“ 7”的消息...

*观众笑声*

这就是“丢墙”综合症。 我们犯了这一点,我很伤心地说,这是几乎比所有没有这样做更糟。

您需要继续关心发布的内容,或者您​​如何期望其他人关心它们?

#1:使用自己的开源

继续使用您发布的版本至关重要。 不要创建内部派生,请保持代码新鲜,继续使用它。 社区会通知您是否这样做。 吃自己的狗粮。

有时,您必须在内部将开放源代码与封闭/专有工具集成在一起。 通常,这意味着您创建插件或适配器,并做出使您的项目更好的体系结构决策。 Presto ,我们需要它与开放数据库和内部数据库集成。 我们拥有强大的插件架构,用于开放数据库的插件,然后用于内部组件的插件。

但是,去年我们的表现不佳。 我们决定更新我们的团队,使我们的房子井井有条。 当时,我们的网络团队在JSConf上开源了React 。 在过去的几年中,React是Java语言界最激动人心的项目之一,并获得了社区的强烈反响。 它提醒我们在Facebook上,我们知道如何开展出色的项目。 该倡议来自开发人员本身。 内部没有促销团队。 他们直接来自工程师。

#2:分散项目所有权

确保工程师是唯一的托管人。 外部工程师直接与内部工程师合作。 没有整体结构。 当我们查看重新启动时,我们需要弄清楚我们已经拥有了什么,并使投资组合得到控制。

我们需要回答3个关键问题:

  1. 我们拥有哪些项目?
  2. 谁来贡献?
  3. 他们健康吗?

大多数人在Github上 。 Github当然具有出色的 API ,因此我们编写了一个脚本(以hack的方式)来访问和枚举项目,并获得:

  • 每个仓库
  • 每次提交
  • 每个拉动请求
  • 每期

因此,我们存储了所有这些数据,并将其放入MySQL中。

我喜欢Github,但是我发现使用SQL过滤正在发生的事情更加容易。 我们找到了一些要解决的问题。 我们意识到我们可以一次又一次地执行此导入过程,并查看趋势如何随时间变化。 我现在是Github API节流机制的全球专家之一,我们已经使其运行非常高效。 所有这一切都是为了实现两件事:检测和发布。

#3:投资仪器

现在,我们有了时间序列数据,可以创建指标。 这是阿格斯(Argus),它显示了一段时间内观察者的总数。 多达100,000个关注者,并且每分钟进行轮询,我们可以随着时间的推移进行监视,并且可以找到GitHub没有的拐点。 我们启动了一个名为Shimmer的iOS库,然后对其进行了调整,然后可以在投资iOS社区后看到这些激增。 能够监视和发布数据以及进度,这表明我们受到纪律处分,并且可以通过经验数据获得尊重。

我们遵循超过35个指标。

五个最重要的指标:

  • 平均追踪人数
  • 每个存储库的叉数
  • 平均拉取请求年龄
  • 平均发行年龄
  • 外部提交次数

#4:投资工具

主要在内部,以帮助团队运行项目。 这些是内部仪表板,公司中的每个人都可以看到。 每个人都知道我们在内部遵循的指标。 在所有项目上都有“大”视图,哪些项目运行良好/不好,您可以向下钻取并查看每个项目的所有者。 员工定义明确,可以直接分配任务。 我会为他们带来麻烦,而且,如果他们离开了(就像龙卷风一样),我们可以为该项目找到新的管理人员。 对于龙卷风,我们将所有权转让给了社区。 我们有工程师通过oAuth将其Facebook个人资料与Github个人资料相关联。 然后,我们可以跟踪谁做出了贡献,无论是内部贡献还是外部贡献。 此工作流解锁了有关正在发生的事情的大量有价值的数据。

#5:建立所有权

不要让项目成为孤儿,也不要随风飘扬。 我们可以显示范围适用于项目或团队的图表/指标。 各个团队通常会为自己设定季度/学期目标。 社会压力可以帮助项目做好。

#6:良好行为的游戏化

我们现在有团队竞争。 React和iOS pop项目的追随者数量大致相同,要想获得最多的追随者,还需要进行一些太空竞赛。 在没有直接管理项目的情况下,您可以影响项目。 我们不希望工程师与律师打交道,浪费时间。 我们希望他们有纪律地做到这一点。

  • 这项技术对Facebook来说有多核心?
  • 谁将使用它,对谁有用,它有多有价值?
  • 还有什么类似于该技术的东西?
  • 该项目中有什么新颖的东西吗?
  • 是否包括第三方,包括第三方开源?
  • 谁来维护项目,接受捐助并与社区联络?
  • 项目应在哪里/如何分发?
  • 什么是公开发布日期?

我们有一个非常强大的许可模板,我们坚持使用BSD,偶尔使用Apache或Boost,而我们看其他许可的唯一原因是目标社区具有使用该许可的强烈文化。 我们不会强加社区不熟悉的许可证。

#6.5:明智地选择律师

我们有一个linter来确保许可证标头都存在,并且一切都很好,放在私有存储库中。 然后,我们在周中发布该消息,发布推特,进行Facebook开源社交媒体爆炸,然后将其发布到代码博客。 然后社交媒体的魔力开始流行,第一天我们就获得了良好的发展势头。 我们内部有600-700名对FOSS感兴趣的员工。

每个星期五,马克都会在下午4点召集所有人进行问答。 在会议开始时,Mark谈论了新的应用程序/产品/版本。 他已经在这些会议上宣布了我们的OSS项目,您只能想象这是多么的激励人心。 知道首席执行官知道一个项目,然后将其宣布给整个公司。 很多来自基础架构团队,这对他们来说是一个巨大的推动力。 在Mark谈论它们之后,我的兴趣激增。

#7:启动仅是第零步

您必须知道如何继续使其成功。 我看一下随着时间推移的追随者数量。 我们可以看到第一周的兴趣突飞猛进,并且随着时间的流逝逐渐倾斜。 这是下半部分的梯度,而不仅仅是第一天的情况。

一些特殊情况:

  • fb-flo和折纸打破了这一曲线; 在JavaScript会议上发布了flo,使他们的社区增加了两倍。 面对面的公关极大地促进了FOSS的成功
  • KVO控制器每两周间隔一次,每次会议后都有强劲的增长。 实践使完美
  • 我们的高潮是Pop的发行,这一切都吹走了。 第一天有4,000位追踪者,第一周有6,000位追踪者,而现在已经超过7,000位追踪者

显然,我们从声誉中受益,但是成功是建立在先前iOS项目的成功之上的。 Pop发行前已进行了两个星期的内测。 走出大门,我们有一个强劲的回升。 我们的内测版是最佳拥护者,有助于早期成长。 iOS社区的React很强烈。

我们鼓励大型项目拥有自己的网站。 我们的设计团队已为折纸建立了完整的网站。 它显示了您的关心,并照顾了您的项目。

我们有IRC,Facebook组/页面,聚会和黑客马拉松。 一切都很重要; 而且一切正常。

我们有一种技术,称为社区综述。 React.js团队将收集所有提及,所有项目,所有演示/演示,然后将其显示给社区的其他成员,而不仅仅是在Facebook上。 这提供了额外的真实性。

外部提交的前几周至关重要! 在第一天,您将获得大量的PR,大部分都是文档中的错字修复。 这不是一个错误,它表明人们感到自在。

#8:留下面包屑

文档,未实现的功能,待办事项。 随着项目的进行,他们改变了命运。 有很多路径:快照,上游,Flythenest,弃用,重新引导。

快照:通常是只读的学术练习; 创建许多以获取上游FBThrift就是一个很好的例子

上游:我们与Twitter和Linkedin合作,在WebscaleSQL的上游进行更改

Flythenest:项目继续成为“它是自己的东西”; 我们的一些主要项目将具有此功能,然后我们最终将像其他所有人一样成为“只是用户”

弃用:项目达到了有用的目的并完成了

重启:项目重新开始

#9:了解OSS项目生命周期

在过去的几个月中,我们启动了65个新项目。 每周大约有2.5个项目。 它更多地是关于质量而不是数量,但是每个都有一个目标。 这是各种类型的项目; 移动,基础架构和编程语言。 一切都很广泛。

指标 2013年六月 2014年7月
Total Repos 129 202
Followers 50.1千 97.6千
Forks 11.8千 20.7千
Pull-requests 1400(502天) 1973(208天)
Issues 404(323天) 427(186天)
Commits 30.7千 42.4千

#10:打开并连接

今天很高兴与您分享我们的旅程。

问:在Facebook许可证中,它看起来像“更多信息”。

答:简单明了的BSD许可证和专利授权。 我们为开发人员提供了专利授权,与Apache许可中的授权相同。

问: Facebook是否有贡献者许可协议(CLA)?

答:我们没有CLA的幻灯片,但基本上是Apache CLA。 正是这样的用户,才由外部贡献者来贡献。 然后,我们有一个机器人来进行Github身份验证。 与Google / Apache进程完全相同。

问:我们是否开源了GitHub脚本?

答:我知道有人要问这个! 我们将尽快分享其中的大部分内容。

你的背景是什么?

Name: 詹姆斯·皮尔斯
Title: 开源计划负责人
Twitter: @jamespearce
Link: code.facebook.com/projects

在技​​术行业工作了多年,主要是在移动领域。 研究早期的早期移动技术,当时称为“ WAP” 。 我一直在等待它成为下一件大事,终于有了。 大约三年前,我加入了Facebook,致力于移动开发人员关系,并讨论应用程序集成。

当涉及到开源软件时,它是偶然的。 我们看到它需要爱,而我在这里。 我一直在学习很多东西。 我们尝试联合尽可能多的活动,并使其尽可能轻松。 我们的状况比以前要好,但是还有很长的路要走。 我们有很多项目,但我们想做更多的事情,与更多的社区合作,并想更多地考虑我们如何随着时间的推移提供管理。

我们如何在手机上做更多的事情? 我们在Android中提供了很多功能 ,我们希望继续尽可能高效地运行该程序。

人们如何参与其中?

查看我们的职业网站 。 我们所有的开源项目都在GitHub上 ,我们很友好,当人们发送请求时我们会做出响应。


Remy Decausemaker的此衍生作品已获得知识共享署名-相同方式共享4.0国际许可 。

翻译自: https://opensource.com/business/14/10/head-of-open-source-facebook-oscon

facebook 开源

facebook 开源_Facebook开源主管开放相关推荐

  1. facebook 开源_Facebook和Google的新消息,CPTPP的潜在开源影响以及更多新闻

    facebook 开源 在本期开放源代码新闻摘要中,我们将介绍来自Facebook和Google的新开放源代码,CPTPP危害开放源代码,开放源代码流量管理等的潜力. Facebook和Google发 ...

  2. Facebook背后的开源力量

    尽管Google极其推崇开源,并推出大量的开源项目,但是从根本上来看,Google的开源力度.开放程度远远比不上Facebook.这也是为什么Facebook能够在短短的几年间,一跃成为全球最大的社交 ...

  3. 第八届开源中国开源世界高峰论坛--开放.互联.移动的新时代

    第八届开源中国开源世界高峰论坛--开放.互联.移动的新时代,详情看以下网址:http://ocow.csdn.net/ "2013年度中国优秀开源项目评选"火热进行中 http:/ ...

  4. 共享开源技术,共建开放生态丨平凯星辰余梦杰出席 2022 世界互联网大会开源论坛圆桌对话

    2022 年 11 月 9 日下午,2022 年世界互联网大会乌镇峰会开源技术生态创新发展论坛成功举办.论坛由中国科学院主办,中国科学院软件研究所.中国科学院计算技术研究所.浙江省互联网信息办公室等单 ...

  5. 整合开源治理经验,共谋开源社区发展|2023 开放原子全球开源峰会开源社区治理与运营分论坛即将启幕

    在数智时代广泛连接.同步演进和网状协作特性的催化下,开源社区正在成为技术应用和行业数字化发展的重要推动力量.开展数字技术开源社区的有效治理,对调和相互冲突的内外部需求.协调相互竞合的参与主体.整合差异 ...

  6. 展望开源产业与数字经济未来|2023 开放原子全球开源峰会开源创新理论与实践分论坛即将启幕

    开源创新社会实践催生伟大的理论,也需要伟大理论的指导.在这个数字化和信息化高速发展的时代,开源技术已经成为推动科技进步和创新的关键力量,仍在不断创新迭代的开源理论及其实践更是深刻影响着与开源行业深度绑 ...

  7. 推进开源法律知识普及|2023开放原子全球开源峰会开源法律与合规分论坛即将启幕

    随着开源在推动创新.促进协作方面的作用日益凸显,开源领域的法律与合规问题日益受到关注. 6月11日,开放原子全球开源峰会开源法律与合规分论坛将在北京经济开发区国家信创园召开,论坛以"开源知识 ...

  8. [转]Facebook的c++开源库folly介绍

    揭秘Facebook官方底层C++函数Folly Facebook近日公布了其官方底层C++函数Folly,Folly(该缩略语表示Facebook开源代码库)其实是C++11组件库,这些组件在设计时 ...

  9. 推动开源与商业共生共赢 | 2023开放原子全球开源峰会开源商业化创新发展分论坛即将启幕

    开源具有利他性,专有软件或私有软件具有利己性,而开源的商业模式也具有利己性.利他性的开源与利己性的商业模式相结合,如何真正为开源做贡献? 由开放原子开源基金会主办,软通动力信息技术(集团)股份有限公司 ...

最新文章

  1. 2020年「21篇」医学影像算法最佳综述
  2. (最简单)小米MIX 2S的usb调试模式在哪里开启的流程
  3. vue设置ioc图标和title
  4. ORM 和 JDBC有何不一样
  5. 360无痕浏览器_浏览器如何开启老板键?
  6. 用户二次登陆,干掉第一次登录的session
  7. Django 3.2.5博客开发教程:用Admin管理后台管理数据
  8. Docker教程-文件传输
  9. 【读书笔记《Bootstrap 实战》】2.作品展示站点
  10. 一致性环Hash算法.NET实现
  11. SQL 查询数据库中包含指定字符串的相关表和相关记录
  12. php xml表格形式输出,PHP XML如何输出nice格式
  13. java调用dubbo服务器_dubbo源码分析-服务端注册流程-笔记
  14. Ubuntu下将dash装换成bash
  15. Unity中提升像素字体清晰度
  16. Illustrator 教程,如何在 Illustrator 中裁剪、分割和修剪作品?
  17. [转]数据恢复 文件恢复工具 DiskGenius v4.9.1 绿色专业版及单文件
  18. 局域网屏幕监控软件_实验14:局域网监控软件的应用
  19. Flutter之Pigeon插件与Android通信使用指南
  20. 【解决问题】在jupyter notebook上用 pandas_datareader 获取 yahoo 数据

热门文章

  1. 企业级SpringBoot教程(十一)springboot集成swagger2,构建Restful API
  2. #20165323 Java实验四 Android程序设计
  3. BZOJ3653 洛谷3899:谈笑风生——题解
  4. Redis能干啥?细看11种Web应用场景
  5. [Winform]只允许运行一个exe,如果已运行则将窗口置前
  6. Linux学习命令总结个人及个人心得
  7. 高并发异步uwsgi+web.py+gevent
  8. Linux软件安装为什么名字不一样
  9. Criteria和DetachedCriteria区别应用
  10. Cheggit解析器模块分析