企业开源指南:创建一个开源项目

2019-04-07 12:11


最大限度优化组织中运行开源计划或启动开源项目的实践。这些资源由 Linux 基金会与 TODO Group 合作开发,代表了我们的员工、项目和成员的经验。

开源项目办公室是支持、培育、共享、解释和发展开源代码的特定场所。这样的办公室可以帮助企业明晰创建和执行开源项目的战略,成为保障领导、开发者、营销人员和其他员工成功运营开源项目的工具。

(注:此处的“开源项目”,英文是“opensource program”,并非我们常理解的一个具体的开源软件的项目project,而是指一系列的计划、流程组成的项目集。在阅读下文时请注意。)

本指南旨在帮助您了解为何以及如何建立管理公司内部开源代码的创建和使用,并阐述开发者是如何为运营外的开源项目做出贡献。本指南涵盖开源项目办公室的多个话题,如:角色和职责、公司结构、开源项目管理要素,以及如何选择、聘用开源项目管理者等内容。

本指南的撰稿人

  • Chris Aniszczyk - Aniszczyk 云原生计算基金会首席营运官
  • Jeff McAffer - 微软开源项目办公室主任
  • Will Norris - 谷歌开源办公室经理
  • Andrew Spyker - Netflix 容器云经理

为何要创建开源项目办公室

如今,开源软件广泛运用于各行各业,覆盖零售业、金融业以及汽车行业等多个行业。然而, 这些公司的领导者和决策者并不能完全理解如何运营。

其中关键问题在于,当企业的发展遵照传统商业计划运营和发展时,开源软件可能成为企业发展的阻力。开源创新有独立的方法论,并不遵循传统业务流程。开源别具一格之处在于开发的协作性,传统的软件和商业实践是封闭的竖井式。对许多企业而言,使用开源软件这一转变并不能像理论讲述的轻而易举。

这便是创建开源项目open source program的优势所在。通过创建开源项目办公室open source program office,企业可以通过直接与公司长期业务计划相关联的方式启用、简化和组织开源项目的应用。开源项目办公室就会成为公司开源运营与架构的核心,汇集所有开源所必需的组件。

开源项目办公室可以进行设置代码的使用、分发、选择、审计和其他相关政策,同时还可以培训开发人员、保障项目合规性,并建立和提升社区参与度。该办公室还可以负责公司对内、对外所有开源资源的宣传和交流。

“开源项目办公室是目前所有公司的重要组成部分,它的扩张计划符合当前形势,足以影响软件生态系统中的各个部门。如果一家公司想要增加其影响力、净化开源消息传递渠道、最大限度地发挥项目影响力,或提高其产品开发效率,那么多样化的开源项目解决方案至关重要。“

John Mark Walker – 开源企业家网络(OSEN)创始人

开源项目办公室的角色

一个完善的开源项目办公室始终是有价值的。它有利于促进企业内部开源的使用、贡献和创新,帮助企业获得战略优势。

一个成功的开源项目办公室可以通过建立有效的流程支持开发者及其团队,为企业的开源带来巨大收益:鼓励代码标准化与最佳实践、流程和工具集。同时,创建开源项目办公室还可以避免或消除创新开发者可能绕过或忽略的不必要的刻板流程,以免威胁项目的安全和其他方面。

开源项目办公室的职责是多样化的,具体包括:

  • 明确公司内外部的开源策略
  • 掌握并监督战略执行
  • 促进商业产品和服务中开源的有效使用
  • 确保代码向开源社区的高质高频发布
  • 与开发者社区合作,了解公司对其他项目的有效贡献
  • 在组织内部形成开源文化
  • 维护开源许可合规的审查和监督

对于每家公司而言,开源项目办公室的角色可能会根据业务、产品和目标存在定制化配置。目前,并不存在创建开源项目的通用模板——甚至没有可以应用于某一行业各个公司的模板。这使创建开源程序具有挑战性,但您可以借鉴其他公司的经验,总结规律满足自身创建开源项目的需求。

“没有普适的万能模板。我不能站在大家面前说,你们都应该这样做。‘”

