开源=免费?你错了二十年了
前言:“开源软件”二十周岁了
无论你是正在辛苦赚钱养家的“码农”还是对编程有点兴趣的电脑爱好者,想必都听说过“开源软件”的大名,见过这个标志:
没错,这就是大名鼎鼎的开放源代码促进会的标志。而它所提倡的“开源软件”,即开放源代码软件理念,在今天(2018年2月5日),正好迎来了自己的二十岁生日。
不得不说,虽然“开源软件”这个词汇对于很多电脑爱好者来说都不会太陌生,但是要说到究竟“开源软件”的定义具体是怎样,在国内其实是存在着长久的错误观念的。特别是在国人的“正版意识”逐渐觉醒的当下,对于“开源软件”进行真正准确的科普就显得更有必要。
有鉴于此,笔者僭越,在“开源软件”概念二十周岁的这天,作为一名并非从事编程职业的IT编辑,来给大家做这个科普——希望尽量能够让更多人了解“开源软件”的前生今世,以及我们更加正确地看待它的方法。
首先大家需要知道,什么是开源软件
首先,必须澄清的一点是,有着二十年历史的只不过是“开源软件(open source software)”这个说法或者说定义,而不是开放源代码这种做法本身——这就好像在“全面屏”这个词被发明之前,业界其实就已经出现了采用窄边框、大屏占比的手机一样。开源软件从计算机诞生的最初期就已经存在了,只是当时的人们对这种做法并没有明确的意识与约束。
而真正促成整个业界去思考,总结“开源软件”定义的事件,则是一篇发布于1997年的论文《《大教堂与市集》(The Cathedral and the Bazaar)》。在这篇论文中,作者埃里克·斯蒂芬·雷蒙(Eric Steven Raymond)提出了两种“开放源代码”的软件开发方法论:一种称之为“大教堂模式”,即软件在发布之后才公开源代码,并且由一个团队管控每个版本的开发;而另一种则称之为“市集模式”,即软件在开发过程中即公开源代码,允许其他人检查以及进行修改。
在论文中,作者盛赞了“市集模式”的软件开发思路,这引发了当时主流开发团体对于“何谓真正的开源”的讨论。1998年2月3日,Christine Peterson发表文章,首次提出“开源软件”的概念,这一概念在两天后的一次软件开发者大讨论中得到多数人承认和支持,并由此促成了“开放源代码促进会”的成立。
对于何谓“开源”,目前公认的定义来源于其早期支持者Bruce Perens(Debian的创始人之一),他将开源总结为以下几个特征:
自由再散布:允许获得源代码的人可自由再将此源代码散布。
源代码:程序的可执行档在散布时,必需以随附完整源代码或是可让人方便的事后获取源代码。
派生著作:让人可依此源代码修改后,在依照同一许可协议的情形下再散布。
原创作者程序源代码的完整性:意即修改后的版本,需以不同的版本号码以与原始的代码做分别,保障原始的代码完整性。
不得对任何人或团体有差别待遇:开放源代码软件不得因性别、团体、国家、族群等设置限制,但若是因为法律规定的情形则为例外。
对程序在任何领域内的利用不得有差别待遇:意即不得限制商业使用。
散布许可协议:若软件再散布,必需以同一条款散布之。
许可协议不得专属于特定产品:若多个程序组合成一套软件,则当某一开放源代码的程序单独散布时,也必需要匹配开放源代码的条件。
许可协议不得限制其他软件:当某一开放源代码软件与其他非开放源代码软件一起散布时(例如放在同一光盘),不得限制其他软件的授权条件也要遵照开放源代码的授权。
许可协议必须技术中立:意即许可协议不得限制为电子格式才有效,若是纸本的许可协议也应视为有效。
看过定义之后,是不是有点晕?而且如果大家更细心一点的话,或许已经发现,真正的“开源软件”定义和我们一般以为的常识,其实是存在着相当大的差异的。比如说开源软件并不限制商业使用,开源软件在经过他人修改代码后,必须修改软件版本号以示和原版本的区别等等。
开源软件也是有版权的,而且开源并不等于免费
“源代码既然可以随便用了,那开源软件还有版权可言么?” 这是很多普通人会对开源软件产生的合理疑问。不过,在看了前文的开源软件定义中对于源代码/原作者的保护条款之后,想必大家心里都已经有数了:即使是开源软件,原作者依然拥有代码的版权,这一点和软件是否开源、是否收费,其实是没有必然联系的。
更进一步地说,“版权”其实是一种对作者劳动的保护和肯定,它和专利不同,不需要申请或者注册,而是当某项作品完成时就自然产生了。这点对于开源软件也是一样的:很多开源软件在开放源代码的时候,也同样会注明源代码作者的名字——如果其他人修改代码,发布了他们自己的版本,那就要同时注明源代码作者和修改者的名字,以示对源代码的尊重。
而对于软件的使用者来说,不管他们是否为某一款软件付费,使用者所获得的都只不过是软件的“使用权”,即便某些开源软件(比如说下面会谈到的“自由软件”)允许用户任意修改代码和增删功能,那也是因为“作者允许你那样做”,而并非因为它“开源”。
在这方面,最常见的典型例子,其实就是Android(安卓)系统了——不错,无论是手机厂商还是个人ROM作者,都可以对安卓进行各种修改、深度定制,甚至是做成各种所谓的“xxUI”、所谓的“xxOS”。但是,安卓本身作为一个开源操作系统,其版权始终属于原作者谷歌,并不会因为手机厂商对其进行了定制、加上了其他代码而变更版权所有者。而这也是为什么所有的安卓手机在开机的时候都必需显示“Powered by android(基于安卓)”,在系统信息里都必须写明安卓版本号的原因。
此外,“开源软件就该免费”这也是很多人长期持有的错误观点。但实际上,根据“开源软件不得限制商业使用”的基本原则,开源软件其实是完全被允许收费的。这是因为在传播软件的同时进行收费是一项最基本的自由,每一个人都有这个自由。之所以我们很少看到付费的开源软件,并非因为开源软件不许收费,而是单纯因为这样做的人很少,所以大家“习惯了”免费的开源软件罢了。
在知名的开源软件许可协议GNU(通用公共授权)中,明确写着:“我们鼓励人们在向他人传播自由软件的同时收取费用,他们能收多少钱是他们的自由。如果一个软件许可不允许用户复制软件以向他人销售,那么这个许可就不是一个自由的软件许可。”
“免费软件”还是“自由软件”?一起翻译错误引发的误解?
其实,对于国内许多早期的电脑用户来说,之所以会把“开源软件”误以为就该免费,其背后还有个非常尴尬的原因。在开源软件诞生的早期年代,它还有另外一种称谓叫“自由软件”。而英语中的“自由”与“免费”是同一个单词(Free)——这就直接导致很多早期的国内科技编辑与软件网站望文生义地将“自由软件”译作了“免费软件”……
不过,值得注意的是,现在的“自由软件”已经不完全等于“开源软件”了,它成为了开源软件的一个定义更加严格的子集。按照自由软件基金会(FSF)的定义,“自由软件是在电脑为个人或为公共利益,而非私人公司或政府等企图限制或监视我们工作时,我们在家、学校、公司使用时,我们具有其控制权的软件。”
换句话说,自由软件不仅仅必须开放源代码(也就是说所有自由软件都必需首先是开源软件),而且它允许用户以任何目的对软件代码进行学习、研究、改造和再发行,最重要的是,自由软件强调软件本身必须要“尊重用户的自由”,它不得以为了限制用户的自由为目的——比如说,某个带有用户监视或是用户隐私收集功能的软件,即使它开放了源代码,则仍然不属于自由软件。
但是,即使是当今的自由软件定义,也并不反对软件收取费用。自由软件之父,被誉为“最后的真正黑客”的理查德·马修·斯托曼认为,一个好的软件应该自由自在地让人取用,不应该拿来做为相互倾轧、剥削的工具。但是,在“取用”的过程中是否收取费用,这本身也属于自由软件的“自由”之一。因此斯托曼又说,不仅是自由软件的作者可以向用户收费,用户在向其他用户传播时也可以收费。
由此可见,无论是“开源软件”还是“自由软件”,其本质上和“免费”其实都没有必然的联系——开源软件完全可以是付费获得的,只要你尊重原作者的版权,你也完全可以将免费的代码修改之后以自己的名义出售。
而与此相反,“免费软件”仅仅是一个经济上的概念:即用户获得软件时不用付费而已。“免费软件”完全可以是闭源(即不公开源代码)的,用户也没有权利去研究、修改和再发行免费软件。更不要说免费软件中有时还会藏有广告或收集用户信息的代码——此时,它们的发行者其实是可以从中获利的,因此这类免费软件甚至都不能算作完全的“免费”了……
在国人正版意识觉醒的现在,我们应当如何看待开源软件
可喜的是,时至今日,国人的软件正版意识已经越来越浓厚。但是,大部分时候,“正版意识”是和“付费”挂钩的——对于优秀的商业软件(包括游戏),付款购买可以鼓励开发者,并促进更多更好的软件诞生,这一道理现在很多人都已经理解并且能够接受了。
但是,由于开源软件(以及自由软件)大部分都还是以免费的方式发行,再加上它们开放源代码——这就使得开源软件本身很容易成为盗版甚至恶意代码的重灾区,其版权也好、对原作者的尊重也好、“社区化”的合作开发模式也好,都变得有些微妙了。
比如说,当某人无视某开源软件原作者的权利,恶意抹除原作者的相关信息,略加修改加上自己的版权声明之后进行“再开源”的时候——按照开源软件的规则,这就属于典型的恶意盗版行为了。但是,按照我国相关法律,其人并非出于牟利目的,也没有得到实际的收益,再加上权利方很可能还位于外国——要进行查处就变得非常困难。
只是,“开源软件”虽然也许赚钱没有商业软件多、宣传没有商业软件频密,但它在整个开发者圈子里绝不是什么小众非主流——不如说现在甚至已经是推动IT技术进步、促进人类文明发展的一股不可忽视的主流力量。即使是在我国那些最为高精尖的领域如超算、航空航天、军事科技……无一不是受着开源软件的恩惠而得以发展。
因此,在“开源软件”概念提出20周年的这个日子里,笔者也希望能够有更多人能够了解“开源”的精神、尊重开源社区的规则,像善待付费商业那样去善待开源软件——如果还行有余力,则可以主动投身开源社区和开源软件的建设,如此,则无异于给全人类做贡献,善莫大焉。
【本文图片来自网络】
「 推 荐 阅 读 」
“吃螃蟹”的勇气!vivo X20Plus屏幕指纹版专项测试
没有测评就没有发言权,屏下指纹到底体验如何?请看我们的视频。
于困境中作死,这样还能不死?
觉得有趣就关注我们吧 ↓↓↓