Creating an Open Source Program

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

开源应用促进政策

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

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

内部消耗政策

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

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

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

合规政策

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

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

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

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

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

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

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