香山团队昨日发表的《香山开源项目的许可证选择》一文,介绍了如何给开源 RISC-V 处理器“香山”的源代码仓库选择许可证。
香山是一款开源的高性能 RISC-V 处理器。采用 Chisel 硬件设计语言开发,支持 RV64GC 指令集。香山由中科院计算所牵头,以及多家企业联合开发。
谈到开源项目的许可证选择问题,首先要分析背景和需求。根据香山团队的介绍,香山核的开源目标是形成一支高性能 RISC-V 处理器核的开源主线。基于此目标,香山核有两方面的需求:
- 吸引尽可能多的单位、企业、个人爱好者参与香山核的开源社区
- 参与者能尽量将基于香山核的修改反馈至社区
总的来说,香山开源项目希望在保持开放性的同时,能在一定程度上维持开源主线的先进性。
明确背景和需求后,香山团队随之确定了备选许可证——首选采用由国内单位主导发布的木兰系列开源许可证,包括公共版(具有传染性)和宽松版。
- 木兰公共许可证 (MulanPubL)
- 木兰宽松许可证 (MulanPSL)
在此阶段,香山团队表示他们关注到的问题都集中在木兰公共许可证的传染性问题上,即他人使用了代码之后在特定情况下也必须采用木兰公共许可证进行开源。
关于许可证的传染性问题,由于香山核涉及到开源硬件和开源软件,情况比较特殊。对此,香山团队从 5 个方面进行了考虑和分析:
- 传染性问题的成因
- 对 Chisel 项目的传染性
- 对生成的 Verilog 的传染性
- 对外围工具/脚本的传染性
- 许可证传染性对参与单位/企业的影响
回到最初的两个需求:维护香山项目开源主线的先进性和保持社区的开放性。基于此,香山团队认为,按照许可证严格程度由轻到重,有以下几种实施方案:
- 方案① :都采用木兰宽松版协议
- 方案② :暂时采用木兰公共版,之后针对 Chisel 特性完成许可证的自定义,放宽一些限制
- 方案③:CPU 核采用木兰公共版,其余部分(如 Cache)采用木兰宽松版
- 方案④:都采用木兰公共版协议
可以看到,这里的讨论焦点还是木兰公开许可证的传染性问题,香山团队需要在对香山项目本身的限制、对其他参与者的开放之间保持一个平衡。
基于对传染性问题的讨论,香山团队认为,方案③实际操作上不现实,方案①、方案④是可行的,方案②虽然短期可行但需要长期大量的资源投入。
最终,在反复对比权衡后,香山团队为香山开源项目的源代码仓库选择了最为开放的方案①——木兰宽松版许可证 (MulanPSLv2),该许可证已于去年通过 OSI 认证。目前香山开源项目的各个仓库均包含了木兰宽松许可证第 2 版。
此外,由于开源硬件与开源软件之间的巨大差别,比如硬件的专利约束要比软件强得多。香山团队表示正在与专业的律师一起设计、制定知识产权的共享方案。
猜你喜欢: