开源的含义

“开源社区”(Open Source Community)更准确的名称应该是“开源软件社区”(Open Source Software Community);而“开源软件”(Open Source Software)则是“开放源代码软件”的简称。因此,要想解释什么是“开源社区”,就必须先解释什么是“开源软件”;而要想解释“开源软件”,就必须先解释什么是“源代码”(Source Code)。

简称 全称

开源社区(Open Source Community)

开源软件社区(Open Source Software Community)

开源软件(Open Source Software)

开放源代码软件

前言

  • 源代码,也称源程序,是指人类可以读懂的计算机语言指令。之所以被称为“源代码”,在于2点:
  1. 源代码是目标代码之源。电子计算机只能读懂以机器语言表达出来的目标代码,它读不懂源代码。但人们直接通过机器语言编写目标代码,既不符合人的语言习惯,也十分低效。因此,人们通过近似于日常语言的高级语言来编写源代码,然后通过计算机系统中的编译器,源代码就可以转换为电子计算机可以读懂的目标代码。这样做,既符合人运用语言的习惯,也更为高效。从这一点来说,源代码是相应的目标代码的源。
  2. 源代码是后续相关软件代码的源。对于程序员来说,看到1款软件的源代码,就能够读懂软件设计者关于这款软件的设计构思,而如果读懂了1款软件的源代码,在理论上讲,就可以在其基础上开发出一系列的后续软件。从这一点来说,1款软件的工作代码是后续软件工作代码的源。

在某种意义上讲,开源软件才是软件产业的本源。1969年,美国电报电话公司(AT&T)贝尔实验室的研究人员Ken Thompson编写了UINX的第一个版本,这是一个多用户、多任务的操作系统,整个七十年代,它都在免费传播,从而迅速成为在大学和研究机构中很流行的系统。UINX是人类第1个用高级语言(C语言)编写并有较高的运行效率的系统,是使用源代码的软件的先驱,也是开源软件的先驱。

虽然开源软件是软件产业的本源,但是,今天的软件产业的主流却不是开源软件,而是“私有软件”(Proprietary Software)。因此,研究开源软件,就不得不谈及私有软件。

开源社区的起源

私有软件

1976年2月3日, Bill Gates发表了著名的《Open Letter to Hobbyists》(致电脑业余爱好者的一封公开信),在这封公开信中,Bill Gates明确提出软件应该具有“CopyRight”(版权)。这封公开信奠定了软件产品“CopyRight”的理论基础,也促使私有软件成为软件产业发展的主流。“Copy Right”理念的提出,必然导致源代码被彻底被封闭起来,这是因为3点:

  • 不封闭源代码,必然导致一些非本软件开发企业的程序员以免费方式获得源代码,并以此无偿使用这款软件来获利,而该软件开发企业难以收回开发成本;
  • 不封闭源代码,一旦非本软件开发企业的程序员读懂了这款软件的源代码,他就可以在此基础上开发出一系列的延伸软件,而这些后续软件必然与本软件开发企业自行开发的后续软件产生竞争,这将严重损害本软件开发企业的利益;
  • 即使本软件开发企业并不准备自行开发后续软件,其他程序员开发的后续软件的“Copy Right”也存在着难以合理界定的难题。

从这个意义上讲,私有软件就是闭源软件。客观地讲,Bill Gates的“Copy Right”理念以及私有软件的兴起,对于推动软件产业的兴旺功不可没。但是,Microsoft等私有软件厂商对于软件市场的垄断,引发了用户和广大软件开发者的强烈不满,兴起了反对私有软件理念的运动,开源软件就是这种运动的重要组成部分。首先兴起的私有软件运动,是自由软件运动(Free Software Movement),它是开源软件运动的先河,因此,在诠释开源软件之前,应该先介绍一下自由软件。

自由软件

