正如我在本系列两部分文章的第一部分中分享的那样,我是红帽公司的开源律师。我的工作的一个重要部分是向其他公司(包括他们的内部法律顾问)提供信息,介绍红帽如何通过完全开源的开发模式构建企业级产品,并回答他们关于一般开源许可的问题。在听到红帽的成功案例后,这些对话经常转向讨论他们的组织如何发展得更具开源意识和能力,并且这些会议上的律师经常询问他们如何修改他们的实践,以便更熟练地为他们的员工提供开源咨询。在这两篇文章中,我将分享我通常就这些主题告诉内部法律顾问的内容。
始终找到开放的道路
我的雇主红帽公司在开源软件的使用方面是独一无二的,因为我们的开发模式始于拥有数千名贡献者的开源社区,并最终形成经过尝试、测试和信任的成品。更具体地说,通过我们独特的开发模式,我们从社区创建的开源软件开始,并在每个项目的基础上进行构建,以加强安全性、修复错误、修补漏洞和添加新功能。然后,我们将这些改进贡献回每个项目,以便整个开源社区都能受益。这种方法的效用是显著的,包括
- 通过与内部团队之外的人员协作,利用组织外部其他人的创新
- 当已经存在或潜在的社区正在解决相同问题时,您可以与他们协作,从而避免自行开发和维护开源解决方案的成本和低效率
- 通过与合作伙伴和上游项目社区的富有成效的协作,避免维护主项目的下游分支带来的昂贵后果
- 一些公司发现创建上游代码的非公共分支很诱人,作为解决特定用例的快速方法,或者因为他们不倾向于在社区中协作。然而,由于开发成本增加、互操作性丧失和其他原因,此类分支的长期维护负担可能是令人望而却步的。相比之下,将开发集中在原始上游社区中,可以在所有参与者之间分摊开发成本。
除了少数例外(例如红帽公司),大多数可能使用开源软件的组织都采用专有许可模式(或软件即服务公司的等效概念),并将专有软件作为其业务的一部分进行许可。这些组织认为他们拥有提供某些竞争优势的软件组件,并且不希望看到这些组件在开源条款下提供给他人。这是可以理解的。但是,我将鼓励任何为这些公司提供咨询的开源律师敦促他们的客户转向开源开发模式,特别是对于任何非差异化和通用的软件部分。
例如,如果您的公司开发移动电话应用程序,并且您需要一个软件模块来读取和写入 PNG 图像文件,那么使用 GitHub 上可用的流行开源 PNG 软件模块之一会便宜得多。编码和解码 PNG 图像很可能对您的业务来说是非差异化元素,那么为什么要花费宝贵的工程时间来编写您自己的版本呢?此外,为您自己的模块编写此功能也可能导致与使用常用开源模块的其他软件的兼容性问题。为什么?虽然您的模块和开源模块可能都是按照已发布的 PNG 规范进行编码和解码编写的,但有时,可能对规范有不同的解释或实现错误。每个人都使用相同的模块来执行此功能,从而确保大多数用户的兼容性并降低开发和维护成本。
还必须认识到,某些软件可能需要保持专有,并且不受开源条款的约束。根据您系统的软件架构和正在使用的开源软件许可证,除非采取某些措施(超出本文范围),否则旨在保持专有的软件部分可能会受到开源许可证条款的约束。这就是向客户提供关于许可证选择和架构咨询将变得有用的地方。
开发可扩展的解决方案
对于主要许可专有软件的组织而言,随着其开源软件使用量的增长,审查和批准要求可能会增加(根据我的经验,甚至是呈指数级增长)。因此,这样的组织可能会因资源限制而发现自己处于困境。下面描述了必须到位的可扩展解决方案。
授权和委托他人
律师不能也不应该成为守门人。这是低效的,并且肯定会导致开发和发布时间的瓶颈,从而产生挫败感和收入损失。相反,探索将权力委托给产品或项目管理和工程部门的有能力的人员。这使组织能够高效且有效地扩展。教育您的客户(见下一节)对于取得成功至关重要。
我采取的一种方法是为整个工程组织提供开源培训,以便他们可以做出基本的许可和架构选择,同时为软件负责人提供更专业的培训,使他们能够提供更复杂的指导和决策。考虑在每个级别提供明确的权力限制,包括哪些类型的问题和决策必须升级给您作为他们的开源法律律师。您组织的具体委托级别将取决于您的团队在开源方面的经验以及对某些开源问题的敏感性。
教育客户
我发现培训是将您的组织迁移到更具开源意识的最有效工具之一。培训您的软件工程师和产品经理至关重要。让我详细说明。
尽管您的软件工程师处于第一线,并且可能非常了解一般的开源问题和许可,但对他们进行组织特定要求的培训仍然很重要。例如,您的公司可能只允许使用宽松的开源许可证,并且可能对其版权声明和源代码可用性有某些要求。为了避免稍后必须纠正的开发问题(这是一项成本高昂且耗时的活动),最好培训工程师最大限度地减少不当行为的可能性,尤其是在任何开发过程的开始阶段(见下一节)。
产品经理也必须接受培训。在许多公司中,产品经理负责营销的经典 4P——产品、价格、定位和促销——并对产品从摇篮到坟墓的整个生命周期负责。产品经理工作的所有这些方面都可能受到开源软件使用的影响。出于与上述相同的原因,理解使用开源软件时的要求对他们很有用。此外,更重要的是,产品经理在组织中的重大影响力意味着他们通常能够实现对流程和策略的任何必要更改。产品经理可能会成为您推行“开放”流程变更的最有力倡导者之一。
早期检测
在开发过程接近尾声时解决开源许可问题非常困难且成本高昂。随着软件接近发布日期,架构和开源软件模块已经选定。如果检测到问题,例如在专有软件模块中嵌入了 copyleft 软件(当该专有模块旨在不受开源条款约束时),在该开发阶段修改架构或模块可能会非常困难且昂贵。相反,致力于开发在流程早期分析架构和开源模块选择的流程,以便可以进行成本更低且更有效的航向修正。
开源法律的回报
实践开源法律是一项有益的职业,因为它能够影响组织走向“开放”,这具有显著的好处。成功取决于您为您的组织开发可行且可扩展的解决方案的能力,随着您的组织成长和成熟。
评论已关闭。