尊重版权,遵守开源协议,才是软件自主掌控之道

近日中国电子书厂商Oynx拒绝开源其基于Linux 内核修改的设备源码,而这一做法明显违反了Linux的GPL协议。因此在Reddit社区引发了开源软件如何在中国维权的大讨论。

凭心而论我国阿里、腾讯、百度等大厂近些年来在开源方面贡献都很大,Oynx拒绝开放源码的行为也纯属是个例,不过这次风波也明显带有了中国的地域性色彩,毕竟好事不出门,坏事传千里,即使我们开源了飞浆、RocketMQ等多个优秀的开源软件,也无法对冲不遵守开源规则所带来的恶劣影响。

无独有偶,这已经不是开源社区与中国的第一次碰撞了,前一段知名的开源云服务提供商HashiCorp在官网宣布:不允许中国境内使用、部署和安装该企业旗下的“企业版”产品和软件。

虽然最后确定这只是一起乌龙事件,被限制使用的仅限于HashiCorp的加密软件。不过这一事件开了一个比较坏的头,标志着开源也有走向封闭的可能,后续很可能还会有更多的企业会做出类似的决定。

开源也会封闭,业界开始反思

而作为全球最大的开源社区网站,GitHub在去年年中,开始对来自被制裁地区的用户加以限制了,分别有来自克里米亚和伊朗的GitHub用户发现自己的账号遭到了网站官方的限制。

也正是因为以上原因,让我国IT界对于开源软件的使用也开始有了不同的声音,比如来自清华大学的刘利副教授就公开表示说“我国对国外开源基础软件的依赖,使一些国家可随时通过隐藏最新技术或版权,限制甚至阻碍我国科技发展。”

过去10年中,刘利老师的工作集中在自主研制国产地球系统模式耦合器。耦合器是实现气候预测与数值天气预报软件系统集成的一项关键核心技术。特别值得指出的一点是,2010年刘利老师开始从事这个方向的研究时,我国已广泛使用开源耦合器多年。不过即使有开源替代产品,刘利老师也还是认为自主研发开源方案的替代品,并不是重复造轮子。在接受《中国科学报》采访时,他再次表示,“长期使用国外免费开源基础软件,很大程度上制约了我国自主研发的积极性和创新能力,拉大了我国在相关领域与其他国家的差距,这无异于助长了对我国的‘科技侵略’!”

不过从实际情况上看,笔者不太认同刘利老师的说法,盲目的抄袭当然是有害的,但是借鉴开源软件的思路和想法,对于我国乃至整个IT产业来说都非常重要。而且从实际的情况来看,GitHub目前40%以上的新增用户全部来自于中国,而且他们也计划在中国设立独立运营的分公司,并没有任何与我国脱钩的迹象,而且在目前IT技术发展日新月异,拥抱开源、互通共享已经逐渐成为了业界的共识,在这种情况下,获取开源技术社区的支持,对地我们来说无比重要,不过这种支持是交互的,也要求我们在使用开源时,尊重开源规则。

初识开源协议

说起开源协议,就不得不提GNU。其官方定义是一个“GNU is Not Unix”,这是官方给出的递归定义,永远也找不到本意,我们可以将它理解为一个自由软件工程项目或者一种计划,是由Richard Stallman在1983年9月27公开发起的,它的目标是创建一套完全自由、开放的操作系统。1985年10月Richard Stallman创立了自由软件基金会(Free Software Foundation ,FSF),其主要工作是执行GNU计划。为了保证GNU软件可以自由的“使用、复制、修改、发布”,同样也禁止部分人在GNU软件的基础上自己修改并发布的软件中添加任何限制他人自由使用的条款,在这个情况下就诞生了GNU的许可条款,再后来又产生了其他的(非GNU)许可条款,统称为开源许可协议。

这里列举了最常用的几种开源协议:

GPL (GNU General Public License) :GNU通用公共许可协议

LGPL (GNU Lesser General Public License) :GNU宽通用公共许可协议

BSD (Berkeley Software Distribution)  :伯克利软件分发许可协议

MIT (Massachusetts Institute of Technology):MIT许可协议之名源自麻省理工学院,又称“X许可协议”或“X11许可协议”

Apache (Apache License) :Apache许可协议

MPL (Mozilla Public License) :Mozilla公共许可协议

如果将开源协议具体用途的决策点进行分类,那么其导图如下:

开源规则的反思反思

而本次事件的起因,恰恰是因为oynx的文石科技没有遵守开源协议而造成,客观的讲oynx的做法虽然不具有普遍性,但是我国科技公司对于知识产权的重视程度真的是不够,这点的确值得国人反思。

我们很熟悉的视频、音频处理项目FFMPEG和Linux都是采用了GPL。而GPL协议和BSD, Apache Licence等鼓励代码重用的许可很不一样。GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代 码做为闭源的商业软件发布和销售。这也就是为什么我们能用免费的各种linux原因。

不过还是有很多商业软件使用 FFMPEG 的代码但并未遵循 LGPL/GPL 许可证的要求,因此FFMPEG的组织方使用“耻辱柱(Hall of Shame)”来公示那些违反 GPL 许可证使用FFMPEG代码的其公司,其中有很大一部分是中国的知名企业,为此整个业界也都欣起了轩然大波。

而最近笔者发现国内最早的开源操作系统项目MiniGUI也发布了例外清单,https://www.fmsoft.cn/exception-list对某些未遵守GPL协议的公司进行了例外处理。虽然这些还没有升级成我国IT界与开源社区的冲突,但是笔者还是要呼吁业界,在在使用开源软件的时候一定要注意遵守相关规则。

