选择开源许可证
为什么需要开源许可证 把代码发布到 GitHub,并不意味着其他人就自动获得了自由使用、修改和分发代码的权利。 开源许可证的作用,就是明确告诉其他人:这个项目可以怎么使用、能不能修改、能不能商业使用、修改后是否需要公开源码,以及分发时需要保留哪些声明。 Choose a License 将开源许可证按照限制程度进行了整理,从 GNU AGPLv3、GNU GPLv3、GNU LGPLv3,到 MPL 2.0、Apache License 2.0、MIT License,再到基本没有额外条件的许可证,形成了一个从强 Copyleft 到宽松许可的连续范围。 因此,选择许可证真正需要考虑的不是「哪个许可证最好」,而是: 你希望别人如何使用你的代码? 如果希望别人可以自由使用,包括商业项目和闭源项目,通常应该选择宽松许可证;如果希望衍生作品继续保持开源,则应该考虑 Copyleft 许可证。 开源许可证主要解决什么问题 选择许可证之前,需要先理解几个核心问题。 商业使用 商业使用是很多开发者首先关注的问题。 主流开源许可证通常允许商业使用,包括 MIT、Apache License 2.0、GPL、LGPL、MPL 和 AGPL。区别并不在于「能不能赚钱」,而在于商业使用过程中需要履行什么义务。 例如: MIT:可以用于商业软件,也可以制作闭源商业软件。 Apache 2.0:可以用于商业软件,并提供明确的专利授权。 GPL:可以用于商业软件,但分发衍生作品时需要遵守 GPL 的开源要求。 AGPL:可以用于商业软件,同时对网络服务场景增加了更强的源码公开要求。 因此,「允许商业使用」并不等于「可以随便闭源」。 修改和再分发 大多数主流许可证都允许修改代码,但对修改后的代码如何发布存在明显区别。 宽松许可证通常允许: 开源项目 ↓ 修改 ↓ 加入商业项目 ↓ 发布闭源版本 而 Copyleft 许可证则通常要求符合条件的衍生作品继续采用相同或兼容的许可证,并提供对应源码。 是否必须公开源码 这是选择许可证时最重要的区别之一。 可以简单理解为: MIT / Apache 2.0 ↓ 允许闭源 ↓ 商业软件可以不公开源码 GPL ↓ Copyleft ↓ 符合条件的衍生作品需要开放源码 LGPL / MPL ↓ 弱 Copyleft ↓ 只对特定范围的修改要求开放 AGPL ↓ 强 Copyleft ↓ 进一步覆盖网络服务场景 需要注意的是,具体的源码公开义务取决于许可证定义的触发条件,不能简单理解成「用了 GPL 就必须把整个公司所有代码开源」。...