Brandon Keepers 是 GitHub 的开源主管。他认为开源是构建产品的基石。在 All Things Open 大会关于 使用开源原则构建更优秀的工程团队 的演讲之前,我采访了 Brandon。
我不仅询问了他的演讲本身,还询问了他在 GitHub 的工作。Brandon 分享了关于开发者面临的约束以及他们如何通过透明度、参与和协作来解决这些约束的一些有趣的见解。
你能否介绍一下你自己以及你是如何参与开源的?
我领导 GitHub 的开源工作,帮助 GitHub 成为更好的榜样,帮助公司和社区克服开源方面的障碍,并寻找我们可以扩大其他社区努力的方法。我之前曾在 GitHub.com 的各个部门担任工程师,例如 GitHub Flavored Markdown、通知、维基和其他内部工具。在我们于 2011 年被 GitHub 收购之前,我是一个五人团队的成员,该团队构建了 speakerdeck.com、gaug.es 和 harmonyapp.com。
感谢许多伟大的导师和榜样,开源从一开始就对我的软件开发者成长至关重要。我学习使用开源语言编程,使用开源库和框架构建应用程序,并爱上了开源流程,将其作为创建优秀软件的典范。
担任 GitHub 的开源主管意味着什么?你平均一天的工作是怎样的?
GitHub 是世界上大多数人协作开发开源软件的地方。我的目标是确保我们不辜负这一责任。我们聚集了一个来自公司各部门的团队,旨在为我们的开源工作带来全面的视角。我们特别感兴趣的是通过降低参与门槛、帮助社区变得更加欢迎以及增加开源的多样性,使采用和贡献开源变得更容易。
你通常会发现我正在计划或参与项目,编写代码来自动化流程,与社区成员会面以了解更多关于 GitHub 如何帮助他们的信息,或者准备和参加会议。
你们使用 GitHub 来构建 GitHub。这是为了理解和改进为用户提供的服务吗?
使用 GitHub 构建 GitHub 一直是一个巨大的优势,并使我们能够创建一个被超过 1000 万开发者使用的平台。我们还必须 постоянно 意识到并非所有人的工作方式都相同。GitHub 被非常多样化的受众使用;拥有单一维护者的开源项目、拥有共同目标和抱负的大型社区、具有冲突社会结构的群体以及拥有数万名开发者的企业每天都在使用 GitHub。我们必须考虑到我们自身的偏见如何影响我们所创造的东西。我们希望使开发者能够构建最好的软件,无论他们如何工作或他们的外貌如何。为了实现这一目标,我们正在建立一家极其多元化的公司,利用研究来更多地了解人们如何使用我们的产品,倾听我们从客户那里获得的反馈,并将我们所学的关于如何构建优秀软件的知识应用到实践中。
GitHub 的工程师是否必须理解开源原则?他们是否将这些原则应用于构建 GitHub?
GitHub 诞生于开源社区,并且对我们工程团队的工作方式产生了巨大的影响。我们力求在所有流程中保持透明,因此我们只需观察彼此的工作即可学习。无论是对 Pull Request 进行代码审查,还是将更改部署到系统,还是诊断生产中的问题——任何想学习的人都可以看到这一切。
我们尽可能大量地使用自动化,主要是通过 ChatOps 和我们的可定制聊天室机器人 Hubot。我们使用 Hubot 将代码部署到生产环境,找出我们的一位同事在世界上的哪个位置,诊断最近在 GitHub.com 上发生的错误,或者我们每天做的其他数千件事。公司中的任何人都可以编写和部署脚本来教 Hubot 新的技巧。
所有这些都保存在档案中,因此我们可以从问题或失败中回溯,并学习如何在未来预防它。与开源软件本身一样,我们 постоянно 学习和调整我们的工作方式,然后以文字或代码的形式记录下来。
哪些具体的部分、理念和工作流程可以用来构建更优秀的工程团队?
开源流程已被证明擅长于生产可以由世界各地的许多开发者构建、维护和调整的系统。但是开源社区必须接受某些约束:它们在地理上和时区上是分布式的。他们很少能享有高保真度的沟通,例如走廊谈话、面对面会议,甚至聊天或即时消息。他们通过改变沟通方式来解决这些“约束”,这带来了巨大的好处
1. 透明度 - 不仅开源软件可以供任何人免费检查,而且代码产生的过程也是如此。沟通发生在允许任何人订阅的媒介中,无论角色或地理位置如何。
2. 参与 - 对信息和流程清晰度的承诺消除了“部落知识”,创建了共同目标,并使任何人都可以参与。
3. 协作 - 一个旨在允许任何人参与的系统自然会导致大规模协作。
这些原则得到了工具和工作流程的支持,这些工具和工作流程已被证明可以生产出既适应性强又具有弹性的软件,无论该软件是一个完整的操作系统、一个小实用程序还是一个企业应用程序。
关于你的演讲,你还有什么最后想说的吗?也许对 GitHub 上的维护者和贡献者有什么建议?
我们今天交互的几乎每一件软件都在某种程度上使用了开源代码和工作流程。从构建它的编程语言和库,到它运行的服务器,到传输数据的网络,再到用于访问它的设备或 Web 浏览器。开源已成为现代软件开发的基础。
在《开源的成功》一书中,Steve Weber 说:“蒸汽机是第一次工业革命背后的金属;但革命是一套关于组织工厂、有限责任公司、工会和日报的想法。” 软件可能是驱动当前技术革命的蒸汽机,但塑造开源社区的想法将比它产生的代码产生更深远的影响。
我们通过观察世界上一些最好的软件是如何编写的,从而成为更好的软件开发者。开源已经并将继续改变世界构建软件的方式,不仅通过创建高质量的可重用组件,而且通过为我们提供一个如何生产更好软件的典范。开源为我们提供了该流程的完全透明度。
演讲者访谈
本文是 All Things Open 演讲者访谈 系列的一部分。 All Things Open 是一个探索企业中的开源、开放技术和开放网络的会议.
评论已关闭。