1983年,MIT的Richard Stallman 开始倡导自由软件运动。1985年,Stallman等人创建了自由软件基金会(Free Software Foundation,简称FSF)。Stallman提出了与“Copy Right”理念针锋相对的“Copy Left”(许可复制权)理念,其表现形式是GPL,即公共许可证(General Pubic License)。自由软件应该是具有如下4大自由的软件:

  • 出于任何目的运行该软件的自由;
  • 有研究该软件如何运行并加以改进使之更符合自己需要的自由;
  • 有重新发布以帮助邻里的自由;
  • 有改善程序,公布改进方案(以及通常的修订版)以推动整个社区利益的自由。

1991年,Linus Torvalds开发出Linux,并接受“Copy Left”理念,使得自由软件运动有了自己可以与Microsoft的Windows相抗衡的操作系统。自由软件运动初战成功。但是,自由软件运动关于自由的追求,毕竟和现实的商业氛围格格不入,带有着过于理想化的色彩。这种反商业的信条,让一些本来也反对私有软件的人士对自由软件敬而远之。正是在这种背景下,一部分原有自由软件运动人士,如Eric Raymond,开始尝试将理想的自由软件与现实的商业氛围进行某种衔接,这就是本文所涉及的开源软件运动。

开源软件

1998年2月,Eric Raymond等人正式创立“Open Source Software”(开源软件)这一名称,并组建了开放源代码(软件)创始组织(Open Source Initiative Association,简称OSI)。OSI曾给出了开源软件的标准定义。按照OSI的定义,开源软件是指允许任何人使用、拷贝、修改、分发(免费/少许收费)的软件。它必须满足以下6个条件:

  • 允许自由地再发布软件;
  • 要求程序的源代码是可获得的;
  • 可以修改和派生新的软件,并可以重新发布;
  • 发布时保持软件源代码的完整性;
  • 许可证不对任何个人或群体有歧视,许可证不得歧视任何应用领域;
  • 与程序有关的权利必须适用于任何重新发布的程序,不需要得到附加的其它许可证的许可。

用一句话概括,开源软件就是源代码开放且可以自由复制的软件。开源软件运动超越自由软件运动的地方在于,它既抓住了私有软件的Achilles Heel(阿基里斯之踵),即封闭源代码,又可以实现与商业氛围的结合。

开源社区

由于以Microsoft为代表的私有软件企业占据着软件产业的主流地位,开源软件要想生存和发展,就必须在组织形式上进行创新。这一创新是由Eric Raymond在1998年提出的,他在被堪称开源软件的<The Cathedral and the Bazaar>(大教堂和市集)中正式提出了“开源社区”模式(Raymond将开源社区形象地比喻为“市集”)。开源社区是开源软件开发最重要的组织形式,是由所有参与开发和改进可以软件的爱好者所组成的社区。

2002年,Seidel发表了论文<An Initial Description of the C-form Organization>(关于C型组织的最初描述),认为开源社区是一种新的组织结构,他将这种新的组织结构命名为“C 型”组织。Seidel认为“C 型”组织有6个基本特征:

  • 没有正式的组织边界;
  • 追求更高目标的强有力的团队文化;
  • 所进行的工作没有物质报酬——免费公布产品的源文件;
  • 没有商业秘密——所有的开发工作都是在互联网上公开进行的;
  • 联络方式经济有效(通过互联网);
  • 项目最初源自于兴趣而不是基于市场调研。

Lerner和Tirole在2001年发表论文<The Open Source Movement :Key Research Questions>,他们经过研究发现,开源社区往往由核心团队、领导者用户、跟随用户、商业企业组成。其中,核心团队居于整个社区的中心,是非制度化的、动态的社群领导者。开源软件的领导者往往具有如下2个特征:

  • 领导者都是项目初始代码的开发者或早期的重要贡献者;
  • 在软件后期发展中,不一定是重要的贡献者,而是项目管理者,并具有可信的管理者地位。

从上述关于开源社区的分析可以看出,开源社区这种组织有着不同于软件开发企业的本质特征,这种本质特征就在于,软件开发企业内部的各个员工是基于利益关系而组织在一起的,而开源社区内部的各个成员是基于兴趣而走到一起的。从这个角度来说,软件开发企业是一种利益组织,而开源社区是一种兴趣组织。

