Skip to content

Latest commit

 

History

History
113 lines (65 loc) · 17.6 KB

🌳 一份开源领域知识的学习清单.md

File metadata and controls

113 lines (65 loc) · 17.6 KB

计算机科学(CS)领域中,有一个非常有意思的交叉学科,叫生物信息学(bioinformatics),我们学院就有老师曾经是这个研究方向,当年也是火过一阵子,现在一个类似的热门领域叫类脑计算(brain-inspired computing),由这一波的人工智能热所带动。

读书的时候也去看了一眼信物信息学,就是用计算机和数据科学的方法研究各种各样的生物学数据,包括对数据的搜索(收集和筛选)、处理(编辑、整理、管理和显示)及利用等。目前主要的研究方向有:序列比对、序列组装、基因识别、基因重组、蛋白质结构预测、基因表达、蛋白质反应的预测,以及创建进化模型等等。

这个领域由于能够发表影响因子非常高的论文(例如 IF 能够到 5 分以上的 Bioinformatics),因此在当年那个唯影响因子论英雄的年代(现在部分也还是),吸引了大一批研究学者趋之若鹜。然而,进入到这个领域的 CS 研究人员会面临一个非常大的挑战,甚至已经成为整个领域的天花板,那就是生物学的领域知识(domain knowledge)。各种生物学中诸如序列、基因、基因组、转录组 、蛋白质组、细胞表型等概念,及其背后的机理,让无数计算机人望而却步,并只能退而求其次,工作内容最多只能充当生物科学家的工具,而真正在 Natrue、Science 上收获顶级成果的,还是那些这些生物学家们。

开源软件开发、开源社区治理、商业开源等这些开源的领域知识(domain knowledge of open source),和上面的情况非常类似,只不过,困难与挑战要大得多。

首先,目前并不存在一个类似“生物学”这样的“开源学”知识体系,而只能通过借鉴其他学科的知识进行拼接与搭建。我们实验室所利用到的几块碎片包括:软件工程学、管理学、以及经济学和法律学等中的部分知识。从开源社区研究的角度看,主要是研究广义上的开发者,在数字空间中大规模协作过程背后的规律,进而为社区治理与运营提供指导;而从的企业开源治理的场景出发,则更加关注的是法律端的安全合规、以及和企业治理相关的管控手段。还有商业开源(开源投资)政府高校开源等等越来越多的业务领域场景。而不管是哪个场景,都会带来第二个巨大的挑战:开源的实践性。

第二,开源的领域知识具有非常强的实践性,很多问题只有亲自参与过,才能体会开放式协作这样的美妙工程,而像开源基金会治理企业开源运营等这样高端的实际场景,更是可遇不可求的,属于企业高层、甚至政府治理层面的事物。开源背后的支撑技术发展异常迅速:Git 是2005 年发布的(工具),GitHub 是 2008 年正式上线(平台),而 GitHub Action 则是到 2018 年才开始服务的(流水线)。但就是技术栈的飞速更迭,使得软件协同生产的模式变化巨大。一方面,高校开始越来越不擅长这类实践性极强的教学活动;另一方面,市场对这类人才的需求则持续旺盛,特别是集“专业技术”、“沟通管理”、“领域知识”于一身的开源人才,需要学校、企业、社区来联合培养,才能达到一定的效果。

第三,开源的领域知识还有一个对于学习者来说不太友好的特点,就是不少内容都是属于所谓的“暗默知识(tacit knowledge)”,即源自个人的亲身体验,是与个人信念、视角及价值观等精神层面密切相关,是一种“行动中的知识”(knowledge in action)。大到“社区健康度分析”、“项目影响力的排名”,小到一个“开源仓库的标签分类”、一个“开发者的角色认定”等问题,或多或少都是需要体验与行动才能理解的,也是为什么目前很多开源概念与界定,很难达成共识的一个重要原因。

第四,开源领域数据的结构复杂性(代码数据、时序数据、关联数据、NLP 数据等)与语义丰富性(代码语义、社交语义、协作语义、技术语义等)。正式由于上述几点的客观存在,使得目前即便是拥有了海量的全域开源数据,也不太容易像生物信息学那样,形成比较共识性的领域问题、数据问题和数学问题。也是由于这个领域的年轻,还处于开疆拓土的阶段,很多基础性的工作都还比较缺失。也是为什么我们要发起诸如开源测量学[1]、开源纲目[2]等理论课题的原因,而像 OpenDigger [3]和 OpenPerf [4]则完全是从数据基础设施的角度来推进,都是属于 initialtive 类型[5]的项目,艰难但充满了巨大的吸引力。

