推荐序一
非常高兴看到《拥抱开源(第2版)》中文版的正式出版,可以说它是开源教育领域的一场及时雨,相信一定会为开源在国内的普及带来重要的推动作用。这本书系统地梳理了开源领域的相关知识,属于典型的开源知识科普读物,而我和团队正是做开源领域研究的,借此机会也谈谈我们对开源领域知识的一点理解。
计算机科学领域有一个非常有意思的交叉学科,叫生物信息学(bioinformatics),我们学院曾有老师研究这个方向,当年火过一阵子,现在出现了一个类似的热门领域——类脑计算(brain-inspired computing),由新一波的人工智能热所带动。
我在读书的时候也了解了一下生物信息学,知道它就是利用计算机和数据科学的方法研究各种各样的生物学数据,包括对数据的搜索(收集和筛选)、处理(编辑、整理、管理和显示)及利用等。目前主要的研究方向有序列比对、序列组装、基因识别、基因重组、蛋白质结构预测、基因表达、蛋白质反应的预测,以及创建进化模型等。
由于这个领域能够发表影响因子非常高的论文(例如IF能够到5分以上的Bioinformatics),因此在唯影响因子论英雄的年代,确实吸引了一大批研究学者趋之若鹜。然而,进入这个领域的计算机科学研究人员会面临一个非常大的挑战,甚至已经成为整个领域的天花板,那就是生物学的领域知识。各种生物学中诸如序列、基因、基因组、转录组、蛋白质组、细胞表型等概念及其背后的机理,让无数计算机人望而却步,只能退而求其次,工作内容最多只能充当生物科学家的工具,而真正在Nature、Science上收获顶级成果的还是那些生物学家们。
开源软件开发、开源社区治理、商业开源等这些开源的领域知识和上面的情况非常类似,只不过,困难与挑战要大得多。
第一,目前并不存在一个类似“生物学”这样的“开源学”知识体系,而只能通过借鉴其他学科的知识进行拼接与搭建。我们实验室所利用到的几块碎片包括软件工程学、管理学以及经济学和法律学等学科的部分知识。从开源社区研究的角度看,我们主要研究广义上的开发者在数字空间中大规模协作过程背后的规律,进而为社区治理与运营提供指导。而从企业开源治理的场景出发,我们更加关注的是法律端的安全合规以及与企业治理相关的管控手段。当然还有商业开源(开源投资)、政府开源、高校开源等越来越多的场景。而不管是哪个场景,都会带来第二个巨大的挑战:开源的实践性。
第二,开源的领域知识具有非常强的实践性,很多问题只有亲自参与过,才能体会开放式协作这样的美妙过程,而像开源基金会治理、企业开源运营等这样高端的实际场景,更是可遇不可求的,属于企业高层甚至政府治理层面的事物。开源背后的支撑技术发展异常迅速:Git是2005年发布的(工具),GitHub是2008年正式上线的(平台),而GitHub Action则是到2018年才开始提供服务的(流水线)。但技术栈的飞速更迭,使得软件协同生产的模式变化巨大。一方面,高校开始越来越不擅长这类实践性极强的教学活动;另一方面,市场对这类人才的需求持续旺盛,特别是集专业技术、沟通管理、领域知识于一身的开源人才,需要学校、企业、开源社区来联合培养,才能达到一定的效果。
第三,开源的领域知识还具有对学习者来说不太友好的特点——不少内容属于所谓的“暗默知识”(tacit knowledge),即源自个人的亲身体验,是与个人信念、视角及价值观等精神层面密切相关的,是一种“行动中的知识”(knowledge in action)。大到“社区健康度分析”“项目影响力的排名”,小到一个“开源仓库的标签分类”、一个“开发者的角色认定”等问题,或多或少都是需要体验与行动才能理解的。这也是目前很多开源概念的界定很难达成共识的重要原因。
第四,开源领域数据的结构复杂性(代码数据、时序数据、关联数据、NLP数据等)与语义丰富性(代码语义、社交语义、协作语义、技术语义等)。正是由于上述几点的客观存在,目前即便拥有了海量的全域开源数据,也不太容易像生物信息学那样,解答共识性的领域问题、数据问题和数学问题。同时,由于这个领域非常年轻,还处于开疆拓土的阶段,因此很多基础性工作都比较缺失。这也是我们发起诸如“开源测量学”“开源纲目”等理论课题的原因。而像OpenDigger和OpenPerf(均为我们实验室在GitHub上的开源项目)则完全是从数据基础设施的角度来推进,属于首创类型的项目,推进过程虽然艰难但充满巨大的吸引力。
生物数据的分析可以应用到很多重要的场景,例如生物制药、健康医疗等。开源领域数据也一样,能够用到包括企业开源治理、开源社区运营、开源商业投资、无边界组织经营等不同的场景,关乎数字经济时代的发展脉搏。而从我们实验室“开源点亮未来”的价值取向出发,开源将会对数字经济时代的生产模式、生产关系、组织结构、资产形态、激励与分配制度、数字资产供应链、数字产品商业模式等关键概念产生冲击与改变,部分甚至是革命性的。
数据科学与开源领域知识是一个非常完美的组合。不像生物信息学,大部分的计算机人对它并没有直接的兴趣,而开源技术、开源模式则代表了开发者的未来。这也是OpenResearch这个开源项目提倡的:用开源的方法研究开源的现象。虽然它才刚建立几个月,但体现了我们对开源研究这件事情的理解。接下来分别从三个方面再详细聊聊。
第一,从开源领域知识的研究与创新来看,数据科学与数据分析是一个极佳的研究方法。全球数字化的高速发展,让开源技术站在舞台的中央,近期各种安全事件层出不穷,又让全球软件供应链问题浮出水面。开放源代码本身的价值毋庸置疑,类似World of Code(WoC)这样的“大代码”工程项目也是非常基础性的。但从我们的角度看,上面的开发者行为数据更加重要,所谓community over code(社区大于代码),开发者是开源生态的核心。随着以GitHub为代表的Git开发模式的标准化,社交功能给开发者带来的不仅是门槛的降低,更重要的是把围绕一个开源项目的所有关键环节都逐渐打包在一起。GitHub成为一条数字产品创作与生成的流水线,而这条流水线上的所有过程数据都因开源的属性而变得透明,进而可分析、可理解、可利用,成为备受数据科学家青睐的一个领域场景。而像GitHub这样全球化的开源生态网络,其中的各类数据问题也是非常丰富的,毫不亚于类似生物信息学中的基因序列、蛋白质网络等结构。例如,由Git协作数据构建的网络,可以看作是一个典型的社会技术系统(socio-technical system),其中开发者、代码、仓库、commit、制品、组织、issue、PR、社区、供应链、生态圈等形成了一个极其复杂且不断时序变化的复杂信息网络(complex information network)。
第二,从数据科学的角度看,开源场景也是个极好的业务实践领域。之前和几位朋友做了一个“后互联网时代的乱弹”的播客节目,最近一期聊的就是数据科学的话题。几位嘉宾老师给了很多好建议,其中SAP的例子给人留下了深刻印象。SAP是一家以企业ERP起家的跨国公司,其产品的核心竞争力并不是软件本身,而是这家公司通过大量的企业服务积累下来的过程性数据与专家经验知识。他们可以深入到每一个细分的行业,告诉客户运营过程中的各类指标,处于这个行业中的哪个位置,进而指导管理者进行决策与行动。然而,现实世界中的商业数据,普通人是无法拿到的。而数据科学又是一个非常需要和领域进行结合的方向,将业务问题进行分析与拆解,进而转换成数学问题,再利用相关数据进行求解,是培养好的数据人才的不二路线。而开源则提供了一个极佳的场景,开放式协作的透明性为理解开源软件协作与开发、开源社区治理与运营以及开源生态构建与演化等业务场景提供了极为丰富的过程数据。这些源于真实场景的大规模数据成为各类数据人才养成计划梦寐以求的素材。
第三,用开源的模式做开源的研究,能够取得一手的体验和暗默知识。如前所说,不少开源领域知识需要在行动与实践中习得,或者说需要成为个人或组织的一种能力、习惯甚至文化,对置身开源事业的开发者来说,这些尤其重要。那我们是否可以把日常的一些工作和开源模式进行结合呢?答案是肯定的。不仅因为开放式协作模式已经不再局限于代码这样的底层基础设施,而且上层各式各样的数字内容产出也都可以借鉴这种开放模式。协作是人类文明不断发展的动力,大规模、全球化的数字协作更是人类社会经济发展的推动引擎,那么我们完全可以从身边的点滴入手,用开源的方式做开源的研究。例如,以论文阅读与分享为例,OpenReading就是OpenResearch项目下的一个论文分析与阅读模式项目。该项目基于GitHub上的Discussion、Issue、PR、Wiki、Action等功能及其这些内容实体之间的转化,希望迭代出一个开放、高效、能够不断沉淀的开放分享模式。目前该项目在我们实验室得到良好运转与迭代。
如果用计算和数据的方法来探索开源这个新的领域,应如何获取相关的领域知识呢?毫无疑问,我们实验室是走在前面的,优势是在开源活动实践、开源数据工程、开源基础理论等方面的积累。我们发起了ONES Group计划,以构建企业OSPO(阿里巴巴、腾讯等)和全球开源治理项目(CHAOSS、TODO、CII等)的桥梁,我们本身还是国内“开源治理系列标准”的牵头制定者、多个开源项目的实践者(OpenDigger、Hypercrx等)、开源课程“开源软件开发与社区治理”的迭代者以及开源知识的搬运者与生产者(书籍翻译、论文发表、大会演讲、技术报告等)。
从开源教育的视角看,参照ACM和IEEE-CS在CC2020中的模式,开源人才培养的一个重要目标就是培养开源胜任力(open source competence),从基于知识的学习转向基于胜任力的学习。胜任力要求用知识和技能来展示人类行为。一般而言,人们可以将胜任力视为个人在工作、角色、职能、任务或职责中发挥作用所必需具备的素质。
因此,开源胜任力的定义可以将开源场景或任务中所表示的三个维度联系起来。
开源胜任力 = 开源业务场景中的开源知识 + 开源技能 + 开源品行
开源知识是指对开源的核心概念和内容的认识和理解,属于知道是什么(know-what)的维度。
开源技能是指通过有意识的练习和与他人互动而逐渐形成的在开源活动中的能力和策略,包括更高层次的认知活动,属于知道怎么做(know-how)的维度。
开源品行则包括开源活动中的社交技能、行为和态度,这些特征表征了执行开源任务的意愿,以及知道何时以及如何进行这些任务的敏感性,属于知道为什么(know-why)的维度。
即使开源知识与开源技能能够通过理论课与实践课进行教授,开源品行则一定需要在开源项目与开源社区的长期实践中进行养成。制定开源胜任力框架也将是开源教育工作者的一项重要工作,我们会持续更新最新进展。
以上这些内容均可以在我们的GitHub页面上找到(可以在GitHub上搜索“X-lab2017”)。我们希望更多的专业人士能够投身开源领域知识的研究与开源教育中,祝愿我们的开源事业发展得越来越好!
王 伟
华东师范大学教授
2022年7月