有人痴狂,有人跑路,开源软件新一年的冰火两重天

2023-05-16

最近有关开源软件的话题始终占领着IT界的新闻头条,Log4j开源软件的惊天漏洞,才刚刚出现不久,Fake.js的作者也惊天删库跑路了,CurL的作者怒怼苹果只会白嫖开源却不出力,Linux的祖师爷Linus也不知所云地在Github为WINXP加油打Call。

开源界也算是痴人、狂人、妄人、疯人齐聚了,但是不可否认的是开源极大的推动了IT行业的发展,尤其是让国内新一代程序员快速融入到了信息科技大潮中。去年初一个外国程序员发布了一篇题为《中国的开源项目正在破坏 GitHub 的排行榜》的博客,对中国项目占领GitHub 的趋势榜的情况进行了无奈的吐槽,而这样火爆的场面恰恰是我国开源事业蓬勃发展的一个侧影。目前不但来自中国的项目占领了Github的排行榜,而且越来越多的中国年轻程序员也都始投身到开源社区,目前在GitHub全球4000 万的注册用户中,来自中国的开发者从数量和贡献度上均位列第二,越来越多的国内企业在国际合作的开源项目中扮演着重要角色。

开源-西方人的集市、中国人的侠义

开源软件公开源代码的软件,所以从这个角度上讲开源软件是信息产业发展到一定阶段以后的产物,因为在IT产业刚刚创立的时候,软件都是以源代码的形式提供的,可以说当时的软件都是开源的。

而在上世纪70年代以微软为代表的软件公司,仅提供编译后的二进制可执行程序,而不再提供源代码了,这就形成了闭源的概念,在在此之后真正意义上的开源产业也就相对于闭源形成了。

开源概念的形成,自始就有很大的挑战传统、不畏强权的侠义精神在其中,而这要从由Richard Stallman创立的GNU开始说起GNU官方定义是一个“GNU is Not Unix”,这是十分叛逆的递归定义,因为人们可能只能从其中看到反Unix闭源的理念,却永远也找不到本意,GNU的目标是创建一套完全自由、开放的操作系统。,从某种程度讲,Linux就是GNU理念不断推广所形成的产物,

后来Richard Stallman创立了自由软件基金会(Free Software Foundation ,FSF),其主要工作是执行GNU计划。为了保证GNU软件可以自由的“使用、复制、修改、发布”,同样也禁止部分人在GNU软件的基础上自己修改并发布的软件中添加任何限制他人自由使用的条款,在这个情况下就诞生了GNU的许可条款再后来又产生了其他的(非GNU)许可条款,这些又统称为开源许可协议。而这些开源协议又将开源项目分成了各自不同的门派,而各派之间又有不同的玩法,所以从这个角度上讲开源是中国侠义精神的体现一点也不为过。

而开源与集市的类比,要从IT界传奇人物Eric Raymond史诗级的著作《大教堂和集市》(The Cathedral and the Bazaar)说起。书中讲到,世界上的建筑可以分两种:一种是集市,天天开放在那里,从无到有,从小到大;还有一种是大教堂,几代人呕心沥血,几十年才能建成,投入使用。当你新建一座建筑时,你可以采用集市的模式,也可以采用大教堂的模式。一般来说,集市的特点是开放式建设、成本低、周期短、品质平庸;大教堂的特点是封闭式建设、成本高、周期长、品质优异。

而开源将软件之所以使用类似于集市模式,关键在于集市可以让更多的用户参与到软件的开发的过程中,提高软件的质量,来更好地支持自己的服务。这也是为啥微软也在逐渐开源一些自身的工具,比如vs code,微软并不需要售卖vs code所带来的利益,反而让更多的人免费使用vs code,报告vs的bug,扩展vs的功能,反而更有利于微软操作系统 的推广,因为vs生成的软件大多是在windows上执行的,微软也可以通过通过vs来推广自身的一些如windows Azure的服务。其实这种说法,是克里斯·安德森《免费:商业的未来》与谷歌长尾理论的另一种诠释,其逻辑内核都是基于极低边际成本来快速积累用户的模式。这也从另一个侧面说明了开源会是业个典型的互联网产业。

