首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

To 开源 or not to 开源:软件许可证漫谈(上)

题图为liunx官方的吉祥物Tux

特别策划|To 开源 or not to 开源:软件许可证漫谈(上)

本文是之前学习了解软件许可协议的简单总结,后来又添了一些案例,所以受微信推送篇幅所限,共分为上下两部分发布。文中如有疏漏,还请各位读者指正。

全文共有以下几方面内容:

(上)

常见软件许可证分类及其内容

常见和化学领域相关软件或脚本的许可证问题

(下)

软件许可证相关法律问题举例

其他相关软件和许可证简介

常见软件许可证分类及其内容

软件按许可类型可分为专有软件自由软件

专有软件的所有者可以自主决定是否可以分发该软件,以及费用的数额(收费的称商业软件)专有软件开发者一般视源代码为机密,因此在许可协议中会强调禁止逆向工程、禁止再次改编和分发等。

图为腾讯QQ软件的用户许可协议,可见其禁止用户对软件进行反向工程等操作。

自由软件可以不受限制地自由使用、复制、研究、修改和分发,充分尊重用户自由。它可以被任何持有者随意分发,相关的复制以及服务费用也可自行决定。 常见的许可证有:GPL许可证BSD许可证、MIT许可证、Apache许可证、Mozilla许可证等。

GPL许可证全称为GNU通用公共许可协议,即GNU General Public License。1983年理查德·斯托曼发起GNU计划,意在创造一套完全自由的操作系统GNU。几年后,他创立了自由软件基金会(FSF),并完成了GPL的制定。至今GPL已发布三个版本,并衍生出了LGPL等许可证。

图左为理查德·斯托曼(Richard Matthew Stallman),图右第一行为自由软件基金会logo,第二行左为GNU计划logo,第二行右为 GNU GPLv3版本许可证的logo。GNU是“GNU's Not Unix”的递归缩写,斯托曼宣布GNU发音应为“Guh-NOO”,即/’gnu:/。

GPL许可证赋予了软件使用者四大自由:

基于任何目的,按你的意愿运行软件的自由(自由之零)。

学习软件如何工作的自由,按你的意愿修改软件以匹配你的计算的自由(自由之一)。可访问源代码是此项自由的先决条件。

分发软件副本的自由,因此你可以帮助你的邻居(自由之二)。

将你修改过的软件版本再分发给其他人的自由(自由之三)。这样可以让整个社区有机会共享你对软件的改动。可访问源代码是此项自由的先决条件。

可见,GPL许可证要求开发者和派生作品公开源代码,即许可中的Copyleft机制要求GPL程序的派生作品也要在GPL之下,这被其他一些开发者称为“开源传染”,也正是因为如此,非GPL软件是否可以合法地链接或动态地链接到GPL库的问题一直存在争议。此外,相关开发人员还要在源代码中声明协议与版权、及时声明代码中的变更,当然原作者不为派生作品负责。

另外GPLv3相比GPLv2,还要求公布修改的软件所涉及的硬件,这引发了业内不小的争议。另外因为改变许可证理论上需要所有参与开发的人同意,Linux内核的GPL许可仍停留在v2版本。

以上两图为GNU官方网站对链接GPL许可的模块的相关回答,可见情况划分还比较复杂。恕作者开发水平有限,在此不做太深入的解读。

参考链接:

https://www.zhihu.com/question/19771481

同GPL许可证相比,LGPL许可证允许公司或专有软件集成此软件,而不受到copyleft机制影响要公布源代码,因此LGPL协议的开源代码很适合作为第三方类库被专有软件引用,但对其进行修改等二次开发,仍需要将修改后代码开源。

BSD许可则给予了使用了更大的自由,它允许软件被修改作为专有软件发布,而只需要在源代码中或二进制程序的文档中声明许可即可。另外,它也规定不可以用开源代码的作者或机构名字和原来产品的名字做市场推广。

MIT许可常见于GitHub网站上的开源项目,它类似于BSD,也允许软件被修改为专有软件发布。许可证内容也很简单:

被许可人有权利使用、复制、修改、合并、出版发行、散布、再许可和/或贩售软件及软件的副本,及授予被供应人同等权利,惟服从以下义务。

在软件和软件的所有副本中都必须包含以上版权声明和本许可声明。

同BSD许可和MIT许可相比,Apache许可在声明专利和放置许可证方面有更多要求:

对所有未修改的部分应用相同的许可证,并且在每个许可文件中,必须保留再分发代码中的任何原始版权,专利,商标和归属通知(不需要包括任何部分的派生作品);并且在每个更改的许可文件中,都必须添加一条通知,说明对该文件进行了更改。

如果声明文本文件作为原始作品发布的一部分包含在内,则派生作品必须在包含该通知文本文件的可读副本,可以是文档或显示在软件中。

