分类 观点 下的文章

按:本文来自硬核老王在 LLUG 2023 上海线下沙龙的演讲《高效开源(个人篇)》。

我要开源!

今天,我在这里与大家探讨一个我内心深处热爱的话题——开源。无论出于理想主义还是实用性的目的,我坚信开源的力量。它不仅代表着崇高的思想追求,更为个人和职业发展提供了巨大的机遇。

首先,开源与我们对协作和分享的天性相契合。开源的理念源于这样一种信念:知识应该为所有人所共享,通过携手合作,我们可以取得伟大的成就。这种高尚的理念与我们在教育和成长过程中所受的教育价值观完美契合。拥抱开源不仅仅是关乎技术,它反映了对世界的更广阔理解,以及我们在其中的定位。

此外,积极参与开源对我们的职业发展有着重要的影响。越来越明显的是,许多大型公司强调他们对开源的承诺。通过积极参与开源项目,我们不仅为社区做出贡献,还能提升我们的职业形象。在简历中写上自己的开源参与经历不仅仅令人印象深刻,还展示了我们的奉献精神、主动性和团队协作能力。这向我们的简历增添了一份很“酷”的感觉,使我们在竞争激烈的就业市场中与众不同。

总而言之,我对开源的热爱既源于其崇高的理念,也源于其潜力能够推动个人的成长。通过拥抱开源的理念并积极参与其中,我们可以开启知识和机遇的无限大海。让我们一同踏上开源之旅,发现无尽的可能。

每个人都可以爱开源

无论你是一个懂编码的人,还是一个具备艺术素养的人;无论你是一个善于社交的社交达人,还是一个擅长文字表达的人;又或者,你只是希望多一种新的体验。开源欢迎每一个人的参与。

如果你懂编码,无论是初学者还是经验丰富的开发者,你都可以贡献你的代码。参与开源项目,你可以帮助解决问题,改进功能,甚至发起自己的项目。你的代码将被广泛使用和赞赏,为开源社区做出重要贡献。

如果你有艺术素养,你可以参与开源项目的用户界面设计、图标设计等方面,为项目增添美感和易用性。你的创意和设计可以改善用户体验,为项目赋予独特的视觉风格。

如果你善于社交,开源社区需要你的贡献。你可以参与讨论、解答问题,提供支持和指引给其他开发者。通过分享你的经验和知识,你可以帮助其他人成长,构建一个更加友善和协作的开源社区。

如果你擅长文字表达,你可以成为开源项目的文档贡献者或博客作者。通过撰写清晰准确的文档和文章,你帮助他人理解和使用开源项目,推动项目的传播和发展。

最重要的是,如果你只是想多一种全新的体验,开源将成为你的理想选择。加入开源社区,你将结识志同道合的人,不断学习和成长,分享和接触到创新的思想和技术。

无论你是谁,无论你的技能和背景如何,开源都为你敞开大门。让我们一同参与开源,共同创造一个更加开放、协作和进步的世界。

你的第一步

让我们来讲讲你参与开源之前的第一步。

首先,了解开源是什么。开源不仅仅是一种软件许可证,它更是一种思想和文化。它鼓励知识的分享和合作,追求透明和开放的工作方式。同时,开源也是一种行为模式,要求贡献者共同协作、审查代码、提出改进,并为改进和发展项目做出贡献。

接下来,你需要找到适合你的“社区”。开源是一种群体行为,它由一群以特定方式组合起来的人构成。通过寻找相应的开源社区,你可以与志同道合的人共同工作,相互学习和支持。参与开源社区需要你积极参与讨论和互动,遵守社区准则和规范,以及尊重其他成员的意见和贡献。

最后,你需要知道如何加入。加入开源社区并不是一蹴而就的过程,而是一种渐进的参与。你可以开始通过报告问题或提出改进建议来参与,这样你可以逐渐熟悉项目的工作方式和社区的文化。随着你的参与和贡献增加,你可以逐渐获得更多的权限和责任,成为项目的核心成员之一。

参与开源需要耐心和热情,但它也为你带来了巨大的回报。通过参与开源,你将学习到新的技能,扩展你的专业网络,以及与全球范围内的人一同协作,共同推动项目的发展。

所以,准备好了吗?让我们踏出第一步,开始你的开源之旅吧!

0.0.1

现在,让我们一起来探索版本号 0.0.1,代表你参与开源的初步尝试。

首先,你需要寻求加入的方式。在开源社区中,你可以通过多种途径找到加入的机会,如GitHub、邮件列表、论坛和聚会。这些平台不仅提供了项目的代码和文档,还是交流和互动的重要渠道。通过参与这些平台,你可以与项目的贡献者和其他社区成员进行交流,并了解他们的工作方式和社区文化。

作为一个初学者,你可以先做一个观察者。入乡随俗,了解并尊重项目的规范和准则。学习项目的代码风格、开发流程和沟通方式。这样你将更好地融入社区,并有效地与其他成员进行交流。逐渐举手发言,提出你的观点、问题或建议。

接下来,重要的是踩下你的第一个脚印。你可以通过多种途径贡献自己的力量。你可以报告错误、提出功能请求或修补建议,帮助项目变得更好。你还可以贡献文档、进行本地化工作、提供艺术素材,从而提高用户体验。如果你具备编程技能,你可以提交代码补丁并参与技术讨论,为项目的发展和改进贡献你的一份力量。

切记,第一步并不需要完美。关键是积极参与和贡献,哪怕是小小的一步也能为开源社区带来积极的影响。通过持续的努力和学习,你将逐渐提升自己的技能,获得更多的机会和责任,成为开源社区的重要一员。

0.0.1 可能只是一个小小的版本号,但它标志着你在开源世界里踏出了重要的一步。让我们一同迈向开源之路,共同推动项目的发展和进步。

实践胜过理论

既然说到了开源,那何不将开源精神践行到这篇演讲中呢?因此,我们开发了一个网站,可以让大家用开源的方式来学习和实践开源。

这个网址也很好记:

https://opensource.pragmatic.guide/

这是一个用于实践上面的 0.0.1 版本的试验场,大家不但可以看到这份演讲稿,而且还可以对这份演讲稿进行贡献。

你可以对这份演讲稿的内容进行完善,也可以对它的演示内容和注释进行勘误。亦或,你还可以提供更具象征意义的插图和设计,甚至可以对这个网站的代码和框架进行修改。当然,我们也非常有计划将它翻译为各种语言,因此,如果你擅长其它语言,那更是我们所欢迎的。

通过在这个试验场的实践,你不但可以亲自体验如何进行开源贡献,而且你的每一点贡献都会给后来的贡献者提供帮助。

0.1.0

让我们迈向版本号 0.1.0,这一阶段鼓励你创建自己的“玩具”项目,真正体验动手创作的乐趣和分享的乐趣。

首先,制作你的第一个“玩具”。选择你喜欢的主题,运用你所学的知识和技能来实现它。你可以使用你喜欢的编程语言和开发工具,或者实现你所见到的有趣的功能。就像爱因斯坦的那个“丑陋小板凳”一样,重要的是你的创作过程和体验,而不仅仅是最终的成果。

在这一阶段,许可证并不是必需品。更重要的是展示你的作品,让大家喜欢。许可证可以回头再考虑,在你有了一个更严肃的项目时再去探讨。现在,专注于让你的“玩具”项目更有趣、更吸引人。

然后,让更多人知道你的项目。积极地与别人分享、宣传。告诉尽量多的人,吸引更多的人来一起玩耍。你的“玩具”项目是你开源旅程的第一个里程碑,分享它能够获得鼓励和反馈,也能够吸引其他人的兴趣和参与。

