大多数购买或下载的软件只提供编译后的可运行版本。“编译”是指开发者创建的实际程序代码(称为源代码)经过了一种称为编译器的特殊程序的处理,它将源代码转换为计算机可以理解的格式(参见更多信息,请参阅到C语言入门教程)。修改大多数应用程序的编译版本是极其困难的,而且几乎不可能确切地知道开发人员是如何创建程序的各个部分的。大多数商业软件制造商认为这是一个优势,可以防止其他公司复制他们的代码并将其用于竞争产品,同时控制他们特定产品的质量和功能。
开源软件恰恰相反。源代码随编译版本提供,实际上鼓励人们修改或定制它。支持开源理念的软件开发者认为,通过允许有兴趣的各方修改源代码,应用程序将更完整、更长时间无错误。
软件开发行业定义的开源软件必须满足某些标准:
该程序必须免费分发(但可以作为销售包的一部分)。
必须提供源代码。
必须允许任何人修改源代码。
修改后的版本可能会重新发布。
许可不得要求排除其他软件或干扰其他软件的运行。