“借鉴代码不能算抄…借鉴!程序员的事,能算抄吗!”

B站影视 2024-12-16 10:00 3

摘要:最近某著名视频网站的知名UP主由于不恰当的代码“借鉴”而招致了不小的非议,这引出了很多人对于版权的讨论。其实无论是引用论文、图书,抑或是代码,版权都是我们绕不开的问题。正确地引用不仅仅是对他人劳动成果的尊重,也可以避免潜在的法律风险。

最近某著名视频网站的知名UP主由于不恰当的代码“借鉴”而招致了不小的非议,这引出了很多人对于版权的讨论。其实无论是引用论文、图书,抑或是代码,版权都是我们绕不开的问题。正确地引用不仅仅是对他人劳动成果的尊重,也可以避免潜在的法律风险。

所谓“版权”,就是著作权,其产生可谓技术推动社会与法律发展的典范。在印刷术大规模推广之前,著作的流传主要依靠手抄本,数量相对较少。而印刷术的推广使得一部著作可以很方便地复制和销售,这也就催生出版权以及对版权的保护。

根据现存的文献,最早在唐、五代时期中国已经出现了牌记。所谓“牌记”,乃是出版者用以说明版本情况的标志,又称牌子、书牌。牌记的主要内容包括刊刻时间、地点、刊刻者姓名、室名等,与当今图书的版权页内容基本类似。宋朝之后排记广为推行,明清时期,更是有不少人会在书本后印上“版权所有,敢有翻印,千里必究”。

“侯官严氏版权所有”,严复提供给商务印书馆的印花(图片来源:文汇网《艾俊川 | 严复改“版权”为“著作权”》)

世界上第一部著作权法,一般认为是英国的《安妮法令》(Statute of Anne,又称《1710年版权法令》,全称为“为鼓励知识创作授予作者及购买者就其已印刷成册的图书在一定时期内之权利的法令”)。这项法令于1709年由安妮女王颁布,并于次年4月10日正式执行。法令规定对于1709年前已经印刷的图书,作者享有为期21年的专有权利;对于尚未印刷的图书则为14年。未经权利所有者的许可而印制或销售其图书便构成侵权,侵权图书将被没收并按侵权图书每页1便士罚款。