Jeff McAffer – 微软开源项目办公室主任

过去几年,微软一直致力于创建和完善自身的开源方式。微软拥有来自各业务部门,数以万计的职工,公司专设开源项目办公室,为开发者、营销团队,以及其他参与云服务、硬件与软件产品、游戏、内容、媒体及其他产品线的开源项目人员提供帮助。开源项目办公室需要针对各部门不同的单独业务模式和参与情景提供不同的帮助,因此无法使用相同的模式为所有部门提供服务。

开源项目办公室的一个关键角色是,当业务部门开始将开源纳入考虑中时,为这一讨论提供依据和帮助,保证充分理解考虑开源的重要性和开源的影响,以及开源的目标。这通常是一个构思谈判的问题,以便股东们可以在权衡利弊时知道从何入手和考虑方向。

开源项目办公室也可以成为开发者和开源社区用户间解决问题、理解需求的重要联络人。开源项目办公室可以协助解决法律问题、为开发者提供支持,并反馈公司开源项目外部用户的使用情况。开源项目办公室还可以协助向公司内部其他人员传递信息,包括产品管理团队,以进一步完善代码。此外,开源项目办公室正在聘用越来越多的专业开发者,保障他们的开源项目可持续发展。

关系/合作

  • Linux 基金会
  • 开源发明网络
  • 软件自由法律中心
  • Mozilla 基金会
  • GNOME 基金会
  • 自由软件基金会
  • Apache 软件基金会
  • 软件保护中心

开源法律合规:

  • 管理和支持开源合规流程
  • 关于开源合规的建议
  • 帮助解决合规性问题
  • 提供指导方针和清单
  • 跟踪新兴的开源法律问题

战略、社区和参与:

  • 开发、维护和执行企业开源战略和政策
  • 企业内外部的福音
  • 在内部政策讨论中代表开源视角
  • 启动新的开源项目并支持发布内部代码
  • 开源活动的赞助、发布和发言
  • 组织开源社区活动
  • 展开并提供内部开源培训
  • 提供工程指导以提升内部专业度
  • 举办内部技术研讨会
  • 就社区问题提供建议

案例:谷歌的开源

谷歌自 1998 年成立以来,开源应用已经成为谷歌的使命与成功所在,其开源项目办公室作用非常广泛。办公室经理 Will Norris 表示,该办公室于 2004 年启动,主要作为一个合规部门了解并组织使用开源许可和代码。当时谷歌的规模要比现在小得多,并且参与了许多开源项目和代码使用,但当时没有太多正式的合规流程。Norris 还表示,随着公司不断壮大,改变缺乏合规性和组织性问题突出。Norris 最初是一名软件工程师,曾在开源项目办公室工作了四年,后于 2016 年 9 月成为开源项目办公室经理。

谷歌开源项目办公室遵循三项重要原则——帮助 Google 员工使用开源、向社区公开源代码和支持全球更广泛的开源生态系统。该办公室自成立以来,使命一直未改变。该办公室仅有约 15 名成员,却为拥有约 72,000 名员工的公司提供服务。

为了保持开源生态系统的健康运作,办公室主要致力于雇用有能力胜任的、经验丰富的工程师开展开源项目,将大量公司资金投资于需要资金支持的开源基金会、开源团队和开源项目中。同时,定期举办技术会议,传播开源软件创立的优势与实用性。

该办公室还负责开发和运营谷歌 Summer of Code 等项目,该项目在暑假期间为来自世界各地顶尖大学和学院的学生提供由专业导师的培训、指导,自主创建代码的机会。

对于谷歌的开源项目办公室来说,Summer of Code 是一个为其投资带来直接利益的典型项目——潜在开发者拥有丰富的经验和如何进行开源开发如何的操作经验,未来他们可能在谷歌工作。在开源世界,同样的战略可以通过此类开源项目办公室的投资,惠及社区的其他公司。

谷歌的大多数开源社区的管理由众多产品团队承担,开源项目办公室给予团队和项目支持,以遵循自己想要的发展路径。每个项目的业务目标根据项目开源意义的不同而各异。在谷歌,通常有约 2000- 4000 个开源项目同时进行。

