升米恩斗米仇,驳”开源侵略论”

SegmentFault
SegmentFault

segmentfault_sudo

SegmentFault 思否 ( sifou.net ) 是中国领先的开发者社区。我们希望为中文开发者提供一个纯粹、高质的技术交流平台,做科技企业与开发者沟通的桥梁,帮助更多的开发者获得成长与成功。

今天

以下文章来源于微月人话 ,作者卫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,其源码放在sourceforge4。对于这点,c-coupler团队倒也明白无误地写在了COPYRIGHT文件中(这点值得赞可)。虽然XML解析器不是耦合器的核心部分,但按照其一贯逻辑,是不是也应该从头写一遍,让自主研制来的更纯粹一些更好?

显然,刘利团队认为,该“拿来”的还是要直接“拿来”。需要自主的时候再自主。

文章后半部分大篇幅抱怨中国要付大量的专利费给国外,这部分其实和开源没有关系,但却容易让不明就里的读者误认为“国外开源”收了我们不少专利费。开源软件是免费的,不仅不收许可费,也不会收专利费。拿最典型的Apache开源许可证来说,其中第3款明确规定专利许可是免费的,而且设计了反制的条款,以防有人试图控诉开源侵犯专利。具体可以看一下我写的步进式解读Apache许可证

我估计刘利说收专利的是“国外商业公司”而非“国外开源”,但是文不对题,文章题目是警惕开源的科技侵略,却把对专利的控诉写在这里,很容易误导读者。

总的来说,刘利的本意如果不是如此,那就不应该这样写。

刘利如果是想对国外的耦合器表示非议,那就大可不必对整个开源表示非议。

开源科普Q&A

既然我发文的目的是给开源正名,那就干脆趁机科普一下。

Q:什么是开源软件?

A:开源软件就是把源代码公开了的软件,现在,通常大家都喜欢把源码放在github.com这个网站上,因为它比较易用而且影响力也比较大。国内也有类似的平台,比如码云:gitee.com,对国外网站有戒心的可以放在这里。

Q:他们为什么要开源,辛辛苦苦写的,就这么发布出来?

A:比较大方吧,觉得代码这东西,共享出来更有价值,自己藏着掖着没有什么意思,原本也没准备拿这个赚钱,就是大家一起做个好玩的东西嘛!(不过,现在很多人玩开源,是有背后的打算的,这里不细说了。)

Q:开源真的不要钱吗?

A:开源软件一般都会有个许可证,要看这个许可证是怎么写的,绝大多数开源软件,都是用的是MITAPACHEGPL、BSD这些许可证,这些许可证都允许免费的使用、复制、修改和再发布,而且绝不会收许可费、专利费等等。你直接从网站上下载代码用就可以了,只不过有些许可证要求你修改后的内容,如果再发布,需要标注原有的版权信息,需要标注修改了什么,需要把你修改和增加的部分也开源(GPL)。所以一定要注意看开源软件的许可证。只有极少的开源软件有商业性的许可,或者是双许可之类的,这种要格外注意一些,不要违反了人家的要求。

Q:开源可以大家一起玩?

A:软件开源出来就是让大家一起玩的,如果一个程序员发现这个软件里的bug,可以提交修复补丁,如果看到这个软件有需要完善的地方,可以提交自己的完善代码。在开源代码平台上,这种合作是很容易做到的,你用一用就知道。

原创作者也总是欢迎大家提需求提bug提补丁的,虽然他可能没有精力、兴趣照顾到每个人的需求。

Q:开源会不会对我们造成技术上的隐藏、封锁或障碍?

A:当然不会,软件的所有秘密都在代码里,拿到代码,好好研习,你就能学到所有的技术秘密,除非你笨,或者懒,或者没有时间,或者没有耐心,或者觉得没有必要。

Q:开源会不会绑架我们?

A:你的意思是说,怕我们依赖上他,不好换?你要有能力,你想换谁换谁,那么多竞品你随便选。你要没有能力,你用什么软件你都不好换。你如果用商业软件,不仅不好换,还得一直交钱,他们会每年催着你续维保费,你不续他就不给你提供服务了。

Q:开源没有原厂、没有服务怎么办?

A:你如果本身就是BAT这样的大厂,你好好研究研究代码,还有什么解决不了的问题?还需要买什么服务啊,你高薪养的那些程序员不就是干这事的吗。

你要是一般单位尤其是非IT单位,你当然是没有高水平程序员的,你要么不用开源(这好像不太容易,开源似乎已经无处不在了,好麻烦),要么买个第三方服务吧,这种公司也不是没有。更何况,很多开源软件都有企业版的,比如Linux有redhat,mysql有oracle,nginx有F5,你要财大气粗,可以找这种“原厂”。