如果要问两年前中国最大的文化输出是什么,那这可能是大刘的科幻,也可能是莫言的小说;而如果现在要问这个问题,那它的答案应该是开源。十年前业界流传“代码正在吞没世界”的观点,现在IT界普遍认为“互联网世界的一切源自开源”,这里笔者再次呼吁业界,遵守开源规则,用好开源软件。

尊重版权,遵守开源协议,才是自主掌控之道相关推荐

  1. 如何实施开源协议,以及如何遵守开源协议的要求

    网上有很多开源协议的介绍,但是很少有说明如何在你自己开发的软件中使用开源协议,保护自己的代码:以及当你使用别人开源项目时,如何遵守开源协议里面约定的行为.文本从github上找了些项目举例描述下这2个 ...

  2. 从Copyright到Copyleft,聊聊版权与开源协议

    4月26日是世界知识产权日,很多人或许会觉得这和软件开发没什么关系,但事实上,开源软件大多受到知识产权法中著作权法(Copyright,也称版权)的保护. 开源软件虽说开放了源代码,但是用户在使用.修 ...

  3. GPL LGPL Apache2.0 BSD 开源协议扫盲帖

    BSD (Berkeley Software Distribution,伯克利软件套件)是Unix的衍生系统,在1977至1995年间由加州大学伯克利分校开发和发布的.    历史上, BSD曾经被认 ...

  4. VNPY官方开源项目为什么不能选择MIT开源协议

    其他文章 <VNPY项目开源地址> https://gitcode.net/vnpy/vnpy <vnpy3.0新版策略自动生成回测文件功能代码解析> 众所周知,VNPY是采用 ...

  5. 猫与虎——浅谈开源协议与开源精神

    本周对中国开源界影响最大的事件是什么?我想,莫过于射手播放器开发日志中关于"射手播放器项目公开谴责腾讯违反开源协议"(原文地址:http://blog.splayer.org/?p ...

  6. 【转】猫与虎——浅谈开源协议与开源精神

    开源,不仅是种行为,更是一种信仰. 胡适在<追悼志摩>中,这样评价徐志摩道:"他的人生观真是一种'单纯信仰',这里面只有三个大字:一个是爱,一个是自由,一个是美.他梦想这三个理想 ...

  7. 常见版权协议介绍,什么的License许可证,eula,开源协议

    LISENCE(许可证),一般在软件.项目.文件的目录里,指此软件使用哪个许可证,也代表了我们应该怎么使用软件 License的许可证的协议有很多种,比如常见的Apache许可证 Apache Lic ...

  8. 什么是开源协议?知识产权又是什么?—— 版权与开源简介

    版权与开源 知识共享协议 版权从作品诞生时天然具有,专利和商标需要注册 版权有效期 = 作者寿命 + 70 年,之后变为公共内容 很多作品是比较希望传播的,但有时候又不能过度传播,如何把握平衡点成为了 ...

  9. 如何为你的代码选择一个开源协议

    相信很多刚踏入软件这个行业的小伙伴一如当初的我,对开源软件的各种协议不甚了解被搞昏了头脑.毕竟对于一个新生程序员来说,如何写好代码才是亟待解决的问题,无暇了解这些.随着你项目做得多了代码写得多了,你会 ...

  10. 【Git】认识各种开源协议及其关系

    开源许可协议 License是软件的授权许可,里面详尽表述了你获得代码后拥有的权利,可以对别人的作品进行何种操作,何种操作又是被禁止的. 开源协议的种类 现今存在的开源协议很多,而经过Open Sou ...

最新文章

  1. 【SVN】svn“E155017工作副本的参考文件损坏、E200014文件校验和不匹配”的解决方法
  2. zip 密码算法 java,java zip 密码
  3. Authorization object where used list in tcode SUIM
  4. 【转】 NSArray copy 问题
  5. 太阳升起并下落的小动画-SWIFT
  6. Intelli IDEA快捷键(配合IdeaVim)
  7. 力扣-387 字符串中的第一个唯一字符
  8. 最全最详细的小白快速上手Modelsim教程
  9. 学生管理系统数据库设计
  10. 东芝300d硒鼓清零代码_东芝300d怎么清?
  11. 5g与计算机网络有什么关系,5G网络是什么意思 5G和4G网络有什么区别?
  12. 官宣 .NET 6 RC (Release Candidate) 2
  13. 数值计算和SVM讲解(下)
  14. R_展示变量之间关系的图形
  15. 沉船会有什么_泰坦尼克号沉船之谜
  16. 查找数据库指定数据的数据表和字段名称SQL语句
  17. 地热能类毕业论文文献有哪些?
  18. PDF怎么转换成PPT?分享给你两个小妙招
  19. 软考——成本估算和成本预算的区别和联系(论文考点)
  20. Carbon中文使用手册

热门文章

  1. 详解torch.view()的-1参数是什么意思
  2. c语言编程仓鼠吃豆子,动态规划之仓鼠吃豆子 - osc_8quu62cg的个人空间 - OSCHINA - 中文开源技术交流社区...
  3. 视频:这不是科幻,厉害了,用人工智能修长城
  4. 上dnf一直连接服务器中,Win7系统下玩dnf提示正在连接服务器如何解决
  5. echarts 为x轴、y轴添加滚动条
  6. 【Unity 框架】QFramework v1.0 使用指南 架构篇:05. 引入 Utility | Unity 游戏框架 | Unity 游戏开发 | Unity 独立游戏
  7. STM32F407VG晶振与主频配置
  8. 中国象棋棋盘java_JAVA中用程序绘制国际象棋与中国象棋棋盘
  9. linux cad 安装教程视频,在Deepin Linux系统中安装Freecad后再安装assembly2插件的方法...
  10. js实现微信中下载APP