| 作者:卫sir
| 转载自:微月人话
| 编辑:王玥敏
| 设计:刘颖洁
三国时,吴国有个叫赵姬的女人,闺女出嫁前,她说:“到了婆家,你可千万不要做好事哟。”闺女不解,问母亲:“您不让我做好事,那我可以做坏事吗?”母亲立刻正色道:“
好事都不能做,更何况是坏事
!
”
有人一看就明白这是个什么道理,有人可能一下还看不明白,文末我会说明一下。
最近,网上有篇非议开源的文章
1
,我看居然还有人转。真是哭笑不得。
本来大多数人就不了解开源,看了这个清华副教授的言论,估计有人就还真的相信开源在“侵略”中国科技了,所以有必要写下本文予以批驳。
这篇文章的名字是:
警惕国外开源软件的隐形”科技侵略”
。(以下简称“文章”)
文章是记者冯丽妃对清华副教授刘利的采访,刘利介绍了自己团队自主开发的c-coupler 软件(一种耦合器,用于地球系统模式的模拟计算),同时对开源软件表示了非议,认为开源软件对我国造成了“科技侵略”。文章中存在大量逻辑混乱和对开源的认知不清,不知刘利是否对最终稿做了审核?文章是否真实反映了刘利的本意?本文的批驳建立在以上两个问题的回答均为“是”的前提上。
(如果文章中的观点并非刘利本意,那大约就是记者冯丽妃的问题了。)
在我看来,开源突破了国外对我国的技术封锁,无偿、无私将先进的计算机软件技术直接输入我国,是全球程序员的最大善举,并直接导致我国软件水平和国外水平差距不大(至少是应用水平差距不大,从 BAT 等互联网公司的崛起可以看出),比如操作系统技术、编译器技术、数据库技术、webserver 技术、浏览器技术等等,都可以直接从 Linux 、gcc 、mysql 、apache 、firefox 等开源软件中学到,更不要说近些年的大数据技术、分布式技术、云计算技术、人工智能技术了,只要你想学,没有学不到的,开源简直就是在手把手教你。
而文章中,刘利是这么认为的:“
我国对国外开源基础软件的依赖,使一些国家可随时通过隐藏最新技术或版权,限制甚至阻碍我国科技发展。
”
1、我国对国外开源基础软件产生依赖了吗?完全没有,而且是相反。我们可以说,有些单位对 Oracle 、Windows、微软 Office 这些商业软件产生了依赖,而且完全无法自主,因为其代码和技术都不在我们手中。但如果你用 Linux 、Apache 、 Mysql 这些,源码都在你手里,你想怎么改可以怎么改啊,你甚至完全可以改出一个自主的国产操作系统、国产数据库,怎么会有依赖?
开源不是让我们产生了依赖,而是让我们摆脱了依赖,若干年前,阿里轰轰烈烈的“去IOE”,就是通过开源软件,摆脱了对 IBM 、Oracle 、EMC 的依赖。
注:本文中,“商业软件”和“开源软件”相对立,“商业软件”等同于“专有软件”、“闭源软件”。虽然我知道商业软件也有开源的。但本人的写作风格,是尽可能简化概念,更喜欢说A就是B,尽量不去纠结概念的细微差异,目的是简化理解难度。
2、刘利说开源“使一些国家可以通过隐藏最新技术或版权,限制甚至阻碍我国科技发展”,这似乎是该文的文眼,但同时也是最没有逻辑的地方,一个国家对你隐藏技术,那就直接出口管制好了,比如美国的 EAR ,直接限制某些产品不许出口某些实体。但开源却明目张胆地把最新的、最完整的技术,用最直接最彻底的方式,即代码,一字不差地给了我国任何一个实体使用和学习,却被说是对我国隐藏技术?说是限制和阻碍我国科技发展?完全说反了吧。
拿最著名的开源软件 Linux 来说,Linus 在1991年,他还是一个大二学生,他利用暑假写下 Linux ,他的目标是侵略我国科技?抑或是到了美国之后,被美国政府策反,暗地里通过 Linux 进行侵略?
非也,不了解开源的人,建议先看几本书(后面我会列几本书),了解一下开源的初心和使命。
从最善意的角度揣测,刘利说的是国外耦合器软件有此类行为?即便如此,那也应该如实描述,而不应给整个开源扣这帽子。开源的世界有多大你知道吗?
刘利还说,“
长期使用国外免费开源基础软件,很大程度上制约了我国自主研发的积极性和创新能力,加大了我国在相关领域的差距,这无异于助涨了对我国的‘科技侵略’!
”
我想了想,这话的逻辑,从最说得通的角度理解,也只能是:“你老是衣来伸手饭来张口,时间长了就没有自理能力了!”
就好比你总是吃外卖(而且这外卖还是国外的、免费的,还是把烹调菜谱全盘奉上的),老不自己做饭,然后就有人跳出来,义正严辞地说:“(免费的、送菜谱的、国外的)外卖就是在对你进行侵略,目的就是让你永远也学不会做饭!”
我只能理解到这个程度。
这就是人们所说的“升米恩,斗米仇”吧。
从前,有两户人家是邻居,平时关系还不错。其中一家人因为能干些,家中要富裕的多。这两家本来没有什么恩怨的,可是,这一年,老天爷发怒,降下了灾祸,田中颗粒无收。这穷的一家没有了收成,只好躺着等死。这个时候,富的一家还有些粮食,想着大家邻居的,就给穷的一家送去了一升米,救了急。
这穷的一家非常感激富人,认为真是救命恩人呀!熬过最艰难的时刻后,穷人就前往感谢富人。说话间,穷家又表示了窘迫,富的一家慷慨地说:这样吧,我还有些粮食,你就再拿去一斗吧。这穷的拿回家后,他老婆说了,这斗米能做什么?除了吃以外,根本就不够我们明年地里的种子,这个富人太过分了,这么有钱,才给这么一点,真是坏的很。
看来给人好处也是有讲究的,给少了他感激你,给多了反而招致怨恨。
刘利表示,“
国外很多技术的开源发布存在延迟性,使得我国技术引进或升级只能滞后。
”
第一、“国外很多技术”的开源发布真的存在延迟性吗?很多技术指的是哪些技术?
我喜欢拿 Linux 说事,因为 Linux 是全球最大的最基础的开源软件,Linux 的“发布延迟性”数据是这样的:Linux 每天新增1万行代码,删除5000行代码,修改1800行代码, Linux 每一小时就会发生8次变化
2
,请问你觉得这个“国外技术“有延迟吗?
刘利所说的国外开源包含 Linux 吗?
还是主要在指国外耦合器?似乎耦合器技术都喜欢发布延迟?刘利的 c-coupler 在 github 上也已经10个月没有更新了,是觉得研究可以告一段落了,还是在有意延迟发布,免得国外学了去?
第二,延迟发布“使得我国技术引进或升级只能滞后”,这句话是暗含“我们什么都不会做,只能等人家的开源发布”?,这个逻辑是不存在的,别人即便延迟发布,我们真的就只能等?事实上并非如此,耦合器领域可以自主研发,别的领域就只能干等?照这么说,华为就只能等国外开源的网络交换软件发布出来后,才能升级自己的网络交换机?
看到这里,我认为刘利应该是不懂开源的(如果文章表达了他的真实意思),他接触的开源大约仅限于国外那几个耦合器。
刘利带领团队开发自主知识产权的耦合器软件,本身值得肯定,但完全没有必要狠咬一口开源。
开源是全球程序员无私贡献自己的代码,不应在自己尚不了解开源的情况下,就做出如此草率的全盘否定式的定性,这有失科研工作者所必需的严谨性。*
另外比较荒谬的是,文章把开源硬是分成了“国外开源”和“国内开源”,话里话外攻击的都是“国外开源”,言下之意,国内开源并没有问题,害人的都是国外开源,试问国外开源和国内开源的本质区别是什么?是国外源码放在 github 上,还是国内源码放在 github 上?( c-coupler 也放在 github 上
3
。)是国外源码没有国内程序员参与,还是国内源码没有国外程序员参与?是国外开源背后有“一些国家”在暗暗支持侵略?故意做出优秀的代码诱惑国人使用并产生依赖?还是国内开源才真正体现了大公无私的开放和共享精神?
刘利团队做出的国产耦合器 c-coupler ,即便在代码上是从头写起的,难道就没有借鉴其他开源耦合器的思路?刘利说:“
可以通过开源软件学习别人的经验,但是不能靠‘拿来主义’”
,看样子大约是借鉴了。但借鉴之后,再踩上一脚,从道义上讲似乎不妥。
我去 github 看了看 c-coupler ,发现其中的XML解析器部分,是一字不改直接“拿来”的,该解析器是是 Lee Thomason 写的 tinyxml ,其源码放在 sourceforge
4
。对于这点, c-coupler 团队倒也明白无误地写在了 COPYRIGHT 文件中(这点值得赞可)。虽然 XML 解析器不是耦合器的核心部分,但按照其一贯逻辑,是不是也应该从头写一遍,让自主研制来的更纯粹一些更好?
显然,刘利团队认为,该“拿来”的还是要直接“拿来”。需要自主的时候再自主。
文章后半部分大篇幅抱怨中国要付大量的专利费给国外,这部分其实和开源没有关系,但却容易让不明就里的读者误认为“国外开源”收了我们不少专利费。
开源软件是免费的,不仅不收许可费,也不会收专利费。
拿最典型的 Apache 开源许可证来说,其中第3款明确规定专利许可是免费的,而且设计了反制的条款,以防有人试图控诉开源侵犯专利。具体可以看一下我写的
步进式解读Apache许可证
。
我估计刘利说收专利的是“国外商业公司”而非“国外开源”,但是文不对题,文章题目是警惕开源的科技侵略,却把对专利的控诉写在这里,很容易误导读者。
总的来说,刘利的本意如果不是如此,那就不应该这样写。
刘利如果是想对国外的耦合器表示非议,那就大可不必对整个开源表示非议。
既然我发文的目的是给开源正名,那就干脆趁机科普一下。
A:开源软件就是把源代码公开了的软件,现在,通常大家都喜欢把源码放在 github.com 这个网站上,因为它比较易用而且影响力也比较大。国内也有类似的平台,比如码云:gitee.com,对国外网站有戒心的可以放在这里。
Q:
他们为什么要开源,辛辛苦苦写的,就这么发布出来?
A:比较大方吧,觉得代码这东西,共享出来更有价值,自己藏着掖着没有什么意思,原本也没准备拿这个赚钱,就是大家一起做个好玩的东西嘛!(不过,现在很多人玩开源,是有背后的打算的,这里不细说了。)
A:开源软件一般都会有个许可证,要看这个许可证是怎么写的,绝大多数开源软件,都是用的是
MIT
、
APACHE
、
GPL
、BSD 这些许可证,这些许可证都允许免费的使用、复制、修改和再发布,而且绝不会收许可费、专利费等等。你直接从网站上下载代码用就可以了,只不过有些许可证要求你修改后的内容,如果再发布,需要标注原有的版权信息,需要标注修改了什么,需要把你修改和增加的部分也开源( GPL )。所以一定要注意看开源软件的许可证。只有极少的开源软件有商业性的许可,或者是双许可之类的,这种要格外注意一些,不要违反了人家的要求。
A:软件开源出来就是让大家一起玩的,如果一个程序员发现这个软件里的 bug ,可以提交修复补丁,如果看到这个软件有需要完善的地方,可以提交自己的完善代码。在开源代码平台上,这种合作是很容易做到的,你用一用就知道。
原创作者也总是欢迎大家提需求提 bug 提补丁的,虽然他可能没有精力、兴趣照顾到每个人的需求。
Q:
开源会不会对我们造成技术上的隐藏、封锁或障碍?
A:当然不会,软件的所有秘密都在代码里,拿到代码,好好研习,你就能学到所有的技术秘密,除非你笨,或者懒,或者没有时间,或者没有耐心,或者觉得没有必要。
A:你的意思是说,怕我们依赖上他,不好换?你要有能力,你想换谁换谁,那么多竞品你随便选。你要没有能力,你用什么软件你都不好换。你如果用商业软件,不仅不好换,还得一直交钱,他们会每年催着你续维保费,你不续他就不给你提供服务了。
A:你如果本身就是 BAT 这样的大厂,你好好研究研究代码,还有什么解决不了的问题?还需要买什么服务啊,你高薪养的那些程序员不就是干这事的吗。
你要是一般单位尤其是非 IT 单位,你当然是没有高水平程序员的,你要么不用开源(这好像不太容易,开源似乎已经无处不在了,好麻烦),要么买个第三方服务吧,这种公司也不是没有。更何况,很多开源软件都有企业版的,比如 Linux 有 redhat ,mysql 有 oracle , nginx 有 F5 ,你要财大气粗,可以找这种“原厂”。
Q:
开源软件的bug会不会比较多,有了bug找谁给我打补丁?
A:软件规模只要够大,不管是否开源,都会有很多 bug 。谁的 bug 更多,似乎各执一词,本文无意在此讨论,低质量的软件总是 bug 多一些,不管是开源的还是商业的。如果都有 bug ,我也是更喜欢用开源的,因为有了 bug 我可以修复他,谁让我是技艺超群的程序员呢。如果是商业软件,我就抓瞎了,我只能老老实实等着厂商来打补丁。
一般来说,如果是严重的漏洞,开源社区都会第一时间打上补丁。下载来打上就是了。
如果你连补丁都不会打,或者连从哪下载都不知道,还是请一家公司来做吧。有钱的单位都会花钱找一家厂商来“拖底”的。
不要以为你用商业软件就会有什么保障,出了事,厂商无非是尽力帮你解决,你的锅还得你自己背,你的损失还是你自己承担,商业软件也是早早在许可条款里写明了免责声明的,你打到法院也没有用。
对了,再顺便科普一下,所有的安全漏洞都是一种 bug ,除非是刻意的后门。
A:
注意:一定要从正规的渠道获取软件,不管是开源的还是不开源的。
开源的官方版本,一般来说肯定不会有后门的(原作者肯定不敢装,装了就是明目张胆自毁名声),如果有,早被眼尖的程序员发现了。尤其是那些关注度比较高的开源软件。
但不管什么软件,如果来路不正,都有可能被人恶意装上后门。
很显然,闭源软件的后门比开源软件中的后门更难发现,因为源码让后门无处遁形。(所以 windows 源码会提供给中国官方相关部门,但仅供小范围观看,不许拍照,不许复制,目的就是让中国政府相信 windows 源码中没有后门。)
你更应该担心的是那些商业软件中的后门,不仅是犯罪分子会装,原厂商出于不可告人的目的,也会装。这种案例屡见不鲜。
Q:
我没花钱就用了开源软件,会不会有许可方面的风险,会不会有人告我侵犯了他的知识产权?
A:很好,这说明你有知识产权意识。你如果是个单位,最好要求某个部门专门处理这些事,这个部门要干的第一件事,就是好好看看你们单位都用了什么开源软件,获取的来源是否可靠,这些软件都用了什么许可证,自己有没有违反许可证。
A:美国做不到,他们没有这个能力,因为他没法封禁 github 这个网站,因为 github 没有违法,发布代码是美国公民的法定基本权利(言论自由
5
)。美国关于软件出口的法规是 EAR ,但 EAR 管不到开源代码,看完下面这段你就知道了。美国总统也没有能力下令给 Linus 说“你把 Linux 给我闭源了,不准开源!”,因为 Linus 根本不鸟他,美国的任何执法机构也无权强令 Linus 做什么他法定权限允许做的事,如果真发生这种事,美国人会闹得沸反盈天,总统估计也干不成了。
下面是关于EAR(美国出口管理条例)的专家解读
6
:
依 EAR ,美国人、美国公司将软件出口至美国境外,或在美国境内提供给外国人作为出口的预备行为,必须申请取得许可。
但符合“公开可获取( Publicly available )”定义的软件,不在 EAR 管制范围(EAR 734.7 (a)),也就是说,由于开源软件是符合“公开可获取”定义的,所以,开源软件的出口不需要申请许可。
EAR 734.7 (b) 同时说明,公开可获取软件虽不需许可,但若涉及加解密技术,仍然必须申请许可,除非是这个加解密技术本身也是公开可获取的,那就可以采用EAR 742.15(b) 款提供源代码或揭露源代码来源的方式,来登录备查。也就是说,如果加解密部分如果也是开源的,需要向 BIS 和 NSA 发送项目 URL 的通知(notice),通知官方这部分代码确实是“公开可获取”的。
耐心不好的同学估计是不愿意读上面这段法律解释的,总结一下,就是:
只要你开源,你就不受美国出口管制条例限制,可以随意让全地球人使用。
Q:
前段时间听说 HashiCorp 不让中国用它的软件了?
A:你仔细看看,不让用的是企业版(商业版),而不是社区版(开源版)。
企业版不是开源软件,人家不让用就不用了呗。社区版是开源的,随便用~
A:开放、共享、合作、自治。可以看看我写的这篇文章:
开源的7大理念。
A:推荐三本:《天才莱纳斯:Linux 传奇》、《
大教堂与集市
》、《若为自由故——自由软件之父理查德·斯托曼传》
这话乍一看难以理解,稍一琢磨便知道这位母亲的苦心:
不过,开源是要吞噬整个世界的,这比侵略要可怕多了。
推荐阅读:
开源的7大理念
从契约精神谈MIT协议
大教堂与集市
开源社是由国内外支持开源的企业,社区及个人,依“贡献,共识,共治”原则,所组织的厂商中立、纯志愿者、非营利的开源联盟,旨在共创健康可持续发展的开源生态体系,并推动中国开源社区成为全球开源软件的积极参与及贡献者。我们专注于开源治理、国际接轨、社区发展和开源项目。
相关阅读 | Related Reading
技术雷达峰会2020:从技术趋势看行业挑战
暑期2020“大咖说开源”之 孙金城:参与 ASF 开源贡献的正确姿势
从机械工到程序员——聊聊自学经验与职业发展