“我们允许公司各个业务部门从商业角度考虑自行决定,给定项目开源是否有意。因为可能有很多不同原因开源项目或代码片段。我们很乐意看到项目团队量体裁衣,实现目标。我们尽可能提供便利与建议。”

Will Norris - 谷歌的开源办公室经理

谷歌项目办公室由一个合规团队组成,其中包括两名律师,一个参与活动的外联团队和一个工程团队,他们负责开发工具以自动执行合规性检查并支持公司的开发计划。办公室的另一重要职责是仔细且不断地跟踪开放源代码应用中的大量统计信息,包括合规需要构建什么,及代码的发布和引用需要多久。

谷歌开源项目办公室最近新采取了一个有趣的举措,它鼓励所有负责开源主要工作的员工——无论他们是图形设计师、技术编写人员、营销人员还是开发人员——花费高达他们 20% 的时间为公司内的其他项目完成特定工作,促进跨团队之间更多的合作,帮助他们相互理解并全面改进项目。

开源项目办公室的建立

对于每家公司而言,创建开源项目办公室都是个性化决策的开始。这个过程可以从顶层管理开始,或从底层开发者开始,因为他们一直在使用开放源代码并希望看到其正式化。它可以表现为一种围绕法律问题和安全问题制定有关指导的愿望,或者起始于一种成熟的基层力量,引起企业领导者的关注。它甚至可以从一位具有前瞻性的 CEO 或 CTO 开始,通过加强对开源的承诺来推动公司前进并增加公司价值。这种共识和行政支持对于获得动力并推动项目前进来说至关重要。

那么应从哪里着手创建开源项目办公室?以下是一些关键步骤:

1、找到一位领导者

无论您的计划如何开始,重要的是找到合适的领导者来帮助发展并运营公司内部刚刚起步的开源项目办公室。最佳候选人应是一位对开源工作原理和现有开源项目中的开发者、贡献者或提交者的技术诀窍有详细了解的人。他们应该对贵公司的业务有广泛了解,并具备商业敏锐度和管理技能,以帮助向业务部门告知开源战略和计划。不仅如此,他们还需要善于社交,这样他们才能将热情、知识和信息传达给其他人,并帮助他们理解开源创新将如何转化、改变和完善公司业务。开源项目办公室的负责人需要能够与人们讨论深层技术,但他们无需了解每种技术的细节,因为这些细节实在太多,难以全部掌握。

本着开源协作的精神,当前存在着大量的在线资源来帮助企业找到最佳人选,包括开源项目经理和来自各种设立此类岗位的公司,如 Capital One,Box ,VMware,微软,Twitter 和雅虎等的其他领导者的详细职位描述示例。

2、定义你的运营

新的开源项目办公室需要解决预算、人员配置、技术工具和系统等关键问题。一些公司的此类办公室从任用兼职经理开始,但他们也意识到这样不是长久之计。聘用全职员工负责相关工作才是使项目落地的有效步骤,同时还应有一位支持人员,帮助保持办公室工作的灵活性。

如果项目办公室太大,可能会有过于集中的危险。若想尽可能保持公司内的开发者和开源社区正常运作,办公室过大则反而会导致问题拖延到项目办公室支持,而不是自行解决。

一个定位明确的开源项目办公室示例,应该如下所述:既能推动所需的政策、流程和工具的建立,也能在消除所发现的摩擦的同时保持稳定运作,它使用工具来自动化那些可精简的内容,并委派需要完成的任务。我们将在以下部分介绍如何设置政策和流程的更多细节。

项目办公室必须提供结构化的政策和流程,但也应当保持灵活性。当开源用户和贡献者需要帮助时,办公室应更像咨询公司,提供指导,同时允许员工针对工作做出个人或集体的业务决策。最终, 我们的目标是建立正确的责任与义务的平衡,以满足贵公司及其开源用户的需求。

3、寻求反馈和支持

