开源软件

简述

开放源代码软件(Open Source Software),简称:OSS或开源软件。linux

这种“公开”正是促令人们使用它的缘由,由于这意味着用户能够自由的使用、复制、散发以及修改源码(补充漏洞,按具体需求定制功能)。与其相对是私有/专属软件,如:来自微软和苹果的软件,这类软件的源代码是保密的,只有公司的开发人员才能够改动代码。程序员

为何会有开源软件

广义上讲,开源软件指全部公开源代码的软件,包括某些商业软件也多是开源的。但咱们一般所说的开源软件,是狭义上的,指任何人能够经过极低的成本 (如仅仅访问互联网而无需其它额外费用)得到该软件源代码的软件,也就是其源代码向公众开放。和狭义上的开源软件相对应的,就是那些不向公众公开源代码的软件,一般就是商业软件。数据库

实质上,在计算机出现的最初年代,几乎全部的软件都是开源的。那时的计算机企业,主要是以销售硬件产品为主,软件几乎都是附送的,加上那时的软件规模都不大,以源代码形式提供给用户还能够缓解必定的技术支持压力 - 有问题由用户本身修改解决。因此,最初的软件几乎都是以开源的方式提供的。所以,对着迷于计算机编程的工程师来说,得到软件的源代码几乎是天经地义的事情。这样,当以微软为表明的企业开始实践纯软件产品的商业模式(核心思想是提供二进制可执行程序的使用许可,而不提供源代码),就引发了许多计算机编程爱好者的不满:给我一堆二进制程序,我如何才能按我本身的想法改进程序?在这种背景下,真 正意义上的开源软件就天然而然地产生了。编程

开源软件的发展历程

开源软件的发展,和互联网的发展密不可分。真正有规模的开源软件,应该是从上个世纪90年代开始进入公众视线,也就是互联网开始兴起的年代。咱们大体能够将开源软件的发展分为以下三个阶段:windows

  1. 萌芽阶段(上世纪九十年代以前)。这个阶段主要以我的和大学为主,由于发布条件受限,大多数开源软件没法获得有效传播,而仅仅流传于互相熟悉的程序员和老师、学生之间。这个阶段的典型开源软件为BSD操做系统。
      
  2. 以非盈利组织为主的阶段。这个阶段应从上个世纪九十年代算起,提及这个阶段,咱们不得不提到Richard Stallman发起的自由软件基金会,还有Apache基金会等。前者发起的GNU项目(1983年发起,九十年代后随Linux普及),成就了Linux操做系统;后者维护的Apache Web服务器,在互联网上几乎占据了统治地位。
      
  3. 以大型IT企业为主的阶段。这个阶段出现于2005年以后,以谷歌为表明的大型互联网企业,开始以各类方式发布开源软件,最为著名的是Chrome浏览器以及Android操做系统;固然还有Intel、Nokia等企业主导的Moblin、MeeGo等基于Linux的智能手机操做系统。

开源软件的特色

不得不说Linux,包括很大多数软件为什么得以流行,乃至飞速发展,说白了,通俗点就是:花钱少、免费,这是其中很重要的一个因素。浏览器

可是须要注意,虽说绝大多数开源软件是免费的,可是开源和免费并非等同的。也就是说开源软件能够卖钱,固然,并是否是把编译以后的代码给你,而是源代码。安全

下面,咱们列举开源软件的一些特色:服务器

  • 使用的自由
    绝大多数开源软件免费 markdown

  • 研究的自由
    能够得到软件源代码架构

  • 散步及改良的自由
    能够自由传播、改良甚至销售

开源你们族

若是不了解开源运动的发展史,也许真的没法领略到它给当今计算机科学所带来的影响有多大。

这里写图片描述

上图只表明了开源软件的冰山一角。。。下面,咱们J简单介绍几种最多见的开源软件:

  • 操做系统:Linux

