Linux基金会企业开源指南系列之一——公司如何创建开源项目办公室
Sun Aug 19, 2018 | 11500 Words | 大约需要阅读 23 分钟 | |
特别声明
本文拥有创作共用授权之相同方式共享授权4.0版国际许可协议(Creative Commons Attribution ShareAlike 4.0 International License)授权许可。 开源之道独立精心翻译分享,欢迎同道中人商讨。
如何创建开源项目办公室
处于中心位置的开源项目办公室是在公司内部成立的一个指定的部门,用户开源的支持、培育、共享、诠释、以及增长,通过这样一个机构,企业可以明确地建立和执行开源战略,为其公司的决策层、开发人员、营销人员以及其他员工提供必要的工具,从而让开源帮助公司在运营中取得成功。
本文的目标是帮助读者理清楚为什么、以及如何在公司的内部去建立这样的一个部门,进而去管理开源的使用,更为重要的是会告诉读者如何去让公司的开发者去参与到外部的开源项目中去。开源办公室所涉及到的类别有:角色和职责、公司结构、开源管理项目的因素、如何选择和雇佣开源项目经理等等。
目录
Why create an open source program office
当今的时代,开源软件已经是企业使用的主流形式,几乎囊括了所有的行业:零售、金融、汽车等等。然而,这些企业的执行领导和决策者们却并不了解开源本身。
这样就引来了一个大问题,开源软件的使用和管理采用传统的业务规划行不通,尽管企业在其它方面可能一直以来都运营的非常顺利和成功。开源创新有其自身独特的一套方法论,甚至和传统的企业流程还有点格格不入,其中最大的一个不同点就是开源的开发是协作和透明的,而传统的软件和企业则往往采用的是封闭的和专有的。对于很多企业来讲,采用开源的方法需要更改固有的做法,往往会遇到极大的困难和障碍。
解决以上问题就是设立开源项目办公室的最大优势。通过创建开源项目办公室,企业可以启用、精简、组织等方式来看待开源的利用,从而直接和企业的长期业务规划齐头并进。开源项目办公室旨在成为公司级别的开源运营和架构的核心,帮助将所有必需的组件集中到一起。
这其中包括代码的使用、分发、选型、审计以及其它的政策,乃至培训开发者、确保法律上的合规性、以及激励和构建社区的参与。开源项目办公室还要做公司内外部的所有和开源相关的布道和沟通。
“每家公司都应该成立一个开源项目办公室,其要有一个合理而雄心勃勃的计划来影响软件生态系统的各个部门。如果企业要加大其影响力的话、清晰的传达开源的消息、最大限度的发挥项目的影响力、或者是提高其产品开发的效率,开源项目办公室无论在哪个方面,都可以很好的发挥相应的效用。John Mark Walker 开源创业者网络(OSEN)的创始人 “
The role of the open source program office
归根结底,开源项目办公室是要体现出其价值的,其要在公司内部鼓励开源的使用、参与贡献、以及创造,从而让公司获得战略上的优势。
一个成功的开源项目办公室可以通过为开发者及其团队建立流程,从而为企业在使用开源方面获得巨大收益。它能够鼓励编码的标准、组织的实践、流程的建立、以及优良工具集的使用。同时,开源项目办公室可以帮助开发者避免或消除不必要的、呆板的流程,以帮助项目顺利的开发等等
开源项目办公室所负责的事情形形色色,多种多样,其中包括:
- 清楚地传达公司内外的开源战略
- 是战略的负责人,并监督战略的执行(请参考创建企业开源战略的指南)
- 促进商业产品和服务中开源的有效使用
- 确保代码是以高质量、不间断经常的方式向开源社区发布的
- 与开发人员社区合作,并要监督公司有效地回馈社区
- 在公司内部培养开源文化
- 维护开源的许可证合规,要审核和监视
对于公司来说,每家遇到的情况可能不一样,那么开源项目办公室的角色也要根据业务、产品、目标等进行相应的调整。目前还没有一个适用于所有公司的开源项目办公室模板,即使是单个行业的所有公司也是不可能的。这就很大程度上在创建过程中会遇到一些挑战,但是你可以从其它公司所分享的经验中学习,将之糅合以适应贵公司的特定需求。
“在企业应用开源,是没有一套万能钥匙的,我是没法告诉你‘我所说的就是灵丹妙药,包治百病’。” - Jeff McAffer, 微软开源项目办公室总监.
过去几年来,微软一直致力于创建和改进自己的开源方法。上万名援用分布在不同业务部门,微软成立了专门的开源项目办公室,致力于帮助开发者、营销团队以及其他和开源有关的参与云服务、硬件和软件产品,游戏,内容,媒体等产品线的人员。每个不同的部门都有不同的述求,因此无法用相同的产品为他们提供服务,所以要依据于其各自的业务模式和实际场景进行个性化的服务。
其中开源项目办公室的一个关键角色,就是当业务部门开始在做规划时考虑开源的时候,能够帮助他们澄清事实以及阐释开源的实质,从而让业务部门能够理解为什么要考虑开源?开源之后可能的后果是什么?当然也会提供达到目标需要的资源等。这通常是一个讨论会话的问题,以便利益相关者知道从何时开始,以及在决定权重的时候应该考虑什么。
开源项目办公室也扮演着开发者和开源用户社区之间桥梁和协调的角色,来处理一些相关的事务或需求。当然还会处理一些法律的问题,为开发者提供支持,以及代表公司的开源项目向外部用户发出一些声音。甚至开源项目办公室还会帮助在公司内部传达一些信息,如产品管理团队、代码维护者等。此外,开源项目办公室还会增加专门的开发者布道师这样的角色,从而聚焦确保他们的项目增长和可持续发展。
Example: Open source program at Google
对于Google来说,哪里使用开源是一个很重要的任务,从公司创立之初就对开源情有独钟,目前为止,是蛮成功的,开源项目办公室的作用一直是功不可没。该办公室经理 Will Norris 表示,该办公室于2004年启动,主要是为了理解和组织使用开源许可证和代码的合规工作。当时谷歌的规模要小得多,并且参与了广泛的开源项目和代码使用,但当时没有太多的正式合规流程。随着公司的增长,合规性的缺失渐渐成为了大问题,所以到2004年才开始进行转变,
Norris 曾经在开源办公室工作了4年,在进入开源办公室之前是一名软件工程师,他在2016年9月晋升为该办公室的经历。
Google 运营自己的开源项目办公室坚持三个重要的原则:
- 帮助其员工使用开源项目
- 发布开源到开源社区
- 支持更为广泛的来自全球的开源生态
这些原则一直都被很好的执行,从创始伊始就一直坚持这样,而且值得夸耀的是,他们只有15名团队成员,却服务于全公司72000名员工。
Google 开源办公室更多的努力是去保持开源生态系统的健康发展,如通过雇佣有丰富经验的优秀工程师专门在相应的开源项目上专心工作,投资给一些需要金钱的开源基金会、组织和项目,当然也会定期的赞助一些传播开源软件创作的理念和实践的技术研讨会等等。
Google 开源办公室也会开发和运营一些诸如Google 代码夏令营这项的公益项目,Google 代码夏令营为全球的在校的大学生提供参与开源项目的机会,让这些学生们可以利用暑假在开源社区的导师们的训练和指导下进行编码。
对于Google 开源办公室来说,代码夏令营这样的项目是示范性的,其带来的益处是巨大的,也是有目共睹的—— 要知道参与项目的这些学生都是具备开发潜力的,他们很有可能在未来毕业时选择Google作为他们的雇主,那时已经是拥有丰富开发经验和开源开发的实战经验的工程师了。在开源的世界里,类似的策略也同样让其他的公司受益,因为开源项目办公室在社区的投入让学生们有了参与社区的机会。
Google的大多数开源社区管理都在其众多产品团队中进行,开源项目办公室给予团队和项目支持以遵循他们想要的路径。各个项目的业务目标各不相同,具体取决于在每种情况下开源项目是否合理。 目前在Google 正在进行中开源项目大约有 2000~4000 个。
“Google 允许公司各个业务部门自行做出决定,因为开源的理由总是各式各样的,要回归到商业上让其自行定夺。作为开源办公室,非常乐意看到大家采用各自认为最好的方法,来实现自己的目标。开源项目办公室更大程度起到的是促进和建议的作用。” - Will Norris,Google 开源项目办公室经理
Google 开源项目办公室的合规性团队有两名律师、活动参加的推广团队、以及一个工程团队,工程团队会开发一些工具如帮助自动的合规性检查,也会支持公司的其它开发团队。开源办公室还有另外一个非常重要的职责就是仔细而不间断的跟踪公司范围内所使用带开源项目状况,其中包括构建的合规性、代码引入和发布的时间等。
最近,Google的开源项目办公室又有了一个新的职能,那就是鼓励公司的所有工作人员,在他们主要的开源工作(图形设计师、技术作者、营销人员或开发者)之外,要去花20%的时间去参与到公司其他的项目中去。这个想法是促进团队之间更多的交叉合作,这可以帮助他们相互理解并改进公司层面上的全局项目。
Establishing an open source office
对于每家公司来讲,设立开源项目办公室都将会是独特的一系列的决策的开始。这个过程可以是自上而下的,即从管理高层直接干涉;也可以是自下而上的,因为有大把的开发者和开源爱好者已经使用了开源项目,希望让这些都常态化。它可以表现为围绕法律问题和安全制定指导的愿望,它也可以作为成熟和吸引企业领导者关注的基层努力开始。它也可以是由 CEO 或 CTO所提出的战略思考,希望通过开源让企业更进一步发展,为未来增加筹码。如此的共识和行政上的支持对于获得牵引力,以及推动开源的进展至关重要。
那么你该如何开启开源项目办公室之旅了呢?这里有一些重要的步骤供参考:
1. 寻找带头人
无论计划如何开始,重要的是找到合适的领导者来帮助开发并运营公司内部刚刚起步的项目办公室。顶尖级的候选人对于开源是如何工作的细节了如执掌,有的甚至本身就在现有的开源项目中的开发者、贡献者或提交者,也就是说本身是打着技术烙印的。候选人应对公司的业务有着广泛而深入的理解,并具备商业敏锐度和一定的管理技能,以帮助制定业务部门的战略和计划。候选人也需要善于交际,这样他们才能将热情、知识和信息传递给他人,并帮助人们去理解开源项目将如何转变,更改以及改进公司的事情。项目办公室的头门需要能够和人们深入的讨论技术,但是他们不需要知道每个项目非常细的细节,因为他们有太多的项目需要关注。
本着开源协作的精神,目前已存在大量的在线资源可以帮助找到最佳的候选人,其中包括针对开源项目经理 的职位详细描述的示例,更何况已经有很多的公司已经设立了此岗位,可以去看看 Capital One、Box、 VMware、 Microsoft Twitter以及 Yahoo等公司是怎么做的。
2. Define your operations
预算、人员、技术工具以及系统,这些都是新建立项目办公室在日常运营下必须的关键内容。有些公司开始的时候设立了兼职的经理,但是这么做是远远不够的,因为开源办公室会占用大量的时间来处理各种事情,最好的方法,仍然是让某人担任全职工作,这是让项目办公室成功的前提,如果能够一个小型的团队则更加的棒。
如果项目办公室规模已经很大了,那么就有可能出现中心化的趋势。你要尽可能的让开发者和开源社区保持良好的关系,尤其是符合公司内部的流程。大型的开源办公室要提人们承担更多的职责,而不是让大家自行解决。
一个典型的开源项目办公室,就是驱动需要的策略、流程以及工具,同时要解决一些内部的摩擦,让事情良好的运作,使用工具来自动化那些可精简的内容,并要委派一些必须的任务给相应的图阿奴地。我们将在以下部分介绍如何设置策略和流程的更多细节。
开源项目办公室必须提供结构化的策略和流程,但也要保持一定的灵活性。当开源的用户和贡献者需要帮助的时候,办公室要即使的提供诸如咨询、指导,且要告诉员工可以进行独立的决定。归根结底,开源项目办公室的目标是建立起在责任和义务之间进行适当的平衡,从而以满足公司和开源用户的需求。
3. 收集反馈以及 buy-in
创建开源项目办公室和任何事情一样,不可能凭空产生,正因为它处于公司的中心位置,所以成功的创立它需要开放的心态、诚实的态度,要去不断的付出并从企业内部所有参与的部门收集反馈。并要确保从高管到开发人员的每个人都有发言权,这将有助于提供广泛的支持。
“如果你的目标是要真正掌握你的公司在开源方面的做法,在两个方向上 - 释放和引入 - 它确实需要考虑你真正关心的核心事情是什么。 尽可能简化流程,专注于这些事情,然后再尽可能多地自动化。” - Will Norris,Google 开源项目办公室经理
项目办公室的结构
那么开源项目办公室该如何放在公司组织架构合适的位置?它应该在工程部门之下吗?又或者是法律部门?还是CTO直接管辖?还是专门的业务部门?这是非常灵活的了,具体要看公司的主要业务以及开源的战略了。
放在法律部门
对于一些公司来讲,若是拥有大量的知识产权方面的组合的话,那么开源项目部门放在法律部门是再合适不过的了,开发人员可以在出现的问题上与法律团队密切合作。这可能非常适合硬件公司,因为硬件公司总是会遇到与知识产权相关的法律问题。
放在工程部门
对于一些工程驱动的公司来讲,则应该选择将开源项目办公室方式工程部。这使得他们可以集中精力,从而让开发人员在工作中更加高效且极具生产力。
开发者关系,市场以及沟通
还有一种情况,有些开源项目办公室设在了组织的营销部门内部,因为公司是使用开源的渠道来销售基于开源代码构建的产品。
在Twitter,开源的使用已经成为公司成功不可或缺的一部分,在2010年的时候,开发者们发现很难想开源社区做出贡献,因为公司的法律部门对代码许可和相关问题非常的重视。于是,开发人员和软件工程师通过寻求方法来实现许可证合规流程的自动化 - “润滑轮子” - 以减轻法律和工程部门的担忧。最终公司聘用了一位开源项目经理,并创建了一个开源项目办公室来优化流程,简化步骤,引入工具来自动执行任务以及进行其他所需的更改。
而Netflix则采取了完全不同的做法,据Netflix的容器云经理 Andrew Spyker介绍,Netflix根本就没有去建立一个中心化的开源项目部。相反,这家在线电影和娱乐的公司通过组织了一个小型的,跨部门的小组,运行一些内部的邮件列表来讨论,每月举行一次非正式会议,以帮助彼此解决开源问题。志愿者工作组成员协助其他分散的团队,使每个人都不必关注诸如法律问题,工具,监督和社区推广等行政任务。这种方式之所以对Netflix有效,是因为它是一家娱乐公司而不是软件公司。
对于微软来说,开源项目办公室的架构则是放在了工程部门的内部,它之所以是如此独特,是因为它要服务于6万名软件工程师。如果说让这样规模的开发者针对每个开源项目的细节来去和中心化的开源项目办公室打交道的话,那简直不敢想象,对于办公室来说是不堪重负的,是绝对不可行的。相反,对于无法自动执行的事情,微软的开源项目办公室团队让工程师对他们的项目自行进行决策,而不必所有的琐碎的事情都去和办公室来协商,那样办公室必定会成为瓶颈。
在此过程中,微软工程师可以进入公司的开源工作流程,分享他们想要使用一段代码或向开源社区发布某些内容,然后接收提供反馈的本地评论者的回复。 大约有300个不同的商业和法律评审团队可以利用他们的专业知识权衡本地化请求,通过高度专业化的流程帮助为公司提供可行的方法。
“如果我们试图建立一个中心化的机构来批准Windows、Office、以及Azure的开放源代码,那么我们一定会抓狂的 这些是根本不同的业务。 我们会为 工程师 提供工具和向导来帮助大伙工作,但是不会建立那种 中央批准结构,中心化的方式或许在其它地方可以行的通,但在微软不行。” - Jeff McAffer ,微软开源项目办公室总监。
管理角色
在创建开源项目办公室时,还必须做出决定,即要去确定开源项目经理、公司的法律团队以及由工程师和高管组成的审核委员会的角色和责任。
项目经理
欲求得效率最大化,应该授权项目经理担任管理层职位,对公司在开源活动中的利益进行直接监督和实际管理。这样的话,就等于为项目经理提供了很好的环境和工具,让其可以引导企业实现开源的目标和愿景。
微软使用的是开源执行委员会,这与审查委员会相似。 该小组由来自公司内部所有主要业务部门的副总裁组成,为政策变更和介绍提供董事会式的指导,确定开源计划的优先级,协助推动行为变化。
法律
就像其它公司内部的职能部门一样,法律团队必须能够建立起和开源项目办公室的对话与沟通,这样才能保证法律的合规性、开源许可协议、以及其它的法律细节。具体到开源,法律团队需要负责确保公司可以在内部使用代码并以可接受的条款回馈项目。较大的组织应考虑雇用或培训专职律师,为其开源计划提供建议。 但你也可以使用兼职,知识渊博的工作人员或外部顾问。 与熟悉开源许可和知识产权知识和经验的律师合作往往很有帮助,因为它可能是一个专业化的,有时又是非常令人困惑的,与商业合同或标准相关的法律领域。
合规性团队
开源合规团队是由多个人组成的跨学科团队,其任务是确保开源合规性。核心团队,通常被叫做开源审核委员会(OSRB),由工程和产品团队的代表组成,一名或多名法律顾问,以及一名合规性官员(此人通常由开源项目经理担任)。
合规性团队还需要扩展的,他们由多个部门的不同人员组成,这些部门需要持续为合规工作做出贡献。他们包括文档、供应链、合作部门、IT、本地化以及开源执行委员会(OSEC)。以及,OSRB。
Samsung 的项目经理 Ibrahim Haddad 曾写过一本 企业中的开源合规性,详细讨论了参与实现开源合规的个人的角色和责任。
开发者关系,布道师,倡导者
开源开发者关系和布道师对于一个刚刚起步的开源项目办公室显得很重要,因为他们可以在公司内的开发人员社区为某个项目倡导大家的兴趣和热情,这可以帮助增加工程师的关注度,并增加团队合作。布道师会经常到研讨会和技术活动上,为开源项目的受众答疑解惑,而且也会在开源社区上分享一些公司的经验之类的。
其它
此外,创建其他工作职位对于开源项目办公室的成功非常重要,包括工具管理员、培训管理人员、工具和系统集成开发人员、部署支持人员、实施项目主管以及开源布道师。例如,工具管理员需要帮助选择、提供和集成开发其开源项目的工程师所需的工具,同时还要确保工具满足企业的许可和其他要求。
设定政策和流程
经过了上述的一些步骤,其实已经为公司的开源项目办公室规划了很多内容了,从开始创建再到人员的分配,那么接下来我们要做的就是制定明确的策略和流程,从而实现公司开源的战略。
为开源所制定的政策应该在全公司范围内被执行和遵守,并要确保融入公司的日常,是文档化的且是可执行的流程。
要慎重对待此事,尽可能的将之精简到最小,比如微软所制定的开源项目办公室政策和流程的目标就是不让开发者和其它的相关成员感觉不到它们的存在。而且这是一个不断迭代的过程,最初制定一些政策和流程,然后让他们不断地质疑并提出问题,然后我们在不断的完善。这就意味着政策要经受的起质疑,对使用者来讲又有何用处。
“在拥有定义良好政策的地方,是非常庆幸的一件事,但它必也须有一个明确的最低限度政策。 否则,你会被律师、安全人员、业务人员等所困扰,他们都在关注政策,这也就会进一步限制它。。 如果那样的话,不久,你就会遇到一个充满政策的两难境地,那样的话,意味着再没有人能做任何事情.” -Jeff McAffer,微软开源项目办公室总监
尽管这些规则是由开源项目办公室精心制定,但是公司仍然要做好不断进化和修改这些规则的准备,而且随着时间的推移,企业业务会增长和变化,那么开源相应的也要进一步采取相应的手段的发展并慢慢成熟起来。
这似乎看起来像是流程中的另外一个艰巨的步骤,但是就像开源代码本身一样,实例规则和流程可以从小的开源项目中获得,而且企业也可以定制和实施,最终的目标都是尽可能让任务变得更加的轻松。
开源的规则,最好的例子来自Google,其再2017年早些时候发布了 开源政策 ,这是一份大家可以借鉴和学习的材料,看看Google是如何使用、发布和支持开源的,以及Google时如何参与到其它开源项目和社区中的。尽管由于安全和隐私的原因,Google剔除了一些内容,但是整体来讲对于无伤大雅,它还是提供了很多值得其它公司值得学习和借鉴的地方。
在制定开源政策时,需要讨论的许多主题包括:
- 贵公司如何接受自己的员工为外部的开源项目做贡献
- 如何准备开源的发布
- 如何审批所收到的贡献或反馈
- 开发者们该如何使用从GitHub或其它代码仓库中搜到的代码
- 解释如何将开源代码引入公司的程序和规则
- 如何将传入的代码编入目录以便其他人知道它正在被使用
- 一家公司如何围绕开源项目,去组织一个志同道合的社区,且多是外部的开发人员,还要保持蓬勃发展
- 这些规则有助于确定代码何时应以开源形式发布或保存为知识产权
发布代码的政策
你肯定是希望能够帮助人们成功的参与到你的开源项目中来,甚至是帮助他们发起自己的项目,向导指南和清单可以确保开发者们一站式的完成所有发布代码到开源项目中的所有事情,而不是自己去找许可证或保密的事情。尤其是对于新来的贡献者,这些清单可以帮助在提交到上游之前,现在内部做一些审核的流程并获得反馈。(请参考如何参与到开源社区。)
你的公司最好是采用”上游优先”的开发策略。通过首先向上游的开源项目提交补丁,然后将之合并到你的下游产品中,您将避免在每次发布后花费大量时间和金钱进行重新设计。
接受贡献的规则
除非贵司的开源项目是移交到中立的基金会,否则,你就得去定义一些规则、设定一些流程,从而让贵司之外的开发者贡献是非常重要的事情。
“没有人愿意自己所开源的项目只有自己一个贡献者,你总是会希望公司外部的人参与、贡献到你的开源项目,要知道,即使花再多的时间,也不可能将全世界所有的聪明人都招聘到你的公司来的,想都不用想了。即使是Google这样的超级公司,也是不可能的。 - Chris Aniszczyk,云原生计算基金会COO
毫无疑问,传播自己的开源的一个渠道就是将你的代码放在其它兄弟社区,并且邀请其他开发者来到你的社区,从而开始建立可能的兴趣。而这正式公司拥抱开源的魅力所在,即使这些开发者不是贵司的员工,来自世界各个角落充满天分的人们会为你的项目贡献力量,使之变得更好,并扩展其功能。此种类型的协作对于公司实在是太重要了,而这也恰是开源项目办公室的重点关注的内容。
促进采用的政策
你定会想让人们在他们的产品和服务中使用你的代码,这就是构建生态系统的关键所在,因为它可以反过来帮助开发和维护你的开源项目,所以开源的政策使用要采用各种的创新形式。
红帽在这方面可谓是非常的独特,每一个发起的项目,即从头开始写的代码,默认都是开源的。这就意味着在公司内部所开发的每一款软件,都假设在未来会以开源的形式发布。这对于工程师来说是非常有吸引力的,因为我们知道,在通常情况下,工程师如果知道自己的代码将开源,那么他对待其态度是完全不同的,因为他知道他的代码将会被别人看到。由于有此条默认的规则,所以他们在项目的一开始就竭尽全力的去以更好的方式构建项目,这样直接的结果就是能写出更加少依赖的干净的代码,以后也很少的进行改进。
内部使用的政策
除了上述提到的策略之外,还需要一些额外的补充,如团队该如何或者去哪里找到可以信任的源用在开源项目中,以及创建关于代码管理和维护流程的政策、和社区互动的规范等。(可以参考企业开源指南之——使用和分发开源代码。)
开源的使用政策要确保在产品中所使用到的软件(私有的、第三方的,亦或是开源的)都须是经过审计的、批准核实的。它同时也要确保公司在使用许可证方面有一定规划,而这要在产品交付给用户之前完成。
举例来说,你所制定的政策,确保任何的开源代码整合进产品之前,要有一些诸如开源审核委员会(OSRB)这样公司级别的审计同事们的批准。而且还要声明,从第三方收到的软件必须经过审核,以确定包含的任何开放源代码,这确保了在产品发货之前可以履行许可义务。
合规性政策
还需要制定正式的政策,建立法律合规程序且要确保对该计划在行政上进行监督。(关于企业开源合规性,请参考Linux基金会的电子书,有更多的细节可参考。)
您还想计划如何通过软件工具的自动化,并将开发人员和贡献者的工作流程的简化,实现大部分合规性和代码测试工作。例如,Linux基金会的 SPDX 和 OpenChain 工具在内部供应链团队的帮助下,可以有效保障了第三方引入代码的合规性。
如今的软件市场上有各种开源工具(如 FOSSology )和付费工具可以帮助完成这些重要任务,而且对于大多数开源项目办公室来说,他们可以将这些高质量的工具有效整合,从而无需去重新构建自己的工具。这主要归功于在开源过程中的通力协作,贡献者已经创建并完善了能为企业处理这些重要任务的工具。如果这些工具不能完全满足项目需求,那么可以通过用户反馈意见修改和改进工具以获得他们所需要的功能。您的开源项目办公室将很有可能支持围绕企业工具,进而参与到开源社区中来。
现有的开源资源对于寻找开源项目所需的其他材料(包括贡献者许可协议(CLAs)文档)来说,犹如一座潜在的金矿。贡献者许可协议(CLAs)定义了知识产权对开源软件的贡献条款。”定义知识产权为公司/项目提供的条款,通常是开源许可下的软件。” (请进一步参考[https://en.wikipedia.org/wiki/Contributor_License_Agreement]) 采用贡献者许可协议(CLAs)的项目在接受贡献之前要求贡献者,通常还有他们的公司,签署贡献者许可协议(CLA)。
许多公司已经编制了自己的贡献者许可协议(CLAs),但现在已有可直接作为开源协议使用的、无需从头开始编制的通用版本。您所需的大部分协议内容都可以在模板中找到,之后您可以自定义贡献者许可协议(CLAs)以涵盖所有依然存在的问题。来自其他潜在的贡献公司的律师通常会接受标准条款的重复使用。
Google内部定期使用各种工具来执行自动化代码检查,例如使用自定义过滤器等功能来执行自动化代码检查,这些功能可扫描代码库以检查许可证、许可证兼容性和其他因素。Google每次发布新的Android或其他的应用程序时,都会进行自动化检查许可证的合规性流程,从而简化公司程序。不仅如此,由于这是自动化的流程,因此可以更轻松地向工程师说明该过程是简单且无缝的,且不会对他们使用自己的应用程序带来负担。
所有新入职的Google工程师都需要进行一个小时的开源课程,主要内容会讲解关于许可协议和合规性,这是作为公司日常的一个部分来做的。其中一个关键的课程是Google不仅要按照公司律师所规定的履行职责,同时也要遵守对应开源社区的规则行事。如果在授权或代码使用方面出现明显错误,Google的律师可以代表公司,但公司对潜在提交可能损害其在社区中的地位的代码非常敏感。
“在开源社区,让我们的朋友不爽是毁灭性的事情。Google 作为社区的一份子,是非常关心社区的健康发展的,不愿意看到这样的事情发生,但是对于一些新入开源的公司,他们经常难以意识到这一点。” - Will Norris,Google 开源项目办公室经理
写在最后
当你所在的公司决定了要创建开源项目办公室的时候,这意味着有大量的工作要做,也有很多事情需要考虑,尽管这样,其所带来的效果绝对大于你所付出的努力。要找到正确的领导者来驱动项目办公室的初始化工作是成功的重要一步。
“这是文化变革的努力。代码确实是非常明显的一部分,但是社区以及鼓励却是人与人之间的事情,如果你有意建立开源项目办公室的话,你就要去尝试真实的事情,你要去理解文化的内涵,去找到能够帮助将文化推向新水平的人,开源主管真的是一个变革的推动者。 ” - Jeff McAffer,Microsoft开源项目办公室总监
开源项目工作招聘清单举例
如果你对构建开源项目办公室有兴趣,而且有意愿去雇佣类似的角色,我们建议你参考下来自 TODO Group 真是的工作描述模板:
https://github.com/todogroup/job-descriptions
鸣谢
本文的贡献者有:
- Chris Aniszczyk, 云原生计算基金会 COO (原Twitter的开源主管)
- Jeff McAffer, 微软开源项目办公室总监
- Will Norris, Google开源项目办公室
- Andrew Spyker, Netflix 容器云经理
这些资源是与TODO(公开对话,开放式开发)小组 – Linux基金会的专业开源程序网络小组合作创建的。 特别感谢那些贡献自己的时间和知识来制作这些综合指南的开源项目经理。 参与的公司包括Autodesk,Comcast,Dropbox,Facebook,Google,Intel,Microsoft,Netflix,Oath(Yahoo + AOL),Red Hat,Salesforce和Samsung。 要了解更多信息,请访问 todogroup.org。我们邀请您在GitHub上下载、传播,如果可以请积极的参与这些指南。