273 - 《开源许可证》
发布于 2023年3月14日
之前一直用 MIT,所以也没咋关注开源许可证。最近在做 Rust 方案调研,发现 Turbopack 是基于 MPL 2 协议,就趁这个机会了解了下开源许可证,基本上搞懂了。以下是学习笔记。
1、开源许可证的由来?Richard Stallman 在 1986 年底完成了 GPL 的初版,并最后在 1989 年作为 GPL-1.0 发布。用法律来守护软件自由,其核心是「如果你使用了自由软件,那么你的软件也必须是自由的」,即 copyleft。后来一些人觉得软件自由没那么重要,为了让更多人放心地使用开源软件,出现了更宽松的许可证,以 Apache 为代表,不包含 copyleft 条款。
2、社区有各种各样的许可证,可能 2000+?而通过认证的开源许可证有 116 个。然后基于二八原则,其中 8 种许可证占了 98.4%,前三种是 Apache 2、MIT 和 GPL 3。这些证书整体分两类,宽松型和严格型(Copyleft)。宽松型比如 BSD、MIT、Apache 等;严格性 Copyleft 是有传染性的,但传染性的强弱不同,最强传染的是 AGPL,最好别碰,弱传染的有 EPL、MPL、CDDL 等,还是可以与闭源软件结合使用的。
3、怎么理解以 GPL 许可证为例的传染性?比如你使用了基于 GPL 的库,那「work based on the Program/Library」的衍生作品,都需要按照他的约定开源。但同时,GPL 也表明「separate and independent work」如果仅仅是聚合在一起,不属于同一作品,无需开源。这中间的界限其实是比较模糊的。
4、以 Apache