唐凤:开源之道 2015

2015-06-01 23:52


OpenSourceEnlightenment.001.jpg

这份简报是 Allison Randal 在 OSDC.tw 2012 演讲的衍生,白底是 Allison 原本的内容中译,楬色底的图片是新加上的。

OpenSourceEnlightenment.002.jpg

Enlightenment 这个字在十八世纪,伏尔泰、康德、牛顿说 Lumières、Aufklärung,指的是让理性的光线,照亮人类的生活,这些想法最终导致了世纪末的法国大革命,提出自由、平等、博爱的理想。

自由软体运动 30 年来,争取不受限制的网路言论、创作、近用权利,是政治概念。

后起的开源运动则是希望企业放下身段,平等对待贡献者、透过开放协作获得高效率、高品质的创作,这是共享经济的概念。

这两个概念在实务上做的事是相同的,自由软体和开源软体基本上没有差别。

但我今天想分享的是“Solidarity”这个文化概念。这个字原本是 Fraternity “兄弟之情”,但现在一般说“社会连带”,就是人和人之间的互相帮助。

OpenSourceEnlightenment.003.jpg

科学技术社群的特点,就是可以和社会上的任何社群有连带。开源社群开宗明义说“不限制用途”,也就是和整个社会有连带。

Web 是建立在连结上的世界。我们透过 Web 和社会对话,也创造社会对话的新形式、新空间。

这不仅让我们成为更好的创作者,也让我们通过与人合作,而成为更好的人。

OpenSourceEnlightenment.004.jpg

这条路走向哪里呢?鲁迅说:希望本是无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。

开源尤其是一条创造的路,已经有的拿来用就是了,所以都是沿着前人的足迹,往无人处行去。

OpenSourceEnlightenment.005.jpg

您可以将它想成一条修行之道,让身而为人的我们能够不断成长。

OpenSourceEnlightenment.006.jpg

让人不断成长的是社群。每个社群都有自己线上、线下空间,就像一片园地,它的内容是有机的。

开源的道路,可以带领我们走进全世界的社群空间里。

OpenSourceEnlightenment.007.jpg

首先,人是一切开源专案的核心。程式码是很重要,但最核心的永远是人。人们透过各种不同的方式来参与专案。

OpenSourceEnlightenment.008.jpg

每一百个使用者里,也许有十个人会参与修正,一个人会做出新贡献。

但是随着需要花的时间减少,参与和贡献的分界也变得更模糊。

OpenSourceEnlightenment.009.jpg

除了专案开发常见的分类之外,最重要的就是解决使用者的需求,以及使用者之间的彼此支持。

当然很多专案的开发者就是第一个使用者。

OpenSourceEnlightenment.010.jpg

在开源发展初期,要取代的就是过去“for the People”的概念,一小群大神推出新产品让大众使用。

开源的概念是“with the People”,专案的走向由使用者、参与者、贡献者来一起形成。

OpenSourceEnlightenment.011.jpg

您的专案也许会用到别人开发的软体,而因此接触到上游的专案,或许偶尔也会向他们提出建议和修正。

又或许您开发的是一套程式库或模组,提供给其他专案的人使用。此时,您就是他们的上游专案,他们也会用相同的方式来与您沟通。

OpenSourceEnlightenment.012.jpg

怎么和上游沟通?源头有许多个,有沟通就是活水。

无法沟通时,可以找新的源头,或者自己 fork 一份。

OpenSourceEnlightenment.013.jpg

所以,人们到底为什么要做开源软体呢?

如果您想理解开源模式如何运作,这是一个很关键的问题。

OpenSourceEnlightenment.014.jpg

认知剩余,也就是“闲闲无代志”。有些人休闲娱乐是看书,有些人画画,有些人拍照,有些人专门帮猫咪图片加字幕...

有 Web 之后,到线上的空间一起做同样的事,花同样的时间,可是乐趣是加倍的。

像维基百科,大家看的时候有空改几个错字,品质就提高了。

OpenSourceEnlightenment.015.jpg

一部分的原因,是因为这能够让人迅速接触到刺激、有趣的新鲜技术。

能够与人分享,也是一个主因:透过与人分享,我们可以认识开源专案里的同好,来提升彼此的乐趣。

OpenSourceEnlightenment.016.jpg

不只程式、文字、影像创作共用,传统上车子、房子这类以“拥有”为主的东西,现在已经逐渐演变成大家一起分享、使用,增进彼此生活的品质,这叫共享经济。

OpenSourceEnlightenment.017.jpg

除了互惠之外,投入开源专案的人,往往也带着分享奉献的精神。

能够伸出双手帮助别人,是身而为人很重要的一部份,所谓助人为快乐之本。

OpenSourceEnlightenment.018.jpg