建立一个开源项目办公室不应该在真空状态下完成。它将在业务中发挥核心作用,因此要成功创建它,需要公司内部所有相关方的开诚布公的意见和反馈。确保从高管到开发者,每个人都有发言权,有助于提供广泛帮助。

“如果你的目标是处理公司在开源的应用,在两方面——发布和引用——它确实需要你考虑什么是真正关心的问题。尽可能地精简流程,集中精力处理重要的事情,然后尽可能自动化。”

Will Norris – 谷歌开源办公室经理

组织架构

那么开源项目办公室应如何且并入公司的组织结构?它应该在工程部门内部吗?或者在法律部门,CTO 办公室或其他特定业务组?这又一次取决于公司的主要业务和开源战略。

  • 法律
    对于拥有大量知识产权组合的公司而言,这可能意味着开源项目办公室与法律办公室非常切合, 开发者可以与法律团队就出现的问题密切合作。这可能非常适合硬件公司,因为它始终关心与潜在的知识产权相关的法律问题。
  • 工程
    其他公司更多的是工程驱动的,所以选择在工程部门运营开源项目办公室,这有利于直接集中精力致力于让他们的开发者在工作中更加高效和高产。
  • 开发者关系,市场营销或沟通
    在其他情况下,一些开源办公室位于组织的营销部门内部,因为他们使用开放源代码渠道来销售他们使用开源代码构建的产品。

在 Twitter上,开源应用已成为公司成功不可或缺的一部分,开发人员发现从 2010 年开始很难回馈开源项目,因为该公司的法律部门对代码许可和相关问题有严重的担忧。开发人员和软件工程师通过寻求方法来实现许可证合规流程的自动化——帮助加快运行——以减轻法律和工程部门的担忧。寻求方法的结果是雇佣一名开源项目经理,并创建一个开源项目办公室来修复流程、简化流程、引入工具来自动完成任务并进行其他所需的更改。

有趣的是,Netflix 公司的容器云经理 Andrew Spyker 表示,它们采取了不同的方法,选择不创建或使用集中的开源项目办公室。相反,流媒体电影和娱乐公司通过一个小型的跨职能工作组使用开源, 该工作组运行了一个内部的邮件列表进行讨论,并每月进行一次非正式会面以解决开源遇到的问题。志愿者工作组成员协助其他分散的团队,使每个人都更少需要关注如法律问题、工具、监督和社区推广等行政任务。对于 Netflix 来说,这是一个可行的方法,因为它是一家娱乐公司,而不是一家软件公司。

在微软,其工程部门内的开源项目办公室结构非常独特,因为它需要支持约 60,000 名软件工程师。大量开发人员要求放弃所有开源项目的细节都必须通过一个集中式办公室的想法,因为这个办公室会不堪重负而无法运作。相反,对于无法自动执行的事情,该公司的开源项目办公室团队可以让工程师对他们的项目做出本地决策,而不必尝试可能导致操作受到干扰的集中式决策瓶颈。

在此过程中,微软工程师可以进入公司的开源工作流程,分享他们想要向一个开源社区分享的一部分代码或发布的某些东西,然后接收来自本地评论者提供的反馈与回复。这个高度专业化的流程包括大约 300 个不同的业务和法律审查团队,他们可以利用他们的专业知识来权衡本地化的请求,为公司提供可行的方法帮助。

“如果我们试图建立一个集中的机构来批准 Windows、Office 和 Azure 的开源部分,我们的头发会掉光。这些是完全不同的业务。我们为工程师提供工具和指导以完成他们的工作,而不是集中批准机构。这在一些公司有效,但在这毫无作用。“

Jeff McAffer – 微软开源项目办公室主任

管理角色