开放社区

对于开源社区这种软件开发组织,西方学者进行了更加深入的研究,他们提出了更为深刻的理解,这就是“开放社区”, (Free/Open Communities)。

Tzouris在2002年发表了论文<Software Freedom, Open Software and the Participant's Motivation——A Multidisciplinary Study>(软件自由、开源软件和参与者动机——一项多学科的研究),在这篇论文中,Tzouris首先提出,开源社区应该是“开放社区”,他界定了开放社区的4个基本特征:

  • 共享的标准化和原则性的信念:指的是基于共同理解的为软件作贡献的共享的价值理念;
  • 共享的因果信念:指的是对因果和报酬结构的共同理解;
  • 对合法有效性的共同意见:指的是贡献者对目前问题采用的解决方案的有效性具有一致意见;
  • 共同政策企业:指的是能够通过为软件提供源代码实现的共同目标。

Reagle在2003年发表了论文<Socialization in Open Technical Communities>,在这篇论文中,Reagle也认为开源社区应该是“开放社区”,他认为“开放社区”应该具有如下5个特征:

  • 开放性:提供满足开放源代码定义的产品;
  • 透明性:可以获得所有的程序、规则、决定和原理;
  • 完整性:确保所有的程序和参与者贡献的完整性;
  • 不歧视:禁止对个人、团体或与社区活动不相关的特征的歧视,应客观评价个人和建议的优缺点,领导阶层应属于精英分子或建立在民主选举基础上;
  • 不干涉:这是开放的关键,如果参与者不同意前几条的标准,他们可以带走自己的产品在他们自己的概念标准下着手自己的工作,不受任何干涉。

如果仅仅凭借兴趣,开源社区是难以发展壮大起来的,开源社区要想真正发展壮大到可以和巨型软件开发企业进行有效的竞争,就必须在兴趣的基础上,形成共同的文化,也就是要将开源社区从兴趣组织发展为文化组织。

这一点,前文所提到的Seidel、Tzouris和Reagle这3位学者都已经认识到这一点。Seidel认为“C 型”组织应该“追求更高目标的强有力的团队文化(‘C 型’组织的第2个特征)”。Tzouris关于开放社区的4个基本特征的研究,实际上都是指开源社区的文化特征。Reagle认为开放社区应该具有的“不歧视”和“不干涉”也都是关于开源社区文化的界定。西方学者关于开源社区所应具有的文化特征的研究成果,在一定程度上已经初步揭示了本文所指的开源文化的内涵。当然,在本文看来,这些学者关于开源文化内涵的理解,无论在全面上,还是深入上,都有不足,还需要本文展开进一步的研究。

总结

如果仅仅凭借兴趣,开源社区是难以发展壮大起来的,开源社区要想真正发展壮大到可以和巨型软件开发企业进行有效的竞争,就必须在兴趣的基础上,形成共同的文化,也就是要将开源社区从兴趣组织发展为文化组织。

这一点,前文所提到的Seidel、Tzouris和Reagle这3位学者都已经认识到这一点。Seidel认为“C 型”组织应该“追求更高目标的强有力的团队文化(‘C 型’组织的第2个特征)”。Tzouris关于开放社区的4个基本特征的研究,实际上都是指开源社区的文化特征。Reagle认为开放社区应该具有的“不歧视”和“不干涉”也都是关于开源社区文化的界定。

西方学者关于开源社区所应具有的文化特征的研究成果,在一定程度上已经初步揭示了本文所指的开源文化的内涵。当然,在本文看来,这些学者关于开源文化内涵的理解,无论在全面上,还是深入上,都有不足,还需要本文展开进一步的研究。

转载自:http://blog.51cto.com/zhaisj/465512

