LF APAC开源布道者分享系列之五:布道者的修行

打铁还需自身硬,更何况我们身处威权文化之中,仍然在学习社会分工的社会之中,布道之路会遇到各式各样的挑战,有的极端人,甚至会对你的意义进行全面的否定,会说出诸如站在岸边的在教水里的人游泳。当我们面对一片质疑的时候,是更要坚定自己的内容,修炼自己的。

Sat Feb 5, 2022 | 3600 Words | 大约需要阅读 8 分钟 | 作者: 开源之道 |

天赋常常被误解,它并不是超常的智力,而是一种性格,它最需要的是一种承认失败、不遮掩缺点,并努力改变的意愿,它来自刻意的、甚至是强迫性的对失败的反思,以及对新方案孜孜以求的持续探索。

 ———— Atul Gawande 《Better:A Surgeon’s NOtes on performance》

开源是如何产生的

开源终究是一种文化,是信息技术中的创造者、匠人们,依据自身的偏好,而凝聚起来的习惯、沟通方式,从MIT 人工智能实验室的阁楼中的Hacker算起,经历了大教堂的GNU,以及集市式的Linux,乃至演变为商业公司联盟而成立的Kuberentes的孵化,而开源这样的文化,并不是某些哲学家、宗教家、政治家坐在办公室里想出来的,所谓的:“生产——》分配——》应用”这样而来的,而是“应用——》分配——》生产” 的过程。

这也应了鲁迅先生那句,“世上本没有路,走的人多了,也便成了路。” 的现实参考。开源目前为止,并没有事无巨细的现成的文化理论、工程实践等作品面世,更多的时候,只是一个引导,不至于让世人迷路而已。那些最为细节之处,全凭个人在应用的过程中,感悟或者是和他人交流而产生的。

更为细节的处理的话,让我们来举一个例子,Fedora、Ubuntu这样的GNU/Linux 发行版开源项目,我们需要参与到这些项目当中,了解软件生产的全部过程,了解一款操作系统所覆盖的方方面面,支撑那些应用,驱动那些架构和硬件,如何安装和使用,使用的过程中遇到了什么问题等等,才能理解何为Upstream first,何为协作,何为商业价值,进而得知社会意义。参与者如何思考,如何行动,如何沟通才是开源的精髓所在。从这个角度来讲,所谓的开放源代码只是其中一个结果而已。

须身处一线

这也就是说,如果想理解开源,必须成为开源的一份子,否则,永远都是在隔岸观火,无法理解其中的精髓和奥妙。所谓的工匠与技艺,是体现在最为细枝末节之处的,而布道者也需要深入到这些细节,才能理解开源的真正核心力量所在。

修炼硬技能

软件的铸造过程,软件的萌生想法的时刻,软件在被作为商品的交易过程,软件是如何改变人们生活的,软件在整个社会中产生的作用是什么?为什么说现在是信息时代、数字化时代,软件驱动了人类的进步,尽最大可能了解其中的运作机理,软件是运行在计算机和网络之上的,这些硬核的技术也要了解和掌握,如果可能的话,不妨进行大量的练习。

这意味着我们需要学习很多门知识,如编程、设计、业务、法律法规、社会、文化等内容,具体的获得,可以灵活的选择各种方式,在开源项目撰写和提交代码、阅读大量的书籍和论文、和各行各业的人们进行请教和沟通,以及大量的在实际解决问题中的正负反馈,都是获取知识的良好方式。

不可忽视的软技能

人与人之间的沟通,无论是软件工程,还是商业思考,甚至是社会考量,都是极为重要的技能,布道者不仅要有过硬的硬技能,各种和人打交道的软技能也是需要掌握的,设身处地的为他人着想,善于倾听,这些都是需要日常加强的软实力。

这一点尤其要强调一点,要克服偏见,要把握平衡,千万不可忽视。

在教学中学习(output based learning)

自从人类发明了学校这种教育机构之后,基本上输入性的学习已经占据了主流,但是不要忘了,输出型的学习方法,也是人类与生俱来的优势,比如说话,必须在和他人的交谈中提升。

开源布道显然不可能给任何人有2~3年的空闲去学习全部的知识,或许某些人条件很足,能够请到优秀的前辈和教练,但是大部分生活在当下快速的节奏中,是不可能做到这一点的,更何况大学里也没有开设这门专业,唯有在输出中学习!

Learing by contributing! 这也是开源世界的精髓!布道者须以身作则,倡导这样的理念。

输出才是实用的目标,也就是说,无论我们学到什么样的知识,如果没有输出,那简直是浪费啊!无论是个人还是社会。所以一定要输出,哪怕是没有学习。做一个对得起自己的技能的现代人~

学会理性思考,用事实说话

即使是在具体的技术沟通之中,人们仍然会有非常多的分歧,而终止分歧的最佳办法就是实现它,这也是开源共同体中在设计阶段有很多争吵,而到了实现中就很少争执的重要原因。但是,作为开源布道者就没有那么的容易解决,由于要接触各式各样的人们,面临的也是千奇百怪的问题,所以布道者,要修行一些非硬核的技术问题——哪些和人沟通和说服的技能。