版本号 0.1.0 代表了你在开源世界中迈出的重要一步。通过制作你的“玩具”项目,你能够真正体验到创作和分享的乐趣。坚持下去,继续成长和学习,不断追求更高的版本号,你将不仅在技术上成长,还会体会到开源社区的温暖和互助的力量。

0.2.0

现在,我们来到版本号 0.2.0,你已经有了自己的“玩具”开源项目,可以考虑加入更大的项目,参与贡献。但是在这过程中,你会遇到各种困难和困扰,就像从乡下来到城市被那里的车水马龙吓到,不小心还可能被汽车撞到。但是,除了谨慎之外,千万不要灰心。

首先,找到一个大型项目或社区。这就像从乡下走向城市,你会面临新的挑战和复杂的环境。不要害怕“被车撞到”,这意味着你会遇到难题和困难。但是请记住,每个人都有从头开始的时候,坚持和努力,你会逐渐适应并超越。

接下来,找到一个贡献的方向。了解项目的现状,看看别人做了什么。从你能力范围内的领域开始,尽力去做那些你能做到的事情。参与讨论,寻求指导和建议,逐渐扩展你的影响力和贡献范围。

然后,发起一个拉取请求(PR)或合并请求(MR)。这是你贡献的重要一步。第一个贡献被接纳是一种意外收获,但也可能需要等待和再次尝试。不要灰心,持续改进你的贡献,与项目的核心成员保持沟通,继续努力。

在这个过程中,要保持谦虚和学习的心态。大型项目和社区往往拥有繁忙的开发进程和复杂的治理结构。了解并尊重项目的规则和准则,虚心接受反馈和指导,与其他贡献者和核心成员建立联系,逐渐构建你在项目中的地位和影响力。

版本号 0.2.0 代表了你进一步融入开源社区的一步。不论在面对困难时遇到多少坎坷,始终要保持积极的态度和勇气。你的贡献和成长将不仅仅为你自己带来收益,同时也为开源社区和整个技术世界带来积极的影响。

1、2、3……

现在,我们进入了版本号 1、2、3……,这时你需要评估你的开源之旅。你可以思考这是否是你真正想要的,它给你带来了什么样的收获?你之后会将这看作一种过往的经历,还是继续投入开源,将其作为生活中不可或缺的一部分?

首先,你需要思考这是否是你想要的。回顾一下你经历过的一切,你喜欢这样的参与和贡献吗?有没有让你感到失望或不满意的地方?你是否愿意继续为之付出?这是一个重要的自我评估过程,需要考虑你的兴趣、目标以及与其他生活方面的协调。

接下来,思考开源带给了你哪些收获。盘点一下你在这个过程中获得的成长、技能和人际关系。思考开源为你带来了什么样的价值和意义。这将为你自己决定是否继续投入提供参考。

最后,你需要决定是继续浅尝辄止还是将开源作为一种生活方式。这是一个个人选择,没有对错之分。或许你在开源中找到了快乐和成就感,愿意继续贡献。或者你可能决定尝试其他领域和兴趣,将开源作为一段美好的经历留在回忆中。无论你做出什么选择,重要的是要保持心怀感激和对开源社区的尊重。

版本号 1、2、3……代表你在开源世界迈出的更大的步伐。无论你选择何去何从,这段经历将成为你的宝贵财富。感谢你的参与和努力,无论你的未来道路如何,愿你在其中找到快乐和成长。

结语

开源是一种工作和生活的方式。你也许喜欢,也许不喜欢。

(本文得到了 ChatGPT 帮助,插图由 MJ 生成)

如果人们能停止争论谁算谁不算,那就会加倍了。

Linux 现在占据全球桌面操作系统市场略超过 3%,不包括 4% 多的 ChromeOS(虽然 ChromeOS 实际上 也是 Linux,但是它是“错误类型”的 Linux)。

Web 服务器统计聚合网站 Statcounter 上周宣布,截至 2023 年 6 月,Linux 占据 全球桌面操作系统使用量的 3%。然而,ChromeOS 的使用量仍然超过 Linux,这意味着 Linux 桌面占不到一半的 Linux 桌面市场的份额。如果你感到这话有点奇怪,那你是对的。

显然,Linux 桌面的使用量为 3.08%,落后于 ChromeOS 的 4.15%。问题在于,ChromeOS 实际上 也是 一种 Linux 发行版。它是一种奇怪的发行版,在几个方面不符合标准,它目前的版本基于 Gentoo Linux 构建,是几年前从基于 Ubuntu 转换而来的。

我们认为更准确的计算结果应该是,Linux 现在占据了 Statcounter 统计的使用数据的 7.23%,而 ChromeOS 占据了一半以上:总计 57.4%。这似乎是一个更积极的解释,Linux 粉丝应该会乐于接受,但显然事实并非如此。例如,Linux 布道网站 Linuxiac 在其报道中甚至没有 提到 ChromeOS。

(顺便说一下,我们怀疑 “未知” 类别下的 3.23% 操作系统很可能也是 Linux 用户,只是他们的极度谨慎遮掩了他们的用户代理或其他信息。)

为什么 ChromeOS 算进去呢?它是一个在标准 glibc C 库之上构建的 Linux 内核和 Linux 用户空间。你可以打开 Shell。如果你愿意,你还可以运行一个 Debian 容器,并在其中安装和运行任何 Debian 应用;我们的实验性 ChromeOS Flex 机器运行着 Firefox 和 DOSemu。

如果有人说 “安卓不是 Linux”,这还是有一定的道理的。你不能轻松免费地下载它,也不能在自己的通用个人电脑上运行它。尽管有一些实验性的基于安卓的桌面操作系统,但迄今为止它们都失败了。在其原生平台的智能手机和平板电脑上,你无法在安卓上运行普通的 Linux 应用程序。它是一种不同类型的系统,尽管从技术上讲,它是一个带有 Linux 内核的系统。但仅此而已。它甚至使用了奇怪的、非标准的、非 GPL 许可的 libc,名为 "Bionic"。默认情况下,除了内核之外,它没有任何其他类似 Linux 的东西。没有 Shell,没有桌面,没有 X11 或 Wayland,什么都没有。

但 ChromeOS 不是如此。在其独特的 GUI 层下(与 macOS 不同,它是 开源 的),它是一个相对标准的 Linux,可以直接在 x86 和 ARM 平台上运行标准的 Linux 应用程序。因此,它是目前最成功的桌面 Linux。

它不是典型的 Linux,因为典型的 Linux 是给怀有技术痴迷的黑客人群使用的工具,这种操作系统永远不会成为主流,除非有人强迫人们使用它。

ChromeOS 是一个去除了 Linux 特性的 Linux 桌面。没有关于分区的选择。没有奇怪的双启动机制。不用选择桌面环境或软件包管理器。甚至没有软件包管理器!

从重要的方面来看,ChromeOS 是一个主流、商业成功、精心设计的面向最终用户的桌面操作系统,而且它确实是一个 Linux 系统。

因此,自由开源软件(FOSS)阵营的力量自然对它充满敌意。当然他们愿意这么做。他们是如何表达这种蔑视呢?他们声称它不是一个“真正的 Linux”。

Unix 就像一种宗教:不知何故,它鼓励分裂和分散的派别,每个派别都否认其他派别的合法性。这几乎成了 Unix 的定义特征之一。

如果我们忽略所有商业版的 Unix,因为它们实际上都已经 不复存在,只关注 FOSS 阵营,有大约十几个竞争派别:NetBSD、FreeBSD、OpenBSD、DragonflyBSD、Minix、HURD 和 L4 及其 各种分派、Plan 9(9front、HarveyOS、Jeanne 等)、Inferno、xv6v7/86,当然还有 Linux 和数千个不同的发行版。

