他们是否可以协作根据新的用途添加一些特性。
讽刺的是,许多开源项目办公室并不经常直接使用其他公司开发的工具,或与其他公司合作来开发他们管理开源项目所需的工具。通常,他们想要这样做,但包括 Facebook 和微软在内的许多企业已经拥有现有的工具套件,这些工具套件在真正成为一个合作议题之前就已经实现。由于他们已经拥有了自己的工具集并进行了投资,他们似乎并没有很大意愿采用其他公司的工具。
这就是现在才刚开始构建自己的开源项目的公司具有显著优势的地方。由于他们现在正在建立自己的开源项目办公室并进入开源领域,因此他们不必为受到这样的限制而烦恼。
相反,他们可以聪明地利用别人的成功经验与失败教训,并利用近年来领先的公司所创建的成熟工具来构建自己的开源工具箱。 Linux 基金会的开源行业组织,TODO Group,一直致力于组装一个装满工具的 “Open Source Program Office in A Box” 入门套件,这将使公司能够通过一套紧密结合的预先组装工具开展开源工作。入门套件目前尚未开发完善,但希望最终可以让公司付出更少的初始努力,更轻松地部署和配置他们所需的工具。从事这个项目的 TODO Group 成员包括 Adobe、Capital One、Comcast、Facebook、谷歌、eBay、IBM、微软、三星和 Twitter。
创建一个仪表板
除了适当的工具之外,公司还应该有中央仪表板,以便他们实时监控和跟踪他们的开源项目和开发情况。许多公司可能已经拥有了用于现有开发工作和应用程序的仪表板,并且能够将现有仪表板与其开源工作整合在一起。否则,他们应该创建或采用新的仪表板来改进其开源部署的管理。
一个基本工具集的要素
正在出现越来越多的用于管理和报告开源项目的工具,这一趋势已经非常明显。如果您的开源项目刚刚开始,那么将您的研究集中在几个您启动和运行所需的基本工具上会更有帮助。
随着您的项目不断发展,以及使用这些工具的经验越来越丰富,您可以开始采用新的工具,来帮助自动化并简化您的流程,响应业务需求的增长。切记,新选择的工具将用于内部文化和流程的补充和支持——而不是引导它们。
以下章节列出了几个基本的工具类别,几乎所有开源项目日常使用的工具都可以划分到这些类别。这有助于您对该研究有系统性的认识。
自动化进程
自动化进程工具是您公司的开源项目中选择和使用的最重要的工具之一。这些工具的任务非常广泛,其中包括自动执行贡献者许可协议(CLA)的程序。贡献者许可协议(CLA)是一份按法律声明,声明开发人员创建了代码且不是从其他任何地方非法复制。传统上,这些协议是通过打印协议、签署并传真等一系列手动流程执行的。但在这如今电子邮件和即时通讯迅猛发展的世界里,显得不可思议。取而代之,现在可以用机器人实现自这一流程的自动化,通过使用电子签名,跟踪并处理提交的内容。
为满足公司的更多需求,自动化工具变得越来越庞大且规模化。它们可以准确地告诉您谁正在为您的项目做出贡献,并且可以帮助您消除那些减慢项目进度的程序摩擦。
据微软表示,在其开源项目办公室里,大约有 8000 个仓库在 GitHub 上托管,涉及约 11,000 名贡献者,而在 2016 年约有 40,000 个内部请求应用于开源项目。为了管理这些请求,以及所创建的代码和正在更新的代码版本,公司转而使用可以自动化解决混乱的工具。不仅如此,由于数百个项目中很可能会共用同一段代码,因此必须对其进行仔细跟踪,以便在出现安全错误时,可以快速绘制并修复所有的软件影响。在如此大规模的情况下,自动化非常关键,手动更新几乎是不可能的。
Microsoft’s Azure open source portal
管理关键任务
那些有助于管理关键任务的工具,也是需要考虑和获取的。例如用于项目管理、跟踪项目质量状况,以及确保开发人员、开源社区和其他公司内部人员之间的清晰且快速沟通的。
源代码管理
大多数通过开源项目办公室开发的企业软件项目都使用 GitHub 作为其集中托管和开发的平台。
GitHub 是一个在线源代码管理站点,它允许开源开发人员在一个中央“存储库”或存储空间中管理和存放他们的代码,参与者可以协作并开发他们的代码。如今,大约有 6400 万个开源代码项目在 GitHub 上托管,涉及大约 2300 万个开发人员。
GitHub 用户可以添加代码、查看已提交的代码、申请更改、获取并提供反馈,以及使用该服务提供项目管理。GitHub 使用 Git Version Control System[7],这是由 Linux 创建者 Linus Torvalds 开发的开放源代码项目,为代码和合作开源人员提供了组织机构。每位“贡献者”都有他们正在处理的项目存储库的副本,他们可以在自己计算机中的副本里进行更改,然后将其提交回项目以供未来纳入。然后,“拉取请求pull request”(示例[8])或代码贡献会被项目组织者审查、讨论、修改,最后批准或拒绝。
许可证合规
代码扫描和合规工具也很重要,它们有助于追踪代码起源和许可要求。关注被引入自身基础架构、产品和服务中的开放源代码以确保符合许可证的要求,对于公司来说是很重要的。
例如,您的应用程序可能包含数千个开源组件。为了保护您的公司免于法律纠纷,了解这些细节是至关重要的。在风险较高的情况下,用户必须根据其业务在风险谱中的所处位置,深入了解代码,从而深入地审核并验证他们所说的许可证。(请参阅我们关于使用和分发开放源代码的指南。)
“你必须了解你的风险状况,因为扫描最终是与风险管理相关的。你可以一头扎在沙子里,然后只管相信并期望你自己没事。或者你可以说‘如果我受到起诉,这将会破坏我的生意。’你需要非常确定。所以,你要打开包装,逐行查看代码,寻找可能存在其中的所有内容。”
Jeff McAffer[4] – 微软开源项目办公室经理
用于管理源代码的工具
如前所述,GitHub 是服务于目前大多数开源项目办公室的专业源代码管理系统。但是 GitHub 本身并不能满足项目代码管理的所有需求——特别是当您大规模发展的时候。
开源世界中所使用的一些