布道开源,尽管我们大部分的出发点是带有美好的憧憬,但是这通常是一件一厢情愿的个人情感,可能起到的作用是激励某种氛围,但是这并不是具有说服力的做法,任何人都可以使用煽动性的情绪去做事,开源是既然是符合科学的卓越的技术和工程,并能带来非凡的价值,是需要事实和数据和人们讲清楚的。

一个项目是为了解决问题而存在的,不是为了开源而存在的,所以,我们理性之下第一步要做的是,项目是可以运行的,如Kernel是可以驱动计算机硬件设施的,Kubernetes是用来调度大规模容器的,Hadoop是MapReduce算法的集群实现……

接下来我们要看的是,项目的工程能力,共同体构建情况等数据,这是需要一定的时间来观摩的,以及花精力来收集和分析的。再然后是社会效应,社交媒体讨论、媒体报道等等,然后是用户的口碑和反馈。

笔者这里引用经典的《事实》里提供的十个建议:

  1. 坚持寻找绝大多数,避免只比较平均数和只关注极端情况的做法。
  2. 对坏消息要有思想准备,要认识到事情可以同时是不好的,但也是在变得更好的。
  3. 要记住,很多事物的发展并不遵循直线规律,而是遵循S形曲线、滑梯曲线、驼峰曲线或者倍增曲线的规律。
  4. 计算真实的风险。计算公式是:风险=危险程度X发生的可能性。
  5. 关注比例:当我们在不同大小党组别之间作对比的时候,比例总是更有意义。
  6. 要经常质疑自己的分类方法,学会在同一类别中寻找不同,在不同类别中寻找相同,以及在不同类别中寻找不同。
  7. 记住:缓慢的改变也是改变,并不断更新自己的知识,收集文化改变的案例
  8. 必须有一个工具箱,而不仅仅是一把锤子,要学会发现自己想法的不足之处,对自己未知的领域保持谦逊,当心简单的想法和解决方案。
  9. 停止寻找替罪羊,寻找原因,而不是寻找坏人。寻找系统,而不是寻找英雄。
  10. 做到循序渐进,学会深呼吸,坚持了解基础数据,警惕那些带有偏见的预言家,并小心过激的行动。

换一种说法就是,要做到控制各种本能,避免情绪化的表达。

谨防他人的以偏概全

开源世界发展到今天,已经超越了任何单个人,或某个组织能够掌控的局面,换句话说,是成果供全人类共同分享的伟大杰作。换句话说,很难找到一个人说事彻底的理解了开源,或者是某人能把开源给阐述清楚了。所有人看到的都是局部,包括作者自己,尽管他尽最大努力尝试看到更多。

举个例子,关于代码植入广告/病毒、修改许可证、恶意提交issue、歧视某类群体使用等等这些,每天都可能在开源世界中发生,犹如我们现实世界中会有谋杀、争执、欺压、伤害、战争等等事件,但是,由于人的固有属性——关注不好的事情,有助于判断当前的形势。加上媒体添油加醋般的误导,有的时候,会让我们偏离了主要的内容。

这一点,获得诺贝尔经济学奖的丹尼尔·卡尼曼在其经典著作:《思考,快与慢》中作了深刻的描述。唯有通过理性的思考方能不被这种有毒的表象所蒙蔽。

我们需要聚焦到那些事情真正发生的地方,也就是说我们要转移到整体上绝大多数范围内开源生效的地方,每当这个时候,就要去开源世界的城市、乡镇游荡一番,和开发者们聊聊,如何可以的话,比如去Kernel的邮件https://lkml.org/看看工程师们正在做什么,去Kuberentes 的GitHub issue上,去Linux基金会的站点上,去Aapche邮件列表看看,开源的世界一直在运转,大家都在忙着解决遇到的各式各样的问题。

我们需要有大局观,需要建立洞察开源世界的视野,才能坚定自己的所见和所见证的一切。开源的世界很大,人很多,既要有纠正细节的能力,也要有全局的视角,才能走的更聪明、更坚定。

调整自己的心态

布道者应该正视自己的身份,布道者并不能代表任何置身事内的开发者、工程师,那些代码的建造者、架构师,布道者某种程度上只能代表自身的观念、思考和经验来谈论,甚至是以记者的身份将所发生的事情呈现给世人,其中的意义必须自己去感悟和思考。

正如开源布道者的宗师人物Eric S Raymond 称自己是一种牺牲,开发者对于布道者大多是不屑一顾的,而受众也不是全盘接受,在很大程度上也会持一种怀疑的态度。两边都不讨好,最需要的就是布道者自己的定位要坚定,明白其中的意义,哪怕是遭受一些误解、偏见,甚至是误会、质疑。

坚定自己的定位,思考自身的意义所在,义无反顾的去亲力亲为的做就好了,历史会证明一切。

另外,你并不孤单,LF APAC 开源布道者团队是一个以宣传和倡导开源为使命的共同体,在这里,我们彼此鼓励,相互理解,坚定信心。