0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

开源软件的发行版和分支有什么不一样

开关电源芯片 来源:LCTT、Linux中国 作者:Jonathan Gershater选题 2021-08-27 09:28 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

开源软件的发行版和分支是不一样的。了解其中的区别和潜在的风险。

如果你们对开源软件有过一段时间的了解,一定曾在许多相关方面中听说过分支fork和发行版distribution两个词。许多人对这两个词的区别不太清楚,因此我将试着通过这篇文章为大家解答这一疑惑。

(LCTT 译注:fork 一词,按我们之前的倡议,在版本控制工作流中,为了避免和同一个仓库的 branch 一词混淆,我们建议翻译为“复刻”。但是在项目和发行版这个语境下,没有这个混淆,惯例上还是称之为“分支”。)

首先,一些定义

在解释分支与发行版两者的细微区别与相似之处之前,让我们先给一些相关的重要概念下定义。

开源软件[1] 是指具有以下特点的软件:

在特定的 许可证[2] 限制下,软件供所有人免费分发

在特定的许可证限制下,软件源代码可以供所有人查看与修改

开源软件可以按以下方式 使用:

以二进制或者源代码的方式下载,通常是免费的。(例如,Eclipse 开发者环境[3])

作为一个商业公司的产品,有时向用户提供一些服务并以此收费。(例如,红帽产品[4])

嵌入在专有的软件解决方案中。(例如一些智能手机和浏览器用于显示字体的 Freetype 软件[5])

自由开源软件free and open source software(FOSS)不一定是“零成本”的“免费free”。自由开源软件仅仅意味着这个软件在遵守软件许可证的前提下可以自由地分发、修改、研究和使用。软件分发者也可能为该软件定价。例如,Linux 可以是 Fedora、Centos、Gentoo 等免费发行版,也可以是付费的发行版,如红帽企业版 Linux(RHEL)、SUSE Linux 企业版(SLES)等。

社区community指的是在一个开源项目上协作的团体或个人。任何人或者团体都可以在遵守协议的前提下,通过编写或审查代码/文档/测试套件、管理会议、更新网站等方式为开源项目作出贡献。例如,在 Openhub.net[6] 网站上,我们可以看见政府、非营利性机构、商业公司和教育团队等组织都在 为一些开源项目作出贡献[7]。

一个开源项目project是集协作开发、文档和测试的结果。大多数项目都搭建了一个中央仓库用来存储代码、文档、测试文件和目前正在开发的文件。

发行版distribution是指开源项目的一份的二进制或源代码的副本。例如,CentOS、Fedora、红帽企业版 Linux(RHEL)、SUSE Linux、Ubuntu 等都是 Linux 项目的发行版。Tectonic、谷歌的 Kubernetes 引擎(GKE)、亚马逊的容器服务和红帽的 OpenShift 都是 Kubernetes 项目的发行版。

开源项目的商业发行版经常被称作产品products,因此,红帽 OpenStack 平台是红帽 OpenStack 的产品,它是 OpenStack 上游项目的一个发行版,并且是百分百开源的。

主干trunk是开发开源项目的社区的主要工作流。

开源分支fork是开源项目主干的一个版本,它是分离自主干的独立工作流。

因此,发行版并不等同于分支。发行版是上游项目的一种包装,由厂商提供,经常作为产品进行销售。然而,发行版的核心代码和文档与上游项目的版本保持一致。分支,以及任何基于分支的的发行版,导致代码和文档的版本与上游项目不同。对上游项目进行了分支的用户必须自己来维护分支项目,这意味着他们失去了上游社区协同工作带来的好处。

为了进一步解释软件分支,让我来用动物迁徙作比喻。鲸鱼和海狮从北极迁徙到加利福尼亚和墨西哥;帝王斑蝶从阿拉斯加迁徙到墨西哥;并且北半球的燕子和许多其他鸟类飞翔南方去过冬。成功迁徙的关键因素在于,团队中的所有动物团结一致,紧跟领导者,找到食物和庇护所,并且不会迷路。

独立前行带来的风险

一只鸟、帝王蝶或者鲸鱼一旦掉队就失去了许多优势,例如团队带来的保护,以及知道哪儿有食物、庇护所和目的地。

相似地,从上游版本获取分支并且独立维护的用户和组织也存在以下风险:

