林旅强 Richard Lin
开源社联合创始人、理事 / 云计算开源产业联盟OSCAR专家 / 华为云AI开发者生态专家
是否存在“中国”特色的开源核心价值观?
产业环境是影响因素之一,比如该地区的IT人才是否得到一定的重视、对软件开发人员的需求变化等等。其实现在很多学生的想法是,我学完一个东西,不知道以后出社会是不是有用。其次,生存条件也在一定程度上影响着人们投身开源的热情。再者,大家对于共享文化的接受程度。通常情况下,共享别人的东西很乐意,共享自己的东西就要考虑一下。不只是个人,公司可能也是这样。最后,社区组织者的思维不只是社区要成功,往往会想,我做社区成功之后能不能也去融资、也去做商业。有时候社区归社区,商业归商业,有时候两条腿走路,各自把定位搞清楚,或许两边都可以做得更好。这些都是我们需要去摸索、了解,然后再做相适应的引导。
开源到底是什么?
开源到底是什么?有些概念务必搞清楚,不要混淆。
举个例子,开源不等于开放。很多人常混淆使用“开源”与“开放”。开源人首先要清楚认知二者区别,开放是开源的必要不充分条件。有开放不代表它是开源的,但开源一定要开放。开源的其中一个价值观是开开放,但很多人把它并列,这是不对的,它只是其中之一。
再者,开源(Open Source)不等于自由软件(Free Software)。一个好的开源人应该要能清楚认识,而且能跟别人说明什么是“开源”与“自由软件”,两者的定义是什么?共同点与区别?它的价值观、哲学观跟它的竞合关系有什么不同?例如,open source有OSI(open source initiative),开源社就是中国唯一参加OSI的组织;自由软件有FSF(Free Software Foundation),国内也有人一直持续捐钱给它,支持自由软件。
我们开源人应该先正确理解什么是开源,什么是自由软件。不管是自由软件还是开源软件,我们合称叫FOSS(Free and Open Source Software),有的人会加上“L”,因为自由软件有人翻译成“libre software”,“libre”是拉丁文自由的意思。“free”有很多人说会弄错意思,以为是免费的。自由软件并不意味着免费,它与商业不是对立的关系,维度不同。自由/开源软件(FOSS/FLOSS)与专有软件(proprietary software)这些出售版权的,才是对立的,这里面是有一些区分的。
大家可以参考Richard Stallman写的“为什么开源错失了自由软件的重点”,未必完全赞同,但这是一个了解什么是自由软件、什么是开源软件的很好的方式。
什么是开源生态?
不管是亚马逊丛林,或者是大草原、沙漠、深海,它都是生态。那我们开源的生态,其实就是玩家之间的生产消费关系和竞争合作关系图谱。
很多人希望看到的是整个大生态,但我必须告诉各位,不要追求这个。我们要追求的是站在开源人的立场,把自己在开源生态的位置搞清楚,把我们自己的开源工作做好,整个中国的开源生态也会变好。
良善的开源生态可以强化开源核心价值观,促进更多开源带来的价值,包含对个人、对企业、对教育科研、对社会、对国家的价值。
但我们不需要在一开始搞清楚,我们一定要先从自己的角色出来去投入贡献。如果说刚好我的工作跟开源是完全相关,那我就全身心投入,既符合我的志向,也符合这个组织的目标,这是最好的一个情况。
开源的核心价值观是什么?
(1)自由传播,就是说这个代码本身或者是信息本身必须要自由的传播;
(2)提供源代码,你必须要提供这个源代码,而不只是开放源代码;
Open source doesn't just mean access to the source code. The distribution terms of open-source software must comply with the following criteria:
这是引言的第一句话,开源不是说我能得到这个代码而已,代码分发过程中涉及到的法律条款都应该要与下面的这些判断标准是一致的。当然,判断标准很多,这边列了一些:
这里选择几个说一下,比如"自由再散布",我拿到这源代码就可以给到别人,只要讲清楚、附上它的license就行。"程序的可执行档在散布时,必需以随附完整源代码或是可让人方便的事后获取源代码",也就是说,如果我告诉其他人我正在做一个开源项目,别人可以问我要,但我这时还可以不给。不过,一旦我把可执行档分享出来之后,别人在使用的过程中遇到问题,问我要完整源代码,我就必须提供源码给他(在GPL的情况下)。“不得对任何人或团体有差别待遇”,比如说,我声明我的软件“只向中国人开放源码”,就不符合开源定义、不能打着开源的名义还如此声明。
另外,我们需要了解一下自由软件的定义。这是Richard Stallman的定义,分为四个维度:
自由度0:无论用户出于何种目的,必须可以按照用户意愿,自由地运行该软件;
自由度1:用户可以自由地学习并修改该软件,以此来帮助用户完成用户自己的计算。作为前提,用户必须可以访问到该软件的源代码。在自由软件的逻辑下,开源是手段,自由是目的。
自由度2:用户可以自由地分发该软件的拷贝,这样就可以助人。
自由度3:用户可以自由地分发该软件修改后的拷贝。借此,用户可以把改进后的软件分享给整个社区,令他人也从中受益。作为前提,用户必须可以访问到该软件的源代码。
这里有一个黑客伦理的概念,人类大部分都是一般人,只有少数一部分很聪明,聪明到最好他一生的时间都在做有意义的事情。如果大家重复造轮子,就浪费了这些脑力了。所以黑客们是这样想的,我解决了这个问题就开源出来,你就不用再解决了,最多是进行修改把它做得更好;如果都解决了,那我就去解决别的问题。所以其实是让大家受益自己也能受益,因为别人受益我就受益,他也会开源,形成这样的一种文化。
因此,在自由软件的思路脉络下,“自由”才是黑客伦理中追求的,“开源”只是一种手段。这个逻辑就会跟“开源”作为目的、以开源建立高效软件工程的方法论有价值观层面的不同之处。
*参考:什么是自由软件?
我们可以做什么?
更多详细内容 · 关注回放视频