开源不应该被白嫖-业界的反思

去年中国某电子书厂商拒绝开源其基于Linux 内核修改的源码,这一明显违反了GPL协议开源协议的做法,引发了国内外有关开源使用规则的大讨论。当然身力憔悴的开源人并不是我国独有,上文提到的Fake.js、Linux、CurL等知名开源软件的创始人,也都为了开源事业做出巨大贡献了,但是“一斗米是恩,一升米是仇”,一味地无私奉献往往换来的不是赞誉而是漫骂与批评,

因此很多成功的开源软件在创始人屡屡受挫而“心累”之后,往往会倾向于慢慢走向自闭,这个趋势在Github上也能看出端倪,作为全球最大的开源社区网站,在2020年开始对于某些区域的用户加以限制了,对于开源软件的使用也开始有了不同的声音,比如来自清华大学的刘利副教授就公开表示说“我国对国外开源基础软件的依赖,使一些国家可随时通过隐藏最新技术或版权,限制甚至阻碍我国科技发展。”

不过从实际情况上看,笔者不太认同刘利老师的说法,盲目的抄袭当然是有害的,但是借鉴开源软件的思路和想法,对于我国乃至整个IT产业来说都非常重要。在目前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公共许可协议

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

笔者在这里必须要提示大家,我国科技公司对于知识产权的重视程度不够,尤其对于开源规则、开源协议重视程度不够,这点的确值得我们反思。

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

