开源学:开源史学纲要
按照上一篇文章的描述,我试着从历史学的角度,来切入“开源学”的话题。所谓纲要,其实就是一个提纲,作为一个历史学的外行,来畅想一下:假设我是一个历史学家,我会如何来研究开源。
一、从历史看开源
我最喜欢的历史学家钱穆先生,在《国史大纲》的前言中说道:“治国史之第一任务,在能于国家民族之内部自身,求得其独特精神之所在。” 按照同样的思路来看开源的发展史,也不能仅仅把一堆人物、事件、技术、企业罗列出来,而是要寻求发展背后的独特的“精神”所在。是什么促成了开源的出现?又是什么,推动开源不断的发展变化?
1. 开源的史料在哪里?
当然,研究历史,基本功还是要有。首先,就是收集史料。但是,开源的史料在哪里呢?第二个问题:开源的史料,如何整理呢?
目前看来,开源相关的信息,绝大多数,都是在互联网上以公开信息的形式,存在着的。但是,要想完整全面的收集,却非常困难。
如下所示,是我最近正在思考的一个关于开源的元数据提纲,尽量能够容纳与开源相关的所有信息。
- 基础数据
- 编程语言
- 包管理工具
- 授权协议
- 镜像站
- 开发平台
- 数据源
- 分类
- 标签
- 实体数据
- 软件基础信息
- 人员基础信息
- 组织信息
- 知识产权信息
- 社区与生态信息
- 质量信息
- 行为数据
- 开发行为
- 社区行为
- 组织行为
- 关系数据
- 组织与成员关系
- 组织与项目的关系
- 个人与项目关系
这些内容,从大的分类来说,可以分为两类:算法能够处理的数据、与人工才能阅读理解的信息。相较过去的历史学,我们的确可以做更多的数据处理工作,从中看到比例、趋势以及特征。但是,那些无法结构化,无法汇总统计的事情,依然是非常重要的。
最近我正在读的一本书《历史的技艺》,其中有一段非常有启发:“如果历史学家屈服于自己的材料,而不是把自己强加于材料,那么,那些材料最终会对他说出历史谜团的答案。 ”
2. 开源的历史上有哪些重要的时间点?
在软件开发领域,我们通常会划分N个里程碑。如果是小的里程碑,我们的软件版本,大概会是从1.1到1.2,甚至1.1.1。如果是大的里程碑,则可能从1.x,升级到2.0。
在历史领域,也非常重视里程碑的标志性作用。XXX事件,标志着某某事件,进入YYY阶段。
对于开源来说,最重要的一个时间节点,自然是1998年2月,Open Source Initiative(开放源码促进会)成立。标志着开源正式诞生!但是,在这一重大时间的前后,还有哪些时间节点呢?
2.1. 自由软件运动
- 1983 年 Richard Stallman 发起了GNU项目
- 1985 年 Richard Stallman 发表了GNU宣言,并成立自由软件基金会
- 1989 年 GPL v1 发布
2.2. Linux内核项目
- 1991 年 Linux 内核0.1版发布
- 1992 年 Linux 内核0.12版,采用GPL
- 1993 年 Debian GNU/Linux 项目启动
- 1994 年 Linux 1.0 版发布
- 2000 年 1 月 IBM 宣布将在所有产品中支持 Linux
2.3. 开源软件运动
- 1997 年 Eric S. Raymond 发表了《大教堂与集市》
- 1998 年 1 月 网景公司宣布开源 Navigator 的源代码,与此同时,“Open Source”这个词被投票选出
- 1998 年 2 月 开放源码促进会(OSI)成立
- 1998 年 4 月 Open Source Summit 召开,正式确定采用“Open Source”
2.4. 互联网与万维网爆发
- 1969 年 APANET 正式投入运行
- 1975 年 TCP/IP 协议
- 1989 年 万维网诞生
- 1998 年 开源套件 LAMP 兴起
- 20 世纪 90 年末,互联网泡沫 & Web 2.0 热潮
2.5. 云计算兴起
- 1994 年 Gartner 公司 提出 SOA 架构,2006 年,由 IBM、Oracle、SAP 等公司共同成立了 OSOA 联盟(Open Service Oriented Architecture)
- 2005 年 Peter Rodgers 提出微服务概念,2014 年,Martin Fowler 的文章引爆微服务时代
- 2010 年 OpenStack 发布第一个版本
- 2013 年 Docker 发布第一个版本
- 2014 年 Google 开源 Kubernetes
- 2015 年 Pivotal 公司提出云原生的概念
- 2015 年 CNCF 成立
3. 如何理解开源的发展历程
我想提出的一种历史研究的思路是:虽然不能简单的断定因果,但是可以做依赖分析。在历史发展的过程中,一个事物的诞生,虽然我们不能找全所有的充分必要条件,但是必要条件(前置依赖项),是可以找到的。
3.1. 开源诞生的文化基因
- 人类基因:
- 在人类的基因中,天生携带着进化的蓝图,可以用来建设一个美好的社会。我们的天性中,原本就包括:友谊、合作、内群体偏好、社会学习和教育等等特征
- 礼物文化:
- 互惠互利,来而不往非礼也,这样的礼物文化在所有的文化中,古已有之
- 科学共同体的原则:
- 公有主义:科学发现的共同所有权,据此,科学家放弃知识产权以换取承认和尊重
- 普遍主义:对真理的要求是根据普遍的或非个人的标准来评价的,而不是根据种族、阶级、性别、宗教或国籍
- 无私利性:科学家因其行为方式在外界看来是无私的而得到奖励
- 有条理的怀疑主义:所有的想法都必须经过检验,并接受严格的、有组织的社区审查
- 黑客伦理
- 使用计算机以及所有有助于了解这个世界本质的事物都不应受到任何限制。任何事情都应该亲手尝试
- 信息应该全部免费
- 不信任权威,提倡去中心化
- 判断一名黑客的水平应该看他的技术能力,而不是看他的学历、年龄或地位等其他标准
- 你可以用计算机创造美和艺术
- 计算机使生活更美好
- 乌托邦精神
- 美国一直是乌托邦的一片“沃土”
- 行会文化
- 内群体偏好,使我们更加认同自己的社区身份
3.2. 开源发展的推动力
- 社区文化基因:理念驱动
- 基于授权的协作:法律驱动
- 社区技术能力:创新驱动
- 商业利益加入:经济驱动
- 基于数据运营:数据驱动
- 协作中的永恒矛盾:利益驱动
4. 如何给开源的历史分期?
似乎,历史学家都喜欢给历史上的长长短短的时间,进行分期,然后再给起一个好名字。比如“青铜时代”、“封建社会”、“黑暗的中世纪”、“镀金时代”等等。
有些时代,有明确的起止时间,有些却是混沌一片。不过,既然要学习历史学家的思维模式,咱们也不能免俗,应该试着给开源的发展历程,再分一分期。
4.1. ~ 1983 蒙昧时代
在 GNU 与自由软件运动出现之前,整个软件行业,对于源代码的相关权益,都处于蒙昧的状态。
4.2. 1983 ~ 1998 自由软件时代
从 GNU 成立,到 Open Source 出现之前,是自由软件高唱理想主义的时代。
4.3. 1998 ~ 2018 开源黄金 20 年
从 OSI 成立,到微软收购 Github、IBM 收购Red Hat。开源、互联网与商业的关系,越走越近,互相促进,共同发展壮大。
4.4. 2018 ~ 至今 开源混沌期
2018年,尤其是2019年之后,我们在开源社区观察到了很多不和谐的现象:修改License,赶走创始人,开源与云计算的矛盾,中美对抗等等。一方面欣欣向荣,另一方面又暗藏隐忧,这样的混沌期,还不知道何时会结束。
以下的内容,目前我还没有能力写出来,先存目吧……