Iain King "Help someone if your time and effort is worth more to them than it is to you” 就是说你花一分力气,如果可以帮到对方两分忙,而大家都愿意互助,那整体的生活品质就会不断提升。

在零边际成本的时代,表示你用开源工具帮了一个人,他可以拿去再帮两个、四个... 指数性的成长。

OpenSourceEnlightenment.019.jpg

除了这些内在因素,参与开源专案工作,也可以得到许多回报。

其中一项,是获得别人的敬重:当我们创造新的事物与人分享,进而吸引人们一同合作时,人们自然会认识我们的人品与才能,从而为我们自己带来成就感。

OpenSourceEnlightenment.020.jpg

现在有 Git,要解释“协作”概念就容易多了。

每个人各行其是,但是把成果都开源出来,这样好主意自然会被认同的人吸收、合并,大家也会知道“你就是当初提出那个好主意的人”。

OpenSourceEnlightenment.021.jpg

所以,我们应当对于加入专案的人表示尊重,这样人们才会愿意继续参与专案的活动。

OpenSourceEnlightenment.022.jpg

每个人的贡献,就是我们认识他们的方式。认识了新朋友,又可以揪团做新的创作。

认识彼此的价值是很重要的,所谓 “I'd like to know you by your values, not by your types, classes or roles.”

OpenSourceEnlightenment.023.jpg

欣赏别人的作品也很重要。当人们发表自己的作品,而您有机会与他们交流时,即使是一封简单的电子邮件感谢函,说“您的专案对我很重要”,也足以营造出一种正向的文化,让大家都能保有继续创造的动力。

OpenSourceEnlightenment.024.jpg

以前我每天醒来都收到感谢函,一整天就很高兴。现在收 pull request 当然更高兴... 感谢是会传染的。

OpenSourceEnlightenment.025.jpg

社群是建立在彼此介绍、彼此认识、彼此肯定上的。

OpenSourceEnlightenment.026.jpg

在线上的空间里,每一次 ++,都是在建立文化,让社群参与者知道,哪些贡献是社群需要的。

OpenSourceEnlightenment.027.jpg

一起合作时,我们可以透过彼此鼓励,让彼此变得更好更强大。

当您看到其他人正在解决艰难的问题时,您不妨鼓励他们:“你做得很棒,未来会做得更棒,需不需要帮什么忙?”

OpenSourceEnlightenment.028.jpg

当许多人聚在一起的时候,每个人都有不同的能力。

一起工作时,可能您知道专案需要的五样东西,而其他人知道另外五样东西,您们互补长短,就有了一整套技能足以完成专案,而这是单打独斗时做不到的事情。

南非的“Ubuntu”文化说的,就是每个人不是单独存在,而是透过彼此互相支援、互相帮助,才能完成自己、超越自己。

OpenSourceEnlightenment.029.jpg

另一件很重要的事,是鼓励彼此放眼未来、看得更远。

我们可以给其他人灵感,帮助他们解决有意思的问题。

有时,只要说“这里有个坑...”,别人就可以将它化为现实。

OpenSourceEnlightenment.030.jpg

有些时候,您只要看看别人在做些什么,然后告诉他们您想到的关键之处,不必自己跳下去实作,也可以帮助他们走得更好更远。

OpenSourceEnlightenment.031.jpg

在做开源工作时,我们得时常提醒自己,我们并不是孤身一人。

由于需要和许多人合作,我们最需要注意的,就是不断改进自己的沟通技巧。

OpenSourceEnlightenment.032.jpg

README、ChangeLog、ROADMAP、FAQ、etc...

OpenSourceEnlightenment.033.jpg

在开源社群中,我注意到一件事情:人们对如何做软体往往有很好的规划,可是却由于缺乏良好的沟通,而让彼此的计划互相冲突。

如果您朝向某个规划埋头开发,而没有与人沟通的话,很可能会踩到别人的脚。

我们就像一窝在蜂巢里的蜜蜂,要经常发出嗡嗡声,才能让彼此持续发挥功能。

OpenSourceEnlightenment.034.jpg

认知偏差:

  • 透明度错觉(以为别人知道自己的内心状态)。
  • 基础归因谬误(以为别人是故意的)。

OpenSourceEnlightenment.035.jpg

此外,我们还会不时讨论技术问题,尝试找出最好的解决方案。

在面对技术问题的时候,人们可能会战到底,为了找出“最好的解决方案”,反而让事情难以获得实质的进展。

OpenSourceEnlightenment.036.jpg

通常只能有粗略共识。要求更一致,就变成了“粗暴共识”。

OpenSourceEnlightenment.037.jpg

所以,我们在工作过程里,要逐渐学会接受各种各样的可能性。