在建立开源项目办公室时,还必须确立相关角色和职责,包括确立开源项目经理、公司法律团队以及由工程师和高管组成的审核委员会的角色和职责。

  • 项目经理
    为了最大程度地提高效率,企业应该授权让项目经理担任执行层的职位,使其可以直接监督和实际管理公司在其开源活动中的利益。这将为他们提供引导企业达成开源的目标和愿景所需要的工具。微软设立与审查委员会相似的开源执行委员会。该小组由来自企业内部所有主要业务部门的副总裁组成,为政策变更和政策介绍提供董事会的建议,确定开源项目的优先顺序,协助推动企业变革。
  • 法律
    与企业内的其他职能部门一样,法律团队必须对开源项目办公室的运营拥有发言权,确保符合法律、开源许可协议以及其他法律规定。具体到开源项目,法律团队需要负责确保企业可以在内部使用代码并以可接受的条款回馈项目。规模较大的组织机构应考虑聘请或培养专职律师来为其开源项目提供建议。但企业也可以聘用兼职、有相关知识能力的工作人员或外部顾问。与在开源许可和知识产权有丰富知识与经验的律师合作往往很有帮助,因为他们是这方面的专家,但当涉及商业合同或标准时,他们有时也会有些困惑。
  • 合规团队
    开源项目的合规团队是一个由多人组成的跨学科团队,其任务是确保开源项目的合规性。核心团队通常被称为开源审查委员会(OSRB),由工程和产品团队、一名或多名法律顾问以及合规高级职员(常常是开源项目经理)组成。
    扩展团队由来自多个部门的不同人员组成,这些部门持续为合规工作做出贡献,包括文献资料、供应链、企业发展、IT、本地化、开源执行委员会(OSEC)等方面的贡献。然而,与核心团队不同,扩展团队的成员只根据他们从开源审查委员会(OSRB)收到的任务兼职开展合规工作。三星开源项目经理Ibrahim Haddad的《企业开源合规性(Open Source Compliance in the Enterprise)》书中的详细讨论了参与实现开源合规性的个体角色和责任。
  • 开发者关系、倡导和传播者
    开源开发者的关系和传播者对于一个刚起步的开源项目办公室十分重要,因为他们可以在公司的开发者社区内为特定项目培养兴趣和热情,也可以帮助提升工程师的积极性并促进其团队合作。传播工作者通常也可以参加会议和技术交流,讲解什么是开源,如何使用它以及未来的挑战和机遇,同时还能够与开源社区分享他们的企业经验。
  • 其他
    此外,设立其他工作职位对于开源项目办公室的成功是非常重要的,包括工具管理员、培训管理人员、工具和系统集成开发者、部署支持人员、项目实施负责人和开源传播人员。例如,有必要设立工具管理员,因为工具管理员能够选择、提供和集成开发其开源项目的工程师所需的工具,同时还能确保工具符合许可要求和企业其他要求。

政策和流程的制定

现在,为了公司的开源项目办公室的构建已经计划或组装了许多其他重要的组件。从它的创建到它的构架再到人事,都已经建立完成,下一步就是要制定明确的政策和流程,实现公司开源战略实施的一致性。

这些政策应该规定在整个公司内使用开源程序的要求和规则,还应该有文档记录和可执行的程序,以确保对日常基本规则的遵守。

关键的是,它们应该尽可能降低人员开销。微软关注开源项目办公室的政策和流程,目的是尽可能让开发者和其他团队成员不显眼。方法是在审查现有的开源政策和流程时采用反复淘汰、自动化审查和委托审查的形式,使规则不断地被质疑和更新从而简化程序。这意味着我们要思考为什么政策是到位的,以及如何为用户改进政策。

“制定明确的政策很好,但最低限度的政策必须明确。否则,你会遭到来自律师、安全人士、商界人士的约束。否则,很快就会被政策束缚,也就意味着所有人都将无法逆转局面。“

Jeff McAffer – 微软开源项目办公室主任

虽然这些规则是为开源项目办公室缜密设计的,但是随着时间推移和业务的变化以及开源合作的成熟和发展,公司必须随时准备改进和修改规则与程序。

这听起来似乎又是一个艰巨的步骤,但是就像开放源代码本身一样,示例规则和流程可以从开源代码库中获得,并且可以由企业自主实施和定制,这样一来任务就轻松许多。

