建设中国开源生态的核心价值观,我们能做什么?

2020年11月13日 单位
林旅强 Richard
作为个人,你是否会跟你周边的人,比如同事、朋友,或者是以前的同学,或者行业里的人,告诉他『我是开源人』,还是说“我是写代码的”?


林旅强 Richard Lin


开源社联合创始人、理事 / 云计算开源产业联盟OSCAR专家 / 华为云AI开发者生态专家




PART ONE


是否存在“中国”特色的开源核心价值观?


很多人问过我,如果我们要建设中国开源生态,那是不是存在中国特色的开源核心价值观呢?我认为,开源的价值观 是普世的,但我们仍然可以有中国特色的一些做法。也就是说,建设中国开源生态的手段,要考虑我们自己的国情,比如说文化/制度/社会发展阶段来调整和优化。我们所处的阶段与欧美是不一样的,不能照搬。

产业环境是影响因素之一,比如该地区的IT人才是否得到一定的重视、对软件开发人员的需求变化等等。其实现在很多学生的想法是,我学完一个东西,不知道以后出社会是不是有用。其次,生存条件也在一定程度上影响着人们投身开源的热情。再者,大家对于共享文化的接受程度。通常情况下,共享别人的东西很乐意,共享自己的东西就要考虑一下。不只是个人,公司可能也是这样。最后,社区组织者的思维不只是社区要成功,往往会想,我做社区成功之后能不能也去融资、也去做商业。有时候社区归社区,商业归商业,有时候两条腿走路,各自把定位搞清楚,或许两边都可以做得更好。这些都是我们需要去摸索、了解,然后再做相适应的引导。






PART TWO


开源到底是什么?


开源到底是什么?有些概念务必搞清楚,不要混淆。

举个例子,开源不等于开放。很多人常混淆使用“开源”与“开放”。开源人首先要清楚认知二者区别,开放是开源的必要不充分条件。有开放不代表它是开源的,但开源一定要开放。开源的其中一个价值观是开开放,但很多人把它并列,这是不对的,它只是其中之一。


