开源软件简介

一、开源运动的发起

近几十年,软件已经称为战略性的社会资源。各大软件供应商传统的对外封锁源代码的运营模式虽说有积极的一面,比如可以维护开发商的利益,使其可以持续地维护进一步开发的能力,以及可以保护软件商及客户的私密信息等等,但凡事都有两面,其局限性也越发明显,比如付费软件供应商可能因缺乏价格竞争而提高产品、服务的价格,而用户则可能没有选择的余地;而且用户可能对单一软件供应商或解决方案产生依赖性,尤其对于大型机构或者国家,这种依赖性隐藏着巨大的风险。

"自由软件(Free Software,也叫"Open Source(开源)"或"Libre Software(自由软件)")"的出现极大地改变了软件开发和应用领域的经济学。

1984年开始,自由软件基金会(FSF, Free Software Foundation)通过其下的GNU项目生产可供自由使用的软件。其创始人Richard Stallman认为自由软件应该允许用户获得其源代码,并且可以对其进行研究、修改以及重新分发而不用支付任何费用。与之相关的商业活动不是去隐藏代码,而是附加补充的软件(按客户的需求定制软件)以及提供附加的服务,比如维护和用户培训,可以通过书籍、培训材料、培训课程等形式。

另一方面,1991年8月,一位名叫Linus Torvalds的芬兰学生宣布他开发了一个新的操作系统,并且已经提供给开发者社区供测试和完善。这就是Linux最初的系统内核。

Richard Stallman和Linus Torvalds都领导着各自的开发者社群,Richard Stallman领导FSF的GNU社群,Linus Torvalds领导Linux社群,这是开源领域中最重要的两个社群。

这两个社群对开源和自由软件的理解不尽相同。Richard Stallman强调用户要能够免费地获得软件及源代码,"free"的两个含义"免费的"和"自由的"都是Richard Stallman追求的目标,但他却回答不了从事开源事业的人和企业要如何获利这个基本问题。当Linus Torvalds领导的Linux社区实现了一个带有可用源代码的免费操作系统时,这个问题仿佛得到了解答。GNU社群决定将自由软件运功中的各种活动统一在"开源软件"这一名称下。

"开源软件"被注册为一个认证品牌,符合其规范的产品可以被称作开源软件。

二、开源软件的规范

开源软件并不是简单地将源代码与程序一起发布,而是有一套准入规范。

1997年6月,Debian项目(GNU/Linux的一个发布版本,只使用自由软件)的领导者Bruce Perens起草了开源软件定义,随后开源倡议组织(OSI, Open Source Initiative Organization)对其进行了修订,其中包含以下要点:

1)软件可以被免费拷贝;

2)软件必须包含源代码,可以与编译后的可执行版本共同发布,或以某种可靠形式由用户自行获取源代码,比如从网络下载。

3)软件的使用许可必须允许用户对源代码进行修改以及由此衍生出的后续工作,并允许这些后续工作的成果以原许可中相同的条款进行发布;

4)可能需要确保原作者代码的完整性。后续的改动可以作为原始代码的补丁形式呈现,或者需要有一个与原始代码不同的名称或版本号,这样可以明确每次改动的作者。具体做法取决于软件许可的具体规定。

5)软件使用许可不得对某个人或某群体有歧视性规定,不可以限制对软件的访问。如果国家法律或政策有这方面的规定,应在许可中说明。

6)不可以对软件的应用领域有限制性规定,即使该软件最初不是针对该领域设计的。比如,开源软件是允许商用的,开源软件的许可不能阻止软件用于商业目的。

7)软件使用许可适用于每个获得该软件的用户。

8)如果开源软件被用作某更大型产品的一部分,必须保留其原始使用许可。如果该产品是付费软件,应在其使用许可中说明哪一部分是引用的哪款开源软件。

9)开源软件许可不可以在该软件被并入其他软件或与其他软件共同发布时形成障碍;

10)开源软件的许可必须是技术中立的,即不局限于某些设备或操作系统,不允许提及独家的分发方式,比如强制使用CD、FTP等方式进行分发。

OSI专门管理开源软件的定义和许可证,审查软件是否具备成为开源软件的资格。开源许可证有很多种,

  1. GPL(通用公共许可证):这是最著名、应用最广的许可证,它要求任何修改后的代码或基于GPL代码开发的衍生作品也必须以GPL许可证发布,防止开源软件被集成到付费软件中。

  2. MIT许可证:这是一种非常宽松的许可证,允许用户自由地使用、修改和分发软件,甚至可以用于专有软件中。

  3. Apache许可证:与MIT类似,但它提供了额外的保护措施,如专利条款。

  4. BSD许可证:它也是一个非常宽松的许可证,但与MIT许可证相比,它提供了更明确的免责声明。

  5. LGPL(较宽松的通用公共许可证):这是一种更宽松的GPL,适用于库文件,允许将库链接到专有软件中,而不需要将整个程序开源。一个经典的例子就是Linux C库,如果它使用GPL许可,它只能被用来开发开源软件,而它可使用LGPL许可就可被用来开发付费软件。

这些许可证旨在保护作者的版权,同时鼓励软件的共享和合作开发。在选择许可证时,项目作者会根据自己的需求和对社区的贡献来做出决定。

