MIT License - “自由自在,随你用”
核心精神: 极致的宽松自由!原作者基本对你没啥限制,就一个要求:“用了我的代码,记得提一嘴是我写的就行,出了事别找我!”
你能干啥?
随便复制、修改: 代码到手,想怎么折腾就怎么折腾,完全按你的心意来。
放心商用: 用在你的收费软件、SaaS服务里赚钱?完全没问题,不用给原作者分钱,甚至都不用通知他(但保留声明是好习惯)。
闭源分发: 你魔改后的代码,想藏着掖着自己用,或者打包进闭源产品里卖?MIT 完全允许!没有“传染”风险。
你需要干啥?
保留原始的版权声明和许可协议文本(通常在代码文件头或项目根目录的 LICENSE 文件里)。这是它唯一的“小要求”。
感觉像: 原作者送你一份礼物,你爱怎么用都行,只需在包装盒上贴个“礼物来自XXX”的标签。
常见项目: jQuery, Ruby on Rails, Node.js, .NET Core, Xamarin 等大量流行库和框架。
Apache License 2.0 - “自由开放,但咱得讲点规矩”
核心精神: 也非常宽松,支持商业应用,比 MIT 多了一些对专利和贡献者的小保护,要求也多一点点(但很合理)。
你能干啥? (和 MIT 非常相似)
随便用: 集成到你的商业产品或服务里盈利?完全 OK。
随便改: 按需调整代码,没问题。
随便分: 分发原版或你修改后的版本,都可以。
专利授权: 协议明确授予你使用相关专利的权利,这点对企业用户很重要,减少了潜在的法律风险。
你需要干啥?
保留原始的版权声明、许可协议文本和项目中的NOTICE文件(如果有的话)。
如果你修改了源代码文件,需要在文件里显著标注你做了哪些改动(比如在文件头加注释说明)。
分发时,必须包含一份协议副本。
感觉像: 原作者开放了一个功能强大的工具箱,你可以自由使用、改造、甚至用来组装你的产品出售,但需要在工具箱和你改造的部分贴上清晰的“改造说明”和“使用手册”。
常见项目: Apache 软件基金会项目 (如 Hadoop, Kafka, Spark), Android, Kubernetes, TensorFlow, Spring Framework (Java开发者的最爱!) 等大量企业级和云原生项目首选。
GPL (GNU General Public License) v3 - “自由共享,用了我的就得回馈社区!” (传说中的“传染性”)
核心精神: Copyleft 理念的强力代表!核心要求是:如果你分发基于GPL代码的软件(无论是原版还是修改版),你必须将整个软件的源代码也以GPL协议开源! 这就是它“传染性”的来源——它要求下游衍生作品也保持同样的自由开放。
你能干啥?
自由运行软件。
自由学习和修改源代码。
自由分发原版软件。
你需要干啥? (重点在分发时!)
必须开源: 你必须将整个软件的完整源代码(包括你的修改部分)以GPL v3协议向接收者开源。
提供获取方式: 必须让接收者能方便地获取到源代码(比如随软件一起提供,或提供明确的下载链接)。
保留声明: 保留版权、许可、免责声明。
传递义务: 接收者也获得同样的权利和义务(Copyleft生效)。
如果你分发基于GPL代码的软件(无论是二进制还是源代码):
专利保护: 包含明确的专利授权条款,并规定如果贡献者发起专利诉讼,其专利授权将自动终止。
反硬件限制 (Anti-Tivoization): 特别强调用户必须能自由运行修改后的版本(防止硬件锁定修改后的软件)。
“传染性”在哪? 关键在于“分发”和“衍生作品”的定义。如果你只是内部使用修改后的GPL软件(不对外分发),通常不需要开源你的修改。但如果你把修改后的软件打包进你的产品/服务分发给客户(无论是卖还是免费提供),那么整个产品(只要是基于GPL代码的衍生作品)的源代码通常就需要按GPL开源了。
感觉像: 原作者分享了一个神奇的配方(源码)。你可以用它做出美味佳肴(软件)。但如果你想把这个佳肴卖给别人或者送给别人吃,你必须也把你改进后的完整配方(源码) 以同样的“分享精神”(GPL)提供给对方,让他们也能继续改进和分享。
常见项目: Linux内核, Git, GIMP, Bash, GNU工具链等。很多强调自由软件理念的项目使用。
LGPL (GNU Lesser General Public License) v2.1 / v3 - “GPL的温和版,库的友好选择”
核心精神: 为了解决GPL“传染性”对库/组件类项目可能过于严格的问题而生。核心思想是:你可以动态链接LGPL库到你的专有(闭源)软件中使用和分发,而不用把你的整个软件开源。
关键规则:
如果你修改了LGPL库本身的代码,那么修改后的库必须按LGPL开源。
如果你只是动态链接(例如在运行时通过操作系统加载)使用原封不动的LGPL库(.dll, .so, .dylib等),那么你可以闭源分发你的主程序。
如果你静态链接LGPL库(把库代码直接编译进你的程序),或者修改了库代码并分发,那么你可能需要提供某种方式让用户能够替换他们使用的库版本(例如提供目标文件让用户重新链接)。
为什么用它? 对于希望被广泛采用(包括闭源商业软件)的库/组件项目,LGPL提供了一个平衡点:既保护了库本身的自由(修改必须开源),又降低了使用者的门槛(动态链接时主程序可闭源)。
感觉像: 原作者提供了一个功能模块(库)。你可以直接拿这个模块(不修改)装在你的闭源产品里卖(动态链接)。但如果你改造了这个模块本身,改造后的模块必须开源。
常见项目: GTK, GLib, GNU C Library (glibc - 通常用 LGPL 例外), FFmpeg (部分组件用 LGPL) 等库。
BSD Licenses (2-Clause, 3-Clause) - “极简自由派,和MIT很像”
核心精神: 非常宽松,接近MIT。常见的是2条款(Simplified/FreeBSD)和3条款(New/Modified BSD)版本。
你能干啥? (基本同MIT)
自由使用、修改、分发(开源或闭源)、商用。
你需要干啥?
2-Clause: 保留版权声明和许可文本 + 免责声明。
3-Clause: 在2-Clause基础上,额外要求:不得使用原作者/贡献者的名字来为衍生作品背书或推广(“No Endorsement”条款)。这是BSD和MIT最明显的区别。
感觉像: 和MIT几乎一样自由,BSD 3-Clause 多了一句“别用我的名字给你的东西打广告”。
常见项目: FreeBSD, NetBSD, OpenBSD 操作系统,Go 语言早期版本(现在用 BSD-3-Clause + 专利授权),Nginx (核心用 BSD-2-Clause)。
评论区