说起健康的开源模式,国内厂商中RT-Thread算是其中的翘楚,他们的模式是代码完全开源,创始人一手建立的睿赛德则在背后进行技术支持,并收取技术服务的费用,去年睿赛德发布了混合微内核而且支持MMU的物联网操作系统-RT Smart,由于物联网终端的运行条件限制,其操作系统对于性能要求很高,但体积又不能太大一般不有超过10M,可以说体积要求几乎把Windows、安卓等目前主流的操作系统排除在外,所以从这个角度上讲,这对于我们自主的物联网操作系统来说将是一个重大机遇;另一方面物联网操作系统的功能也不能太简单,这对于自主物联网操作系统来说又是一项挑战,而RT Smart在性能、体积与功能方面堪称完美平衡的典范, RT Smart的关键发布也证明了这种代码开源,服务收费的模式才是开源的健康发展模式。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有人痴狂,有人跑路,开源软件新一年的冰火两重天 的相关文章

  • 用反射和内省技术实现简单SpringIOC

    文章标题 用反射和内省技术实现简单 SpringIOC 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者QQ 190678908 作者博客 http newjueqi iteye com http blo
  • jdk5.0新特性(1)

    文章标题 JDK5 0 新特性 xff08 1 xff09 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者QQ 190678908 作者博客 http blog csdn net newjueqi ht
  • JDK5.0新特性(2)——反射

    文章标题 JDK5 0 新特性 xff08 2 xff09 反射 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者QQ 190678908 作者博客 http blog csdn net newjueqi
  • JDK5.0新特性(3)——枚举

    文章标题 JDK5 0 新特性 xff08 3 xff09 枚举 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者QQ 190678908 作者博客 http blog csdn net newjueqi
  • XML学习笔记(附上思维导图)

    文章标题 XML 学习笔记 附上思维导图 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者QQ 190678908 作者博客 http blog csdn net newjueqi http newjue
  • JavaWeb基础(思维导图版)

    尝试一下只画思维导图
  • 周深与邓丽君同台,vtuber能扛起元宇宙的大旗吗?

    在今年江苏卫视的跨年晚会上 xff0c 周深与和与邓丽君合作了 大鱼海棠 小城故事 等三首曲目 xff0c 虽然仔细看邓丽君的形象还是略有破绽 xff0c 但整体的自然度已经过关了 本次重现邓丽君的形象 xff0c 使用的类似于vtuber
  • Java线程类小结(附思维导图)

    文章标题 Java 线程类小结 xff08 附思维导图 xff09 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者QQ 190678908 作者博客 http blog csdn net newjueq
  • 打造山寨产品和伪造产品的利器——装饰模式

    文章标题 打造山寨产品和伪造产品的利器 装饰模式 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者QQ 190678908 作者博客 http blog csdn net newjueqi http ne
  • 搜索文本内容——Java代码的简单实现

    文章标题 搜索文本内容 Java 代码的简单实现 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者QQ 190678908 作者博客 http blog csdn net newjueqi http ne
  • 用面向对象的思想探讨游戏“魔兽争霸”(1)

    文章标题 用面向对象的思想探讨游戏 魔兽争霸 1 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者QQ 190678908 作者博客 http blog csdn net newjueqi http ne
  • 用面向对象的思想探讨游戏“魔兽争霸”(2)-继承和多态的应用(修改版)

    文章标题 用面向对象的思想探讨游戏 魔兽争霸 2 继承和多态的应用 修改版 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者QQ 190678908 作者博客 http blog csdn net new
  • memcache与mysql数据库同步

    http www cnblogs com zhanghw0354 archive 2012 10 23 2735599 html Good Heavens memcache与mysql数据库同步 面试某电商时 xff0c 面试官问到了mem
  • 默认的room setting

  • openfire的安装

    安装很简单 xff0c 使用命令 rpm ivh openfire 1 i386 rpm 在启动过程中可能出现如下的错误 xff1a failed to run command 96 opt openfire jre bin java 39
  • PHP 做守护进程

    http www 21andy com blog 20100228 1728 html Unix中 nohup 命令功能就是不挂断地运行命令 xff0c 同时 nohup 把程序的所有输出到放到当前目录 nohup out 文件中 xff0
  • php中获取http请求的代码

    获取http的请求 public function get http raw raw 61 39 39 1 请求行 raw 61 SERVER 39 REQUEST METHOD 39 39 39 SERVER 39 REQUEST URI
  • 应用向左,理论向右,计算机2021的冰火两重天

    近来来计算理论的发展极其缓慢 xff0c 而与之对应的是计算机领域的应用侧发展可谓日新月异 xff0c 像GPT 3及其衍生的AI模型 xff0c 各类大数据模型 超大规模云平台等等方面的进展不胜枚举 xff0c 相关成果也都举世瞩目 xf
  • mysqldump常用命令

    http www blogjava net Alpha archive 2007 08 10 135694 html 1 导出整个数据库 mysqldump u 用户名 p 数据库名 gt 导出的文件名 mysqldump u wcnc p
  • ci中使用多个数据库的方法

    config 39 hostname 39 61 config item 39 database ip 39 config 39 username 39 61 config item 39 database username 39 conf