开源社区的由来(转载)相关推荐

  1. GNU 项目(开源社区的由来,背后的哲学)

    转自译言网:http://article.yeeyan.org/view/88497/59257/ 第一个软件共享社区 当我在1971年开始在麻省理工人工智能实验室工作时, 我成为一个已经存在多年的软 ...

  2. CORD重构边缘DC 开源社区推动多项研究将落地

    中国联通作为CORD的创始成员也加入了CORD董事会,并且在2016年12月成立了中国联通CORD产业联盟,推进CORD技术在中国联通以及中国的应用. CORD项目的目标是提供一个网络运营商的服务交付 ...

  3. 看一下基于ASP.NET MVC的开源社区项目Orchard

    昨天介绍了基于ASP.NET MVC的框架Catharsis,今天给大家介绍的是基于ASP.NET MVC的一个开源社区项目Orchard,本篇主要介绍一下Orchard是什么,如何下载安装以及安装过 ...

  4. 2016年3月12日广州开源社区巡讲活动

    2016年3月12日广州开源社区巡讲活动 欢迎大家报名参加 本文版权归作者所有,未经作者同意不得转载.

  5. 利用开源社区打造微服务生态体系

    https://yq.aliyun.com/articles/62569 前言 大家好,我是敖小剑,今天给大家分享的主题是"利用开源社区打造微服务生态体系". 主要内容如下: 内容 ...

  6. Impala:新一代开源大数据分析引擎--转载

    原文地址:http://www.parallellabs.com/2013/08/25/impala-big-data-analytics/ 文 / 耿益锋 陈冠诚 大数据处理是云计算中非常重要的问题 ...

  7. 独家专访 | 从跨国投行到开源社区,IBM Spark总工程师Nick Pentreath的传奇经历

    2019独角兽企业重金招聘Python工程师标准>>> 原创 2016-12-04 李泽南 杜夏德 机器之心 机器之心原创 作者:李泽南.杜夏德 Nick Pentreath 是 I ...

  8. 开源社区ITGeek介绍

    Github项目地址: https://github.com/ecdiy/itgeek 开源社区ITGeek以golang+vue开发,一些使用过的朋友反馈 该系统速度极快 go get github ...

  9. .NET开源社区存在的问题

    12月9日, Oren Eini ,以色列的一位热衷于.NET开源项目的开发人员,在他的Blog上写了一篇文章分析了.NET开源社区存在的问题,文章的题目是:The Problem of Open S ...

最新文章

  1. boost::exception_detail::refcount_ptr的测试程序
  2. Google Map API v2 步步为营 (二)----- Location
  3. 你知道吗…我不知道…你知道吗
  4. printf参数的问题
  5. 利用 FFT 模拟菲涅尔衍射积分
  6. web 打印实用控件 lodop
  7. php调用pentaho,Pentaho数据源和查询
  8. [置顶]CHENEY-YANG'S BLOG(cheney-yang)
  9. VMVare 安装centos系统时,界面显示不全
  10. python 通讯录 字典_Python实现命令行通讯录
  11. 值得珍藏的免费观影网站
  12. ArcGIS制图学习(3)
  13. Spring2.5.X与Junit4.5配搭问题
  14. shell批处理 FFmpeg 批量转换格式 webm转MP4
  15. hdu 1284钱币兑换问题
  16. kettle Excel模板
  17. 借游戏带动“卖铲”收益,“卖铲子”的Unity借元宇宙起飞?
  18. 婚恋交友系统源码,实现基础的系统功能
  19. 手写promise(详细版)
  20. 电脑“C盘”快满了,怎么清理,如何提升电脑运行速度?

热门文章

  1. 5G网络正式商用对4G物联网卡造成何种影响?
  2. tikz 折线 箭头_[LaTeX 绘图] tikz 绘制流程图,概述和两个示例
  3. (附源码)node.js游戏网站 毕业设计 031726
  4. ios 渐变透明背景_骚气渐变色的海报设计怎么做?
  5. 安装WSL2的踩雷历程
  6. java学习笔记--计算器和日历
  7. 配置邮箱和邮件大小限制 !
  8. 我是怎么成为一名...的
  9. J - 最强王者 POJ - 1753 Flip Game 搜索+状态压缩
  10. 为什么计算机不显示桌面工具栏,快速解决电脑任务栏显示桌面图标不见了几个实用方法...