数云融合|新手入门,5分钟秒懂开源

news2024/12/27 10:59:54

目录

  • 一、开源软件
    • 开源领域的两大组织:FSF和OSI
  • 二、开源许可证
    • 开源意味着免费吗?
  • 三、开源技术应用领域
  • 四、总结

一、开源软件

开源即开放源代码,他的核心是源代码公开,任何人都可以查看、使用、修改和分发。与之相对的是闭源,闭源代码就是普通的商业版权软件,代码是封闭的,只有作者才能看到,出了问题也只有自己能修改。

举个栗子:

某一天你在一家餐馆吃到了一道超级好吃的美食,这份食谱是由餐馆大厨秘制的,你想要学习这道美食,但你无法获得这份食谱。这就是闭源。突然又一天,这位大厨将这份食谱进行公开,允许任何人查看、学习、修改并分享这份食谱。这样,你可以轻松地获取这份食谱,根据自己的口味进行修改,并与其他人分享你的改进。这就是开源。

类比到软件领域,如果一款软件是闭源的,那么它的源代码是由软件公司或者开发者所拥有,用户无法查看、修改和分享源代码。而如果一款软件是开源的,那么它的源代码是公开的,任何人都可以查看、学习、修改和分享源代码。

闭源软件:Windows、Microsoft Office、IOS等

开源软件:安卓系统、Linux操作系统等

开源领域的两大组织:FSF和OSI

在开源发展历程有,有一些公益组织在推广和发展开源软件方面发挥着重要作用。其中具有代表性的2个组织是FSF和OSI。

FSF即自由软件基金会(Free Software Foundation),1985年由GNU计划的创建者Richard Stallman创立,FSF主张自由软件是必须100%提供源码,但是“自由软件”并不是完全免费,发布“自由软件”的作者可以选择适当的收费(收费价格需合理),也可以免费。

OSI即开放源代码促进会(Open Source Initiative,开放源代码促进会),1998年创立,OSI认为“自由软件”对于个人开发者来说很喜欢,但是对于企业来说想继承发展“自由软件”会有一些顾忌,因为使用了“自由软件”的源码,新的项目的源码也需要公开,许多商业公司是不愿意的。OSI目的是在原教旨主义开源与软件工业/商业之间激烈矛盾中,寻求更平衡的体系和治理机制。OSI通过制定不同的开源许可标准,让商业公司也可使用开源软件,而不必公开其源代码,从而推动开源软件的发展。OSI认证的开源软件许可证已经成为开源软件界的标准,目前OSI 组织批准过的许可大概有 90 种,包括 Apache License v2、GPL v2、MIT/BSD 等。

二、开源许可证

在说开源许可证前,我们先来学习学习关于版权的一些专业名词

● Copyright:著作权,指软件的著作权(也称版权)和其它一切权利归软件作者所私有,用户只有使用权,没有其它如复制、重新修改发布等权利。

● Copyleft:著佐权,指仅有著作权归原作者所有,其他一切权利可以与任何人共享。即通过许可证的形式,补足、辅佐著作权(Copyright)不足的版权授权,相当于一种权利与义务的契约。

● Permissive(宽松自由软件许可证):是一种对软件的使用、修改、传播等方式采用最低限制的自由软件许可协议条款类型。这种类型的软件许可协议将不保证原作品的派生作品会继续保持与原作品完全相同的相关限制条件

Copyleft与Permissive最大的区别在于:在软件被修改并再发行时, Copyleft许可协议要求软件不得用于商业性质的活动,且不得闭源(后续的衍生子软件也得遵循该条款),而 Permissive许可协议不要求公开源代码(衍生软件可以变为专有软件)。

● Creative Commons(CC:知识共享协议):是一种开放式版权许可协议,旨在让创作者能够授权其他人在特定条件下使用他们的作品,通常用于数字内容,如文章、图片、音乐等。CC有多个版本,每个版本包含一些了授权条款,这些条款包括以下4个方面:BY(署名)、NC(非商业性使用)、ND(禁止演绎)、SA(相同方式共享),创作者可以自由选择和组合。
在这里插入图片描述
说回到开源许可证,开源许可证是规定开源软件如何使用和分发的法律条款。开源许可证通常包括一些基本条款,如允许复制、分发、修改和使用源代码等。常见的开源许可证可以分为两类:著佐权许可证和宽松自由软件许可证。

最常见的开源许可证包括以下几种:

  • GNU通用公共许可证(GPL):这是最广泛使用的开源许可证之一,也是最为严格的许可证之一。GPL要求使用和分发该软件的任何衍生品必须遵循相同的GPL协议,同时公开源代码。

  • MIT许可证:是一种较为宽松的开源许可证,允许用户修改和使用软件的源代码,而且可以把软件用于商业用途。MIT许可证规定必须在软件中包含版权和许可证声明。

  • Apache许可证:Apache许可证是一个由 Apache软件基金会发布的自由软件许可证,是一种常见的开源许可证,它允许用户修改和使用软件的源代码,并且可以用于商业用途。Apache许可证还规定必须在软件中包含版权和许可证声明。

  • BSD许可证:这是另一种宽松的开源许可证,它允许用户自由地使用和修改软件的源代码,并且可以用于商业用途。BSD许可证没有要求衍生产品必须使用相同的许可证,也没有要求公开源代码。