生物数据的分析可以应用到很多重要的场景,例如生物制药、健康医疗等方面。开源的领域数据也是一样,能够用到包括企业开源治理开源社区运营开源商业投资无边界组织经营等不同的场景,关乎到数字经济时代的发展脉搏。而从我们实验室开源点亮未来”的价值取向出发,开源将会对数字经济时代的生产模式、生产关系、组织结构、资产形态、激励与分配制度、数字资产供应链、数字产品商业模式等关键概念产生冲击与改变,部分甚至是革命性的。

数据科学与开源领域知识,是一个非常完美的组合。不像生物信息学,大部分的 CS 人对它并没有直接的兴趣,而开源技术、开源模式,则代表了开发者的未来。这也是 OpenResearch [6]这个开源项目所提倡的:用开源的方法来研究开源的现象,虽然它才刚建立几个月的时间,但体现了我们对开源研究这件事情的理解。分别从如下三个方面再详细聊聊。

第一,从开源领域知识的研究与创新来看,数据科学与数据分析是一个极佳的研究方法。全球数字化的高速发展,让开源技术站到了舞台的中央,近期各种安全事件的层出不穷,又让全球软件供应链问题浮出水面。开源代码本身的价值毋庸置疑,类似 World of Code (WoC)[7] 这样的"大代码"工程项目也是非常基础性的。但从我们的角度看,上面的开发者行为数据更加重要,所谓 Community over code,开发者是开源生态的核心。随着以 GitHub 为代表的 Git 开发模式的标准化,社交功能给开发者带来的不仅是门槛的降低,更重要的是把围绕一个开源项目的所有关键环节都逐渐打包在了一起,GitHub 成为了一个数字产品创作与生成的流水线,而这条流水线上的所有过程数据,都因开源的属性而变得透明,进而可分析、可理解、可利用,成为数据科学家的备受青睐的一个领域场景。而像 GitHub 这样全球化的开源生态网络,其中的各类数据问题也是非常的丰富,毫不亚于类似生物信息学中的基因序列、蛋白质网络等结构。例如,由 Git 协作数据构建的网络,可以看作是一个典型的社会技术系统(Socio-technical System),其中的开发者、代码、仓库、commit、制品、组织、issue、PR、社区、供应链、生态圈等,形成了一个极其复杂、且不断时序变化的复杂信息网络Complex Information Network,CoIN)。

第二,从数据科学的角度看,开源场景也是个极好的业务实践领域。最近和几位朋友做了一个“后互联网时代的乱弹”的博客节目,最近的一期就是聊的数据科学的话题[8]。几位嘉宾老师给了很多好建议,其中一个 SAP 的例子印象深刻 。这家以企业 ERP 软件起家的跨国公司,其产品的核心竞争力并不是软件本身,而是这家公司通过大量的企业服务,积累下来的过程性数据与专家经验知识。他们可以深入到每一个很细分的行业,告诉客户在运营过程中的各类指标,处于这个行业中的哪个位置,进而指导管理者进行决策与行动。然而,现实世界中的商业数据,普通人是无法拿到的,而数据科学又是一个非常需要和领域进行结合的专业,将业务问题进行分析与拆解,进而转换成数学问题,再利用相关数据进行求解,是培养一个好的数据人才的不二路线。而开源则提供了一个极佳的场景,开放式协作的透明性,为理解开源软件协作与开发、开源社区治理与运营、以及开源生态构建与演化等业务场景,提供了极为丰富的过程数据。这些来源于真实场景的大规模数据,成为各类数据人才养成梦寐以求的素材。

第三,用开源的模式做开源的研究,够取得一手的体验和暗默知识。如上所说,开源的领域知识有不少需要在行动与实践中习得,或者说需要成为个人或组织的一种能力、习惯、甚至文化,对置身于开源事业的开发者来说非常重要。那我们是否可以把日常的一些工作和开源模式进行结合呢?答案是肯定的。不仅因为开放式协作模式已经不再局限于代码这样的底层基础设施了,上层各式各样的数字内容产出也都可以借鉴这种开放式模式。协作是人类文明不断发展的动力,大规模、全球化的数字协作更是人类接下来社会经济发展的推动引擎,那么我们完全可以从身边的点滴入手,用开源的方式做开源的研究。例如,以论文阅读与分享这样一件“小事”为例,OpenReading [9] 就是 OpenResearch 项目下的一个论文分析与阅读模式,基于 GitHub 上的 Discussion、Issue、PR、Wiki、Action 等功能,及其这些内容实体之间的转化,目的是迭代出一个开放、高效、能够不断沉淀的开放分享模式,目前正在我们实验室进行良好的运转与迭代。

