TensorFlow技术主管:团队如何管理开源项目

TensorFlow 技术主管在这篇文章中和我们分享了他们团队管理开源项目的经验。

开源不仅仅是把代码贡献出来然后希望有人来使用它。我也知道这一点,不过在成为 Google TensorFlow 团队的成员后,我才认识到围绕一个软件构建一个社区所需要考虑的因素实在是很多。

社区服务

当一个新项目发布出来时,该项目唯一的专家就是编写这个项目的人。他们是唯一可以撰写文档和回答问题的人,而且他们可以最有效地改进软件。因此,我们这些 TensorFlow 团队中的核心成员也成为了项目扩大的瓶颈:毕竟我们无法马上完成任何事情。我们知道如何编写代码和文档,因为这些任务是我们日常工作的一部分。但另一方面,回答大量来自社区开发者的问题不是我们应该做的事,尽管我们也知道这对于项目的成功至关重要。

为了保证用户可以获得所需要的答案,核心工程师团队的所有人都加入了轮流回答问题。团队成员可以选择解决 Stack Overflow 上带有 #tensorflow 标记的问题 、在 GitHub 上审查 pull requests ,分类  GitHub issues ,处理同步外部和内部代码或追查 测试失败 的原因。

通常,每个工程师每次对一个特定领域负责一个星期,以循环的方式轮流负责。因此,轮值的工程师在本周正常工作中的生产力会低很多,不过至少每个人工作被打断的频率降到了几个月一次。

Pull requests

我们开源 TensorFlow 部分的目的是希望通过社区的贡献来改进它。到目前为止,我们已经拥有超过 400 个外部贡献者添加了代码,从小的文档修复到大型的添加,如 支持 OS X GPU 、 OpenCL 的实现 或  InfiniBand RDMA 。首先,轮值的核心工程师必须对每项贡献都进行审查,以确定是否有价值。如果贡献通过初始审查,会触发一组  Jenkins 测试 ,以确保其不会导致任何故障。如果这些行为也通过审查后,值班的工程师可能会希望其他对这个领域更了解的工程师来看一看,所以这将会被转交给该专家进行审查。

GitHub 全新的详细的 代码审查工具 在这个过程中提供了很大的帮助;没有它们之前,处理所有的个人意见是一件痛苦的事情。通常,大的 PRs 会在工作中保持一段时间,核心工程师会和一个或多个外部贡献者协同工作,在大家都满意后,PR 将会在 GitHub 中被合并,然后在下次运行同步时合并到我们的内部代码库中。

代码许可协议

作为我们自动的 pull request 的一部分,我们会将贡献者的 GitHub 账号与我们在 cla.developers.google.com 上的记录相匹配,以确保任何的外部贡献者都拥有代码许可协议(CLA)。我们的目标是确保整个代码库可在 Apache 2.0 协议下准确无误地分发。当 pull request 的轮值工程师要对出现的所有问题进行整理时,如果一个 pull request 内部关联了不同的邮箱,或是贡献者需要以公司的身份登录,情况可能会变得复杂。

GitHub issues

目前已经有超过 5000 个 issues 提交到 TensorFlow,对于有些人来说,这看起来似乎有点让人沮丧。但这是我最喜欢的指标 —— 它说明了用户有在真正使用这个项目!为了确保能对每个提交的 issue 都进行回应,值班的工程师会时刻关注新出现的信息,并尝试使用标签对它们进行分类。如果是一个我们内部不太可能在短期时间内实现的特性,我们会将其标记为“Contributions Welcome(欢迎贡献)”,对于 bug,我们会尝试优先考虑。这段时间以来,随着外部用户自己也成了某些领域的专家,我们看到越来越多的问题无需我们的帮助也能够被解决了。特别是在像 Windows 这些我们不是每天都使用的平台上。

如果某个 issue 通过社区没能找到答案或者解决方案,而且它的优先级也比较高,值班工程师会将其分配给对这个领域更了解的工程师。整个 TensorFlow 团队都有 GitHub 账号,所以我们可以使用常规的 GitHUb issue 跟踪器来分配问题。我们考虑过把用户提交的 bug 复制到我们的内部系统,但为相同的信息同步两份副本的代价实在是太高了。因此,我们的工程师除了要关注内部的跟踪器之外,还需要打开 GitHub 上有人提交了 bug 的邮件通知,以便及时看到属于自己的分配。

