X-lab2017 / oss101-bok

https://www.x-lab.info/oss101-bok/
2 stars 4 forks source link

开源软件 #15

Open will-ww opened 1 month ago

will-ww commented 1 month ago

开源软件又称开放源代码软件,是源代码可以任意获取、通过开放协作开发和维护的软件,可供任何人使用、检查、修改和重新分发。

PureNatural commented 2 weeks ago

开源软件(英语:open source software,缩写:OSS)又称开放源代码软件,是源代码可以任意获取的计算机软件,这种软件的著作权持有人在软件协议的规定下保留一部分权利并允许用户学习、修改以及以任何目的向任何人分发该软件。开源协议通常符合开放源代码的定义的要求。一些开源软件发布到公有领域。开源软件常公开和合作开发。开源软件是开放源代码开发的最常见例子,也经常与用户生成内容比较。开源软件的英文“open source software”一词出自自由软件的营销活动。

开源软件同时也是一种软件散布模式。一般软件仅可获取已编译的二进制可执行档(exe),通常只有软件作者或著作权所有者等拥有程序源代码。

有些软件的作者只将源代码公开,却不符合“开放源代码”的定义及条件,因为作者可能设置公开源代码的条件限制,诸如限制可阅读源代码的对象、限制派生产品等,此称之为公开源代码的免费软件(Freeware,例如知名网络论坛软件Discuz!),因此公开源代码的软件并不一定可称为开放源代码软件。

https://zh.wikipedia.org/wiki/%E5%BC%80%E6%BA%90%E8%BD%AF%E4%BB%B6

PureNatural commented 2 weeks ago

开源软件的定义与概念

开源软件(Open Source Software, OSS)是指源代码对外公开、任何人都可以自由查看、使用、修改和发布的计算机软件。这一概念源于软件开发中的“开源”运动,旨在通过共享与协作的方式推动技术进步。开源软件通常遵循特定的开源许可证,这些许可证定义了用户对软件的使用、修改和分发权限。

开源软件与传统的专有软件不同。专有软件的源代码通常是保密的,仅由开发者或拥有者掌控。用户可以使用该软件,但无法查看或修改其内部实现。而开源软件强调透明性和开放性,允许用户深入了解软件的工作原理并根据需求进行修改。

开源软件运动的理念不仅仅局限于技术层面,它还包含了关于协作、共享与创新的思想。通过让社区参与开发,开源软件可以更快速地迭代和改进,同时也能有效避免技术垄断,促进信息技术的普及。

分类 • 按许可证类型分类:强制开源许可证、宽松开源许可证 • 按软件功能分类:操作系统、数据库、编程语言和开发工具、Web 服务器、内容管理系统、版本控制系统等 • 按开发模式分类:社区驱动的开源软件、公司驱动的开源软 件、混合模式 • 按使用领域分类:办公软件、图形和多媒体软件、网络和通信软件等

一、开源软件的起源与发展

开源软件的概念源于20世纪70年代的自由软件运动(Free Software Movement),由美国计算机科学家理查德·斯托曼(Richard Stallman)发起。他认为软件应该是自由的,用户有权利自由使用、修改和分享它。为了推动这一理念,斯托曼创立了自由软件基金会(Free Software Foundation, FSF),并发布了GNU通用公共许可证(GNU General Public License, GPL),为自由软件的发布和使用提供了法律框架。

随着时间的推移,“自由软件”这一术语因其“自由”概念的多重含义而引发了争议。部分人认为“自由”仅仅意味着无偿获取,而忽视了修改和分发软件的权利。因此,在20世纪90年代末,布鲁斯·佩伦斯(Bruce Perens)和埃里克·雷蒙德(Eric Raymond)等技术专家提出了“开源软件”的概念,强调软件源代码的开放性和社区协作精神。这一概念得到了更广泛的认同,推动了开源软件的发展。

开源软件的崛起得益于互联网的普及,它使得开发者能够在全球范围内进行协作。通过平台如GitHub,成千上万的开发者能够在不同的开源项目上贡献代码,推动项目的快速迭代和创新。

二、开源软件的核心特性

  1. 开放性

    开源软件的最显著特性就是其源代码对外公开。任何人都可以自由查看、使用和修改这些代码。这种开放性确保了软件的透明度,用户可以完全了解软件是如何工作的,而不必依赖开发者的说明。

  2. 自由使用与分发

    大多数开源许可证都允许用户自由使用和分发软件。无论是个人用户还是企业,均可以根据自己的需求自由使用开源软件,而不需要支付高昂的授权费用。这使得开源软件成为许多企业和个人开发者的首选。

  3. 社区协作

    开源软件的开发往往依赖于社区的协作。开发者可以通过贡献代码、修复漏洞、提交新功能或撰写文档等方式为项目做出贡献。社区的集体智慧和努力能够显著提高软件的质量和安全性。大型开源项目如Linux操作系统、Apache服务器和Python编程语言等,都是由全球开发者社区共同维护和改进的成果。

  4. 许可协议

    开源软件的使用、修改和分发权限受特定的许可证(如GPL、MIT、Apache License等)约束。这些许可证详细规定了用户的权利与义务,确保软件的开源性质不会在后续传播中被破坏。不同的开源许可证之间可能存在细微差别,有些许可证要求对软件的修改也必须公开,而有些则允许开发者在一定条件下将修改的版本闭源。

三、开源软件的优势

  1. 降低成本

    对于个人开发者和企业而言,开源软件的免费使用和低成本维护是其最大的优势之一。与专有软件不同,开源软件不需要支付高昂的许可证费用,这使得其在预算有限的情况下更具吸引力。无论是操作系统、数据库管理系统还是开发工具,开源软件几乎覆盖了所有重要的技术领域。

  2. 安全性与透明性

    由于源代码公开,开源软件能够经过社区的大规模审查,迅速发现并修复漏洞。这种透明性意味着安全隐患更容易被暴露,并通过社区的力量迅速解决。相反,专有软件的安全性则完全取决于开发公司的内部管理,用户无法自行验证其安全性。

  3. 灵活性与可定制性

    开源软件允许用户根据自己的需求修改源代码,从而实现更高的灵活性。无论是增加新功能、改进性能,还是调整软件的外观和行为,开源软件都为用户提供了定制化的可能性。这在商业环境中尤其重要,企业可以根据特定的业务需求调整软件,而无需依赖软件供应商提供的标准化解决方案。

  4. 社区支持与创新

    开源软件的开发离不开社区的贡献,社区成员通过讨论、分享和合作推动了项目的持续发展。许多知名的开源项目,如Linux、Apache和Python,都得益于全球开发者的共同努力和支持。社区的多样性与全球性意味着创新的源泉永不停歇,开源软件能够迅速适应新技术的需求。

  5. 避免厂商锁定

    专有软件通常会使用户陷入“厂商锁定”的困境,用户需要依赖特定厂商提供的服务或解决方案。而开源软件通过提供透明的源代码,允许用户完全掌控其使用的技术栈,避免了被厂商垄断或捆绑的风险。用户可以自由选择不同的支持服务提供商,甚至可以自行维护和升级软件。

开源软件不仅是一种技术选择,更是一种文化与协作的象征。通过开放源代码、鼓励共享与创新,开源软件为全球技术社区提供了强大的动力,推动了信息技术的普及与发展。