在这些规则制定中,谷歌是最好的例子。谷歌于2017年初发布了开源政策供审阅和免费使用, 方便其他人了解公司如何使用、发布和支持开源以及如何参与项目和社区。基于安全和隐私的考虑,部分内容已被移除,但它提供了许多关于公司如何开展开源工作的经验教训。

在制定开源政策时,需要讨论许多话题,包括:

  • 如何接受外部对开源项目的贡献
  • 如何准备开源发布会
  • 如何获批
  • 开发人员如何使用他们在 GitHub 和其他代码库上找到的开源代码
  • 如何将开源代码引入公司的程序和规则
  • 如何将传入的代码编入目录以便其他人知晓它在被使用
  • 如何在外部创建一个类似的开发者社区,保持开源的蓬勃发展
  • 确定代码应何时以开源形式发布或保存为知识产权的规则

代码发布政策

若想帮助人们成功地为开源项目贡献力量,并发布自己的开源项目,那么相关的开源准则和清单要确保开发者拥有发布自己的开源代码需要的所有东西,确保他们不会遇到许可或保密等问题。特别是对于新的开源项目贡献者,这有助于他们对开源项目贡献之前通过安全的内部审阅过程获得反馈。(请参阅我们关于参与开源社区的指南)

您的组织也应该努力采取“上游先行”的发展策略。通过首先向上游开源项目提交补丁,并将补丁整合到自己下游的产品中的方式,您将避免在每次开源发布后花费大量时间和金钱进行重新设计。

贡献接受政策

除非您的开源项目位于中立的基础之上,否则您需要为您的公司制定程序,以便获得外部开发人员对您自己的开源项目的贡献支持。

“实际上,你并不想成为对开源项目的唯一贡献者。你希望让公司外部人员为开源项目做贡献,因为你不可能聘用世界上所有最聪明的人,这是不可能的,即使Google也做不到。“

Chris Aniszczyk – 云本地计算基金会首席运营官&Twitter前开源项目负责人

当然,获得外部开发人员的贡献值也是将公司的开源代码发布到其他社区,吸引其他开发人员对您的项目产生兴趣的益处之一。因为从宏观角度而言,即使这些外部开发人员不是正式员工,同样可以拥有世界各地的人才,完善公司代码,扩展功能。这种合作对于公司是非常重要的,也是许多开源项目办公室所关注的。

开源应用促进政策

您希望鼓励他人在他们的产品和服务中使用您的代码,这对于构建生态系统是至关重要的,同时还有助于开源项目的开发和维持。开源应用政策的制定可以有多种不同的创新形式。

Red Hat有一个独特的政策。通常他们从一开始就默认开源新创建的代码。这就意味着,研发公司内部软件时,默认这些软件将以开源形式发布。这是很吸引人的,因为通常情况下,工程师对他们的代码能否作为开源发布的态度不一,而开源其他人就会看到他们的代码。由于这种审查,他们会用更好的构建方法编写开源代码,这样他们就会在工作中创建更简洁的代码,这样的代码往往有较少的或已被改进过的代码依赖关系。

内部消耗政策

其他必要政策包括:团队应如何及在何处发现关于开源软件的使用与创建的可信资源的政策,关于代码管理和程序维护的建立的政策,以及规范化项目社区互动的政策。(请参阅我们的开源代码使用指南)

开源应用政策应确保任何进入产品基地的软件(专有的、第三方的或开源的软件)都经过审查、审核和批准。这样可以保障您公司在产品送达客户之前,有计划地履行因使用多种软件组件所产生的开源许可义务。

例如,您的政策可能要求工程师在整合产品中的任何开源代码之前,获得贵组织中如开源审查委员会(OSRB)这样的机构的的审计人员的批准。政策中还可以声明,从第三方收到的软件必须经过审核,以认定其中包含的所有开放源代码,这将确保企业可以在产品发货之前履行开源许可义务。

合规政策

您还需要制定建立和规范法律合规程序的政策以及保障项目执行监督工作的政策。(请参阅我们的电子书《企业中的开源合规性》,了解详细的合规项目)

