首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

开源软件20年(上)

恭喜〔初晴的小葵〕获得科技美学的“特别礼物”,编辑君和领导申请一下,争取经常搞些抽奖活动回馈大家~

以下内容来自三易生活

无论你是正在辛苦赚钱养家的“码农”还是对编程有点兴趣的电脑爱好者,相必都听说过“开源软件”的大名,见过这个标志:

没错,这就是大名鼎鼎的开放源代码促进会的标志。而它所提倡的“开源软件”,即开放源代码软件理念,在今天(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(通用公共授权)中,明确写着:“我们鼓励人们在向他人传播自由软件的同时收取费用,他们能收多少钱是他们的自由。如果一个软件许可不允许用户复制软件以向他人销售,那么这个许可就不是一个自由的软件许可。”

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180206B0WKSR00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券