Linux是一种自由和开放源码的类Unix操做系统,存在着许多不一样的Linux版本,但它们都使用了Linux内核。Linux可安装在各类计算机硬件设备中,好比手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。

  • 浏览器:Firefox

Mozilla Firefox,中文名一般称为“火狐”,是一个开源网页浏览器,使用Gecko引擎(即非ie内核),能够在多种操做系统如Windows,Mac和linux上运行。Firefox由Mozilla基金会与数百个志愿者所开发,原名“Phoenix”(凤凰),以后更名“Mozilla Firebird”(火鸟),再改成如今的名字。到2012年8月,在世界范围内,Firefox占据着23%的使用份额。

  • 集成开发环境:Eclipse

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其自己而言,它只是一个框架和一组服务,用于经过插件组件构建开发环境。Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

  • 网页服务器:Apache HTTP Server

Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,能够在大多数计算机操做系统中运行,因为其多平台和安全性被普遍使用,是最流行的Web服务器端软件之一。它快速、可靠而且可经过简单的API扩展,将Perl/Python等解释器编译到服务器中。

  • 脚本语言:PHP

PHP是一种通用开源脚本语言。独特的语法混合了C、Java、Perl以及PHP自创的语法,利于学习,使用普遍,主要适用于Web开发领域。它能够比CGI或者Perl更快速地执行动态网页。用PHP作出的动态页面与其它的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比彻底生成HTML标记的CGI要高许多;PHP还能够执行编译后代码,编译能够达到加密和优化代码运行,使代码运行更快。

  • 数据库:MySQL

MySQL是全球使用范围最广的数据库系统。2009年,全球的MySQL安装数量已达1千1百万。它是LAMP架构(Linux, Apache, MySQL, PHP)中的M。众多知名网站和产品均使用MySQL,好比:维基百科、Facebook、Google和Wordpress。(Google和Facebook均改造了MySQL,以知足自身需求)。

  • DNS服务器软件:BIND

BIND是一款开放源码的DNS服务器软件,Bind由美国加州大学Berkeley分校开发和维护的,全名为Berkeley Internet Name Domain它是目前世界上使用最为普遍的DNS服务器软件,支持各类unix平台和windows平台。

无处不在的开源产品

不少人可能还没有意识到,咱们使用的电脑中运行有开源软件,手机中运行有开源软件,家里的电视也运行有开源软件,甚至小小的数码产品(如电子相框)中也运行有开源软件,尤为是互联网服务器端软件,几乎所有是开源软件。绝不夸张地说,开源软件已经渗透到了咱们平常生活的方方面面。

你访问的网站,大部分是使用Apache的Web服务器;你访问的网站,大部分操做系统是Linux或BSD;你访问的网站,大部分都是使用MySQL;你提交DNS查询请求由BIND服务器分析处理;你访问的博客极可能就是Wordpress的;你用的手机操做系统大部分是Android的;甚至你如今就是用Firefox在阅读个人的这篇文章。

开源是将来新IT的发展方向,开源让业界更多的优秀人才一块儿参与到共同的项目中,经过开放促进了技术的创新,经过共享解决了复杂性的问题。

严格遵照协议

除了你们比较熟悉的GPL协议以外,开源界还有不少许可证,如:LGPL许可证、BSD许可证等。

无规矩不成方圆。在使用开源产品的时候咱们必须严格遵照相应的开源协议,要么和下面几位同样就尴尬了。

FFmpeg耻辱柱名单:

  1. 暴风影音
  2. POTPLAYER
  3. GOM PLAYER
  4. KMPlayer
  5. QQ影音

因为FFmpeg是在LGPL/GPL协议下发布的(若是使用了其中一些使用GPL协议发布的模块则必须使用GPL协议),任何人均可以自由使用,但必须严格遵照LGPL/GPL协议。目前有不少播放软件都使用了FFmpeg的代码,但它们并无遵照LGPL/GPL协议,没有公开任何源代码,因此被列入FFmpeg耻辱名单。

更多参考

  • 关于开源软件:你不知道的那些事儿