您还想计划如何通过软件工具的自动化与开发人员和贡献者的工作流程的简化,实现大部分合规性和代码测试工作。例如,Linux 基金会的 SPDX 和 OpenChain 工具在内部供应链团队的帮助下,有效保障了第三方引入代码的合规性。

现今市场上有各类开源工具(如 FOSSology)和付费工具可以帮助完成这些重要任务,而且对于大多数开源项目办公室来说,他们可以将高质量且综合的工具有机结合,而无需建立自己的定制工具。这主要归功于开源过程中的通力协作,贡献者已经创建并完善了能为企业处理这些重要任务的工具。如果这些工具不能完全满足项目需求,那么可以通过用户反馈意见修改和改进工具以获得他们所需要的功能。您的开源项目办公室将很有可能支持围绕企业工具参与开源社区。

现有的开源资源对于寻找开源项目所需的其他材料(包括贡献者许可协议(CLA)文档)来说,犹如一座潜在的金矿。贡献者许可协议(CLA)定义了知识产权对开源软件的贡献条款。采用贡献者许可协议(CLA)的项目在接受贡献之前要求贡献者,通常还有他们的公司,签署贡献者许可协议(CLA)。

许多公司已经编制了自己的贡献者许可协议(CLA),但现在已有可直接作为开源协议使用的、无需从头开始编制的通用版本。您所需的大部分协议内容都可以在模板中找到,之后您可以自定义贡献者许可协议(CLA)以涵盖所有依然存在的问题。来自其他潜在的贡献公司的律师通常会接受标准条款的重复使用。

Google 内部定期使用各种工具来执行自动化代码检查,例如使用自定义过滤器等功能来执行自动化代码检查,这些功能可扫描代码库以检查许可证、许可证兼容性和其他因素。Google 每次发布新的 Android 或其他的应用程序时,都会进行自动化检查许可证的合规性流程,从而简化公司程序。不仅如此,由于这是自动化的流程,因此可以更轻松地向工程师说明该过程是简单且无缝的,且不会对他们使用自己的应用程序带来负担。

Google 所有的新入职工程师还需要接受一个小时的开源课程培训,该课程强调把开源许可和合规性检查作为开展公司业务的一部分。该公司分享的一条重要经验是,Google 不仅应按照法律许可要求履行许可义务,还应为社区做正确的事情而履行许可义务。如果在授权或代码使用方面出现明显错误,虽然 Google 的律师可以代表公司来处理这些问题,但公司本身对上传错误代码引起的社区地位受损还是非常敏感的。

“在开源社区中激怒朋友的后果是毁灭性的。这不是我们想做的事,因为我们关心这个社区,而且我们是社区的一员。至于新加入开源的公司,我认为他们往往没有认识到这一点的重要性。” 

Will Norris – 谷歌开源办公室经理

结语

当公司决定创建开源项目办公室时,需要做很多工作,考虑很多事情,但产生的价值可能会超过实现付出的努力。找到正确的领导者来推动项目办公室的建设倡议是取得成功的关键。

“这是一项文化变革的尝试。代码显然是其中的一个重要部分,但开源社区和参与者是人与人之间的事情。如果想建立一个开源项目办公室,并试图实现这项计划,那么你需要了解这种文化,并找到能够帮助将这种文化提升到一个新高度的人。那么你的开源主管一定是一位伟大的变革推动者。” 

Jeff McAffer – 微软开源项目办公室主任

工作列表模板

如果你对构建开源项目办公室有兴趣,而且有意愿去雇佣类似的角色,我们建议你参考下来自 TODO Group 正式的工作描述模板: https://github.com/todogroup/job-descriptions 。


TODO Group

这些资源是与 TODO(公开对话,开放式开发)小组 – Linux 基金会的专业开源程序网络小组合作创建的。 特别感谢那些贡献自己的时间和知识来制作这些综合指南的开源项目经理。 参与的公司包括 Autodesk,Comcast,Dropbox,Facebook,Google,Intel,Microsoft,Netflix,Oath(Yahoo + AOL),Red Hat,Salesforce和Samsung。 要了解更多信息,请访问:todogroup.org。 我们邀请您在 GitHub 上下载或参与这些指南。