确切地说,只有 两个 基于 Linux 的操作系统在面向非技术用户的 GUI 系统中取得了大规模的商业成功。一个拥有 数十亿用户,另一个则有 数亿用户。它们都来自谷歌,并且都具有一个定义性的特征:自由开源软件(FOSS)世界拒绝接受它们。

ChromeOS 有两个版本:普通的 ChromeOS 只能通过购买专门为其设计的硬件来获得(就像苹果的 macOS 一样),而另一个是 ChromeOS Flex。Flex 过去被称为 Neverware Cloudready。Neverware 起源于 Hexxeh 对普通个人电脑 重新混编和重构 的 ChromiumOS。Hexxeh 开发了 ChromeOS Flow,它是 ChromeOS Flex 的直接前身:两者都是可以用在通用个人电脑硬件上的 ChromeOS。这是其中一个重要的方面,它表明 ChromeOS 就是又一个 Linux 发行版。

ChromeOS Flex 不像安卓。从重要的方面来看,它就是一个 Linux。它既是自由 开源 的,也有多个混编和重构版本。它可以在通用的具有普通 BIOS 或 UEFI(包括安全启动)的设备上运行。它有自己独特的桌面环境。你可以打开一个 Shell,并安装和运行任何任意的 Linux 应用程序。

外观上它看起来像一个 Linux,行为也像一个 Linux,并且像任何其他桌面 Linux 一样运行。它基于通用的 Linux 内核,使用与其他桌面 Linux 相同的 Linux 二进制文件执行 Linux 相关的操作。

它没有 systemd,但感谢伟大的 Torvalds 大神以及他的使徒圣·Cox,它还不是 Linux 发行版的要求。它使用的是 upstart,这是一种最广泛使用的初始化系统之一。

当某种特定形式的基于 Linux 的操作系统开始变得主流,并被 大约一半 的人使用时,Linux 世界的真正信徒们会放弃它,这完全符合 Linux 世界的特点。安卓不是 Linux。好吧,他们某种程度上是对的。

但是对于 ChromeOS,尤其是 ChromeOS Flex 来说呢?当然,所有的倡导者都会声称它不是真正的 Linux,但随之而来的很快就变成了一个“没有真正的苏格兰人”的争论。红帽族认为 Ubuntu 是垃圾,Debian 迷们认为其他一切都是垃圾,Arch 族认为自己是真正的前沿,Slackware 爱好者认为其他人都是新手,而 NixOS 的那些人则认为其他所有人仍然停留在某个石器时代……

(题图:MJ/3dcb3470-0b08-41bf-b826-be5afac57775)


via: https://www.theregister.com/2023/07/18/linux_desktop_debate/

作者:Liam Proven 译者:ChatGPT 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

当你开始在桌面上使用 Linux 时,你可能会选择像 Ubuntu 或者 Linux Mint 这样的 对初学者友好的发行版

随着你逐渐熟悉 Linux 并且开始喜欢上它,你会加入各种社交渠道上的 Linux 相关社区,关注分享 Linux 内容的网站。而当你这样做的时候,你也会发现一些新的、相对不知名的发行版。

因为你对这个领域还比较陌生,你可能会被诱惑尝试一个接一个的发行版,从而陷入“发行版快闪”的陷阱。

让人心动的发行版

于是你开始问自己这个问题:“我应该使用一个未知的发行版,还是像大多数人那样使用流行的发行版呢”?

简单的答案是坚持使用主流的发行版,但真正的答案需要你自己思考。

使用新的、较为冷门的发行版存在的问题

使用“全新的、个人开发者的发行版”存在一个主要问题,那就是不确定性。你无法确定这个项目将会存在多久。可能是一年,也可能是一个月。

我曾经见过几个发行版出现这种情况。比如,SemiCode OS 由于为程序员而创建而变得流行。类似的发行版 Emperor OS 最近消失了。这只是被停止开发的发行版长列表中的几个例子。

你可能会说,一个有一定用户基础的旧发行版也可能出现同样的情况。这是对的,但通常情况下,有一个社区和多个开发者参与项目。这样你就有一定的保证。

由于开发者的经验不足,新的发行版可能会缺失关键功能。例如,在撰写本文时,看起来令人惊艳的 Garuda Linux 官方并不推荐双启动。

尽管 Garuda Linux 拥有相当数量的支持者和几名开发者参与项目,但仍存在这个问题。

大多数新的发行版没有提供实质性的内容

你经常会遇到一些全新的发行版,它们基于一些其他流行的发行版,比如 Ubuntu 或 Arch Linux。唯一的不同可能只在于默认的应用程序、主题和壁纸。

如果它是一个“面向程序员的发行版”,它可能会默认安装一些编程应用程序。如果它是一个“游戏发行版”,它可能会默认安装一些工具,如 Steam、Wine 和 Lutris。你不太可能在图形或硬件方面看到真正的优化。

这就是为什么很多人说,已经有了数百个发行版的拥挤空间中,我们不需要更多的发行版。毕竟,在主流发行版中安装所需的应用程序并不难。

我反对这些新的发行版吗?

绝对不是。

你可能会觉得几乎没有提供任何价值的新发行版是多余的。你可能是对的,因为这些项目可能对你来说无关紧要,但对于开发它的人来说,它们是重要的。

你有没有试过学习一门编程语言?第一个教程通常是一个“Hello World”的程序。即便是高级程序员也是从“Hello World”开始的。

婴儿不会直接开始跑步。到达那个阶段需要时间。

我对这些项目的看法也是一样的。如果有人热爱 Linux 并且对创建自己的“操作系统”感到兴奋,就让他们去做吧。如果你不想鼓励他们,也不要泼冷水。

大多数项目都是从相同的方式开始的。Linux Mint 是一款非常受欢迎的 Linux 发行版。它于 2006 年开始,并以 Kubuntu 为基础。

真的需要“一个基于 Ubuntu 的类似发行版”吗?实际上并不需要。但看看 Linux Mint 如今的地位。

那么,你应该使用新的发行版还是不应该使用呢?

总体而言,这取决于你自己。

如果你不喜欢频繁格式化你的系统,并且希望继续正常生活,那就坚持使用主流的发行版。

如果你喜欢实验,不介意频繁更换操作系统并且愿意冒着搞乱系统的风险,那么你可以尝试新的发行版。就个人而言,我建议你在虚拟机中尝试它们。如果你能有一台空闲的系统专门用于实验,那就更好了。

你也可以使用那些在社区中存在多年,但不如 Ubuntu、Mint、Fedora 和 Debian 等发行版流行的发行版。像 PCLinuxOSPuppy Linux、Peppermint OS 等项目拥有一个较小但活跃的社区。它们绝对是一个可靠的选择,即使用于你的主系统也没有问题。

在选择发行版时,除了基础发行版外,你还应该看看该发行版是否经常更新,并拥有一个活跃的社区。你只需要查看该项目的论坛,看看社区中是否有足够的活动即可。

你更喜欢哪种类型的发行版?

这是我在选择新的较为冷门发行版和流行的主流发行版之间提出的想法和建议。

那你呢?你更喜欢哪种类型的发行版?

(题图:MJ/930988c0-443d-4d61-a603-1466a5e33d85)


via: https://news.itsfoss.com/obscure-or-maintsream-distro/

作者:Abhishek 选题:lujun9972 译者:ChatGPT 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

一些系统管理员、网页设计师、工程师和程序员分享了他们在命令行上经历的最可怕的经历。

每个开发人员内心最害怕的事情是什么?在你的代码开始运行前的宁静时刻,什么最让你感到恐怖?你见过或写过最可怕的代码是什么?

错误的权限

我负责一台服务器,然后我通过 FTP 上传了一些东西。显示了一些奇怪的东西,所以我想权限可能需要改变一下。

