开源项目共同体分析框架概述

本文尝试使用社会学的角度来进行分析和考察,当然要加上一些信息技术行业的技术术语来宏观的看待,这样至少可以把开源项目共同体的基本要素给梳理清楚。为接下来的成功的开源项目共同体和失败的考察做一个理论上和方向上的铺垫。

Wed Jun 17, 2020 | 3300 Words | 大约需要阅读 7 分钟 | 作者: 开源之道 |

背景

Community 是开源之道在2020年主要的研究任务。并打算花一些时间,将其翻译的问题也给掰扯清楚了。就开源的世界而言,共同体是最为恰当的了,开源之道也深入学习和调查了关于开源共同体相关的知识,并写了几篇文章:

尝试以一己之力,将开源共同体给诠释清楚。当然这是一条非常长远的路,但是没有关系,因为在中国这仍然是一个对于大众来说是虚无缥缈的,不够看得见、摸的着的,所以对其根本的概念诠释是特别的有意义。

那么也就意味着需要或者至少是意识到:何谓优秀的开源共同体? 这就正如我们考察什么是”Craftman“一样,可能会写几篇论文来论述,何谓优秀的开发者?何谓卓越的匠人?具备哪些特征?能否被复制?

读过著名分析北美文化社会的经典著作《阿尔比恩的种子——美国文化的源与流》 一书的读者肯定知道作者:大卫•哈克特•费舍尔 做了哪些工作:对北美的民俗各元素进行了详细考证,从宗教、地域、语言、建筑、群居模式等多个方面厘清了美国文化的源流,全面呈现了殖民时期美国的文化面貌,阐发了美国早期四种文化传统所内含的理念、互动融合的过程及其深远影响。

本文会借鉴这样的思路来进行说明。

使命感

笔者在了解基金会相关的内容的时候,无意中发现了一个规律,那就是每家基金会都会相当强调自己的使命,并尝试使用一句话来进行概述,某些时候甚至都认为是某个公司的市场口号。

从另外的角度来讲,作为一个社会群体,不知道自己做什么,或者不知道彼岸在哪里是一件熵增的事情。

技术定位与趋势

开源之道向来强调,脱离开技术本身而谈开源是危险的,也是没有意义的。因为开源是从技术本身的发展中衍生出来的。那么考察一个具体的开源共同体,没有技术作为根基,大多也没有多少意义。因为浮于技术之外的共同体,往往会漂浮。

那么具体项目的技术实现,放在行业内,我们可能会参考诸如Thoughtworks、o’Reilly、InfoQ等技术咨询类的技术雷达之类的。不过一般在一个时期内,具体的技术实现是和整个经济的趋势有密切关系的,可能我们也会放在大的环境下来看待。

共同体主要项目产出

软件项目是有具体的产出的,是属于工程类,也就是说一款开源项目绝大多数时候是可以在现实中发挥作用的,这里主要的区别是传统学术上的研究项目,因为研究类,不一定非得是在现实社会中起作用的。

开源之道所认定的基于开源项目的共同体,其中项目须是有切实真实用处的,哪怕仅仅是完成一个字符的替换,它都是有用的,而不是缥缈的、无法实际运行、无法检验的东西。

举个例子:托管在SFC旗下的项目之一:Git,是现代分布式代码版本控制系统的主要开源实现,开发的成员不多,但是确实一个完整的开源共同体

软件开发(工程)中的参数

开源项目,在实践中仍然是软件工程的范畴,那么软件工程的所有概念仍然对于开源软件项目非常的适用:代码需要托管、人员需要沟通、需求需要收集……

### 基础设施

尽管现在几乎所有的软件开发的环节都有相应的服务提供,尤其是以GitHub为首的代码托管平台,几乎囊括了软件开发的所有环节。但是仍然有一些特别的项目是无法被覆盖的。所以这里还是列出软件开发中需要的基础设施:

  • Web 服务器
  • 编译服务器
  • Git 主干仓库
  • Bug 追踪系统
  • 沟通工具
  • 邮件列表服务器

issue 与PR 以及patch和bug等

GitHub 代表着当下主流的开源开发流程,issue(bug、feature)、Pull Request(Patch)的活跃度,是衡量项目活跃度的主要方式。

Release

是否能够定期的发布阶段性的成果?这大概是从人类跑马拉松之类的项目中衍生过来的,人的及时满足是一种天性,即使成年人,也不能长时间的看不到任何成果,那么软件项目中尤其重要,在大型的工程中,如Kernel这样的重要的项目,Release early,Release often 显得尤为的重要。

开源之道以为发布版本是一项重要的考量项。