《安妮法令》(图片来源: https://www.copyrighthistory.com/anne.html)

著作权的客体自然是作品。依据《伯尔尼保护文学和艺术作品公约》(《伯尔尼公约》)第二条第一款的规定,“(文学和艺术)作品”一词包括文学、科学和艺术领域内的一切成果,不论其表现形式或方式如何。所以无论是图书,抑或是绘画、音乐、摄影,甚至是舞蹈、表演,都是著作权保护的对象,当然也包括前段时间引起争议的代码。不过值得强调的是,著作权保障的是思想的表达形式,而不是保护思想本身。所以算法、数学方法等均不属著作权所要保障的对象。

时间来到二十世纪中叶,彼时计算机在欧美大学和研究机构内逐渐普及。上世纪六十年代,几乎所有软件都是由研究人员开发并分发。七十年代,由于集成电路技术的发展,计算机的体积和成本大大降低,个人电脑也开始走进普通家庭。早期的计算机软件需要经常性地修改以适配新的操作系统或硬件、修正bug,软件的源代码一般都会与软件一并提供。此时便诞生了第一批自由软件,如不少理工科同学都会用到的排版软件TeX。

但随着计算机的进一步推广,软件的版权问题也慢慢引起人们的重视。一个典型的例子就是著名的UNIX系统。上世纪七十年代,AT&T曾免费地向研究机构人员分发早期版本的UNIX,但在八十年代,随着UNIX的使用变得更为广泛,AT&T停止了免费分发UNIX,并且开始对系统补丁收费。这也直接催生出了“GNU计划”

左图:理查德·马修·斯托曼,自由软件活动家,GNU项目发起人;右图:GNU计划的标志——牛羚(图片来源:Wikipedia)

1983年,理查德·马修·斯托曼在MIT发起了“GUN计划”,旨在构建一整套完全自由的操作系统“GNU”。GNU是“GNU is Not Unix”的递归缩写。所谓“递归缩写”或者“递归首字缩写”,指的是缩写会递归地包含在其全称之中。(再举个例子,PHP的全称是“PHP: Hypertext Preprocessor”,首字母缩写便是PHP自己)为了避免与单词“gnu”(牛羚)混淆,斯托曼宣布GNU发音应为“Guh-NOO”(“革奴”)。

斯托曼引领了之后的自由软件运动。在《GNU宣言》中,斯托曼指出要“重现当年软件界合作互助的团结精神”。而自由软件则意味着用户可以自由地运行、拷贝、分发、学习、修改并改进该软件。1985年,斯托曼创立了自由软件基金会, 为GNU计划提供技术、法律和财务支持。1989 年,该基金会发布了第一版的“GNU通用公共许可证”(GNU General Public License, GPL)。

部分GNU计划软件包的Logo(图片来源:gnu.org)

这里有两点需要指出。其一,自由软件(free software)中的“free”主要指的是“自由”而不是“免费”(当然免费也很重要)。虽然大部分自由软件是免费的,但是自由软件的许可证并不限制贩卖软件或者提供商业服务。自由软件的关键在于四项基本自由

自由度0:无论用户出于何种目的,必须可以按照用户意愿,自由地运行该软件。自由度1:用户可以自由地学习并修改该软件,以此来帮助用户完成用户自己的计算。作为前提,用户必须可以访问到该软件的源代码。自由度2:用户可以自由地分发该软件的拷贝,这样就可以助人。自由度3:用户可以自由地分发该软件修改后的拷贝。借此,用户可以把改进后的软件分享给整个社区令他人也从中受益。作为前提,用户必须可以访问到该软件的源代码。

其次,自由软件不等于没有著作权,也不意味着作者放弃了著作权。其中的逻辑在于自由软件旨在保证自由使用、自由修改等的同时,要求修改后的软件(“二创”)仍具有“自由”的属性。这就要求“一创”的著作权不能放弃,以此从法律上保证“二创”也必须将“自由”传承下去。

自由软件运动无疑取得了巨大的成功,但其运作模式却也招致了批评。这里就不得不提到另一位传奇黑客,埃里克·斯蒂芬·雷蒙(ESR)。

左图:埃里克·斯蒂芬·雷蒙,程序员、黑客,开放源代码运动的主要领导者之一;右图:《大教堂与市集》,ESR的代表作之一(图片来源:Wikipedia)

1997年,埃里克·斯蒂芬·雷蒙发表了著名的《大教堂与市集》(The Cathedral and the Bazaar)。作为深度参与众多知名软件开发的黑客,雷蒙在书中探讨了两种不同的自由软件开发模式。即“大教堂模式”(Cathedral Model)和“市集模式”(Bazaar Model)。前者是传统的自由软件开发模式,要求源代码在软件发行后公开,但每个版本开发过程中有一个专属团队掌控全局。而后者则主张源代码在开发过程中即在互联网公开(譬如Linux核心的开发)。

书中雷蒙提出了著名的林纳斯定律(林纳斯·托瓦兹,Linux创始人):"Given enough eyeballs, all bugs are shallow." ——“只要眼睛多,bug容易捉。”(感谢《大教堂与市集》中文译者卫剑钒老师的神来之笔)

林纳斯·托瓦兹(图片来源:Wikipedia)

一经发布,《大教堂和市集》就引起了业界极大的关注,而这也激起了雷蒙等人深入思考如何将自由软件的概念引入商业软件,于是他们在自由软件运动的基础上,提出了“开放源代码”(open source),强调分享与协作软件源代码带来的潜在商业机会。于是开放源代码促进会(OSI)于1998年2月创立,旨在宣传和推动开源运动。OSI 在网站上给出了定义开源的10条标准。鉴于篇幅原因,有兴趣的同学可以参阅OSI相关网页(https://opensource.org/osd)。

尽管斯托曼在开源运动之初表示“开源软件”与“自由软件”可以包容,然而之后他反对将两者混为一谈。形式上,开源软件所覆盖的范围远大于自由软件。可以认为,自由软件是开源软件的子集。换言之,自由标准的软件也是开源软件,而符合开源标准则未必符合自由软件的标准。

具体来说,自由软件运动基于“黑客文化”,将尊重用户自由作为一种道德标准的理想主义运动;而开源运动则主要侧重于使用开放的开发方式,从而促使软件优化。自由软件运动经常反对开源运动拥抱商业化的做法,而后者也不甚认同前者将道德强加于人的观念。

对于普通的软件开发者和用户,相较于研究源远流长的黑客文化,也许了解一下如何为代码选择开源许可证更为实用。现行的开源许可证众多,如何为代码选择开源许可证,以及如何正确地使用开源代码,就成为了一个值得研究的问题。对于开发者,这里直接引用阮一峰老师关于程序员如何选择许可证的导图。导图最初由乌克兰程序员Paul Bagwell给出,涉及最主流的六种许可证。

图片来源:https://www.ruanyifeng.com/blog/2011/05/how_to_choose_free_software_licenses.html

图片来源:bilibili

譬如这次知名UP主的代码争议事件中的技术工具ASCII-generator,原作者Viet Nguyen在其GitHub的项目里包含了MIT许可证(The MIT License),明确指出删去作者信息(著作权声明的一部分)的行为是不符合要求的,因此使用者就无法得到许可。从理论上说,原作者就可以依此提出版权诉讼。(当然现实中原作者选择了谅解)

当然了,开源项目也并不都与计算机相关,它们也可以很有意思。比如开源可乐项目——OpenCola。与神秘兮兮的可口可乐配方不同,OpenCola配方是公开发布的——

开放可乐配方

香料配方

3.50 ml 橙油(orange oil)1.00 ml 柠檬油(lemon oil)1.00 ml 肉豆蔻油(nutmeg oil)1.25 ml 桂皮油(cassia oil)0.25 ml 芫荽油(coriander oil)0.25 ml 橙花油(neroli oil)2.75 ml 酸橙油(lime oil)0.25 ml 薰衣草油(lavender oil)10.0 g 阿拉伯胶(gum arabic)3.00 ml 水

糖浆

约10 ml 上述香料约17.50 ml 75% 磷酸或柠檬酸(phosphoric acid or citric acid)2.28 l 水2.36 kg 白砂糖约2.50 ml 咖啡因(可选)30.0 ml 焦糖色(caramel color)

制备香料

将各种香精混合在一个杯子里加入阿拉伯胶,用勺子搅拌加水搅拌均匀,4-5 分钟密封保存于玻璃罐中,冷藏或室温

制备糖浆

取香料,加入 75% 磷酸或柠檬酸加水后加糖,搅拌可在搅拌时加入咖啡因,确保其完全溶解加入焦糖色,搅拌至完全混合

制备可乐

取一份糖浆,加入五份碳酸水(或称气泡水,carbonated water)混合

OpenCola 配方根据 GNU 通用公共许可证 (GPL) 发布

根据《麻省理工科技评论》的报道,OpenCola最早是OpenCola公司推广其开源软件的一个营销项目,但似乎饮料比他们的软件更为成功。

由于开源的也可以是可乐配方这种好东西,那么它也可以是菜谱啊!屏幕前的各位大厨可以考虑将类似豆腐脑、螺丝粉等的菜谱以MIT许可证开源分享,这样就能允许大家可以在原有菜谱的基础上加以修改(譬如加盐or加糖?是否放酸笋?)并分享出来,引发了无数讨论的 “甜咸之争”这类问题似乎也可以因此迎刃而解了?

来源:中科院中国科普博览

相关推荐