以上就是对当下常见的开源许可的简单介绍,它们有的强调将开源精神贯彻下去,有的规定宽松,允许商业软件使用自己的开发成果,那么作为开发者,该如何选择开源协议呢?

上图为开发者阮一峰在2011年的一篇博客中翻译自国外开发者的选择流程图,该图在国内影响广泛。

来源:

http://www.ruanyifeng.com/blog/2011/05/how_to_choose_free_software_licenses.html

上图的选择建议来自网站:

http://choosealicense.online/

在其他的开发者的博客中,也可见相关总结如:

来源:

http://www.gcssloop.com/tips/choose-license

上图来源:

http://zhoulingyu.com/2016/10/28/%E5%BC%80%E6%BA%90%E8%AE%B8%E5%8F%AF%E8%AF%81%E5%BF%AB%E9%80%9F%E9%80%89%E6%8B%A9/

在维基百科,也有表格列举了常见的开源许可证并作出了比较。因其内容庞杂,此处不再赘述。

链接:

https://en.wikipedia.org/wiki/Comparison_of_free_and_open-source_software_licenses

常见和化学领域相关软件或脚本的

许可证问题

Python

目前使用python软件基金会许可证(PFSL)。这一许可证类似BSD许可,不受copyleft影响,允许分发修改后的版本而不提供源代码。

Python环境下的科学计算库

Python语言中著名的Numpy和Scipy库使用BSD许可证,Matplotlib的软件许可证则综合了BSD许可和PFS许可。

Python环境下的GUI库

至于Python环境中的各个GUI库,虽然Qt本身具有LGPL许可,但其在python环境下的PyQt库由英国Riverbank Computing运营,同时使用GPL和商业许可。而同样是基于Qt的PySide使用LGPL许可。

另外还有PyGtk库使用LGPL许可。

关于PyQt的许可证:

https://www.riverbankcomputing.com/commercial/license-faq

PySide主页:

https://doc-snapshots.qt.io/qtforpython/licenses.html

其他

PyOpenGL使用BSD许可证

参考来源:

https://www.cgl.ucsf.edu/chimera/current/docs/embedded.html#pyopengl

https://pypi.org/project/PyOpenGL/

ChimeraX关于软件许可的说明比较完整,涉及的许可种类也比较多,可以作为参考。这是一款专有软件,提供免费的非商用版本。

链接:

http://www.rbvi.ucsf.edu/chimerax/docs/embedded.html

cclib作为一个基于Python的化学相关库,提供了多种文件格式按内容读取和简单的计算等功能,下图为cclib文档中关于软件许可和文献引用的说明。

另外关于行业相关杂志对代码许可证的要求,受作者水平所限仅举几个例子。

Computer Physics Communications杂志有专门的板块发布化学相关软件文章,其对代码的许可要求如下:

链接:

https://www.elsevier.com/journals/computer-physics-communications/0010-4655/guide-for-authors

而作者所见的文章中,其他期刊的涉及化学相关软件文章则又各有不同。比如在之前的推送中提到的Doyle组使用人工智能预测反应收率的文章,就有代码在GitHub上发布,下图为项目主页。

项目主页链接:https://github.com/doylelab/rxnpredict

而在2018年4月和5月刷屏的Grzybowski组和Waller组的关于计算机辅助有机合成路线设计的文章,虽然其中有不少关于软件算法的介绍和软件的截图,但并没有代码公布,可能与其正在与对项目感兴趣的企业合作有关。

链接:http://chematica.net/#/about

Waller组文章链接:

https://www.nature.com/articles/nature25978

参考链接:

https://zh.wikipedia.org/wiki/%E4%B8%93%E6%9C%89%E8%BD%AF%E4%BB%B6

https://zh.wikipedia.org/wiki/%E8%87%AA%E7%94%B1%E8%BD%AF%E4%BB%B6

https://zh.wikipedia.org/wiki/GNU%E9%80%9A%E7%94%A8%E5%85%AC%E5%85%B1%E8%AE%B8%E5%8F%AF%E8%AF%81

https://zh.wikipedia.org/wiki/GNU%E8%A8%88%E5%8A%83

http://www.open-open.com/solution/view/1319816219625

图片来源:

题图:

由Thesupermat - 自己的作品,CC BY-SA 3.0,

https://commons.wikimedia.org/w/index.php?curid=37264906

由Free Software Foundation - gnu.org/graphics/license-logos.html,公有领域,

https://commons.wikimedia.org/w/index.php?curid=5393454

由原作者: Li JiangUpload: User:Sven - http://www.gnu.org/graphics/fsf-logo.html,

公有领域,https://commons.wikimedia.org/w/index.php?curid=1006970

由Aurelio A. Heckert,CC BY-SA 2.0,

https://commons.wikimedia.org/w/index.php?curid=457923

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180806G1LK3E00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券