再者,开源(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写的“为什么开源错失了自由软件的重点”未必完全赞同,但这是一个了解什么是自由软件、什么是开源软件的很好的方式。




PART THREE


什么是开源生态?


不管是亚马逊丛林,或者是大草原、沙漠、深海,它都是生态。那我们开源的生态,其实就是玩家之间的生产消费关系和竞争合作关系图谱。

很多人希望看到的是整个大生态,但我必须告诉各位,不要追求这个。我们要追求的是站在开源人的立场,把自己在开源生态的位置搞清楚,把我们自己的开源工作做好,整个中国的开源生态也会变好。


良善的开源生态可以强化开源核心价值观,促进更多开源带来的价值,包含对个人、对企业、对教育科研、对社会、对国家的价值。


但我们不需要在一开始搞清楚,我们一定要先从自己的角色出来去投入贡献。如果说刚好我的工作跟开源是完全相关,那我就全身心投入,既符合我的志向,也符合这个组织的目标,这是最好的一个情况。





PART FOUR


开源的核心价值观是什么?



开源的核心价值观首先展现在开源定义OSD中,很多人可能连开源的定义都没读过。我们从中摘出几个来看一下,如:


(1)自由传播,就是说这个代码本身或者是信息本身必须要自由的传播;

(2)提供源代码,你必须要提供这个源代码,而不只是开放源代码;

(3)允许二次创作,很多人把开源跟创新写在一起,其实我认为叫做“二次创作”更到位,至于二次创作创出来的是不是新,这个创新有没有商业价值?这是两件事。

开源就是允许大家基于这个项目继续创作、贡献,每个贡献者总是为了一些他自己觉得的“价值”去进行创作。当中自然会有一些创新的,可能有些是产生商业价值,也可能有些可以作为创业课题的。

但是开源不应过于强调客观的创新,如果有人说你开源了,没有创新,这是不同维度的混淆。开源重点在二次创作,有没有打中商业目标则是另一回事。

我们不能说它没用。我们中国人太常讲这个东西没用、浪费时间,其实不然,投入开源项目的过程本身,对于作者自己就是有意义的。如果说我们什么事情都追求客观上、其他人评价角度的有用,那反而会离国际上的水平越来越远。有的开源人追求的是“有趣”,例如Linus Torvalds的“Just for fun”。在投入开源过程中的“无用之用”,其实让我想到老庄道家的道理,有许多跟开源是相符合的。

开源定义 Open Source Definition (OSD),是由Bruce Perens提出:

Open source doesn't just mean access to the source code. The distribution terms of open-source software must comply with the following criteria:

这是引言的第一句话,开源不是说我能得到这个代码而已,代码分发过程中涉及到的法律条款都应该要与下面的这些判断标准是一致的。当然,判断标准很多,这边列了一些:

https://opensource.org/osd 

https://zh.wikipedia.org/zh-cn/开源软件 

https://en.wikipedia.org/wiki/Free_and_opensource_software

这里选择几个说一下,比如"自由再散布",我拿到这源代码就可以给到别人,只要讲清楚、附上它的license就行。"程序的可执行档在散布时,必需以随附完整源代码或是可让人方便的事后获取源代码",也就是说,如果我告诉其他人我正在做一个开源项目,别人可以问我要,但我这时还可以不给。不过,一旦我把可执行档分享出来之后,别人在使用的过程中遇到问题,问我要完整源代码,我就必须提供源码给他(在GPL的情况下)。“不得对任何人或团体有差别待遇”,比如说,我声明我的软件“只向中国人开放源码”,就不符合开源定义、不能打着开源的名义还如此声明。

另外,我们需要了解一下自由软件的定义。这是Richard Stallman的定义,分为四个维度:


自由度0:无论用户出于何种目的,必须可以按照用户意愿,自由运行该软件;

自由度1:用户可以自由学习修改该软件,以此来帮助用户完成用户自己的计算。作为前提,用户必须可以访问到该软件的源代码在自由软件的逻辑下,开源是手段,自由是目的。

自由度2:用户可以自由分发该软件的拷贝,这样就可以助人。

自由度3:用户可以自由分发该软件修改后的拷贝。借此,用户可以把改进后的软件分享给整个社区,令他人也从中受益。作为前提,用户必须可以访问到该软件的源代码。


这里有一个黑客伦理的概念,人类大部分都是一般人,只有少数一部分很聪明,聪明到最好他一生的时间都在做有意义的事情。如果大家重复造轮子,就浪费了这些脑力了。所以黑客们是这样想的,我解决了这个问题就开源出来,你就不用再解决了,最多是进行修改把它做得更好;如果都解决了,那我就去解决别的问题。所以其实是让大家受益自己也能受益,因为别人受益我就受益,他也会开源,形成这样的一种文化。


因此,在自由软件的思路脉络下,“自由”才是黑客伦理中追求的,“开源”只是一种手段。这个逻辑就会跟“开源”作为目的、以开源建立高效软件工程的方法论有价值观层面的不同之处。


*参考:什么是自由软件?






PART FIVE


我们可以做什么?




建设中国开源生态的核心价值观,我们要做什么?

第一、我们要正确更深刻的了解开源之道,像上面附的一些链接都是一些基本的、公开的资料,像Free Software Foundation、OSI、Wikipedia的链接,希望大家作为一个“开源人”,都需要温故知新,正确理解开源的定义和核心价值观,才能正确地引导其他人一起加入开源的圈子。

第二、我们要行动起来,去落实这个开源之道。我们投身进行项目协作跟贡献时,要知道自己的能力在哪里,选择哪些方面去持续投入贡献。

第三、我们要去布道,去传播,让更多的人去信仰开源的核心价值观,让开源社区中有更多的力量投入;

同时,要举办/参加活动,集结更多的开源人,吸引更多的人加入。在活动中不是只是听技术,更重要的是要有交流,与开源社区成员的信息共享和思想碰撞,可以强化开源集体的理念,并且让理念能随着时代演进。

最后,我们也需要开源组织,比如说有开源社区、协会或基金会,这些组织都可以联合更多的开源力量,或者是从别的地方去借一些力量。能投钱的投钱,能出力的出力。



不要问为什么没有人做这个,先承认你就是『没有人』。
如果我们去抱怨没有人做这个,代表你自己不投入,你就是『没有人』。
『没有人』是万能的,但每个人都投入就是万能的。


*本文为演讲者个人观点,不代表协会立场。




更多详细内容 · 关注回放视频