社交活跃度量

GitHub|Gitlab 等Star

关于社交指数,不要特别提及,大家也能够理解,这意味着一种被大众所获知的现象,如果没有可以宣传的话,某种程度上,这个star数也可以作为项目口碑的表征。

Twitter |Facebook 上的讨论

人是社交性动物,自己做了什么,既拿来炫耀,又可以交换,此乃现代经济发展的基石也。当然,被某种强制手段控制的媒体除外,无法体现人性。

绝大多数的项目都会在这些社交媒体上开账号,不妨生成相应的时间线,及时而频繁的和人们进行互动。

会议相关

Meetup 、Hackthon

互联网尽管改变了人类的面貌,但是仍然是人的延伸,人类的文字表达能力仍然是高阶产物,面对面的、微笑着的、带着感染力的肢体语言更能够增加人与人之间的理解和沟通。开源项目尽管是大多数时候是在线上交流的,但是线上仍然是线下的延续。

Meetup、Hackthon等线下活动,仍然是重要的考量共同体的项。

技术峰会

著名医生、科普作家 [美] 阿图·葛文德,在其成名作:医生的修炼一书中,讲到关于医生们每年一次的大聚会,有很多身价很高的医生,喜欢去展览厅收集小礼品,有的医生在放映室待上好几天,只为和同行能有所沟通。

开源是Peer相互承认、认可、成就的典型,很难想象没有技术峰会的开发人员,彼此不能倾述,不能相互面对面的进行交流,2020年的冠状病毒就是对开源的最大挑战。一下子让人们感觉缺少了什么。

共同体领袖

我想我可以用马斯洛的一句话来说明一类人所具备的素质:

了解自己想要什么并非常态,它是罕见而艰巨的心理成就!

​ ——亚伯拉罕.马斯洛

一个开源项目的共同体的领导者,知道自己正在做什么,并愿意为之付出,这是十分罕见的。所以在评估一个共同体的时候,适当的对其共同体的领袖们有所了解是非常有意义的。

例如是否对开源持一种非常乐观的心态。

共同体治理模式

作为多人协作的工程,决策制定、目标明确、分工等等,在开源共同体的模式中,也不外乎人类社会目前为止颇为有效的几种模式:

  • 有能力的英雄带领大家
  • 靠制度选举,进行民主式治理
  • 代议制,公司操控

和上下游项目的密切程度

如果你将全球的开发者们视为一种力量的话,那么开源软件所形成的技术栈,是以互联网为载体,将全球的开发者进一步虚拟化,自由结合,各自根据自己的兴趣和需求进行劳动,进而形成巨大的软件供应链网络。

以如此的方式来思考的话,那么去考量一个开源项目的时候,其在整体的功能之下,和上游、下游的结合程度决定其能够走多远!

当然,就项目而言,我们还要区分出Upstream first 和Supply Chain这两个概念来,前者是项目本身的变体,后者则是项目的生态。

处理危机的方式

做事情极少出现一帆风顺的情形,更何况是非常艰难的经营开源共同体,当你面临质疑、权威的打压、同行的嫉妒、资本的侵蚀、商业的恶意、内部产生分歧…..将如何面对?

刚好开源项目往往在开放方面占有一定的优势,所以作为分析者在事后是有迹可循的。

用户群体

如果一款软件,没有用户,那简直不可思议。当然,这块的定位是比较难得,我们可能仅仅只能从个人使用,还是在企业中使用,或者是科学研究等等的角度来区分,可以根据实际情况来进行完善。

不过可以先暴力的区分为:懂开源和不懂开源,或者是在意开源和不在意开源。

创新性的做法

创新是一个伟大的词汇,那么开源项目当中是否在某方面做到了现有的没有人做过的事情了呢?中规中矩的做法固然可圈可点,但是开源如果伴随着创新,可能会更加的有利于共同体的发展,以及项目的成功。创新不限于技术、共同体、社交、商业、会议、活动等等对整体项目有益的、积极的内容。

参考资料

  1. CHAOSS 度量项 2020.1 月版 , https://chaoss.community/metrics/
  2. 《Producing Open Source Software》,O’Reilly Media, Karl Fogel 著 (2018)
  3. 《跨越边界的社区:北京”浙江村”的生活史》,项飚,生活•读书•新知三联书店,2018-3
  4. 《The Art of Community:Building the New Age of Participation》,Jono Bacon,O’Reilly Media,2009-8-27
  5. 《People Powered:How Communities Can Supercharge Your Business, Brand, and Teams》,Jono Bacon,HarperCollins Leadership,2019-11-12