对于您自己想到的解法,您当然应该持续努力,但也不妨对别人所提出的其他可能性,抱持开放的态度。

OpenSourceEnlightenment.038.jpg

  • io.js 加入 Node.js 基金会。
  • 微软帮 Node.js 添加查克拉。

OpenSourceEnlightenment.039.jpg

而在您自己的工作有所进展时,也可以透过各种通讯管道,让大家知道您做了些什么。

发电邮、写推特… 有很多方法能让人们知道您的进度。

OpenSourceEnlightenment.040.jpg

胆子要大,脸皮要厚,有心得就分享。

说错了,别人才有纠正的机会,我们才可以学到新的事情。

“万事万物都有缺口,缺口就是光的入口。

OpenSourceEnlightenment.041.jpg

沟通的另一个重点是问问题。社群的好处,就是可以让你找到人、找到资讯。

OpenSourceEnlightenment.042.jpg

心得要放在找得到的地方。Permalink。

专案的关键字很重要。

资讯科学里最难的两大问题:取新的名字、决定什么时候清掉快取,还有不小心多算一个的问题。

OpenSourceEnlightenment.043.jpg

同样的道理,当别人想要学习时,您也可以认真回应,而不是对简单的问题抛下一句“RTFM(去看该死的说明书)”就算了。

OpenSourceEnlightenment.044.jpg

如果说“不要跟人打交道,去跟书打交道”,Social Object 的特性就不见了。

OpenSourceEnlightenment.045.jpg

学着如何去给别人有帮助的答案,帮助他们一同走上这条开源之道,日后他们才能把这条路走得更长、更远。

OpenSourceEnlightenment.046.jpg

取暖、小圈圈、自嗨,这些都是最基本的需求,对新手是不可或缺的。
团体心理学上叫做 Basic Assumption Group。

满足了之后,才能形成工作组,做出实际的创作,登上更高的山。

OpenSourceEnlightenment.047.jpg

有些时候,批评别人是必要的。

虽然我们对各种可能性抱持开放的态度,但针对特定的情况,确实可能对方的资讯已经过时了。

这个时候,就要先找到彼此可以同意的一个地方。

OpenSourceEnlightenment.048.jpg

我们不能改变别人的想法,但可以改变他的感觉:“我同意你说的概念,但是有些资源已经过期,该清 Cache 了。”

OpenSourceEnlightenment.049.jpg

即使对方态度恶劣,也请保持优雅。有时候,脸皮厚一点也有好处。

虽然有些人的沟通方式有待加强,也许有 5% 仍有价值。

从这个角度来看,就算人们说话的时候不礼貌,您还是可以礼貌地回应他们。

OpenSourceEnlightenment.050.jpg

拥抱小白拥抱厨。

简单来说,如果对方讲十句话,有九句是来乱的,只要认真回应不是来乱的那一句,久了之后对方就会学到,来乱是不会有人理的。

OpenSourceEnlightenment.051.jpg

沟通的另一部分不是说话,而是倾听。

有时我们须要做的,不是告诉别人我们的想法,而是静静地坐好,让别人畅所欲言。

OpenSourceEnlightenment.052.jpg

HTTP:

  • 100 请继续说
  • 200 这是我听到的意思
  • 300 这件事也可以找别人说
  • 不要 400 “这是你的错”和 500 “这是我的错”。

OpenSourceEnlightenment.053.jpg

光是聆听是不够的,我们还需要有同理心,也就是设身处地的能力。

OpenSourceEnlightenment.054.jpg

每个人在开源社群的活动,都会留下足迹。

沿着这些痕迹,想想对方当年为什么会说这些话、写这些字,慢慢就能从对方的角度,看到新的世界。

OpenSourceEnlightenment.055.jpg

有些人以为,能够从事开源软体工作的人,个个都得是天才。事情绝对不是这样。

的确有特别专精某个领域的人,但其实任何专案,都需要各方面具有不同才能的人加入。

OpenSourceEnlightenment.056.jpg

即使再能发光、发热的人,同时也只能往一个方向照。

开源社群的连带,像是德勒兹在《千高原》这本书里,提出 Rhizome“地下茎”的想法:往各个方向有机生长,群龙无首、自行组织,断裂之处可以冒出新芽,也就是新的社群 。

OpenSourceEnlightenment.057.jpg

重要的是,无论您有多聪明,都要保持谦虚。谦逊的心态,让您能欢迎其他人加入您的专案。

相反的,抱持骄傲自大的态度,就等于是在跟其他人说:“我不需要你们,我用自己的方法做事就够了。”

OpenSourceEnlightenment.058.jpg

劣即是夯。不要怕丢脸。

OpenSourceEnlightenment.059.jpg

社群愈有多元交织的文化,参与者的基础就愈丰厚。