Q:开源软件的bug会不会比较多,有了bug找谁给我打补丁?

A:软件规模只要够大,不管是否开源,都会有很多bug。谁的bug更多,似乎各执一词,本文无意在此讨论,低质量的软件总是bug多一些,不管是开源的还是商业的。如果都有bug,我也是更喜欢用开源的,因为有了bug我可以修复他,谁让我是技艺超群的程序员呢。如果是商业软件,我就抓瞎了,我只能老老实实等着厂商来打补丁。

一般来说,如果是严重的漏洞,开源社区都会第一时间打上补丁。下载来打上就是了。

如果你连补丁都不会打,或者连从哪下载都不知道,还是请一家公司来做吧。有钱的单位都会花钱找一家厂商来“拖底”的。

不要以为你用商业软件就会有什么保障,出了事,厂商无非是尽力帮你解决,你的锅还得你自己背,你的损失还是你自己承担,商业软件也是早早在许可条款里写明了免责声明的,你打到法院也没有用。

对了,再顺便科普一下,所有的安全漏洞都是一种bug,除非是刻意的后门。

Q:开源软件里面会不会有后门?

A:注意:一定要从正规的渠道获取软件,不管是开源的还是不开源的。

开源的官方版本,一般来说肯定不会有后门的(原作者肯定不敢装,装了就是明目张胆自毁名声),如果有,早被眼尖的程序员发现了。尤其是那些关注度比较高的开源软件。

但不管什么软件,如果来路不正,都有可能被人恶意装上后门。

很显然,闭源软件的后门比开源软件中的后门更难发现,因为源码让后门无处遁形。(所以windows源码会提供给中国官方相关部门,但仅供小范围观看,不许拍照,不许复制,目的就是让中国政府相信windows源码中没有后门。)

你更应该担心的是那些商业软件中的后门,不仅是犯罪分子会装,原厂商出于不可告人的目的,也会装。这种案例屡见不鲜。

Q:我没花钱就用了开源软件,会不会有许可方面的风险,会不会有人告我侵犯了他的知识产权?

A:很好,这说明你有知识产权意识。你如果是个单位,最好要求某个部门专门处理这些事,这个部门要干的第一件事,就是好好看看你们单位都用了什么开源软件,获取的来源是否可靠,这些软件都用了什么许可证,自己有没有违反许可证。

Q:美国会不会对我们禁运开源?

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:你仔细看看,不让用的是企业版(商业版),而不是社区版(开源版)。

企业版不是开源软件,人家不让用就不用了呗。社区版是开源的,随便用~

Q:开源的核心思想是什么?

A:开放、共享、合作、自治。可以看看我写的这篇文章:开源的7大理念

Q:我想了解开源,能推荐几本书吗?

A:推荐三本:《天才莱纳斯:Linux传奇》、《大教堂与集市》、《若为自由故——自由软件之父理查德·斯托曼传》

看完你就知道,开源在本质上是什么东西


开源的好事

赵姬给女儿说“好事都不能做,更何况是坏事!”

这话乍一看难以理解,稍一琢磨便知道这位母亲的苦心:

你做好事,他们都说你不好,哪里还敢做坏事啊

不过,开源是要吞噬整个世界的,这比侵略要可怕多了。


推荐阅读:

开源的7大理念

从契约精神谈MIT协议

大教堂与集市

注:题头图片来自影片《理查德·朱维尔的哀歌》

参考引用:

  1. 冯丽妃:警惕国外开源软件的隐形“科技侵略” ↩

  2. 开源从曲高和寡到妇孺皆知 ↩

  3. c-coupler网址:https://github.com/C-Coupler-Group/c-coupler-lib ↩

  4. tinyxml网址:www.sourceforge.net/projects/tinyxml ↩

  5. 霍炬:开源是自由的,永远 ↩

  6. 开源社:专家解读:开源软件项目是否会被限制出口? ↩



- END -

::...
免责声明:
当前网页内容, 由 大妈 ZoomQuiet 使用工具: ScrapBook :: Firefox Extension 从互联网中抓取并分享;
内容版权归原作者所有;
本人对内容的有效性/合法性不承担任何强制性责任.
若有不妥, 欢迎评注提醒:

蟒营®编程思维提高班 Python版/第13期 正在报名

精品小班/ 永久答疑

扫描报名: 101camp13py

蟒营®式 原创课程

伴你重享学习乐趣

官网: py.101.camp

Reactivate Joy by Self-teching with You


任何问题可先进入知识星球(免费)咨询:
FAQ

关注公众号, 持续获得相关各种咨询:
mainium


追问

任何问题, 随时邮件提问可也:
askdama@googlegroups.com


...::