开源软件是一种源代码公开并可供任何人查看、更改或重新分发的软件。开源软件通常是在许多不同的参与者之间以开放、协作的方式开发的。此类项目遵循透明、开放交换、自由参与、快速原型设计以及面向社区的协作开发等原则。
虽然所有开源软件许可证都允许任何人研究、修改和重新分发开源软件的反面是闭源软件,其源代码不公开,只有本人,创建它的团队或组织有权修改和分发它。
开源软件比其他类型的软件具有优势。在推广开放协作理念的同时,这可能使开发人员和用户都受益,而且由于公开呼吁参与,引入了来自各个领域的许多不同专家,因此也可以带来更高质量的产品。与闭源软件相比,解决问题也可以更快、成本更低,因为大量参与者可能拥有处理这些问题的权利、访问权限和专业知识。
另一方面,如果开源软件以分散的方式开发,没有一个实体协调开发过程,那么不同的参与者可能需要大量的时间才能就战略决策达成一致。许多开源项目实施特殊类型的治理模型来解决这个问题。从更广泛的角度来说,旨在使所有或大多数软件使用开源许可证的运动被称为“开源”源软件运动。这一运动的目标还包括通过由志趣相投的人合作制作高质量代码来改进开源技术。支持开源软件运动的开发人员自愿编写和交换代码,作为对开放协作理念的贡献。