开源软件与开源软件生态——现状与趋势 阅读笔记

本文回顾了开源软件(OSS)的历史发展脉络,探讨了开源软件的研究进展及开源软件对技
术、行业和社会的影响,展望了开源软件生态系统的演变趋势。

开源软件,从字面上说,是指开放 源代码的软件。但开源软件不是简单 的源代码开放,而是代码创作者在遵循 相关开源协议(如MPL许可证等)的基 础上,将自己的源代码全部或部分向世 界公开,允许用户进行自主学习、报错、 修改等活动,以共同提高软件的质量。

1 黑客文化、自由软件到开源 软件

20世纪 60—70年代,大部分软件都是由科研 人员自己编写。当时,人们普遍认为软 件应该在研究环境中自由分享、交换, 可以被他人修改或者重新编译,并应该 与他人分享这些修改。这种自由分享 软件源代码的行为就成为“黑客文化” 的一个重要特征。这种文化在麻省理 工(MIT)人工智能实验室软件开发小 组中非常盛行[2,3]。
20世纪70年代末,微软开始倡导 软件私有化,声明软件拷贝需要付费, 并且只提供可执行程序而非源代码。
20世纪80年代,MIT将由黑客编写的 代码授权给一个商业公司,但该公司却 严格限制对这些源代码的访问,阻止 MIT的黑客们继续学习和开发这些软 件。
1984 年,Richard Stallman辞去了MIT的工 作 ,成 立 了 自 由 软 件 基 金 会(Free SoftwareFoundation,FSF),希望通过自 由创作的方式开发出一套操作系统。 该计划称为GNU计划,允许任何人自 由地下载、使用、修改和发布该软件。 为从法律上保证这种自由的权利,经过 斟酌,Stallman提出GNU通用公共授权 许可证(GNU General Public License, GPL)。那些有意将自己的软件作为自 由软件的作者都可以简单地附上这样 一份标准许可证,来保证未来用户的权 利。这种软件被称为“自由软件”。
1998 年 ,Bruce Perens 和 Eric Raymond指出,在Stallman的“自由”软 件中存在这一问题,他们与其他优秀的 黑客一起发起了“开放源代码(Open Source)”的号召,它包含了与之前的自 由软件运动类似的许可证内容,但倾向 对软件许可进行更少的限制。

2 开源项目和开源社区:研究关 注点与研究内容

自20世纪末以来,开源软件取得 了令人瞩目的成就,无论在开发质量或 效率上,成功的开源软件都达到了与商 业软件相媲美的程度。
在过去十几年的时间里,众多研究 者尝试从不同的角度来理解开源软件 的开发实践,总结其成功因素,以促进 开源软件的发展。这些研究主要围绕 以下几个方面的问 题展开:
1)探究开源 软件的开发过程与 传统软件开发过程 的区别。
2)寻找开源 项目吸引、保留贡献者,进而围绕开源软件形成了开源社 区的原因。
3)扩展开源软件生态系统的概念 范畴,探索开源软件生态系统的规律, 构建成功的开源软件生态系统等。
对开源软件的 研究内容大致分为2类:
第1,对开源软 件现象进行分析和理解;
第2,基于这 些分析和理解对开源软件乃至商业软 件的开发实践进行改进。
在这里插入图片描述
在这里插入图片描述

4 当前研究与技术发展趋势

在软件项目开发策略上,为利用开 源软件开发的优势,越来越多的公司和 组织参与到开源软件的创建、开发和维 护中,建立起很多商业-开源混合开发 的 项 目
另一方面,商业软件开发强调以盈 利为目的、可控、统一进行任务分工。 在开源软件生态系统中,商业公司始终需要在“开放”与“盈利”之间权衡[26]。 如何能够在企业中有效利用开源特性 及优势并非是一个容易回答的问题。
海量开源软件相关数据的存在使 得对开源软件的量化分析成为一种重 要的研究方法。首先,软件开发支持工 具(如版本控制系统和问题追踪系统 等)的广泛应用积累了大量数据,记录 着软件代码的演变[4]、开发任务的流程 等。
另一部分研究工作关注度量工具 所需的数据支撑机制。
在软件项目管理与开源生态系统 建设层面,开源软件开发与商业软件开 发的差别,使得开源开发活动的组织, 管理和协同一直是热点议题,软件产业 和开源社区普遍关注的问题有:在商业 和开源2种开发方式进行融合的环境 中,如何建立一个健康的开源软件生态 系统?在开源项目贡献者遍布全球的 情况下,如何有效的进行项目管理?特 别地,是否可以度量开源软件生态系统 的健康状态,从定量的角度提供决策支 持?研究者受自然生态系统的启发,尝 试从生态系统的角度探讨开源软件项 目开发以及社区组成,正在逐步形成软 件生态系统理论体系。

5 结论

开源软件所代表的新的理念和独 特的生产方式对创新模式、互联网发 展、软件开发技术等都产生了深远而巨 大的影响。首先,在创新模式上,开源 使得全球化的群智聚集,为开源社区带 来了巨大的创造力和生命力,已经成为 软件技术创新和产业发展的主要模式, 并创立了新的软件商业模型。其次,在 促进互联网发展上,开源的共享创新与 互联网的繁荣休戚相关,互联网的每一 次进化都伴随着开源软件技术的演 进。而开源软件运动对网络经济大爆 发起了至关重要的作用,互联网反之也 扮演了开源运动向前演进的巨大推 手。最后,在群体化开发方法上,以开 源软件为代表的互联网大规模群体创 作活动则取得巨大成功,为经典的软件 开发方法带来新的重大启示,其开源实 践中蕴含的大众化协同、开放式共享、持续性创新3类互联网大规模协同机 理,为解决经典软件开发方法面临的难 题提供了新的途径和机遇。 开源带来的的启示不仅体现在以 上方面,还体现在更高抽象层析的理念 方面。开源社区的协同共享,用户创新
等理念,已经扩展到软件行业之外,如 开源硬件运动,促进了一种新的经济现 象即协同共享经济的萌芽和持续发 展。在某种意义上,开源理念正在对整 个人类文明的发展产生深远的影响。 对开源软件开发模式和机理的量化分
析的深刻意义是,通过对历史的量化理 解,指导我们如何通过大规模的社会化 协作去创建一个更加美好的信息化人 类文明。

(这都快成了抄论文了😥)