====== 开源 ====== ---- 开源指的是将软件、硬件、文档等产品的[[源代码]]、设计文档等信息公开、透明化,并让任何人都可以免费获取、使用、修改、分发和销售的一种开放式开发方式。具体来说,开源包含以下几个方面: * 源代码公开:软件的源代码必须完全公开,任何人都可以查看、修改和分发代码。 * 开放许可证:软件必须遵循开源许可证,让用户了解软件的使用、分发和修改规则。 * 公开开发过程:开源软件开发过程必须公开透明,让用户可以参与到软件的开发和维护过程中。 总的来说,开源是一种能够促进软件技术发展和社区共享的开发方式,具有广泛的应用和重要的意义。 ====== 历史 ====== ---- 开源软件的历史可以追溯到计算机诞生之初。但是,随着计算机技术的不断发展,开源软件逐渐成为了一种新型的软件开发模式,这种模式既具有社区化的特点,也具有自由、透明等特点。 20世纪80年代,GNU计划的创始人理查德·斯托曼开始了他的“自由软件运动”,旨在推广自由软件的理念,将软件作为一种知识产权而非商品。1985年,他创立了自由软件基金会(FSF),以支持自由软件的开发和推广。1989年,GNU通用公共许可证(GPL)发布,这是第一个采用开源模式的软件许可证,它赋予了软件的使用者在遵守一些规则的前提下修改、复制、分发甚至销售软件的权利。 1991年,芬兰大学生林纳斯·托瓦兹(Linus Torvalds)开发出了一个名为Linux的操作系统内核,这是一个开源的、免费的操作系统内核,由于其高度的可定制性和灵活性,成为了后来开源软件发展的重要推动力量。1998年,红帽公司成立,开始商业化推广Linux操作系统。同时,Eric S. Raymond 发表了一篇名为《大教堂和集市》的文章,强调了开源软件模式的优越性,为开源软件的发展提供了重要的理论支撑。 21世纪以来,随着互联网技术的普及,开源软件的影响力越来越大。例如,Apache、MySQL、PHP等开源软件被广泛应用于Web服务器和数据库领域,OpenStack成为了云计算领域最具代表性的开源项目之一。另外,一些新型的开源软件项目如Docker、Kubernetes、TensorFlow等,也成为了新一代互联网和人工智能领域的代表性开源项目。 总的来说,开源软件的历史就是一个从自由软件到开源软件的演进过程,是一个持续推动着软件产业和计算机技术发展的力量。开源软件不仅为用户和企业带来了巨大的经济效益,同时也在促进技术的进步、知识的共享和社会的发展等方面发挥着重要的作用。 ====== 开源的好处 ====== ---- * 降低软件开发成本:开源软件可以节省软件开发的成本,同时提高软件的质量和安全性。 * 促进创新:开源软件能够促进软件开发者之间的交流和合作,促进技术的创新和进步。 * 促进共享:开源软件可以更加方便地进行共享和传播,让更多人能够受益。 * 增加透明度和安全性:开源软件公开源代码和开发过程,让用户更加了解软件的实现和安全性。 ====== 常用开放许可证 ====== ---- * GNU通用公共许可证(GPL):GPL 是一种最为广泛使用的开源许可证之一,它要求使用该软件的任何人都必须开放源代码,并保证任何人都可以获取、修改和重新分发这些代码。 * * BSD许可证:BSD 许可证是一种比较宽松的开源许可证,允许软件在商业和非商业领域都可以自由使用、修改和分发,只需要在软件中包含原始许可证声明和版权声明即可。 * * Apache许可证:Apache 许可证是一种比较宽松的开源许可证,允许软件在商业和非商业领域自由使用、修改和分发,并允许使用者以专有方式分发派生的产品。 * * MIT许可证:MIT 许可证是一种非常宽松的开源许可证,允许软件在商业和非商业领域自由使用、修改和分发,只需要在软件中包含原始许可证声明和版权声明即可。 * * Mozilla公共许可证(MPL):MPL 是一种较为灵活的开源许可证,它要求任何使用该软件的人都需要公开源代码,并保证在修改后的软件中使用同样的开源许可证。 * * Eclipse公共许可证(EPL):EPL 是一种允许使用者修改和分发源代码的开源许可证,同时也允许使用者以专有方式分发派生的产品。 ====== 相关 ====== ---- [[假开源]]