开源是什么

在开发和生产中,开源是一种哲学;它为人们提供了参与到最终产品的设计和实施过程中(产生新作品)并自由地进行重发布的途径

——维基百科。

拿现实中的场景举例,PS高手将自己某个作品中的素材打包到psd源文件,发布到论坛,使得其他设计师能够选用其中的素材完成新作品的创作。这就是一个开源的行为;更进一步,你发的一条微博,被其他用户转发评论,某种意义上来说 也完成了一个开源的过程——转发者采用原始微博中的信息作为素材,加入自己的观点后传播出去。

身边许多不经意的行为里,都可以看见开源的影子,尤其在Web2.0时代。只是因为习以为常,而导致视而不见。造成这种忽视另外一个很重要是很多人想到开源 就将其关联到“开放源代码”,认为开源就是把源代码公开的软件散布形式,感觉“开源”应该是软件开发领域的专有名词。而事实上“开放源代码”只是自由分享哲学运用到软件开发中的产物。

开源的历史

将制作工艺(技术信息)自由共享的观念,远在计算机出现之前就早已有之。譬如中国武侠小说里常出现的武功秘籍,再往前可以追溯到人类文明初期的菜谱的共享和传承。开源这个概念初现影响是在1911年塞尔登专利被福特推翻,并形成一个新协会(汽车制造商协会前身),该协会制定了所有的美国汽车制造商之间的交叉许可协议,由此,美国的汽车制造业成本大大降低,促进了汽车行业的自由发展。由于人类通常只对重大事件印象深刻,这也就成了为开源诞生的标志性事件之一。

开放源代码的历史,则起源于20世纪60年代,研究人员为接入阿帕网而制定电信网络协议,这一协作过程最终促成1969年因特网的诞生;早期IBM的自由共享源码(包括操作系统和软件),以及共享软件用户组也促进了软件源码的交流。而“Open Source”一词的出现,则是在1998年的自由软件峰会上由雷蒙德提出,并为大多数与会开发者接受的。

开源案例

近年来,开源观念的影响力波及科研、社会以及政治等越来越广泛的领域,下面举一些比较为人熟知或比较新奇有趣的开源案例:

计算机科学领域

应用软件
  • 7-Zip – 文件存档工具
  • Mozilla Firefox – web浏览器
  • Chromium – web浏览器
  • Openoffice – 办公套件
操作系统
  • Android – 由Linux派生而来的操作系统
  • FreeBSD – 由Unix派生而来的操作系统
  • Linux – 类Unix 操作系统家族
编程语言
  • Perl – 通用编程语言
  • PHP – 广泛用于web开发的脚本语言
  • Python – 通用编程语言
  • Ruby – 通用编程语言
服务端软件
  • Apache – HTTP web 服务软件
  • Drupal – 内容管理系统
  • MediaWiki – 百科服务系统,维基百科搭建软件
  • WordPress – 博客系统

电子领域

  • 开源硬件指的是初始化配置文件(通常是软件)对公众开放,允许任何人复制、修改、重发布源码的一类设备
  • Openmoko – 移动电话源码家族,包含硬件规格和操作系统
  • OpenRISC – 开源微处理器家族
  • Sun Microsystem’s OpenSPARC T1 Multicore processor
  • 开放运算计划 – 由Facebook发起,数据中心设计及电源供给技术共享,Intel AMD HP等知名硬件厂商以及国内知名互联网企业腾讯百度阿里巴巴均已宣布参与该计划

饮料领域

  • 开源可乐(OpenCola) – 一种类似可口可乐、百事可乐的可乐,不同的是OpenCola的配方是开源 由自愿者独立开发的
  • Vores Øl beer(Open Source Beer)- 由哥本哈根的大学生合作开发的啤酒

 

数字作品

  • 开放内容计划(维基百科基金主导) – 以维基百科和维基词典为代表的众多网站都采用GNU自由文档许可证和创作共用许可证,这些许可证在设计理念上与开放源代码软件开发许可证相似。这使得任何人都能够在版权制度的合法框架内,自由、无限制的使用数字作品。

医疗领域

  • 药品开发 – 现存的许多开源药品开发的提议,已经促成了TDI等非盈利性组织的产生
  • 基因组学 – “开源基因组学”包含 基因组序列数据的快速发布 和 全世界生物信息的分析任务众包 这两方面内容

科研领域

  • 科研共用协议 – 致力于削减在共享和重用学术期刊中科研成果的过程中产生的高昂法律成本
  • 开源科研计划 – 致力于通过提供小额资金支持,让学生参与到科研进程中,同时也为非研究人员投资、跟进科研项目提供相应的支持。科研成果(所有数据和科研方法)将遵循创作共用许可对外公布

其他领域

  • 开源法则同样适用于数字通信协议和数据存储格式等技术领域
  • 开放设计 – 将开源方法运用到现实世界中人工产品和系统的设计中,虽然尚处于发展初期,但潜力巨大
  • 教学 – 如 自主Java教学和开发(JEDI)、Khan学院,开源教育模式下,教师们以互联网为媒介共享课件、协作开发课件、交流教学心得

开源社区

1988年Eric Raymond在《The Cathedral and the Bazaar》(大教堂和集市)中提出了“开源社区”模式(将开源社区形象的比作集市)。

说到开源社区就不得不提下开源项目托管,当下最火的要算Github了,而比较知名的还有SourceForge和GoogleCode,个人的理解是Github以开发者为中心,而SourceForge和GoogleCode则是开发者围绕项目。

开源文化

开源文化是对已发现、已创造作品的重用和自由共享的实践。例如抽象拚贴画、拾得电影、拾得音乐、套用创作等。在开源文化中,原本受版权保护的作品被授权他人使用,参与者可以对作品进行修改并重新发布到社区或组织。

开放文化的核心正是作品所有权,部分或者完全地。将你的创作元件进行开源,并不意味着放弃你的权利,相反,这是一种寻求帮助,寻找改进方案的途径。你仍然保留了自己创作那部分的版权,而参与改进的贡献者则在他们完善的部分署名——在参与创作过程的同时,保留对各自的劳动成果的所有权。

对于开源的理解,个人非常认同 @玉伯也叫射雕 在某个分享里的观点开源就是“把好的东西分享出来,让好的东西变得更好”。

开源文化崇尚自由、共享,这一点恰好与海盗精神相同。于是就有这样的误解,认为开源就是和海盗精神有一腿。把反编译、破解甚至盗版行为当作开源文化的一部分。其实这种理解是错误的,开源文化与海盗精神除了都崇尚自由与分享外木有半毛钱关系。可以把开源文化与海盗精神的区别 比作 慈善与抢劫之间的区别——开源与慈善行为都是基于自愿的分享,而海盗精神和抢劫则是在非自愿,甚至明确禁止的前提下强夺劳动成果的行为。

开源的意义

  • 对于刚进入软件行业的人来说 – 开源无疑是最好的学习、锻炼基地,你不用担心你写的代码“不职业”,因为有很多专业的人会很快修复它、重写它,这种“优化”的对比教学,对学习者而言是非常有益的。这种培训不仅无需“学费”,还能让你获得现成的软件与代码
  • 对于普通开发者 – 一种自我价值的实现:在公司里,我写的代码最多也就2-30人来看,但如果我写的代码将被开源社区所有人看到,那心情,那状态能一样嘛
  • 对于企业来说 – 不仅做开源技术的使用者,更是开源布道者

20121126更新:

推荐阅读  http://www.huxiu.com/article/6366/1.html 。