Stack Overflow

Derek Murray 是 Stack Overflow 值班小组的负责人。我十分敬畏他回答问题的能力,根据他的 个人资料页 ,他发表过的帖子已经被超过 130 万人浏览。他还设法建了一个由 RSS 源驱动的自动化电子表格。开始的时候,我们每周轮流负责,但后来需要处理的问题的数量变得十分庞大,一个人难以处理。所以后来在轮流的基础上,我们采用了自动分配问题的方式来代替之前的做法。

用户喜欢...

TensorFlow实现神经网络入门篇

如果你一直关注数据科学/机器学习,你就不能错过深度学习和神经网络的热潮。互联网公司正在寻找这方面的人,而且从竞赛到开源项目,都有巨额奖金。 如果你对深度学习所提供的前景感...


技术牛逼也要懂点社交:数据科学家公司生存指南TOP30秘诀

作者:SeattleDataGuy 数据科学家老司机的30个经验之谈,教你如何在公司内获得认同,带你绕过他们曾经踩过的坑。 作...


20个数据可视化工具点评

第一部分:入门级工具 1.Excel Excel的图形化功能并不强大,但Excel是分析数据的理想工具,上图是Excel生成的热力地图...


商机 | 大数据/政务云采购清单 招标7起,最高招标价为2089.41万(9.2-9.5)

文 | 36大数据 奥兰多 一、政府、企事业单位大数据/政务云中标成交清单,一共8起,最高成交价为1388.89万 二、政府、...


华为轮值CEO郭平:将长期投入公有云 不靠用户数据变现

作者:郭晓峰 在今日举行的华为 2017 全联接大会上,华为轮值 CEO、副董事长郭平表示,华为承诺长期投入公有云建设...


大数据让人开始怀疑人生

《 大数据时代》,维克托·迈尔·舍恩伯格、肯尼思·库克耶著,盛杨燕、周涛译,浙江人民出版社 一年多前听说了...


在 Airbnb 使用机器学习预测房源的价格

作者:Robert Chang 位于希腊爱琴海伊莫洛维里的一个 Airbnb 民宿的美好风景 简介 数据产品一直是 Airbnb 服务的重要组成...


「数据爆炸」预示着网络舆情分析也正式步入大数据时代

随着计算机技术和人工智能的不断发展,大数据时代的网络舆情分析备受关注。目前,在网民数量直奔8亿的大环境下...


MongoDB数据库遭大规模勒索攻击,被劫持26000多台服务器

刚刚曝出的大新闻,MongoDB数据库叕被攻击了。就在上周末,三个黑客团伙劫持了MongoDB逾26000多台服务器,其中规模最...


大数据处理框架的类型、比较和选择

前言 说起大数据处理,一切都起源于Google公司的经典论文:《MapReduce:Simplied Data Processing on Large Clus...


七牛大数据平台的演进与大数据分析实践

图 1 大数据生态体系 看着图 1 大家可能会感到熟悉,又或者会觉得部分有些陌生,这是一张汇集了目前大数据生态下...


HiTSDB 时序数据库技术架构和产品解析

作者:场景研读 摘要: 8月24日阿里云数据库技术峰会上,来自阿里数据库事业部高级专家钟宇带来HiTSDB 时序数据库...


通过数据分析提高企业销售成功率,GetAccept获160万美元种子轮融资

GetAccept的联合创始人Mathias Thulin非常熟悉销售们面临的一个个常见问题:他们和潜在客户聊得非常好,也能马上用邮件...


大数据早报:谷歌重返中国组建团队 天猫发布大闸蟹消费趣味数据报告(9.5)

数据早知道,上36dsj看早报! 来源36大数据,作者:奥兰多 『谷歌』谷歌重返中国组建团队? AI项目在中国开启招聘...


深度学习可视化工具大盘点

深度网络对机器学习研究和应用领域产生了巨大的影响,与此同时却无法很清晰地解释深度网络的来龙去脉。人们一...


数据中心基础架构标准化能否彻底改变超大规模IT部署?

作者:武晓燕 在日益紧密联系的经济发展中,IT基础设施正在进行重大改造以满足行业需求。 随着日常负载需求的增...