开源 license 是什么

开源 license 是什么

背景

因工作中有个任务需要对 license 足够了解,所以查阅了较多资料总结了一篇 license 的内容。写这篇文章之前对 license 完全不懂,所以从我的角度来写的话或许能让你理解。

什么是开源软件

开放源代码的软件。假设有一天自我感觉代码能力不错,写了个小工具,但我并不想通过它来赚钱,我更想把这个工具及代码分享出去,让别人免费使用或阅读我写的代码,对我而言,能获得别人的认可,提升影响力我就感到很开心,这就是开源,开源也是一种精神。

相对应的就是闭源,不开放源代码,比如大多数商业软件。关键技术不能跟你分享,不然哪一天你成为我竞争对手咋办,我还得靠这代码恰饭。

什么是 license

license 翻译为许可证。理解为协议或版权声明,违反协议的后果就是商业纠纷。用原创作品类比,我发布这篇文章时声明了原创,别人如果要转载这篇文章,要经过我允许,否则就侵犯了我的权益。当然文章的版权与软件版权还是不一样的,不做过多比较。

商业许可证与开源许可证

商业许可证理解为使用该软件的门票,比如要使用 IDEA,你需要付费购买 license。

原创文章,你可以免费看,但不可以抄袭或者用作商业用途。类似的,开源软件,你可以免费使用、修改代码、与别人分享,但有一定的约束,通过开源许可证进行约束,它就像文章原创声明,但比原创声明复杂得多。

开源许可证有很多种类型,包含的内容各不相同,也就是对使用者的约束不一样。比如开源代码如果使用 GPL 协议,那么你就不能将这个代码利用在自己的商业产品中。

对开发者的影响

如果公司开发一个产品,需要使用到开源项目,将开源项目作为 jar 包引用或者需要修改项目源代码,不同情况应该使用不同的项目,否则会引起商业纠纷。

开源许可证的类型

开源许可证种类繁多,大概有上百种,但常用的有 6 种,为了方便理解,以主要特点作简要说明。

不推荐用于商业产品的协议

  • GPL – GNU General Public License

GNU 通用公共许可协议,免费使用、引用、修改代码,但不能用在闭源软件中发布及销售。“传染性” 表示如果一个软件使用了 GPL 协议的开源代码,那么这个软件也必须开源,仍然免费使用。不能用于商业产品。

  • LGPL – GNU Lesser General Public License

对 GPL 作了一些补充,在商业产品中,可以引用 LGPL 协议的代码,如果对代码进行了修改,额外的代码也需要使用 LGPL 协议,可以用于商业产品。

  • MPL – Mozilla Public License

可以对源代码进行修改,但必须有一个额外的文件对修改进行描述,还有一些严格的限制,可以用于商业产品。

适用于商业产品的协议

  • BSD – Berkeley Software Distribution License

代码可以被引用及修改,进行二次开发,适用于商业产品中。

主要限制在于不能用开源代码的作者或机构进行商品推广

  • MIT – Massachusetts Institute of Technology License

协议名源自麻省理工学院,和 BSD 协议比较接近,但比 BSD 更宽松,无论用于开源还是商业产品,只要包含开源代码的许可协议声明,至于你会不会通过它进行商品推广,作者并不关心,只想保留版权。

  • Apache – Apache License 2.0

Apache Licence 是著名的 Apache 软件基金会发布的协议,相对于 MIT 协议,要求稍微严格,如果修改了源代码,需要进行说明。

如果选择开源许可证

如果你要发布一个开源项目,下面这张图能让你更清楚自己应该选择哪种 license。图片来自阮一峰老师博客,网上用得比较多。

img

本文仅作入门,在使用时需要了解更多细节,搜索查看协议原文及相关文档。

参考来源

https://www.ruanyifeng.com/blog/2017/10/open-source-license-tutorial.html

https://www.geek-workshop.com/thread-1860-1-1.html

i

发表评论

电子邮件地址不会被公开。 必填项已用*标注