不用说,我愚蠢地关闭了读取权限并使网站瘫痪了。(当没有人能访问时,网站就没啥用了。)

我花了几个小时才修复好。这是很多年前我在一个机构担任唯一的网页开发人员时的事情。

Miriam Goldman

混乱的 HTML

我曾经因 WordPress 的默认主题有可用的更新而使一个客户的网站瘫痪,这个客户当时是《华尔街日报》畅销书榜上的一位作者。

他的开发人员在主题中硬编码了 HTML,而不是创建一个子主题。而我运行了更新操作。

那个年代,人们不容易实现每晚备份,所以我花了几个小时打电话给托管提供商。像分阶段发布、子主题、每晚备份或手动备份这样的东西现在都很常见,还有自动更新和手动回滚的能力。但在那个时代并不常见。

Courtney Robertson

密钥不再秘密

我想我们中的许多人在公共代码中看到过密钥。或者另一个经典案例:我的一个朋友从开发服务器向 10 万个用户发送电子邮件。

John E. Picozzi

Unix 混乱

这是一个 Unix 的故事。今天在 Linux 中已经修复了这个问题。

在我要向管理层进行一个重要的新组件演示的前一天,我需要更新我的代码(这是在 Git 存在之前的年代)。我进入我的主目录,找到项目目录,然后删掉了一切。不幸的是,在那个版本的 Unix 中,该命令会跟随符号链接进行删除,并且我有一个链接指向代码的最新版本(并不是所有代码都在源代码系统中,因为它还处于测试阶段)。

好在一天后,大楼里出现了网络问题,因此演示推迟了一天,我们设法恢复了代码。那是三十多年前的事情。即使现在我也不知道网络问题是巧合,还是我们的系统管理员试图帮助我们(如果是这样,那确实奏效了!)

Josh Salomon

命令式编程

看到 CSS 文件中到处都是 !important; 而不是正确使用特异性。

我曾经不得不覆盖和定制一个 WordPress 主题几乎所有的 CSS,因为该网站的所有者坚持不换一个更接近他想要的设计的新主题。

那个主题开发者最后一次更新是在 2018 年,但网站至今仍在使用。

Christi Nickerson

错误引用

在我以前的职位上,我的前任在代码注释中引用了 Journey 的《Any Way You Want It》歌词错误。

Ben Cotton

Algol68 的幽灵

在上世纪 60 年代末到 70 年代初,Algol68 的复杂性使许多有影响力的人望而却步,包括 Niklaus Wirth 在内。我记得当时最常见的抱怨之一是:“谁能为这样一个复杂的怪物写一个编译器呢?” 但是事实上,许多人都开发过。此外,许多在 Algol68 中发展出来的或至少以形式化的概念出现在后来的其他语言中,尤其是在 C 语言和 Bourne shell 中(感谢 Steve Bourne)。

Algol68 的一些概念并没有经过很好的演化。例如,处理“书”和“章节”等的 I/O 概念在今天有些奇怪。像将字符集等问题留给实现本身处理似乎相当过时。

但是其中一些概念在今天仍然极为重要,例如产生值的表达式、强类型化(Algol68 中称为“模式”的类型)、堆内存和垃圾回收、运算符的定义和重载等等。

有好的地方,也有不好的地方。

Algol68 是一门值得学习的语言,即使只是为了了解现代计算中的许多想法的来源以及在路上丢失了多少。

Chris Hermansen

密码暴露

我为一个新的支持客户进行技术审计时,发现之前的开发人员将密码以明文形式存储在整个主题中,并使用了糟糕的方式连接到远程数据库。他们的 composer 文件也异常庞大。每次我尝试在本地运行网站时,需要花费五分钟的时间。过时的依赖项、我无法访问的仓库,问题还有很多。

Miriam Goldman

迷宫般的代码

我见过的最可怕的代码是一段 PDP-11 汇编语言,位于一个名为 RSTS 的操作系统的内核中,今天已经没有人记得它了。当时源代码记录在胶片上,我跟随这段代码路径经过几个转折,试图弄清楚正在发生的事情。然后,我遇到了这条指令:

MOV R5,PC

我举起双手尖叫了起来。真的,我尖叫了。办公室里的人以为我撞到头了,或者心脏病发作了。

那个年代,内存是宝贵的,MOV 指令使用的内存比 BR(即“分支”)指令稍微少一点。将寄存器 5 的内容复制到程序计数器实际上是一个廉价的无条件跳转,跳转到寄存器 5 中存储的地址。但是,我不知道寄存器 5 中存储了什么,也不知道如何找到它。

时至今日,将近 40 年过去了,我仍然想知道是谁写出这样的代码,以及如何调试它。

Greg Scott

差一个

我在自动化行业工作,其中的可编程逻辑控制器(PLC)使用一些相当奇怪的语言进行编程。

让我印象深刻的一个例子是,在 ST 语言中,你可以定义数组从索引 1 开始。这意味着第一个元素在位置 1 而不是 0。每当我看到这个时,我都会抓狂。

Stephan Avenwedde

分歧

有一次在一个从测试环境到生产环境的发布期间,我让 MongoDB 实例停机了 40 分钟。我们的测试环境与生产环境有所分歧。只是一个数据库配置的差异,没什么太激动人心的东西。但这是一个很好的教训,要确保你的测试和生产环境保持同步!

Em Nouveau

神秘的低语

这是一个仍在运行且正常的项目,但我已经修改了代码以隐藏源代码。