由于代码不同,分支用户不能够基于上游版本更新代码。 这就是大家熟知的技术债,对分支的代码修改的越多,将这一分支重新归入上游项目需要花费的时间和金钱成本就越高。

分支用户有可能运行不太安全的代码。 由于代码不同的原因,当开源代码的漏洞被找到,并且被上游社区修复时,分支版本的代码可能无法从这次修复中受益。

分支用户可能不会从新特性中获益。 拥有众多组织和个人支持的上游版本,将会创建许多符合所有上游项目用户利益的新特性。如果一个组织从上游分支,由于代码不同,它们可能无法纳入新的功能。

它们可能无法和其他软件包整合在一起。 开源项目很少是作为单一实体开发的;相反地,它们经常被与其他项目打包在一起构成一套解决方案。分支代码可能无法与其他项目整合,因为分支代码的开发者没有与上游的其他参与者们合作。

它们可能不会得到硬件平台认证。 软件包通常被搭载在硬件平台上进行认证,如果有问题发生,硬件与软件工作人员可以合作找出并解决问题发生的根源。

总之,开源发行版只是一个来自上游的、多组织协同开发的、由供应商销售与支持的打包集合。分支是一个开源项目的独立开发工作流,有可能无法从上游社区协同工作的结果中受益。

参考资料

[1]开源软件:https://opensource.com/resources/what-open-source

[2]许可证:https://opensource.com/tags/licensing

[3]Eclipse 开发者环境:https://www.eclipse.org/che/getting-started/download/

[4]红帽产品:https://access.redhat.com/downloads

[5]Freetype 软件:https://www.freetype.org/

[6]Openhub.net:http://openhub.net/

[7]为一些开源项目作出贡献:https://www.openhub.net/explore/orgs

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开源软件
    +关注

    关注

    0

    文章

    216

    浏览量

    16644
  • 硬件
    +关注

    关注

    13

    文章

    3638

    浏览量

    69177
  • 源代码
    +关注

    关注

    96

    文章

    2953

    浏览量

    70688

原文标题:分支与发行版有什么不同?