三、开源软件的优势

开源软件可以被免费使用、研究、拷贝、修改及分发。它使得软件科学的教学、学习都可以不依赖于特定的技术提供商,这对于可持续发展和建立一个包容性信息社会尤为重要。

开源软件,意味着用户可以获得其源代码,并在该软件许可范围内适当地进行修改及分发。开源软件具有以下优势:

1)可以对源代码进行研究、用于教学,或对其进行修改、纠正错误,甚至对其增加新功能。

2)可以免费使用(或支付较少地费用,比如支付软件的包装、分发费用)。

3)可以制定防止单一软件提供商形成垄断的规则。

4)形成基于共享知识的发展模式,类似于科学社区,让每个决定都基于广泛的共识,从而使发展质量更高。

四、商业模式

对于软件公司来说,开源同样具有吸引力,提供了各种吸引人的好处。

  1. 对于软件开发公司来说,如何通过开源软件赚取利润没有一个简单的答案,并不是所有类型的软件都可以做到这一点,回报取决于能够产生利润的软件类型。通常,软件公司会进行调研,以确定如果开发为开源软件,应用程序是否会盈利(大多数会),社区会帮助降低开发成本以及维护或错误修复的成本,并考虑到开源将为我们提供的用户数量,以及他们对我们的支持或文档服务的需求。如果这个平衡是积极的,那么不依赖软件销售收入也是可行的。

  2. 增加用户数量。

  3. 获得更大的开发灵活性,参与的人越多,能发现错误的人就越多。

  4. 收入主要来自支持、用户培训和维护。

  5. 机构用户在选择管理任务的软件时,需要考虑许多因素,例如性能、可靠性、安全性、可扩展性和财务成本。开源软件不仅在成本方面具有优势,而且能够在任何其他因素与付费软件竞争。

  6. 对于私人用户来说,它提供了大量适应常见用途的软件,开源软件最重要的目标之一就是吸引家庭用户。因为许多家庭用户使用付费软件的盗版版本,尽管可能没有被起诉,但他们确实需要支付费用。开源软件则为家庭用户解决了这一问题。

  7. 最后,作为特例,国家可以从开源软件中获得重要的好处,因为它提供了与专有软件昂贵许可费用相比微不足道的价格的高质量软件。此外,开源软件可以轻松集成文化方面的需求,例如有些小国家有自己的语言,而软件提供商却不愿意对此提供支持,或要求这些小国家为此付费,这种情况开源软件的优势就非常明显。

五、开源运动的推动

开源软件得到国际组织的大力支持和推动。欧盟委员会(European Commission)的终生学习项目(LLP,Lifelong Learning Programme)与自由知识机构(Free Knowledge Institue)以及三所知名大学(这三所大学分别是荷兰开放大学(Open Universiteit Nederland)、西班牙加泰罗尼亚帕伯拉大学(Universitar Oberra de Caralunya)以及挪威阿格德尔大学(University of Agder)。)合作,于2008年创办了自由技术学院(FTA,Free Technology Academy)。

FTA致力于自由软件技术的教学,使人们可以不受限制地基于现有知识去研究和创造。FTA提供线上课程传播自由软件技术。主要面向IT专业人员、教育从业者、学生以及各种决策者。FTA所使用的以及自行开发的学习材料都是开放教育资源(Open Education Resources),这些教育资源具有非营利性的免费使用许可,FTA可以在许可授权范围内自由地使用、修改以及分发这些材料。同样,FTA所使用的在线虚拟校园也是基于开放标准架构的自由软件。

开源运动已经使GNU/Linux获得长足发展,已经可以与现有的封闭式付费系统相媲美,在某些方面甚至已经超越了付费系统。在这个过程中,许多大公司起了重要作用,比如HP、IBM、当时的SUN(2010年被Oracle收购)等。

相关推荐
敲代码的飞3 天前
【抖音矩阵源码开发:短视频矩阵SEO技术深度解析与实践指南】
人工智能·矩阵·pdf·开源·开源软件
启山智软4 天前
如何解决: Java商城系统开发过程中 开发难度大和时间紧的问题
java·大数据·开发语言·开源·开源软件
eSIM物联工厂5 天前
物联网系统中OLED屏主流驱动方案详解
c语言·arm开发·嵌入式硬件·物联网·硬件工程·开源软件·iot
阿航的大佬梦5 天前
Vue3.X + SpringBoot小程序 | AI大模型项目 | 饮食陪伴官
人工智能·spring boot·小程序·gitee·开源·开源软件
猴哥聊项目管理6 天前
2024年项目经理不能错过的开源项目管理系统大盘点:全面指南
安全·开源·项目管理·团队开发·开源软件·产品经理·项目管理软件
郑州拽牛科技7 天前
全方位洗衣洗鞋小程序系统,重塑干洗店服务新体验;
大数据·小程序·系统架构·开源软件
神的孩子都在歌唱9 天前
个人导航网站介绍和部署
java·开发语言·开源软件
4154119 天前
【Geoserver使用】REST API调用(工作空间部分)
postman·开源软件
fakaifa13 天前
八戒农场小程序V2最新源码
小程序·uni-app·php·生活·开源软件