for(int c =0; y < yyy && c < ccc; y++, c++){// some code here}

乍看起来,它似乎是一个无害的循环。但也许你会问为什么有两个变量、两个停止条件以及两个增量。然后你会意识到只有一个初始化器,第二个变量(y)在这个循环之前在不同的代码块中被初始化。

当我意识到这一点时,我花了大约一个小时的时间来理解为什么代码是这样编写的,以及它应该如何工作。显然,代码中没有 c 的注释,并且变量名是无意义的(代码中被称为 cy 有一个稍微具有意义的名称,但不足以解释它的意义,即使是今天我也不知道它的作用)。

Josh Salomon

关键数据

大约在 1980 年,我在大学毕业后得到了我的第一份工作。我是印第安那州一所工程学院的计算中心副主管。这是一个两人 IT 部门的辅助职位。我在 PDP-11/40 上处理行政计算,使用 RK05 可移动的“披萨碟”磁盘驱动器(每个驱动器容量为 2.5 MB)。每个行政办公室都有一个驱动器,而我工作的一部分就是每周进行磁盘对磁盘的备份。但是那个夏天我很忙,连续四周没有备份过注册办公室的数据。然后我意识到了风险,所以我确保开始进行每月的磁盘到磁带备份。

我从 11/40 上卸载了注册办公室的磁盘驱动器,然后装在了带有一台 9 磁道磁带驱动器的 11/70 上,并开始进行备份。几分钟后,我听到磁盘驱动器里传来一阵刮擦的声音。是的,磁头撞上了磁盘。在短短几分钟内,我摧毁了所有注册办公室的数据,以及最新的备份 —— 一个四周前的 9 磁道磁带。

当我不得不面对注册办公室主任,并告诉他我已经摧毁了他所有的数据时,那一刻真的很尴尬。

如今,我告诉新的 IT 人员,只有在你摧毁了某人的关键数据,而且无法恢复时,你才算是专业人士。永远记住你胃里的那种感觉。

Greg Scott

愤怒的暴民

一个客户篡改了 WordPress 核心代码以添加后续在常规更新中发布的功能,但他们却不明白为什么在每次尝试更新 LearnDash 时网站都会崩溃。(他们也不喜欢我们的报告指出了他们糟糕的开发实践。)于是他们赶我们走,称我们是骗子和无能之辈。但直到今天,我仍然具有他们域名的委派访问权限,以及两个域名的生产和开发环境的 wp-admin 访问权限。

此外,尽管我们给了一个加密位置的链接用于共享访问凭据,他们却通过电子邮件发送了我们的登录信息。

Laura Byrne

不要忘记备份

我在企业网络上的工作经验不多,所以我没有使任何服务器崩溃过。然而,作为一个年轻人,我曾经试图帮助一个人解决 IT 问题,不知何故导致 Windows 95 崩溃,并不得不免费重新安装。

作为一个非常年轻的 Amiga 用户,我最悲伤的时刻之一是我的保存磁盘坏掉了,里面装满了所有我的文件,原因是某种机械故障。如今,我已经学会更好地备份我的重要个人文件。

Rikard Grossman-Nielsen

万恶之源

当时我刚开始接触 Linux,之前我用的是 DOS,借助 Norton Commander 进行操作。后来,Midnight Commander 发布了,我非常喜欢它。当时我使用的 Linux 发行版(Jurix)没有打包 Midnight Commander,所以我自己从源代码编译了它,就像我那个时候使用的其他软件一样。它完美地运行了,突然间我在 Linux 上感到更亲切了。

这不是一个恐怖的故事。

我的同事告诉我不要以 root 身份运行 Midnight Commander,无论它有多么让人舒适。但是 root 权限很方便,感觉更像 DOS,所以我无视了他们的建议。结果就是:我意外地删除了整个 /etc 目录的内容。在那之前,我从来没有用过备份功能,但是那一天我意识到备份实际上是有用的。

27 年过去了,我仍然记得这个故事,并定期进行备份。

Peter Czanik

幻觉

最糟糕的项目是一家代理机构让我做的一个一屏的页面,一开始看起来很简单。我说我可以用一些 HTML、CSS,也许加点 JavaScript,将其组合起来。但他们特别要求我不要这样做。他们希望我将设计图剪切下来,然后使用 CSS 在页面中定位这些元素。他们还要求我将所有的 CSS 内嵌到 HTML 文件中,因为他们真的只想要一个页面

其中的文本都不是真实的文本。

除了定位这些图片所需的元素之外,其他都不是真正的 HTML 元素。

我告诉他们,设计足够简单,我可以用实际的代码将其组合起来,但他们不想要那样。他们只想让我花时间将这些碎片拼凑在一起,然后转而做其他项目。他们让我做了两个类似的一屏网站。

这实在伤害了我的前端灵魂。为我来说,这个项目在身体上是痛苦的。这是一个试用合同职位,当他们给我提供全职工作时,我礼貌地拒绝了。

Rachel Vasquez

内存破坏

对我来说,最可怕的事情就是 ANSI C99 中可能发生的内存破坏。在一个屏幕录像中,我捕捉到了这个(不完全是)超自然现象,可以在这个 YouTube 视频片段 中观看到。

Image of gseqencer before memory corruption.

标有 file 的 GtkEntry 显示了一些随机的符号。我检查了一下 代码,但没有发现任何问题。

ags_export_soundcard_open_response_callback() 函数是一个回调函数,用于处理 GtkFileChooserDialogresponse 事件。(顺便说一句,用于解决这个问题的工具是 valgrind。)

Image of gsequencer after memory corruption.

Joël Krähemann

Python 的恐怖之处

我见过的最可怕的编程特性是 Python 中对 dict 的访问权限。在运行时改变对象的类型违背了我的编程行为准则。

缝合怪网络

在 2006 年,我用 Fedora 和一些脚本构建了一台防火墙,并说服了一家托管在合作数据中心的大型网站的客户,将其专有的防火墙替换为我的防火墙。我建立了系统并在一个清晨的 4 点到达现场进行安装。那时我才发现(饱受痛苦地)他在防火墙后面有一个带有公共 IP 地址的负载均衡器。客户经历了一个 5 分钟的停机时间,但我重新连接了一切恢复到原来的状态。

我发现了一种通过使用代理 ARP 来处理他复杂的网络配置的方法。这个想法是,当外部世界的任何人发出负载均衡器的 ARP 请求时,我会进行回应。几天后,我再次在凌晨 4 点出现并安装了我的系统。这次,我把整个数据中心的所有设备都给搞宕了。我设置了我的代理 ARP 来回应所有请求,因此局域网上的所有流量最终都找到了我并消失在黑洞中。

当我意识到我做了什么时,我把一切都恢复到原来的状态。但是损害已经造成。如果有人在 2006 年的一个清晨美国中部时间大约 4 点钟尝试浏览你最喜欢的网站,它没有响应,那可能是我的错。我通过在机架上安装并启动一个系统,让整个数据中心的网站都宕机了。

网站运营商愤怒地抗议,而我则黯然离开。他们再也没有邀请我回去再试。真是遗憾,我觉得再试试桥接可能会起作用。

Greg Scott

你的恐怖故事

你最喜欢的与技术相关的恐怖故事是什么?在评论中告诉我们(但要友善,并更改项目名称以保护无辜者!)


via: https://opensource.com/article/22/10/technology-horror-stories

作者:AmyJune Hineline 选题:lkxed 译者:ChatGPT 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

使用这些步骤来为你的第一个或接下来的项目打下坚实的基础。

开源 是一个蓬勃发展且有益的生态系统,它通过分散模式和社区贡献开发的软件,公开解决社区和行业问题。

随着这个生态系统的爆炸式发展,许多开发者想要参与并且构建新的开源项目。问题是:如何成功实现这一目标呢?

这篇文章将会揭秘开源项目的生命周期与结构。给你一个对开源项目内部运作的概述,并根据我个人的经验,向你展示如何构建一个成功和可持续发展的项目。

对开源的简单概述

开源促进会 Open Source Initiative (OSI)提供了对“ 开源 Open Source ”的正式、详细的定义,但是维基百科提供了一个很好的总结:

开源软件是指根据许可证发布的计算机软件,版权持有人授予用户使用、研究、更改和向任何人、为了任何目的分发软件和它的源代码的权利。

开源软件通常在网络上有公开的代码,它由多人合作或一人开发。这就需要与来自不同地区、不同文化和不同技术背景的人合作,而且往往是远程合作。

开源项目的构成

就像人类的身体,一个开源项目由多个结构组成,这些结构构成了整个系统。我认为它们是两个分支:人员(微观)和文档(宏观)。

分支一:人员

通常,一个开源项目包括以下人群:

  • 创建者:创建项目的人
  • 维护者:积极管理整个项目的人
  • 贡献者:为项目做贡献的人(像你一样的人!)
  • 用户:使用这个项目的人,包括开发者和非技术客户
  • 工作组:将贡献者分成特定领域的小组,专注于围绕特定主题领域(如文档、指引、测试、DevOps、代码审查、性能、研究等)的集合。
  • 赞助人:为项目提供资金支持的人

当你准备构建一个新项目时,你需要考虑以上列表中的每一个群组。你对他们每个人有什么计划?

  • 对于维护者,请确定任用维护者的标准。通常,积极的贡献者就是最适合的维护者。
  • 对于用户和贡献者,你需要准备可靠的文档、引导流程和他们使用你的项目取得成功所需的一切。
  • 对于工作组,请确定你是否需要它们,以及你的项目将来如何有逻辑地拆分。
  • 最后,对于赞助人,你必须提供足够的数据和有关你项目的信息,以便他们选择赞助你。

你不必在你项目的起始阶段解决上面所有问题。然而,在早期阶段思考它们是很明智的,这样你就能打下正确的基础,确保未来的扩建项目能够站稳脚跟并取得成功。

分支二:文档

开源项目通常包括下列文档,通常为纯文本或 markdown 格式:

  • 许可证(License): 这份法律文件解释了如何以及在何种程度上可以自由使用、修改和共享本项目。OSI 网站上有 OSI 认可的许可证列表。如果没有明确的许可证,你的项目在法律上就不是开源的!
  • 行为准则:该文件概述了任何决定以任何方式参与项目的人的规则、规范、可接受做法和责任(包括当有人违反任何规则时会发生什么)。贡献者公约 是一个很好的示例,它是开源的(采用知识共享许可协议)。
  • 自述文件(README):这个文件向新用户介绍你的项目。在很多 Git 托管网站上,比如 GitLab、GitHub 和 Codeberg,自述文件会显示在仓库的初始文件列表下。这里通常会提供文档,以及其他必要文档的链接。
  • 文档(Documentation):这是一个包含所有本项目文件资源的文件或目录,包括指南、API 参考、教程等。
  • 贡献指南(Contributing):包含一份说明如何为项目做出贡献的文件,包括安装指南、配置等。
  • 安全(Security):包括一个解释如何提交漏洞报告或安全问题的文件。

此外,一个项目通常有用于议题、支持和协作的网页。

大致包括:

  • 议题或错误报告:用户可以报告错误的地方。该页面还为开发人员提供了一个地方,让他们可以分配自己的任务来修复一个或多个错误。
  • 拉取或合并请求:提供功能增强建议和错误解决方案的地方。这些补丁可以由任何人创建,由维护者审核,然后合并到项目代码中。
  • 讨论:维护者、贡献者和用户讨论开源项目的地方。它可以是一个专门的网站,也可以是协作编码网站中的一个论坛。

大多数项目还通过在线聊天的形式为社区成员之间的对话和互动提供交流渠道。

许可证

许可证 也许是创建开源项前需要考虑的最简单但也是最重要的标准。许可证定义了允许使用、修改和共享项目源代码和其他组件的条款和条件。

许可证包含大量的法律术语,很多人并不完全理解。我使用 choosealicense.com,它可以帮助你根据你的目标社区、你从使用你的代码的人那里获得补丁的愿望,或者你允许别人使用你的代码而不分享他们对你的代码所做的改进来选择许可证。

图片由: (Bolaji Ayodeji, CC BY-SA 4.0)

这为何时使用 MIT 许可或 GNU GPLv3 许可提供了指导。它还建议为社区做出贡献的人们使用该社区所偏好的许可证。该图表还指出,还有更多许可证可供选择。网站 choosealicense.com 有一个基于文本的版本,可以链接到更详细的信息。

创建一个开源项目的 13 个阶段

现在是关键问题:如何开始开源软件项目?

以下是我所认为的开源项目的各个阶段。

  1. 集思广益,撰写提纲,妥善记录。
  2. 开始根据你的想法进行开发。这通常包括确定要使用的正确工具和技术栈、编写一些代码、对代码进行版本控制、调试、喝点咖啡、在 StackOverflow 上闲逛、使用其他开源项目、睡觉、构建一些东西来解决确定的问题 —— 或者只是为了好玩!
  3. 在本地测试项目,根据需要编写一些单元测试和集成测试,根据需要设置 CI/CD 管道,创建一个暂存分支(在合并到主分支之前测试代码的测试分支),并完成部署项目所需的其他工作。
  4. 编写 良好有效的文档。这应该包括你的项目是做什么的,为什么它是有用的,如何开始使用它(使用、安装、配置、贡献),以及人们在哪里可以得到支持。
  5. 确保记录所有你希望使用的代码约定。使用诸如 代码检查工具 Linter 、代码格式化工具、Git 钩子和 注释规范化工具 Commitizen 命令行工具等工具来执行这些约定。
  6. 选择合适的许可证并创建自述文件。
  7. 在互联网上发布项目(可能最初是一个私有的资源库,在这一步将其公开)。
  8. 建立发布和记录更新日志的流程(你可以使用 Changesets 等工具)。
  9. 向全世界推广项目!你可以在社交媒体上发帖、创办新闻简讯、私下与朋友分享、进行产品发布、现场直播或其他任何你知道的传统营销策略。
  10. 使用任何可用的融资平台寻求资金支持,如 Open Collective、GitHub Sponsors、Patreon、Buy me a Coffee、LiberaPay 等。当你在这些平台上创建账户时,请在项目文档和网站中添加相关链接。
  11. 围绕你的项目建立一个社区。
  12. 在必要时,考虑引入工作组,将项目管理分成合理的部分。
  13. 不断实施新理念,维持项目背后的资源和人员。

随着项目的进展,对项目的不同部分进行评估非常重要。这将为你提供可用于评估和未来发展战略的数据。

现在开始一个项目吧!

我希望这篇文章能帮助你推进你一直在考虑的项目。

你可以将其用作指南,并在构建你的一流开源软件项目时填补我遗漏的任何空白。

(题图:MJ/a22b4011-9b1e-41e6-a73f-bdeac4858007)


via: https://opensource.com/article/22/9/build-open-source-project

作者:Bolaji Ayodeji 选题:lkxed 译者:wcjjdlhws 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

红帽公司将其源代码放在付费墙后面的最新决定,今天可能会对其直接竞争对手造成一定伤害,但对红帽公司自身而言,这将对之后产生负面影响。

红帽关闭源代码

基于我对 RHEL 和其他红帽产品的热爱,我不得不现在表达一些严厉的看法。之所以这样做,是因为我希望 RHEL [及/或其克隆版] 对每个人都是 可获得的

请原谅这次我用词有些激烈,因为我从内心不希望 RHEL 成为 对业余爱好者不可及 的产品。免费的 RHEL 开发者许可证只是转移话题而已,相比于 真正的 RHEL 克隆版存在的时候,它削弱了 广大动手爱好者社区 的热情。

?️ 对于我的使用场景来说,使用免费订阅的 RHEL 使我感到满意。实际上,我正在使用的就是免费订阅。本文是关于如果保持这种状态会对 RHEL 产生怎样的影响。

快速回顾:事情是如何走到这一步的

我相信你现在都已经知道为什么红帽公司最近频频出现在新闻中:

但是,如果你对正在发生的事情一无所知,让我给你一个快速时间线的指引,帮助你理解:

  1. 红帽公司拥有一个出色的 Linux 发行版,名为 红帽企业 Linux Red Hat Enterprise Linux (RHEL),支持周期长达 10 年。
  2. 与其他任何 Linux 发行版一样,用于构建 RHEL(或 RHEL 的 克隆版)的源代码是公开可用的。
  3. CentOS 利用上述源代码,去除商标,并创建了一个几乎 1 比 1 的 RHEL 拷贝。(我说“几乎”是因为 RHEL 的商标 必须 被删除。)
  4. 那些不愿意支付费用只是为了第一次尝试 RHEL 的爱好者社区,现在可以使用 CentOS 来看看是否喜欢它。
  5. 这个人中的一部分人随后向他们的高层管理人员介绍了 RHEL 及其 通过 CentOS 初步体验 到的卓越表现,他们很可能转向在 RHEL 上支持他们的产品或在部署中使用 RHEL。
  6. 由于 CentOS 是免费的,爱好者社区得以扩大。像 Jeff Geerling 这样的人使用 CentOS 来教授对 扮演系统管理员感兴趣 的新一代爱好者,让他们了解他的 开源存储库 中诸如 Ansible 之类的很棒的内容。
  7. CentOS 的二进制文件在 RHEL 更新后几周才发布。因此,红帽收购了 CentOS,以确保 CentOS 不会落后于 RHEL 的更新。
  8. 几年后,CentOS Stream 的惨淡出场,导致了 CentOS 的消亡。
  9. Rocky LinuxAlma Linux 出现填补了 CentOS 留下的空白。它们使用的是公开可用的 RHEL 源代码。
  10. 红帽公司开始限制源代码的访问,只允许其付费客户以及任何拥有免费的开发者订阅的人访问。
? 我特意没有提到 IBM 收购红帽的事情,因为如果红帽的某个人有勇气在 官方场合 公开说,“只是简单地重建代码,没有增加价值或以任何方式改变代码,对开源公司来说都是真正的威胁。”,他们肯定也可以直承 IBM 参与了这些决定。但几乎每个红帽员工都公开否认了这种指责。所以我也不相信 IBM 自己搬起石头砸自己的脚。但你可以根据自己的心来决定是否相信。
不,当我说 IBM 可能没有参与这个决定时,我并不是在讽刺。他们 有可能参与,但我不这么认为。

亲爱的红帽公司,你刚刚做了什么?

你向社区提供一款免费的产品(CentOS)。然后你在提供这个免费产品的过程中(CentOS)改变它的的支持周期,并将其“替代品”(CentOS Stream)用作你闪亮的企业产品(RHEL)的“测试场”。

然后那些水蛭们拿起你闪亮产品的源代码,创建了一个 CentOS 的接替者(Rocky Linux 和 Alma Linux)。你不喜欢这样,所以对它们进行了 “软付费墙” 的限制。

现在,虽然 你有权利这样做(因为你从为 RHEL 提供支持而不是 RHEL 本身赚钱),但我会解释为什么这对 你自己来说 是一个糟糕的举动。

  • 问题: RHEL 在企业环境中为什么如此受欢迎?
  • 答案: CentOS Stream
  • 问题: 在线教程用什么来教授 RHEL?
  • 答案: CentOS Stream
  • 问题: 那些跟随上述在线教程的学习者用什么来学习 RHEL?
  • 答案: CentOS Stream
  • 问题: 当这些学生成为老师时,他们会向询问如何入门 Linux 系统管理员的人推荐什么?
  • 答案: CentOS Stream
  • 问题: 如果有人愿意购买 RHEL 的许可证,但因为没有公开的软件仓库而犹豫不决,他们会用什么?
  • 答案: CentOS Stream

简而言之,如果红帽公司继续对 RHEL 的克隆产品制造麻烦,以下是可能出现的情况:

  • 许多参与企业部署的客户和专业人士将考虑放弃 RHEL,并且不再对其提供支持。
  • 新用户将开始考虑使用 Ubuntu、Debian、openSUSE 或其他长期存在的替代产品。
  • 大学和 IT 培训也将转向替代方案,例如 Ubuntu 或 openSUSE,而不再纠结于 RHEL 克隆、CentOS Stream 和 Fedora 之间。

此外,根据他们的 FAQ,小型企业和大学无法使用免费的红帽开发者订阅:

无费用的、无支持的红帽开发者订阅是为个人和个人帐户设计的。

除非红帽公司友好对待 RHEL 克隆产品,否则我无法再看到这个生态系统中会有任何新的参与者了。 这实在令人沮丧,因为 RHEL 是一款出色的产品。是的,它可能不像 Fedora 那样前沿,但是使用起来仍然很有乐趣!

我会引用 Brian Stevens 的 一句话 来阐述观点:

我们的信仰核心是,当有共同目标或问题的人们可以自由地联结和合作时,他们汇集起来的创新可以改变世界。我们相信开源的开发过程能够产生更好的代码,而用户社区会创造出一个让代码具有影响力的受众。

RHEL 是一款企业级发行版,因此红帽公司几乎不会致力于为在树莓派上运行 RHEL 提供支持。猜猜是哪些发行版为树莓派提供了企业级 Linux 镜像。提示一下,它们是 Rocky LinuxAlma Linux。我敢打赌,红帽公司并没有统计出有多少人使用 RHEL 是因为他们先在树莓派上尝试使用 Rocky/Alma Linux,然后转而使用 RHEL。我就是其中之一(使用免费的 RHEL 许可证,也就那点价值)。

那么对于 RHEL 来说,这意味着什么?我不是 先知(此处双关 “Oracle”,哈哈!),所以无法预测 RHEL 的未来。

我远不是一个“引领潮流者”,也不知道有多少人受到我 关于 Podman 的报道 的积极影响。尝试使用 Podman 并非没有原因。我先在 Fedora 上试用,然后通过使用 Rocky Linux 在一个“生产级”环境中进行 大量实验,最后在 RHEL 上部署了一些我自己的服务。这并不是说“如果我没有这么做,其他人就不会这样做”,但你不能否认,从我和 许多其他人 这样的多方共同努力中产生的内容所带来的 影响。顺便说一下,是我促使 Abhishek 去报道 Podman,而不是相反。

当然,上述提到的“贡献”有些可能对红帽公司没有帮助,但它们对于 红帽公司的客户群体 来说是有帮助的。

所以,我们应该感到担忧吗?也是,也不是。

红帽公司做出的决定,从商业角度来看是有道理的。但也不完全是。从短期目标来看是有道理的,但从长期来看则不然。

红帽公司作为一家自豪地向上游贡献的公司,他们不会停止继续贡献。即使通过“软付费墙”来限制 RHEL 的代码,红帽公司仍将继续向上游贡献。红帽公司将继续在 新的 发展进行 创新

他们只是不再像以前那样将 RHEL 的“秘密配方”(在你期望的意义上)开放了。这个秘密的配方本身并不是“专有的”。红帽在 RHEL 中提供的几乎所有东西都是开源的。

他们的秘密在于 将补丁向后移植到 RHEL 稳定包 中。将这些补丁仅提供给 RHEL 的客户,这是一个非常公平的 商业决策。这些补丁也可以公开用于同一软件包的 不同版本。将补丁应用于使“旧版本”软件包保持最新状态的任务非常困难。

所以,我理解他们为什么做出这个决定。

红帽并没有将 RHEL 变为闭源(至少从技术上来说)。

红帽依然是一家出色的公司,其拥有经过验证的开源产品组合。我每天都在使用其中一些产品,比如:在树莓派 4 上运行 RHEL(是的,这是可能的!)、(无需 root 的)Podman、Cockpit、Ansible、systemd 等等!

以下你应该感到担忧的原因

如果 RHEL 不是自由提供的 —— 不是指免费,而是像 Debian、Ubuntu 甚至 Fedora 那样无需账户即可下载 —— 那么对于想要进入企业 Linux 生态系统的新人来说,他们的数量将继续减少。我认为是这样……

如果这个数量减少了,实际上推荐企业使用和支付 RHEL 的人数也会减少。你知道这会引发什么样的循环。

  • 对 RHEL 感兴趣的新人变少 → 购买的 RHEL 订阅变少
  • 红帽的收入减少 → 对上游项目的贡献减少(如 systemd、Podman、Linux 内核、GNOME、Wayland、英伟达合作等)
  • 最终 → Linux 生态系统的总体改进变少

当然,红帽并不是唯一向 Linux 生态系统做出贡献的公司,但你不能否认它对推动生态系统全面向前 流动 所产生的巨大影响!

我对红帽声明的回应

✋ 我并不是在攻击 Mike McGrath。这只是对他的陈述的直接回应。我相信作为一个 RHEL 用户,我有权利表达自己的观点,因为我非常喜欢它,以至于通过树莓派 4B 上的 RHEL 部署了个人博客。

除非另有说明,以下所有引文均摘自 这篇博文

引文 1

我感觉大部分对我们近期对下游源代码的决策所引发的愤怒,大部分来自 那些不愿意为 RHEL 所付出时间、精力和资源买单的人,或者那些想要将其重新打包以谋取自己利益的人。

是的,这完全公平,但我要一直强调这一点,直到你意识到,如果没有广大社区在 CentOS 及其后续产品上的培训,RHEL 就什么都不是。

现在的 IT 专业人员中包括曾经在这个群体中的人,而你现在给他们打上了 “那些不愿意为所付出时间...”的标签。 ?

通过展示这样的立场,你会让更少的人接触企业级 Linux,并且之后使用 RHEL 的人数显著减少。

引文 2

我们必须为从事这项工作的人支付报酬 —— 那些在漫长的工作时间和夜晚中辛勤工作、相信开源价值观的热情贡献者。简单地将这些个人产生的代码重新打包并原样转售,而没有增加任何价值,会导致这个开源软件的生产不可持续。这包括关键的向后移植工作和 上游正在开发的未来功能和技术。如果这项工作变得不可持续,它将停止,这对任何人来说都不好。

这不仅是一个完全合理的观点,而且也是残酷的现实。开源软件的资金不足。当任何人都可以无需付出实际回报就使用你的产品时,为开源软件筹集资金也变得非常困难。

但是,如果社区没有免费获得 RHEL(在限制源代码之前),那么它可能不会像今天这样取得巨大的成功。社区通过自由探索 RHEL,并使其成为更为壮大。

我不是让红帽公司做慈善事业,只是白白地免费提供。我希望红帽公司有足够的资金来改进上游。但是应该在 某个地方 找到一种折中方案。

再次强调,免费订阅并不等同于 RHEL 的克隆。当然,我写过关于如何 免费获取红帽企业版 Linux 的文章。然而,这并不是相同的精神。我在这里 引用 Jeff Geerling 的话:

“不,请不要说‘但你可以使用你的红帽开发者订阅!’我在 Debian、Ubuntu、Arch 等系统上可以不使用它。你明白我的意思。”

引文 3

最近,我们已经确定,拥有一个下游的重构者没有价值。

绝对是有价值的!我不会在这里重复我是如何通过 RHEL 的重构版本进入 RHEL 的这一点。

Windows 之所以受欢迎,只是因为微软允许盗版存在(和更便宜的许可证密钥)。

如果他们加强了控制,没有一个家庭会在 Vista 的继任者上花一分钱。我并不是要将 Vista(一款灾难性的操作系统)与 RHEL 进行比较,但这个类比大多数人应该有共鸣,你可以想想没有得到 Windows 许可证退款时的那种不甘。

引文 4

通常公认的观点是,这些免费重构就是产生 RHEL 专家并转化为销售的渠道,这并不是现实情况。我希望我们生活在那样的世界,但实际情况并非如此。相反,我们发现了一群用户,其中许多用户属于大型或非常大型的 IT 组织,他们希望获得 RHEL 的稳定性、周期和硬件生态系统,而无需实际支持维护者、工程师、编写人员和许多其他角色。

...你确定吗? ?

当然,从免费用户转化为 RHEL 客户的转化率可能不是很高,但我敢打赌,这个比例不会低于 30%。如果你坚持这样做,新客户的数量将不到当前新“注册”用户的 10%。

对于利用免费的 RHEL 开发者许可证也可以提出同样的论点。对于那些不愿意支付 RHEL 费用的人来说,使用临时电子邮件 ID 创建新的红帽账户以便利用免费的开发者订阅是一项不容忽视的任务。

当我们谈论转化率时,有多少专业人士正是使用 RHEL 的克隆版本进行内部产品开发(以便与 RHEL 进行适配),但实际上为使用 RHEL 的客户提供支持呢?

你如何衡量由第三方支持提供给客户的价值? 你不能,它不是一种可以衡量的有形物质。

我想扯远了,但这确实是真实发生的事件。我目前所使用的 [小镇当地的] ISP 使用 RHEL 对用户进行身份验证,因为他从一个向他出租互联网线路的公司获得了一个可以在 CentOS 和 RHEL 上部署的身份验证产品。

猜猜他们在内部是用什么开发来与 RHEL 对接? ?

引文 5

仅仅是重建代码,不添加价值,也不以任何方式进行更改,对开源公司来说是一个真正的威胁。这是对开源的真正威胁,这可能将开源重新变成只有业余爱好者和黑客参与的活动。

那么像 Rocky Linux 和 Alma Linux 这样的 RHEL 克隆做的工作还不够重要,不足以与“仅仅重建代码,不添加价值,也不以任何方式进行更改”相区分吗?

? 我不知道如何更礼貌地重新表述这句话,所以请不要往心里去。这来自于对 RHEL 的热爱,而不是对红帽(管理层)的误导性愤怒。
  • Rocky LinuxAlma Linux 都为树莓派提供镜像,这使得在沉浸于企业级 Linux 这个隐喻的幸福海洋之前,可以更容易、更便宜地试水。
  • Alma Linux 有一个名为 Elevate 的工具,允许 所有用户(这显然包括 RHEL,甚至是 Alma 的“竞争对手” Rocky Linux)升级到主要版本(例如从 7.x 到 8.x,等等)。我相信红帽公司的客户会喜欢这样的工具。
  • Rocky Linux 有一个名为 Peridot 的构建工具。它使任何人都可以拥有一个自定义构建的 RHEL。这个构建可以基于 Rocky Linux,或者甚至可以是公司的内部 RHEL 克隆,以防止供应链攻击。

这个回答也涉及到前面引用中的以下子引用:

仅仅将这些个人创造的代码重新打包,并原样转售,而不添加任何价值,会导致这个开源软件的生产无法持续下去。

它们正在为企业 Linux 生态系统增加价值,而不是直接为 RHEL 增加价值。

关于 CentOS Stream……

CentOS Stream 是一个奇怪的产品。在任何意义都不算糟糕(至少我个人是这么认为的),但是很奇怪。它与 RHEL 在以下关键方面存在差异,其中之一肯定会成为某些人的绝对禁忌:

  • 它是 RHEL 的测试组,这使得对于 RHEL 和特别兴趣小组(SIG)来说更加便利,但是对于你的使用情况而言,可能会有帮助,也可能没有。
  • CentOS Stream 不使用数字版本号的命名方案。这样一个微小的变化,在 CentOS Stream 上的测试时,可能会破坏为 RHEL 设计的脚本。同样的情况也可能出现在安全更新方面,正如 一位 Twitter 用户所描述的
  • 正如我之前提到的,安全修复在 CentOS Stream 上发布较晚。虽然这可能有一些原因,但对于依靠 RHEL 克隆版本的小企业来说,并没有帮助,因为它们仍然容易受到威胁。

结论

现在 CentOS Stream 已经存在,RHEL 的 开发 比以往更加开放。但巧合的是,RHEL 的源代码 却被置于一个软性付费墙之后,受制于 Red Hat 的最终用户许可协议(EULA)

目前这可能对红帽有所帮助。但如果保持这种立场,甚至不需要采取其他措施打击 RHEL 克隆产品,我相信围绕企业级 Linux 的用户、开发者和支持社区将会逐渐衰落...

我认为从长远来看,这将会伤害到红帽,因为随着周围的社区消亡,只有疲惫不堪的 IT 专业人员(意思是:被迫使用它的人,就像使用 Oracle 产品一样)才会继续使用 RHEL,甚至更糟糕的是,使用 Oracle Linux。

我在这里并不是在抨击红帽的员工。而是希望让你知道,如果继续这样发展下去,热爱 RHEL 的社区将会消亡。

我不愿意看到那种局面 ?

我真心地祝愿红帽在推动 Linux 生态系统前进方面一切顺利!真心的 ❤️

✍️ 此观点来自 Pratham Patel,一位热爱红帽的开源爱好者和探索者。

via: https://news.itsfoss.com/red-hat-fiasco/

作者:Pratham Patel 选题:lkxed 译者:ChatGPT 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出