说了这么多,前面都是铺垫,以下才是主题。用计算和数据的方法来探索开源这个新的领域,究竟如何获取相关的领域知识呢?毫无疑问,我们是走在前面的,优势就在于,我们在开源活动实践开源数据工程开源基础理论等方面的积累。我们发起了 ONES Group[10]计划,以构建企业 OSPO (阿里、腾讯等)和全球开源治理项目(CHAOSS、TODO、CII 等)的连接桥梁、我们本身还是国内“开源治理系列标准”的牵头制定者、多个开源项目的实践者(OpenWanderland[11])、开源课程的迭代者(OSSDG[12])、以及开源知识的搬运者与生产者(书籍翻译、论文发表、大会演讲、技术报告等)。

从开源教育的视角看,参照 ACM 和 IEEE-CS 在 CC2020 中的模式 [13],开源人才的培养一个重要目标就是培养开源胜任力(Open source competence),从基于知识的学习转向基于胜任力(competency)的学 习。胜任力要求用知识和技能来展示人类行为。一般而言,人们可以将胜任力视为个人 在工作、角色、职能、任务或职责中发挥作用所必须具备的素质。

因此,开源胜任力的定义可以将开源场景或任务中,所表示的三个维度联系起来:

开源胜任力 = 开源业务场景中的(知识 + 技能 + 品行)

  • 开源知识是指对开源的核心概念和内容的认识和理解,属于知道是什么(know-what)的维度
  • 开源技能是指通过有意识的练习和与他人互动而逐渐形成的在开源活动中的能力和策略,包括更高层次的认知活动,属于知道怎么做(know-how)”维度
  • 开源品行则包括开源活动中的社交技能、行为和态度,这些特征表征了执行开源任务的意愿,以及知道何时以及如何进行这些任务的敏感性,属于知道为什么(know-why)维度

如果说开源只是与开源技能,是能够通过理论课与实践课进行教授的,那开源品行则一定是需要在开源项目与开源社区的长期实践中进行养成的。制定开源胜任力框架,也将是开源教育工作者的一项重要工作。 几个重要的开源领域知识学习资源整理如下:

  1. 讲座

  2. 课程

    • X-lab的《开源软件通识基础
      • 水杉学堂 [20](目前仅限学校内部,公开版制作中)
    • Dirk RIEHLE 教授的开源公开课
  3. 书籍

    • X-lab(译),《开放式协作:开源软件的生产与维护》,华东师范大学出版社,2022.(即将出版)
    • X-lab(译),《开源如何统治世界》,人民邮电出版社,2022.(即将出版)
    • X-lab(译),《给所有人的 GitHub 通识课》,机械工业出版社,2022.(即将出版)
    • 开源社著,《开源时代》,人民邮电出版社. (出版时间待定)

开源领域知识的学习清单,会通过本文所在的仓库持续更新[23],欢迎大家关注~

参考资料

[1] 开源测量学: https://github.com/X-lab2017/open-research/tree/main/OpenMetrology

[2] 开源纲目: https://github.com/X-lab2017/open-research/tree/main/Opendium

[3] OpenDigger: https://github.com/X-lab2017/open-digger

[4] OpenPerf: https://github.com/X-lab2017/open-perf

[5] Open source initiative: https://en.wikipedia.org/wiki/Open_Source_Initiative

[6] OpenResearch: https://github.com/X-lab2017/open-research

[7] World of Code (WoC): https://worldofcode.org/

[8]"后互联网时代的乱弹"第 12 期(数据科学):https://www.bilibili.com/video/BV1cY411w7re

[9] OpenReading: https://github.com/X-lab2017/open-research/tree/main/OpenReading

[10] ONES Group: https://github.com/kaiyuanshe/ONES

[11] OpenWanderland: https://github.com/X-lab2017/open-wonderland

[12]《开源软件开发与社区治理》: https://github.com/X-lab2017/OSSDevGov2021

[13] ACM/IEEE CC2020: https://www.acm.org/education/curricula-recommendations

[14] https://www.bilibili.com/video/BV1t541197gK?spm_id_from=333.999.0.0

[15] https://www.bilibili.com/video/BV1aY411c77f?spm_id_from=333.999.0.0 [16] https://www.bilibili.com/video/BV1rU4y1m7vB

[17] https://www.bilibili.com/video/BV1D44y1379h?spm_id_from=333.999.0.0

[18] https://www.bilibili.com/video/BV1h541127mD?spm_id_from=333.999.0.0 [19] https://space.bilibili.com/510793367

[20] https://www.shuishan.net.cn/education/course/1432245066232434690

[21] https://www.youtube.com/watch?v=YKD_piAJg_E&list=PLQ2ODVSeOYlXtMfsO-JrL--lnFRbAaLHL

[22] https://www.youtube.com/watch?v=yuD4i8karug&list=PLQ2ODVSeOYlX_ssU08e-9x_ggESeBsyhh

[23] https://github.com/X-lab2017/open-research/blob/main/OpenWriting