以上介绍的4中许可证,其中GPL属于典型的著佐权许可证,MIT、Apache、BSD 都是宽松许可证。

除了以上这些许可证,还有其他的开源许可证,如Mozilla公共许可证、Eclipse公共许可证等。每种许可证都有其独特的条款和规定,使用者在使用开源软件时必须熟悉和遵守相应的许可证。
开源许可证如何选择

开源意味着免费吗?

虽然开源软件可以免费下载和使用,但并不是所有的开源软件都是免费的。有些开源软件的许可证允许商业使用和分发,而且可以收费。比如,Red Hat企业版Linux是一款开源操作系统,但它的商业版本需要收取许可费用。还有一些开源软件的许可证规定,使用该软件的衍生品或修改版本必须遵循同样的开源协议,必须在源代码的基础上继续开放源代码。

三、开源技术应用领域

  • 云原生技术:随着云计算的普及,云原生技术已成为了当前开源软件发展的重要趋势。Kubernetes、Docker等开源项目已成为云原生技术的代表。

  • 人工智能:开源软件在人工智能领域的应用也越来越广泛,例如TensorFlow、PyTorch、Keras等项目已成为人工智能领域的重要组成部分。

  • 区块链:区块链技术的出现推动了开源软件在分布式系统和密码学领域的发展,例如Hyperledger、Ethereum等项目已成为区块链技术的代表。

  • 开放数据和开放科学:随着数据和科学的开放性要求越来越高,开源软件在数据处理、科学研究等领域的应用也越来越重要。

  • 安全性和隐私保护:随着网络攻击和隐私泄露事件的不断发生,开源软件在安全性和隐私保护方面的应用也越来越重要。例如,开源的安全软件、加密技术等已经成为了当前安全性和隐私保护领域的重要组成部分。

  • 开源硬件:除了软件,开源硬件也越来越受到关注,例如Arduino、Raspberry Pi等已成为了开源硬件的代表。

四、总结

发展至今,开源早已不再局限于软件领域,它已经涵盖了开源硬件、开源数据、开放科学、开放设计等领域。开源也不再只是一个技术概念,它已经成为了一种文化和价值观,在这种文化和价值观的推动下,越来越多的组织和社区采用开源的方式来开展业务和合作;开源更是一种生态系统,在开源社区和组织推动下和更多开源社区人员的参与下,这个生态系统不断地自我调整和进化,以适应不断变化的需求和挑战。

参考文章:开源运动发展史与开源许可证(BSD、GPL、Apache、MIT、木兰(中国))的那些事儿 - 知乎、ChatGPT

版权申明:文章由神州数码武汉云基地团队实践整理输出,转载请注明出处。
微信公众号后台回复“技术合集”,可获得文章大礼包!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/422180.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

js排序算法

排序算法 - jsjs交换两个值的三种方法方式1:算术运算方式2:ES6解构方式3:数组的特性冒泡排序实现思路图解bubbleSort参考视频选择排序实现思路图解selectionSort参考视频插入排序实现思路图解insertionSort参考视频js交换两个值的三种方法 方…

javaSccript---call()、 bind()、 apply()的区别

call()、apply()、bind() 都是用来重定义 this 这个对象的 语法: function.apply(thisArg, [argsArray])//argsArray 是一个可选的数组 function.call(thisArg, arg1, arg2, ...)//arg1、arg2、... 是将传递给函数的参数列表 function.bind(thisArg, arg1, arg2, ..…

Webstorm是什么软件?你了解吗

WebStorm 是一款由 JetBrains 开发的集成开发环境(IDE),它是专门为开发 Web 应用程序而设计的。它提供了许多功能,例如代码自动完成、错误突出显示、重构、调试、版本控制等,可以帮助开发人员提高效率和代码质量。WebS…

Vector 高性能日志收集工具

文章目录Vector 简介相关概念事件Data modelEvent typesLog eventsMetric eventsTraces组件构成源转换接收器PipelineBuffersBackpressureRolesAgentDaemonSidecarAggregatorTopology分布式集中式基于流Vector 简介 Vector 是一种高性能的可观察性数据管道,可让组织…

天梯赛练习集-L1-031到L1-040–python - java

文章目录PythonL1-031 到底是不是太胖了L1-032 Left-padL1-033 出生年L1-034 点赞L1-035 情人节L1-036 A乘以BL1-037 A除以BL1-038 新世界L1-039 古风排版L1-040 最佳情侣身高差JavaL1-031 到底是不是太胖了L1-032 Left-padL1-033 出生年L1-034 点赞L1-035 情人节L1-036 A乘以B…

ChatGPT入门必知必会

2023年是真正意义上的AI之年,因为ChatGPT 2007年,iPhone开启了智能手机时代,2023年,我们迎来了人工智能时代,我们正处于历史的大转折点上,这也许是启蒙运动级别的思想和社会转折,工业革命级别的…

