开放源代码(英文:Open Source)指一种软件散布模式。一般的软件仅可取得已经过编译的二进制可执行档,通常只有软件的作者或著作权所有者等拥有程式的源代码。有些软件的作者会将源码公开,此称之为“源码公开”,但这并不一定符合“开放源代码”的定义及条件,因为作者可能会设定公开源代码的条件限制,例如限制可阅读源代码的对象、限制衍生品等。
开放源代码的定义
开放源代码的定义由Bruce Perens(曾是Debian的创始人之一)定义如下:
自由再散布(Free Distribution):允许获得源代码的人可自由再将此源代码散布。
源代码(Source Code):程式的可执行档在散布时,必需以随附完整源代码或是可让人方便的事后取得源代码。
衍生著作(Derived Works):让人可依此源代码修改后,在依照同一授权条款的情形下再散布。
原创作者程式源代码的完整性(Integrity of The Author’s Source Code):意即修改后的版本,需以不同的版本号码以与原始的程式码做分别,保障原始的程式码完整性。
不得对任何人或团体有差别待遇(No Discrimination Against Persons or Groups):开放源代码软件不得因性别、团体、国家、族群等设定限制,但若是因为法律规定的情形则为例外(如:美国政府限制高加密软件的出口)。
对程式在任何领域内的利用不得有差别待遇(No Discrimination Against Fields of Endeavor):意即不得限制商业使用。
散布授权条款(Distribution of License):若软件再散布,必需以同一条款散布之。
授权条款不得专属于特定产品(License Must Not Be Specific to a Product):若多个程式组合成一套软件,则当某一开放源代码的程式单独散布时,也必需要符合开放源代码的条件。
授权条款不得限制其他软件(License Must Not Restrict Other Software):当某一开放源代码软件与其他非开放源代码软件一起散布时(例如放在同一光碟片),不得限制其他软件的授权条件也要遵照开放源代码的授权。
授权条款必须技术中立(License Must Be Technology-Neutral):意即授权条款不得限制为电子格式才有效,若是纸本的授权条款也应视为有效。
开放源代码与自由软件
许多人将开放源代码与自由软件(free Software)视为相同,但若以定义条件而言,自由软件仅是开放源代码的一种,也就是自由软件的定义较开放源代码更为严格,并非开放源代码的软件就可称为自由软件,要视该软件的授权条件是否合乎自由软件基金会对自由软件所下的定义。
重要人物
Richard Stallman----自由软件运动的精神领袖。
林纳斯?托瓦兹----Linux核心的创造者。
Eric Steven Raymond----开放源代码运动理论家,Fetchmail软件的创造者,《大教堂与市集》的作者。
开源软件基础
操作系统 Linux
Redhat
OpenLinux
SUSE
Slackware
Debian
Ubuntu
BSD
NetBSD
FreeBSD
OpenBSD
BSD + System V
OpenSolaris
协议基础
高层协议
TCP/IP Suite
分布式协议
CORBA
DCOM
RMI
中间件协议
XSTP
底层协议
OSI模型
SNA模型
APPN模型
开源软件语言
表现层语言(HTML, CSS, XML)
脚本语言(XSL, TCL, PHP, JavaScript, Perl, Python),不同于前三者,其中Perl, Python偏向系统语言。
系统语言(C/C++, Java)
部分开源软件
Linux----操作系统核心
Eclipse----软件开发平台,尤其是对 Java 开发
GNU Emacs----文本编辑软件
TeX----排版软件
XFree86,X.Org服务器----用于UNIX/Linux系统的图形用户软件
Apache----HTTP服务器
GNU GCC----多种语言编译器
Zope----应用服务器
Plone----内容管理系统
OpenOffice.org----办公软件套装
Mozilla Firefox----网络浏览器
GIMP----GNU图像处理软件