文章出处:【微信号:gh_3980db2283cd,微信公众号:开关电源芯片】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    华秋 KiCad 发行版 10.0.0 发布:初探 MCP

    概览 华秋发行版开源 的 、非商业化的,完全遵循 GPL 3.0 协议,且 跟随 KiCad 最新的分支同步更新 。原则是 通用功能优先贡献给 KiCad 主干 ,主干无法合并的功能才添加到
    的头像 发表于 04-01 11:19 1169次阅读
    华秋 KiCad <b class='flag-5'>发行版</b> 10.0.0 发布:初探 MCP

    为什么驱动直流电机跟振动直流电机对电源的干扰不一样,怎么解决。

    大佬知道为什么驱动直流电机跟振动直流电机对 12 伏电源的干扰不一样吗,怎么解决
    发表于 03-31 13:53

    WT2003B单芯片:如何让刷牙这件小事,变得不一样

    当电动牙刷学会"开口说话"——WT2003B单芯片如何让刷牙这件小事,变得不一样小伙伴们,又到了我们的#唯创WT语音芯片小讲堂时间!今天我们要聊的,是个每天都会发生在你浴室
    的头像 发表于 03-26 18:04 228次阅读
    WT2003B单芯片:如何让刷牙这件小事,变得<b class='flag-5'>不一样</b>!

    PCB板双面布局的DDR表底走线居然不一样

    的想法,所以前面的些走线长度和阻抗的优化调整意见给到他们的时候,他们也能够接受,并且表示赞同。当我们提出最后项优化方案后,他们就表示出了深深的不太理解了。 这条意见就是让表底层的走线特意做成
    发表于 12-11 10:43

    华秋 KiCad 发行版 9.0.6 发布:云端库添加华秋库存、价格

    发行版概览 华秋发行版开源 的 、非商业化的, 完全遵循 GPL 3.0 协议,且 跟随 KiCad 最新的分支同步更新 。原则是 通用功能优先贡献给 KiCad 主干 ,主干无法
    的头像 发表于 11-04 11:12 4651次阅读
    华秋 KiCad <b class='flag-5'>发行版</b> 9.0.6 发布:云端库添加华秋库存、价格

    不一样的展会,不一样的精彩 2025湾芯展圆满收官

    10月17日,2025湾区半导体产业生态博览会(2025湾芯展)在深圳会展中心(福田)圆满收官。全球600多家展商、超30场论坛,在6万平方米的展区内,打造场“不一样的展会”,呈现出“不一样的精彩
    的头像 发表于 10-29 16:56 1538次阅读
    <b class='flag-5'>不一样</b>的展会,<b class='flag-5'>不一样</b>的精彩 2025湾芯展圆满收官

    不一样的展会,不一样的精彩:2025湾芯展顺利收官

    内,打造场"不一样的展会",呈现出"不一样的精彩"。本届展会人气火爆,展期三天累计接待总量达到11.23万人次。参展企业集中发布年度新品数约2500件,新品发布与商业合作收获颇丰。   不一
    的头像 发表于 10-19 20:27 928次阅读
    <b class='flag-5'>不一样</b>的展会,<b class='flag-5'>不一样</b>的精彩:2025湾芯展顺利收官

    华秋 KiCad 发行版 9.0.5 发布:更多元器件库的选择

    发行版概览 华秋发行版开源 的 、非商业化的, 完全遵循 GPL 3.0 协议,且 跟随 KiCad 最新的分支同步更新 。原则是 通用功能优先贡献给 KiCad 主干 ,主干无法
    的头像 发表于 10-16 11:19 5w次阅读
    华秋 KiCad <b class='flag-5'>发行版</b> 9.0.5 发布:更多元器件库的选择

    华秋 KiCad 发行版 9.0.4 发布:属于您自己的云端器件库及模块电路库

    发行版开源 的 、非商业化的, 完全遵循 GPL 3.0 协议,且 跟随 KiCad 最新的分支同步更新 。原则是 通用功能优先贡献给 KiCad 主干 ,主干无法合并的功能才添加到发行版
    的头像 发表于 08-28 19:11 1.4w次阅读
    华秋 KiCad <b class='flag-5'>发行版</b> 9.0.4 发布:属于您自己的云端器件库及模块电路库

    华秋KiCad发行版 9.0.3 发布:图片生成符号、封装

    遵循 GPL 3.0 协议,且 跟随 KiCad 最新的分支同步更新 。原则是 通用功能优先贡献给 KiCad 主干 ,主干无法合并的功能才添加到发行版中,旦主干可以支持,即刻合并到主干 。 因此
    的头像 发表于 07-10 11:17 7201次阅读
    华秋KiCad<b class='flag-5'>发行版</b> 9.0.3 发布:图片生成符号、封装

    请问cyw920719b2q40evb如何设置每个蓝牙芯片的mac地址不一样

    请问下 cyw920719b2q40evb 如何设置每个蓝牙芯片的mac地址不一样呢? 谢谢
    发表于 07-07 06:34

    Linux发行版江湖探秘

    在当前信息技术高速发展的时代,开源操作系统凭借其开放、灵活和高可定制性,已成为各行各业的主流选择。而Linux作为全球最具代表性的开源内核,衍生出众多的发行版(Distribution),构成了
    的头像 发表于 06-06 16:56 922次阅读
    Linux<b class='flag-5'>发行版</b>江湖探秘

    想通过I2C访问闪存来测试对cy7c6541的访问,但是访问结果好像与datasheet不一样,怎么解决这个问题?

    我想通过I2C访问闪存来测试对cy7c6541的访问,但是访问结果好像与datasheet不一样。 是否有关于 cy7c6541 闪存或 eeprom 的数据表? 或者其他方法可以帮我完成访问测试(读取rom/flash里的值然后和标准值对比)?
    发表于 05-19 06:44

    cyusb3014 slave fifo模式In和Out缓存大小不一样时,显示错误怎么解决?

    cyusb3014 slave fifo 模式 In 和 Out 缓存大小设置不一样时(比如:U2P DMA缓存16K,P2U DMA缓存1K),可以测出来实际就是设置值,但在USB Control Center 显示的USB信息都显示 16K, 这个 需要怎么修改才能让USB信息是正确的呢?
    发表于 05-13 06:55

    华秋KiCad发行版 9.0.2发布:AI Copilot助力设计效率提升

    发行版概览 华秋发行版开源 的 、非商业化的, 完全遵循 GPL 3.0 协议,且 跟随 KiCad 最新的分支同步更新 。原则是 通用功能优先贡献给 KiCad 主干 ,主干无法
    的头像 发表于 05-10 11:18 1.2w次阅读
    华秋KiCad<b class='flag-5'>发行版</b> 9.0.2发布:AI Copilot助力设计效率提升