所谓多元交织 Intersectionality,意思是每个人在社会阶层、身份、族群、认同上,可能有些居于优势,有些居于弱势。

运用自己在弱势时的经验,就可以体会别人处于弱势的感受,也才能设身处地,形成真正的社会连带和互助。

OpenSourceEnlightenment.060.jpg

“安全空间”这个概念是从 LGBT 同志社群来的。我在这个空间里,假设是来学习的,那对身材、肤色等无关的评论,或是性感图片等等,就是一种干扰。

这几年来,我们推广各 Conference 的筹备团队,自己讨论出 Code of Conduct 与会守则,来确保安全空间。

希望下次 Modern Web 可以有自己的 Code of Conduct。

OpenSourceEnlightenment.061.jpg

就像每个地方有不同的语言和文化一样,相同的多元性,也体现在各式各样的开源专案里。

举例来说,Linux 社群、Perl、Ruby、Python、PHP 和 JS 社群,都各自用独特的方式来交流合作。

OpenSourceEnlightenment.062.jpg

以前南非种族隔离时,黑人白人互不往来,但你问欧巴马他是白人还是黑人?在场的各位是白人还是黑人?

“多样性”Diversity 的概念,就是现场一千个人就有一千种人。

在这个前提上来沟通,才能互相理解彼此的世界观,而不只是互相贴标签而已。

OpenSourceEnlightenment.063.jpg

另外,做开源专案并不只是享受乐趣而已。乐趣当然是有,但同时也有责任。

OpenSourceEnlightenment.064.jpg

责任的“自我治理”。个人的层面,像是蕃茄钟啊,Inbox Zero 等等。

社群的层面,则是尽量把决策过程透明化,让新来的人容易接手。

为什么要这样做呢?

OpenSourceEnlightenment.065.jpg

因为人生中还有其他的事情,像是您的伴侣、父母、孩子,以及新的社群。

OpenSourceEnlightenment.066.jpg

所以在过程里,就要不断交棒,逐渐放手,而不是忽然留下一大块遗产给继承人。

OpenSourceEnlightenment.067.jpg

我们要意识到这是一个循环。一开始我们加入社群,逐渐负起越来越多的责任。

但当人生到达某个阶段之后,您总会逐渐减少所负的责任。

OpenSourceEnlightenment.068.jpg

成、住、坏、空。

开源不是零和的竞赛,没有“输在起跑点上”的问题。

只要让接棒的人知道,他可以往自己的方向跑,这样就赢在起跑点上了。

OpenSourceEnlightenment.069.jpg

所以我们不妨想想:“哪天我无法再付出那么多心力的时候,谁来继续我的工作呢?”

OpenSourceEnlightenment.070.jpg

能留下来的,就是我们在彼此心中的样子。

OpenSourceEnlightenment.071.jpg

为了确保其他人能继续我们的工作,我们可以创造出持续前进的过程。

这是一个不断吸收与分享的过程。

OpenSourceEnlightenment.072.jpg

张悬有一句歌词说“时光穿梭,我们不在左右,只在彼此其中。”

在 Social Web 的时代,我们都是彼此的分灵体。

OpenSourceEnlightenment.073.jpg
OpenSourceEnlightenment.074.jpg

这张图里列出了“乐趣优先”的主要元素:稳定的支持、安全的空间、不受限制的活动,就能出现新的看世界的方式。

OpenSourceEnlightenment.075.jpg
OpenSourceEnlightenment.076.jpg

专案像是金字塔,让社群围绕着它彼此发现、彼此学习。

开站是一时的,开源是一辈子的。

一辈子也并不长,人生像彩虹一样,原本就是向大自然借来的。

但是看到彩虹留下的感动,会激发新的创作,再感动更多人,这样的文化可以绵延不绝。

OpenSourceEnlightenment.077.jpg
OpenSourceEnlightenment.078.jpg

这是 Git 的 Logo,展现出人跟人之间有连带,也跟外部的社会有连带。

  • 遇到新的事情时,要先 Fetch 新的状况(接受它)。
  • 接下来要跟心里的想法 Merge(面对它)。
    • 这时可能产生冲突,冲突是要解决的。
  • 冲突解决之后才能够用行动 Commit(处理它)。
  • 最后再 Push(放下它)。

一旦把 Code push 出去、开源之后,它就不是你的了。

开源的意思,就是任何人可以拿着这个 Code,向他自己想要做的创作方向,继续去创作。

所以,要放下对自己的作品的执着。

这是开源之道目前让我学习到的事情。谢谢大家。

宣讲人: 唐凤 

(本简报的逐字稿现场录音现场录影线上简报下载 Keynote 档。本文经过了繁简体转换,为与讲稿匹配,未作两地用语替换。)