5万元内最经济双卡4090深度学习方案

深度学习双卡4090攒机方案 znsoft 一枚快乐的炼丹师 AMD 7950x 双4090方案 不到5万,目前最经济的双卡人工智能服务器方案 主板: 华硕 x670EA 吹雪 3000元 CPU: amd 7950x 3500元 内存: 32G4 128G DDR5 800x4 3200元 机箱: 追…

【eMMC学习记录】emmc相关名词解释和基础概念

名词解释 NAND Flash:半导体闪存 HDD:机械硬盘 FW:固件 Peak Power:峰值功率 Active Power:读写功耗 Idle Power:空闲功耗 standby/sleep Power Dev Sleep Power:SSD内部休眠功耗 RAM:掉电丢失数据 FGT:浮栅晶体管 FormFactor:尺寸标准件 AFA:全闪存整列…

线段树之延迟数组_20230410

线段树 之 延迟数组 前言 线段树是一类特殊的完全二叉树,其本质是对递归过程信息的再处理和再记忆,线段树构造完成后,可以脱离原始数组或线性表,直接对线段树进行查询或更新操作即可。线段树的储存结构和堆结构类似,…

springboot——集成elasticsearch进行搜索并高亮关键词

目录 1.elasticsearch概述 3.springboot集成elasticsearch 4.实现搜索并高亮关键词 1.elasticsearch概述 (1)是什么: Elasticsearch 是位于 Elastic Stack 核心的分布式搜索和分析引擎。 Lucene 可以被认为是迄今为止最先进、性能最好的…

软测界的黑科技,难道不来瞧瞧?

写在前面: 在当今互联网时代,软件已经渗透到了人们生活的方方面面,各种类型的软件应运而生,为人们的工作和生活提供了更便捷的服务。然而,随着软件的不断增长和复杂性的不断提高,软件测试变得越来越重要。…

字节跳动AI-LAB | 算法三轮技术面分享

作者 | 太蔡了整理 | NewBeeNLP面试锦囊之面经分享系列,持续更新中 可以后台回复"面试"加入交流讨论组噢写在前面楼主是C9末流渣硕一枚,现在已经正式确定offer要去我宇宙条了!当时为了准备面试几乎把网上头条的面经翻了个底朝天&am…

php(phar)反序列化漏洞及各种绕过姿势

概念: 序列化其实就是将数据转化成一种可逆的数据结构,自然,逆向的过程就叫做反序列化。简单来说就是我在一个地方构造了一个类,但我要在另一个地方去使用它,那怎么传过去呢?于是就想到了序列化这种东西&a…

句柄泄露的分析思路

基础知识 问题 什么是句柄? 句柄(file descriptor)即文件描述符,简称fd。Linux 系统中,把一切设备都视作文件,当进程打开现有文件或创建新文件时,内核向进程返回一个文件描述符。 FD作为文件句柄的实例,…

Nacos安装配置

一、下载Nacos Server。 通过Release页面进行下载,这里我以windows版本为例。 二、修改Nacos Server配置文件。 下载完成后,解压安装包后得到如下文件夹 为了配置集群,将nacos-server复制相同的两份,分别为命名为nacos-clust…

Java中有了equals(),为什么还有“==“

背景:Java中“一切皆是对象”,为什么还有非对象的“”? 在Java语言假设我们只进行OOP,所以Java代码都是由一个接着一个的类组成的。那么,对象之间比较,用equals()就可以了。 可为什么“”在代码随处可见呢…

海尔智家业绩尚可,但其智能家居“全场景”没做起来

‍数据智能产业创新服务媒体——聚焦数智 改变商业近日,海尔智家发布了其2022年年报,数据显示,2022年海尔智家实现收入2435.14亿元,同比增长7.2%;扣非归母净利润139.63亿元,同比增长18%,利润增…

消息队列kafka及zookeeper机制

目录 一、zookeeper 1、zookeeper简介 2、zookeeper特点 3、zookeeper工作模式及机制 4、zookeeper应用场景及选举机制 5、zookeeper集群部署 ①实验环境 ②安装zookeeper 二、消息队列kafka 1、为什么要有消息队列 2、使用消息队列的好处 3、kafka简介 4、kafka…

多模态模型学习1——CLIP对比学习 语言-图像预训练模型

多模态模型学习1——CLIP对比学习 语言-图像预训练模型学习前言什么是CLIP模型代码下载CLIP实现思路一、网络结构介绍1、Image Encodera、PatchPosition Embeddingb、Transformer EncoderI、Self-attention结构解析II、Self-attention的矩阵运算III、MultiHead多头注意力机制IV…

maya arnold自定义aov分层灯光组添加方法

一、问题描述: maya的arnold aov层灯光组(Light groups)运用有两种方法,总结一下使用笔记。灯光效果如下图: 二、制作过程: 1、灯光的布局主要用了两盏区域光,主光和辅助光。如下图: 2、主光为白色&am…