随机推荐

  • php中强制浏览器下载文件

    file 61 fopen written file 39 r 39 header 39 Content type application octet stream 39 header 39 Accept Ranges bytes 39 h
  • PHP 守护进程类

    出处 xff1a http www oschina net code snippet 239150 11088 用 PHP 实现的 Daemon 类 可以在服务器上实现队列或者脱离 crontab 的计划任务 使用的时候 xff0c 继承于
  • linux的nohup命令的用法

    http www cnblogs com allenblogs archive 2011 05 19 2051136 html 在应用Unix Linux时 xff0c 我们一般想让某个程序在后台运行 xff0c 于是我们将常会用 amp
  • Mysql中创建用户帐户的方法

    http www eygle com digest 2008 01 mysql create user html 1 CREATE USER CREATE USER user IDENTIFIED BY PASSWORD 39 passwo
  • 用mysql触发器自动更新memcache

    mysql 5 1支持触发器以及自定义函数接口 UDF 的特性 xff0c 如果配合libmemcache以及Memcached Functions for MySQL xff0c 就能够实现 memcache的自动更新 简单记录一下安装测
  • 一个很爽的前端网站,有大量的资源

    http www gbin1 com technology css index html firstentry 61 0
  • Html5 Geolocation获取地理位置信息

    http www cnblogs com lwbqqyumidi archive 2012 11 10 2764352 html Html5中提供了地理位置信息的API xff0c 通过浏览器来获取用户当前位置 基于此特性可以开发基于位置的
  • openfire整合外部数据库的方法

    http www igniterealtime org builds openfire docs latest documentation db integration guide html 看了这篇教程 xff0c 发现了一个问题 xff
  • 金融机构如何应对核心系统分布式智能化升级大潮?

    过去40多年 xff0c 中国金融业实现了技术上的引进 借鉴 xff0c 并逐渐开始进行原创性创新 比如 xff0c 在 支付系统建设方面 xff0c 我国现在就走在了世界的前列 从二代大小额支付系统CNAPS到跨境人民币支付系统CIPS再
  • ajax请求中session无效的问题

    遇到一个问题 xff0c 发现网站中的所有ajax在某个服务器中的session总是无效 xff0c 后来同事查了资料 xff0c 原来php的配置文件中有个选项 xff1a Whether or not to add the httpOn
  • 解决seesion在二级域名下无效的问题

    开发中遇到了一个问题 xff0c 当用户在www aa com登陆了 xff0c 在二级域名下的登陆无效 例如 aa com 后来检查了很久 xff0c 终于知道了问题所在 xff0c 在www aa com下生成的cookie不适用于 a
  • 提供全球商家信息的网站

    做LBS的应用 xff0c 商家信息的获取和维护是个很重要的问题 xff0c 在中国的某些大型网站是雇佣了兼职人员去维护这些数据 xff0c 但对于小公司来说这种方法是不现实的 现在发现了一个网站 xff0c 提供了全球的商家信息 xff0
  • 使用web端连接xmpp

    在apache的配置文件中加入下面3句 xff1a ProxyRequests Off ProxyPass xmpp httpbind http 127 0 0 1 7070 http bind ProxyPassReverse xmpp
  • ubuntu apache开启重写模块

    http www iblue cc 2011 09 ubuntu apache E5 BC 80 E5 90 AF E9 87 8D E5 86 99 E6 A8 A1 E5 9D 97 Ubuntu下apache2的rewrite模块默认
  • openfire xmpp 如何判断用户是否在线

    http iammr 7 blog 163 com blog static 49102699201041961613109 想象中如此简单的功能 xff0c 想不到却这般大费周折 如要实现 xff0c 必须先确保 xff1a 1 openf
  • sql 分组统计

    原始的数据结构是这样的 xff1a 这是一个信息表 xff0c 记录下每个app每天对应什么等级 现在需求是 xff1a 统计每天每个等级有多少个app xff1f 实现的sql如下 xff1a select count as num le
  • Errors running builder JavaScript Validator的问题

    http jc dreaming iteye com blog 1038995 最近使用eclipse时 xff0c 在编译项目总是出现问题 Errors occurred during the build Errors running b
  • coreseek索引更新机制

    k索引更新机制 版权声明 xff1a 转载时请以超链接形式标明文章原始出处和作者信息及本声明 http fatal blogbus com logs 45153968 html 61 61 xff0c 昨晚太晚睡觉 xff0c 所以日记又没
  • golang生成自定义标签名(带CDATA标识)的xml

    在golang中 xff0c 有时候需要生成带CDATA标识的xml值 xff0c 例如这种 xff1a lt xml version 61 34 1 0 34 gt lt xml gt lt to User gt lt CDATA use
  • 有人痴狂,有人跑路,开源软件新一年的冰火两重天

    最近有关开源软件的话题始终占领着IT界的新闻头条 xff0c Log4j开源软件的惊天漏洞 xff0c 才刚刚出现不久 xff0c Fake js的作者也惊天删库跑路了 xff0c CurL的作者怒怼苹果只会白嫖开源却不出力 xff0c L