分类 观点 下的文章

你是否对开源充满热情,却不知道如何在这个领域开始一段职业生涯?那么,这篇文章就是为你准备的。

你知道吗?80% 的维护者认为招募新的贡献者是一个挑战,92% 的雇主认为很难雇用到开源人才。而另一方面,52% 的开发者希望为开源做出贡献,33% 的人不知道从哪里开始,31% 的人认为自己不够熟练。公共数据显示,社会对具有开源技能的人有很大的需求。因此,让我们看看如何才能够把开源作为一份职业,以填补这个供需之间的差距吧!

掌握一个技能

开源旅程的起点仅仅是你擅长的某个技能罢了。许多开发者会在空闲时间从事开源工作,他们在不熟练的领域投入精力,并把这些技能引入到技术领域里来。像机器学习(ML)、云原生和大数据分析这样的技能是很受欢迎的,因为许多项目都围绕着它们而进行。

开发者必须不断尝试,直到找到自己感兴趣的东西为止。例如,当我开始在开源领域工作时,我选择了移动用户界面(UI)和 Web 开发(包括前端和后端)方面的工作。这个选择并不简单,我花了很多时间来弄清楚我想从事什么。因此,重要的是要遵循你的兴趣,通过学习和建立项目来探索不同的领域。很多时候,理论教程可能不如建立实际项目更有帮助。掌握技能的唯一方法是将所学的东西应用到实际项目中。

如果你已经在某项技术和项目上投入了很长时间,那么你应该花时间好好分析一下。如果你对这个项目不感兴趣,那么放弃它可能是更好的选择。然而,这也可能是一把双刃剑。有可能你会发现一些感兴趣的东西,从而产生一个新的权衡。如果经过了充分的分析,你也知道了自己倾向于哪些技能组合,那么下一步就是建立自己的项目。

建立一个项目

无论项目的内容如何,只要它是活跃的,就会产生很大的价值。但请记住,一旦它开源了,你千万不要被大家的反应所左右。并且记住,无论你是为一个应用程序建立一个 UI,还是仅仅记录一个适当的注释、资源或 URL 的列表,你的工作都可以对开源用户有很大帮助。

在很大程度上,学习不同的工具有助于建立开源项目。因此,学习关于版本控制系统、Git、GitHub 和 GitLab(大多数项目都在它们上面)的一切是很重要的。由于互联网上已经有足够的教程,我只收集了一些可以在 navendu.me/osidays 上找到的。你需要通过撰写文档和公开自己学到的内容,来“公开学习”才行。

打造一份职业

你可以通过三种方式在开源领域建立一份职业。

构建、扩展你自己的开源项目,并让它盈利

如果你想要建立一个自己的项目,发现并解决问题是一个很好的经验法则。记下别人可能面临的问题,一个项目需求就这样产生了。你的项目的市场规模只能通过试验和错误来估计。对于既没有太多资金的、也没有太多经验个人贡献者来说,社交媒体、博客、帖子和会议上的讲话,都会在很大程度上有助于接触到用户。这些平台可以为你的开源项目带来巨大的流量。

资金在几乎所有的商业模式中都起着重要作用。Mozilla 基金会依靠自愿捐款来资助其项目。MariaDB 采用了延迟开放源代码的商业模式。IBM 的许多开源项目遵循开放核心的商业模式,即项目的核心部分是开源的,而周围的附加部分是闭源的和专有的。红帽公司不出售代码,而是出售专业服务,如支持、工具和围绕项目的技术援助。这些商业模式的例子可以被采用,以此来建立一个项目,将它开源,并使其盈利。

“即使你不是维护者,也要做维护者的工作。”

在一个以开源商业模式建立项目的公司工作

成为贡献者和维护者社区的一份子,参与会谈和参加会议将有助于你为项目做出贡献。你可以根据引导来完成第一次贡献,但它不一定得是代码。一个大的代码库可能看起来很吓人,但关键是要从小的地方着手。找到一个问题并解决它,这将有助于你了解贡献流程、代码库和项目设置等。

非代码的贡献也是有价值的。擅长写作的人可以通过撰写文档,或者为社交媒体写作来贡献。擅长设计的人,可以设计一个模板、一个颜色方案,或者也可以致力于创造一个更好的用户界面。与资深工程师相比,新人发现错误的概率很高。他们可以测试、确认并报告他们的用户体验,从而提升项目质量。另一个领域是新手引导,很多开源项目将导师和新手联系起来,并帮助后者做出重要贡献。还有一个选择是成为组织者或社区管理员,这意味着你将承担起项目经理的角色,确保功能完全按照预期交付,路线图得到遵循,贡献者得到照顾。大多数开源项目缺乏适当的管理,因为工程师们都不喜欢做这一类工作。

社会上有很多实习项目可以帮助你赚钱,比如谷歌的编程之夏(GSoC)和 Linux 基金会的导师制(在这里,被指导者有津贴,可以根据需要全职或兼职工作)。如果你能很好地发展你的技能,你可以在你实习的公司获得一个全职的职位。例如,如果你在红帽公司的一个项目中工作,你有机会被全职雇用,因为你在那里已经有了知名度。

正如 NumPy、SciPy 和 Anaconda 的作者 Travis Oliphant 所说,“建立一个开源项目,让人们为它做出贡献,然后从他们当中招聘。” —— 这也是我获得全职工作的方式。

  • 随着时间的推移,你所做贡献的质量和数量会不断提升。最好长期参与一个项目,因为这样可以发现更多的贡献领域。投身进去做贡献会让人们注意到并认可你。
  • 开源项目缺乏项目经理,因此成为项目经理将有助于你的职业生涯。
  • 成为一个维护者,做一些工程师应该做的事情,如审阅代码、设计系统、撰写文档和帮助他人做出贡献。
  • 好的贡献的关键是“提前付出”,这意味着你需要通过分享经验和智慧来帮助新人,并确保他们不犯错误。

获得赞助以从事开源工作

作为个人,如果你正在为某个公司建立的项目而工作,你可以要求获得资助。值得注意的是,只有当你的贡献很大时,组织才会乐意赞助你。但是,如果你建立了自己的项目,并且有大量的用户群,你可以向用户要求资助。

作为一个组织,你可以通过像 Open Collective、Patreon 和 GitHub Sponsors 这样的平台来筹集资金,让人们为你的项目捐款。像 Linux 基金会和 Mozilla 基金会这样的开源巨头也提供资金来支持项目。GitHub 已经给 15 个印度贡献者的项目提供了资助。

我曾经花了三个月时间建立了一个开源项目。这个项目后来被 《Product Hunt》 和 《JS Weekly》报道,还在上过 GitHub 趋势榜排名第一的位置。正是这个项目让我走上了开源事业的道路。

本文由 Sharon Abhignya Katta 转录并策划


via: https://www.opensourceforu.com/2022/04/how-to-build-a-career-in-open-source/

作者:Navendu Pottekkat 选题:lkxed 译者:lkxed 校对:wxy

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

Firefox 是最好的跨平台 开源网页浏览器 之一。

更不用说,它是那些基于 Chromium 的浏览器的唯一可行的替代品(也许?)

LibreWolf 是另一个有趣的选择,它最初是 Firefox 浏览器的一个复刻,试图比 Firefox 浏览器做得更好,以增强开箱即用的隐私/安全性。

但是,选择 LibreWolf 而不是 Firefox 真的有用吗?有哪些不同之处?让我们来看一看。

用户界面

鉴于 LibreWolf 是 Firefox 的一个复刻,其用户界面是相同的,只是有一些细微的变化。

Firefox UI

例如,它在书签菜单中没有到 Firefox 网站的链接,并且去除了 “ 添加到 Pocket Add to Pocket ” 按钮。

取而代之的是,你可以在地址栏的右边找到一个扩展的图标和下载管理器。

LibreWolf UI

是的,你不再需要前往菜单来访问下载的内容。

如果你认为 Firefox 中的额外功能令人烦恼,那么 LibreWolf 应该是一种干净的体验。

搜索供应商

默认情况下,Firefox 使用谷歌作为其搜索引擎,因为它们是官方合作伙伴,也就是说,谷歌付费成为了默认搜索引擎。

虽然你可以很轻松地将默认的搜索供应商改为 DuckDuckGo、Startpage 或其他任何东西,但默认的搜索供应商对大多数用户来说仍然很重要。

而对于 LibreWolf,它的默认的搜索引擎是 DuckDuckGo。众所周知,它是最好的尊重隐私的搜索引擎之一。

应该注意的是,注重隐私的搜索引擎在某些使用情况下可能不如谷歌好。因此,如果搜索引擎的选择对你来说并不是个问题,Firefox 浏览器可以说是很好。

但是,如果你想对自己的搜索历史保密,LibreWolf 的默认搜索供应商肯定是一个更好的选择。

强化隐私

Mozilla Firefox 具有令人难以置信的可定制性。如果你想付出努力,你可以在 Firefox 上增强你的数字隐私。

然而,如果你想避免投入大量时间来调整 Firefox 的体验,LibreWolf 可能是一个不错的选择。

LibreWolf 具有一些开箱即用的最佳设置,以确保你摆脱网上的跟踪器,以获得安全的在线体验。

例如,它的默认带有 UBlock 内容拦截器,以消除跟踪你在线活动的跟踪器/脚本。其默认的搜索引擎是 DuckDuckGo,在一定程度上也有帮助。

此外,LibreWolf 还启用了 Firefox 增强跟踪保护的严格模式。换句话说,它可以积极地阻止跟踪器,这可能会导致一些网页不能像预期那样工作。

虽然 LibreWolf 建议不要改变这些设置,但如果你发现在此设置下网页被破坏,你可以选择使用 Firefox。

Firefox 使用启用的基本保护来摆脱常见的追踪器,而不会破坏网页的用户体验。

除了这些设置外,LibreWolf 还默认在退出时删除 Cookie 和网站数据。如果你想继续登录网站并迅速恢复你的浏览会话,这可能会很烦人。

对于 Firefox,它确实具有相同的选项,但它默认情况下仍然是禁用的。因此,如果你想避免调整内置设置以获得方便的体验,你应该选择 Firefox。

难怪 Firefox 仍然是 Linux 的最佳浏览器 之一。相比增强隐私,大多数用户更喜欢方便,同时还能跨平台使用浏览器。

谷歌安全浏览

谷歌安全浏览 Google Safe Browsing ”是一项有用的服务,可以警告、标记可疑网站的恶意活动。

大多数浏览器使用它来实现安全的用户体验。你不需要成为发现钓鱼/恶意软件网站的专家,谷歌安全浏览可以帮助你发现它们。

Mozilla Firefox 使用它的另一个名字 “ 钓鱼保护 Phishing Protection ”,它是默认启用的。

然而,在 LibreWolf 中,“谷歌安全浏览”服务默认是禁用的,以避免连接到谷歌服务。你可以启用它,但它不是用户通常在设置浏览器时会注意到的东西。

因此,如果你在避免恶意网站方面需要更多帮助,Firefox 应该是一个很好的开箱即用的解决方案。如果你对这些很清楚,你可以使用 LibreWolf,并在需要时启用该设置。

附加功能

LibreWolf 可以摆脱 Firefox 上的任何附加产品。

例如,默认情况下,LibreWolf 与 Mozilla 服务器没有任何连接。这也意味着 LibreWolf 摆脱了遥测。它所反映的一些变化包括:

  • LibreWolf 中没有同步/签到功能。
  • 没有 “添加到 Pocket” 的按钮
  • 你不会在扩展页面上加载 Mozilla 的附加组件/主题。

如果你想使用 Mozilla 帐户来同步你的历史记录/书签和浏览器数据,Firefox 是最好的选择。如果你需要,还有 Firefox VPN。

但是,如果你不信任任何 Mozilla 服务并希望在你的浏览器上切断与它们的任何连接,那么 LibreWolf 就是你的朋友。

跨平台支持

Firefox 可用于 Android 和 iOS,并且适用于各种屏幕尺寸和设备。

不幸的是,LibreWolf 仅限于 macOS、Windows、OpenBSD 和 Linux 等桌面平台。

基于社区 vs 由组织支持

LibreWolf 是一个由社区支持的项目,由一些热情的贡献者维护,旨在促进隐私、安全和用户自由。

如果你更喜欢 LibreWolf 提供的产品,那么使用它应该不是问题。即使是一个小团队,他们也会关注最新的 Firefox 版本并尽快推送更新。

相比之下,Mozilla 基金会是一个更大的组织,并且一直在树立非凡的榜样来促进可定制性、隐私和安全性。

Firefox 会比 LibreWolf 更快地收到更新,如果你担心浏览器的安全性,这是一个重要方面。

Firefox 属于一个大组织并没有严重的缺点,但是 Mozilla 为其用户提出的未来可能会有一些你可能不喜欢的决定(或变化)。

但是,LibreWolf 作为一个社区项目,会优先考虑用户偏好。

总结

如果方便是你在意的,你需要同步/登录账户功能、Mozilla 的特定功能,以及基本的隐私保护,Mozilla Firefox 应该更适合你。

如果你不想要开箱即用的云同步功能、附加功能和以隐私为中心的核心设置,LibreWolf 将是完美的解决方案。

在性能方面,两者都应该提供类似的体验。由于某种原因,基准测试(Basemark 3.0、Speedometer 2.0)不适用于 LibreWolf,因此我没有提供任何性能比较图表。

我更喜欢使用 Firefox,因为我确实需要基于帐户的同步的便利性,而不需要积极的阻止功能。然而,对于那些想要放弃 Firefox 或者只是想尝试一些专注于用户自由和隐私的东西的人来说,LibreWolf 是一个可靠的选择。

它对你而言怎么样?在下面的评论中让我知道你的想法。


via: https://itsfoss.com/librewolf-vs-firefox/

作者:Ankush Das 选题:lujun9972 译者:geekpi 校对:wxy

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

事实上,有无穷无尽的方法来为开源做贡献,其中一个简单的方法就是回答我们的投票问题。

你是如何参与开源贡献的呢?我们组织了一个投票,结果如下:

  • 提交错误报告 - 67 票(35%)
  • 解答用户的问题 - 39 票(20%)
  • 写作(指南、故事、文档等) - 73 票(38%)
  • 其他 - 12 票(6%)

我的第一次开源贡献可以追溯到 20 世纪 80 年代中期,当时我们的机构第一次连上了 UseNet,在那里我们发现了贡献代码,以及在其开发和支持过程中和别人分享的机会。

在今天,我们有无尽的贡献开源的机会。无论是贡献代码,还是制作一个视频教程,都是贡献的一种途径。

不过,我将直接跳过整个贡献代码的部分。诚然,我们中有许多写代码但不认为自己是开发者的人,他们也可以 贡献代码。但是,我更想提醒大家,还存在很多 非代码形式可以贡献开源。接下来,我会谈到其中的三种。

提交错误报告

有一种重要而具体的贡献形式,它可以被描述为“不要畏惧 提交一个像样的错误报告”以及 与此相关的所有后果。有时,要 提交一个像样的错误报告 是很有挑战性的。比如说:

  • 某些错误可能很难记录或描述。当计算机启动时,屏幕上可能会出现又长又复杂的信息,其中包含各种不能理解的代码。或者屏幕上可能显示有一些“异常行为”,但是却没有提供具体的错误信息。
  • 某些错误可能很难重现。它可能只发生在某些特定的硬件/软件配置上,或者它可能很少被触发,或者错误的产生场景不明确。
  • 某些错误可能与一个非常特殊的开发环境配置有关,但是这个配置庞杂混乱,无法分享,需要先耗费大量精力创建一个精简后的例子才行。
  • 当向发行版报告一个错误时,维护者可能会建议将该错误提交给上游,这有时会需要付出大量的工作,因为发行版所提供的版本不是上游社区感兴趣的主要版本。(当发行版提供的版本落后于官方支持的发布和开发版本时,就会有这种情况发生)。

尽管如此,我还是鼓励那些潜在的错误报告者(包括我)继续努力,并尝试让错误得到完整的记录和确认。

但如何开始呢?你可以使用你最喜欢的搜索工具寻找类似的错误报告,看看它们是如何描述的,它们被归档在哪里,等等。你也可以留意你使用的发行版(例如,FedoraopenSUSEUbuntu)或软件包(LibreOfficeMozilla)的错误报告页面,它们定义了正式的报告机制,你可以按步骤为他们报告相关错误。

解答用户的问题

我潜伏在各种邮件列表和 论坛 里,偶尔也会冒个泡,例如 Ubuntu 质量控制团队论坛LinuxQuestions.org,以及 ALSA 用户的邮件列表 等。在这里,我的贡献可能与错误报告的关系不大,更多的是记录复杂的用例。不过,看到有人热心帮助他人,解决他人在某个问题上的遇到的麻烦,对每个人来说,这都是无疑一种很棒的体验。

从事开源相关的写作

最后,另一个我非常喜欢贡献的领域是 撰写 关于使用开源软件的文章。无论是使用指南,还是对某一特定问题的不同解决方案进行比较评估,或者只是笼统地探索一个感兴趣的领域(就我而言,是使用开源音乐播放软件来享受音乐)。一个类似的选择是制作一个教学视频。你很容易就可以做到边演示一些复杂的桌面操作(比如用 GIMP 创建一个绚丽的标志),边 录制桌面。而那些精通两种或多种语言的人,也可以考虑将现有的使用指南或视频翻译成另一种语言。

(LCTT 译注:读了这篇文章,你是不是想要马上投身于开源贡献呢?那么请考虑加入“Linux 中国翻译组(LCTT)”吧!我们有能帮助你快速上手翻译的 维基,有热心友爱的 QQ 群,你甚至还能够在我们的官网上获得属于自己的译者专页……心动了吗?那就立刻行动起来吧!阅读 维基 以了解如何加入我们。)


via: https://opensource.com/article/19/4/contribute-without-code

作者:Chris Hermansen 选题:lkxed 译者:lkxed 校对:校对者ID

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

引言

2022 年 4 月 15 日,在欧拉开发者大会上,欧拉 的首个数字基础设施全场景长周期版本 openEuler 22.03 LTS 正式发布。这是继两年前的 上一个 LTS 版本 之后发布的第一个 LTS 版本,也是在将欧拉项目 捐献 给开放原子开源基金会之后的首个社区共建版本。这个版本融合了之前的三个创新版中经过验证的新特性、新方向,来自社区的 773 名贡献者上百家厂商和用户参与了版本开发,仅仅是代码就新增了 2300 万行

作为一直关注欧拉发展的业内人士,我对这个里程碑版本期许颇高。这个版本虽然距离上一个创新版发布才仅仅半年,但是却容纳了两年来三个创新版的各种尝试和新特性,因此,想全面的了解 openEuler 22.03 LTS,可能会发现其所承载的内容十分之多,不易抓住重点。在这里,我将我所了解到的信息,梳理之后整理给大家,以使大家可以在选型、评估和使用时有所参考。

版本路线图

对于不太熟悉欧拉的同学,我这里简单介绍一下欧拉之前的发展路线:

2019 年 12 月 31 日,openEuler 正式宣布开源,其脱胎自华为内部基于 Linux 的积累。四个月后,openEuler 发布了第一个版本 20.03 LTS,它也是一个长期支持版本。

其后,openEuler 按照半年一个版本的节奏发布了三个创新版。从创新版开始,华为之外的多个公司、团队、独立开发者参与到了 openEuler 的开发当中。在这几个创新版中,提出、融入了多个值得一提的新特性,如内核热升级、内存分级扩展、千核运算能力、业务混部 CPU 调度算法等核心能力,也从面向云计算逐步拓展到支持边缘计算、嵌入式的全场景领域。

图片来源于《openEuler 22.03 LTS 技术白皮书》

这一切,在刚刚发布的 openEuler 22.03 LTS 得到了融会贯通,将在之前的创新版中经过产品环境验证和打磨的优秀特性和创新,有机的组织起来,并形成了一个统一的基础设施基座。

跨越式进步

根据官方数据,我们看到,这次的 22.03 LTS 和两年前的 20.03 LTS 相比,整体来说内容丰富了许多

比如软件包数量:20.03 LTS 官方提供的软件包, 包括 ISO 镜像中的 2016 个、EPOL 仓库中的 762 个,总计 2778 个;而在 22.03 LTS 中,软件包数量达到了 ISO 4241 个、EPOL 1329 个、oepkgs 13323,总计 18893 个!达到了两年前的 6.8 倍。

openEuler 软件包数量:20.03 vs 22.03

不只是软件包的数量,欧拉操作系统所支持的硬件架构,也从两年前的 64 位的 ARM 和 x86 架构,又增加了两个:32 位的 ARM 架构,以及国产 CPU 申威架构。曾经连续多次取得超算 TOP500 世界排名第一的中国超算神威·太湖之光中安装的就是 40960 个申威 CPU。通过支持这些架构,欧拉操作系统就可以运行在鲲鹏、英特尔、飞腾、申威、龙芯、兆芯等主流芯片之上。

而能在两年间取得这样的大跨步进展,背后是欧拉社区的“疯狂输出”。根据数据,欧拉操作系统当前已有 69891 个提交,仅 22.03 LTS 这个版本就新增了 2300 万行代码。今年以来,欧拉操作系统已经发布了 127 个安全公告,几乎平均每天发布一个。在欧拉操作系统发布以来,其已经创建了 241 个创新项目代码仓,平均每 3.5 天新增一个。而这一切,都是 773 位开发者不断努力的结果。

根据欧拉发布的 数据看板,到目前为止,欧拉已经有社区用户 479990 位,其中贡献者 8515 位,单位会员 333 家;合并请求 5 万余,评审 30 万条;成立了近百个 SIG,创建了近 9 千个代码仓

(来源于欧拉数据看板,数据时间:2022/04/20)

“终始惟一,时乃日新”

就此,我问了欧拉社区技术委员会主席胡欣蔚,“欧拉为何能做到这样大的跨越式进步?”他谦逊地表示,这只是“两年的厚积薄发”。当然,能取得这样的进展,也是在欧拉的开发和管理上,将“华为在开发和工程方面的经验”和开源运作的模式进行了结合,并得益于欧拉社区开发的一系列迁移工具。

根据公开披露的信息,欧拉操作系统在政府、运营商、金融、能源、交通、互联网等行业已达到规模应用,累计部署超过了 130 万套。2022 年,预计欧拉操作系统将在行业的应用新增超过 200 万套。

主要特性

内核和底层改进

在 openEuler 22.03 LTS 中,采用了经过长期打磨和调校的 Linux 内核 5.10 长期支持版,在这个版本中,华为向上游 Linux 内核社区提交了大量贡献。可以说,这个内核版本是华为的一个“锚定”版本。在此版本上,openEuler 融入了之前三个创新版中经过商业验证的创新特性。

图片来源于《openEuler 22.03 LTS 技术白皮书》

欧拉操作系统使用的是 Linux 内核 5.10,但除了 Linux 内核自身的特性之外,欧拉操作系统在内核中还做了十余处创新增强,主要包括用来提升性能的进程调度优化大页内存性能优化OOM 内存回收优化XDP 网络性能优化等。比如它集成了一套新的 QoS 调度机制,使得在线业务可以实现抢占式优先;而 OOM 分级使得离线业务的内存可以在欧拉操作系统中得到极速的回升,这二者结合起来,就提供了对 QoS 最强有力的支撑。又比如 UC 容错使得欧拉在面对硬件可靠性问题的时候更加有力,不再需要简单粗暴的重启,而是可以通过对于具体进程的控制,来实现错误的隔离。

除了这些隐蔽但重要的内核改进之外,如今在运维领域已经大量使用了非易失性内存(NVDIMM)存储介质,而传统的 Ext4 文件系统尚缺乏针对性的优化,因为 Ext4 本身是针对旋转式硬盘设计的文件系统。尤其在元数据管理方面,基于现有日志同步机制,其元数据管理开销大,且容易出现写放大问题,无法充分发挥 NVDIMM 优势。欧拉操作系统中集成的 Eulerfs 其创新的元数据软更新技术,减少了元数据同步开销,有效提升文件系统的系统调用性能。在单机应用、云原生分布式应用高性能数据存储场景,可以代替 Ext4、XFS 等文件系统。

在这个版本中,还吸收了鸿蒙中的分布式软总线能力,可以实现欧拉设备之间的自发现、自联通,以及欧拉和鸿蒙设备的自发现。

云计算强化

针对云原生业务混合部署场景,欧拉操作系统中创新的 QAS 算法,是一种适用于云原生场景,业务混合部署的全新调度算法,可以确保在线任务对 CPU 的快速抢占,确定性的调度运行,同时压制离线任务干扰。这些改进适用于对交互类等时延敏感型业务(比如 MySQL、Redis、Nginx 等)和 CPU 消耗重且时延不敏感的业务(如 AI 离线训练)的混合部署。

根据欧拉发布会现场的演示,一台服务器部署了欧拉操作系统 22.03 LTS 中的改进技术,而另一台没有。这两台服务器上,都同时运行相同的在线和离线两类业务。通过运行结果可以看到,在一台服务器上的 QPS 是 1.18,而另一台上达到了 2.62,相差了将近一倍;而时延分别是 1.53 秒和0.60 秒,相差也将近一倍

除此以外,欧拉操作系统还针对云计算,推出了容器化操作系统 KubeOS,实现云原生集群操作系统的统一容器化管理。它可以对操作系统进行容器化管理、对接 Kubernetes、原子化的生命周期管理;它也对操作系统进行了轻量化裁剪,减少不必要的冗余包,可实现系统的快速升级、替换等。而在底层,欧拉操作字体结合虚拟化运行时 StratoVirt、容器管理引擎 iSulad 构建了安全容器方案,较之传统的 Docker + Qemu 方案,其底噪和启动时间优化高达 40% 以上,为应用提供了一个轻量、安全的执行环境,隔离了容器和宿主机操作系统间、容器间的安全风险。

四大场景 & 五个统一

作为一款发轫于服务器领域的操作系统,欧拉在这个版本也正式支持了更多相关场景。按欧拉的话来说,就是四大场景:服务器、云计算、边缘计算和嵌入式。服务器和云计算这并不足为奇,而扩展到边缘计算和嵌入式领域,一方面是暗合了如今的计算潮流,另一方面,我认为,也和华为在边缘计算、嵌入式领域的传统优势有关。此外,作为专注于边缘计算和嵌入式等领域的鸿蒙,在这个领域和欧拉会师,我认为倒不是一种冲突,而是一种融合。

在四大场景的背后,欧拉宣称,他们做到了五个统一:统一内核、统一构建、统一 SDK、统一联接和统一开发工具。在社区开发过程中,欧拉把所有场景的所有组件的开发都归到了一个 openEuler 代码仓上,通过这种方式实现了任何场景都基于同一套代码。并且,欧拉操作系统通过 EulerMaker 项目提供了一套完整的构建和裁剪能力,这使得基于同一套代码构建的二进制,在面向不同的场景发布的时候,可以自如地进行构建和裁剪,最终形成适用于不同场景的镜像。

“功崇惟志,业广惟勤”

当然,能够在一套代码的基础上同时适应多种场景,这其中一定存在必要的取舍。胡欣蔚说,“欧拉会针对各个场景对模块/特性进行裁剪”,让各个组件、模块在不同场景能发挥各自的作用。“但是欧拉不接受只针对特定场景的定制开发,而且如果对整体架构形成冲击的话,是不会纳入到代码仓的,”他说,“欧拉会设计好这样的一套架构,使得不同组件在不同的架构下代码是归一的,通过裁剪工具,可以面向不同场景构建,并且差异化是可控的。”

在边缘计算方面,openEuler 22.03 LTS Edge 支持 KubeEdge + 边云协同框架,具备边云 应用统一管理和发放等基础能力。

而对于嵌入式领域,其镜像大小 < 5M,启动时间 < 5S,其基于 Linux 5.10 内核提供了软实时能力,中断响应时延达到看微秒级。它还支持树莓派作为嵌入式场景通用硬件。所集成的鸿蒙分布式软总线,可以实现欧拉嵌入式设备之间互联互通。

除此之外,欧拉操作系统中还有很多值得一书的改进特性,只是限于 篇幅,我们无法一一道来,大家有兴趣的话,可以参考《欧拉操作系统 22.03 LTS 的技术白皮书》。

下一代 LTS 路线图

而关于欧拉接下来两年的发展,胡欣蔚透露说:“接下来会对所支持的架构提供更多支持,包括对 RISC-V 的支持、完善对 SW 架构的支持,以及对英特尔的 Ice Lake 的完整支持和对 Sapphire Rapids 的后继规划。此外,在业务混部方面,也有很多正在进行中的创新。”这些将出现在预计今年二季度发布的 SP1 版本上。

让我们以欧拉技术委员会主席胡欣蔚的一句座右铭结尾,共同拭目以待欧拉下一步的发展:

“惟精惟一,允执厥中”

(题图及未注明出处的插图来自于 Pixbaby,采用 CC0 协议)

下面是我对 布莱恩·克尼汉 Brian Kernighan 的采访,他(与 丹尼斯·里奇 Dennis Ritchie )是《 C 程序设计语言 The C Programming Language 》一书的共同作者,我们谈及了 C 语言及其 50 年的历史。

两位作者写的最初的 C 语言编程指南,大约是在 1978 年

C 语言将在 2022 年满 50 岁。然而,尽管它历史悠久,在许多“流行编程语言”的调查中,C 语言仍然是“最常用”的编程语言之一。例如,你可以看看 TIOBE 指数,它追踪不同编程语言的流行程度。许多 Linux 应用程序是用 C 语言编写的,例如 GNOME 桌面。

我采访了 布莱恩·克尼汉 Brian Kernighan ,以了解更多关于 C 语言及其历史他(与 丹尼斯·里奇 Dennis Ritchie )是《 C 程序设计语言 The C Programming Language 》一书的共同作者。

C 语言是怎么诞生的呢?

C 语言由一系列旨在进行系统编程的语言演变而来,系统编程就是编写像编译器、汇编器、编辑器以及最终的操作系统这样的程序。麻省理工学院有一个与贝尔实验室合作的 Multics 项目,它计划用一种高级语言编写系统的所有部分(这在 1965 年那时候是一个新想法)。他们打算使用 IBM 的 PL/1,但它非常复杂,而且承诺的编译器也没有及时交付。

在与一个叫做 EPL 的子集(由贝尔实验室的 道格拉斯·麦克罗伊 Douglas McIlroy 设计)进行了短暂交流后,Multics 转向了 BCPL,这是一个由剑桥的 Martin Richards 设计和实现的,更加简单和干净的语言,我记得他当时正在麻省理工学院访问。当 肯·汤普逊 Ken Thompson 开始研究后来的 Unix 时,他在 BCPL 的基础上创造了一种更简单的语言,他称之为 B 语言。在 1969 年,他为搭载了第一个 Unix 原型系统的 PDP-7 计算机实现了这种语言。

BCPL 和 B 都是“无类型”语言。也就是说,它们只有一种数据类型,即整数。DEC 公司的 PDP-11 计算机大约在 1971 年投入使用,它搭载了第一个真正的 Unix 系统。PDP-11 支持几种数据类型,特别是 8 位字节和 16 位整数。因此,一种同样支持几种数据类型的语言是更好的选择。这就是 C 语言的起源。

C 语言在贝尔实验室和早期版本的 Unix 中是如何使用的呢?

C 语言最初只在 Unix 上使用,尽管过了一段时间,也有了用于其他机器和操作系统的 C 语言编译器。大多数情况下,它被用于系统级的编程,涵盖了相当多有趣的领域,还有很多用于管理 AT&T 电话网络运营的系统。

在贝尔实验室用 C 语言编写的最有趣的项目是什么?

可以说,最有趣、最令人难忘、也是最重要的 C 语言程序就是 Unix 操作系统本身。1971 年 Unix 的第一个版本是用 PDP-11 汇编语言编写的,但到了第四版,也就是 1973 年左右,我们用 C 语言重写了它。这很关键,因为这意味着操作系统(和它所有的支持软件)基本上可以通过重新编译来移植到不同类型的计算机上。虽然在实践中并没有那么简单,但也相差不远。

你与丹尼斯·里奇合著了《C 程序设计语言》一书。那本书是怎么来的,你和丹尼斯又是如何在书中合作的呢?

我曾经写过一本肯·汤普逊的 B 语言教程,帮助人们快速上手使用它。当 C 语言可用时,我将其升级为 C 语言的教程。过了一段时间,我说服了丹尼斯,让他和我一起写一本 C 语言的书。基本上,除了系统调用那章外,大部分的教程材料都是我写的,而丹尼斯已经写好了那个参考手册,写的非常棒。然后我们反复修改,使教程部分更加流畅。参考手册几乎保持不变,因为它从一开始就写得很好。这本书的格式是用 troff 格式器格式的,这是 Unix 上的许多工具之一,我做了大部分的格式化工作。

C 语言什么时候成为了贝尔实验室以外的其他程序员用于工作的东西呢?

我真的记不大清了,但我认为大概是在最初的五六年里,C 语言主要是跟着 Unix 一起发展的。随着其他操作系统上的编译器的发展,它开始蔓延到 Unix 以外的其他系统。我不记得我们是什么时候意识到 C 和 Unix 产生了真正的影响,但应该是在 20 世纪 70 年代中后期。

为什么 C 语言会成为如此有影响力的编程语言呢?

早期的主要原因是它与 Unix 的联系,Unix 在世界上迅速传播。如果你使用 Unix,你就会用 C 语言来编程。后来,C 语言传播到不一定运行 Unix 的计算机上,很大程度上是因为 Steve Johnson 编写了可移植 C 语言编译器。在工作站领域,比如 昇阳微系统 Sun Microsystems 、MIPS(后来成为 SGI)和其他公司,它们都是因为 Unix 和 C 语言的结合而获得成功。IBM PC 出现得稍晚一些,大约在 1982 年。后来 C 语言成为 MS-DOS 和 Windows 下的标准编程语言之一。今天,大多数物联网(IoT)设备会使用 C 语言。

在创建约 50 年后的今天,C 仍然是一种流行的编程语言。为什么它仍然如此受欢迎呢?

我认为 C 语言在效率和表现力这两个方面达到了一个平衡点。在早期,效率真的很重要,因为与我们今天所使用的计算机相比,当时的计算机速度很慢、内存十分有限。C 语言是非常高效的,因为它可以被编译成高效的机器代码,而且它也足够简单,人们很容易学会如何编译它。同时,它还具有很强的表现力,易于编写,并且结构紧凑。至少在我谦虚而正确的观点中,没有任何一种语言能很好地达到这种境界。

多年来,C 语言的发展和变化如何?

我想,C 语言的发展是适度的,但我并没有太注意 C 语言标准的发展。C 语言已经有足够的改变了,80 年代写的代码需要做一些前置工作才能编译,但这主要与诚实对待类型有关。比较新的功能,如复数,也许是有用的,但对我来说不是,所以我不能做出明智的评论。

哪些编程问题可以用C语言最容易解决?

嗯,对于任何事情来说,它都是一种很好的语言,但在今天,有了充足的内存和处理能力,大多数程序员都可以用 Python 这样的语言来进行内存管理和处理其他更高级的结构。C 语言仍然是底层编程的一个很好的选择,因为对于底层编程来说,充分利用 CPU 周期和每一个字节仍然很重要。

C 语言影响了其他编程语言,包括 C++、Java、Go 和 Rust。你对这些编程语言有什么看法?

几乎每一种语言在某些方面都是对其前辈的反应。简单点说,C++ 增加了控制信息访问的机制,所以对于真正的大型程序来说,它比 C 更好。Java 是对 C++ 的复杂性的一种反应。Go 是对 C++ 的复杂性和 Java 的限制的一种反应。Rust 是对 C 语言(大概也是对 C++)中内存管理问题的一种尝试,同时它接近了 C 语言的效率。

它们都带来了某些积极的特性,但不知何故,没有人能够完全满意,所以总是会有更多的语言,反过来对以前的语言做出反应。同时,老的语言,在大多数情况下,仍会继续存在,因为它们的工作做得很好,而且有一个嵌入式的根据地,老的语言在里面可以完美使用,而用新的东西来重新实现是不可行的。

感谢 Brian 为我们分享了 C 语言编程的伟大历史!


via: https://opensource.com/article/22/3/how-c-programming-language-has-grown

作者:Jim Hall 选题:lkxed 译者:lkxed 校对:wxy

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

Ubuntu 与 Arch Linux 为用户提供了完全不同的桌面体验。

在两者之间做出选择,实在让人左右为难,尤其是在既想体验 Arch Linux 的亮点 又想保留 Ubuntu Linux 的优势的情况下。

两种发行版本身都是用户的绝佳选择。不过,如何从两者中选出最佳的一种呢?

在这篇文章中,我将从各方面介绍 Ubuntu 和 Arch Linux 的不同之处,希望可以帮助你解决这一选择难题。

1、目标用户

Arch Linux 旨在为那些喜欢鼓捣、喜欢折腾的用户提供 DIY 体验,自定义 Linux 系统的各种元素。

比如,构建软件包,以及自定义桌面。

Arch Linux 的上手体验取决于 安装设置它 的用户。所以,Arch Linux 可以轻易迎合寻找不同包以及桌面环境等元素的用户。

而另一方面,Ubuntu 的目标用户是那些想使用 操作方便,预先配置好的 Linux 系统。

这类用户希望系统预装必要的工具,确保一切都会按照预期进行。换言之,他们想要的是一个理想的系统,无需担心设置问题。

Ubuntu 也不希望用户花费大把时间来提升自己的体验,所以它选择以满足绝大多数用户的需求为基准。

2、系统安装

不得不说,Ubuntu 提供了简洁直观的安装方式,因为它提供的图形用户界面大大方便了安装。

如果有需要,你甚至可以 在 Ubuntu 服务器上安装一个图形用户界面

但要安装 Arch Linux,你就不得不使用终端(命令行)。

还好,Arch Linux 现在有了引导式的安装程序,这使得通过终端安装 Arch Linux 变得更加容易了。

当然,还是 Ubuntu 的安装更为方便一些。

3、桌面体验

Ubuntu 旨在 方便用户。为此,Ubuntu 项目的领导者 Canonical 公司提供了自定义的 GNOME 桌面环境体验。

尽管你可能无法像在 KDE Plasma 上那样自由地定制桌面,你依然可以有很多其他选择。感兴趣的话,可以点击了解 KDE vs GNOME

Ubuntu 也会定期收集用户体验反馈信息,尽可能地帮助用户提高工作效率。

Arch Linux 更加注重功能 以及其他技术方面,而不是用户的桌面体验。用户体验完全取决于用户在安装 Arch Linux 时是如何设置的。

使用 Arch Linux 时,你能依赖的只有桌面环境提供的开箱即用工具,没有为用户量身定制的改进。如果你想体验一些不一样的东西,你就必须对系统加以调整。

Arch Linux with GNOME

不过,好在 Arch Linux 允许用户选择 KDE Plasma、GNOME 或者 其他桌面环境,所以你可以充分利用这一优势,根据自己的喜好来选择桌面环境。

不仅如此,在安装 Arch Linux 时,你还可以选择平铺式窗口管理器。

总体来说,如果使用 Ubuntu,你的桌面体验和其他用户的体验别无二致,因为 Ubuntu 可以自定义的元素极少。

相反,如果使用 Arch Linux,你就可以 自由定义桌面体验。但请注意,这可能只适合 Linux 老手,如果你刚开始使用 Linux,恐怕做起来比较困难。

4、文件系统

大多数用户不需要关心他们的 Linux 发行版所使用的文件系统。

因此,Ubuntu 坚持使用 ext4 作为文件系统。ext4 具有现代计算机所需的全部基本功能,是一种非常优秀的最常见的文件系统。

然而,如果你不想使用 ext4,而想选择具备其他各种优势的文件系统,那么你可以考虑 Arch Linux。

你可以选择 btrfs、ext4、xfs 或者 f2fs。针对这些文件系统的优势,本文不再详述,但是如果你选择 ext4 之外的文件系统,请确保你知道自己在做什么。

5、软件生态

Ubuntu 支持的软件更多,这就是为什么 大多数主流 Linux 发行版 都是基于 Ubuntu 的。

相应地,许多工具在开发时也是首先支持 Ubuntu,而后才是其他发行版本。

此外,在 Ubuntu 上安装软件包也非常容易。你可以通过 Ubuntu 官方仓库安装软件包,也可以使用 PPA,或者是软件中心(包括 Snap 应用)。

也可以使用 Flatpak 来安装软件。如果你的 Ubuntu 没有 Flatpak,你可以 前往 Flathub 安装它

如果你使用的是 Arch Linux,那么你也可以通过官方仓库安装许多软件。

可惜的是,相较于 Ubuntu,一些应用开发者可能不会正式支持 Arch Linux。

此外,你会发现,Arch Linux 安装和管理软件包都需要使用 pacman。使用哪个图形界面的安装程序进行软件的安装和管理,取决于你所选择安装的桌面环境。

举个例子,如果你安装的是 GNOME 桌面,你可以使用 GNOME 的 “软件” 应用;如果是 KDE Plasma 桌面,可以使用 “发现” 应用。

这些软件包管理器都不会内置 Snap 或 Flatpak 支持,所以你只能根据需要自行安装。

为了获取更多的软件,你可以使用 AUR。请注意,AUR 是社区构建的软件仓库,所以官方建议你不要完全依赖它。

即便如此,AUR 也经常被看做是 Arch Linux 的优势之一,毕竟社区提供的软件包比 Ubuntu 提供的更为丰富。

你可以通过使用一些 AUR 辅助工具 来提升体验质量。

总体来说,如果你想仅靠一个工具就能轻松安装并且管理软件,那么 Ubuntu 当属不二之选。

6、极简 vs 臃肿

极简还是臃肿,这完全取决于个人的偏好,因为在配置 Arch Linux 时,一切尽在你的掌握之中。所以你可以在满足需要的情况下,只安装最少数量的包。

相比之下,Ubuntu 预装了许多软件。在一些人看来,这些软件都很实用。

当然,如果你不需要,也可以卸载。

不过,还有一些人认为,这些软件没什么必要,只会显得 Ubuntu 十分臃肿。

因此,你需要好好考虑一下,看自己究竟是想要预装的必备软件呢(Ubuntu)?还是拒绝臃肿,只取所需呢(Arch Linux)?

7、自由 vs 限制

Arch Linux

就像前文所提到的,Arch Linux 允许你控制系统的一切,它赋予用户极大的自由度,让用户可以尽情定制体验。

这不仅仅局限于桌面环境或是平铺式窗口管理器,而是更多。

例如,你还可以选择自己喜欢的音频服务器,比如 PulseAudio 或者 pipewire。

你也可以选择特定的 Linux 内核,比如提供了安全性更高的加固版本、能够提升用户体验的 Zen 内核或者某个长期支持版本的 Linux 内核。

不同于 Arch Linux,Ubuntu 一直坚持使用经过全面测试的 Linux 内核,而且默认使用 PulseAudio 作为音频服务器(笔者写这篇文章时情况如此)。

但说到底,哪个能满足你的需求,哪个才是最好的。

8、社区支持

Ubuntu 拥有坚实的用户基础,可以提供广泛的社区支持。与其相关的论坛和门户网站有很多,可以指导 Ubuntu 用户,帮助解决遇到的难题。

itsfoss community

你也可以在论坛(包括 It’s FOSS 社区)发布问题,寻求帮助。

Arch Linux 用户比较少,所以不提供类似的社区支持。不过,Arch Linux 的维基提供了几乎涉及各个方面的高质量技术文档,算是弥补了这一不足。

arch wiki

如果你想探索,Arch Linux 维基 有着最丰富的技术文档。

9、发布周期

Ubuntu 提供 长期支持版本,在五年或更长时间(针对企业)提供小的更新维护。

Ubuntu 还提供了非长期支持版本,可以得到九个月的更新维护,而每半年发布一个新版本。非长期支持版本适合那些想体验最新软件包与功能的用户,每次升级都可能伴随着重大更新。

长期支持版本更适合于那些不希望每次更新都有破坏性变化的用户。

更多信息可以参考我们的文章:Ubuntu 发行周期与生命周期结束

Arch Linux 属于 滚动发行版,所以不用担心发布周期的问题。只要有更新,无论大小,都会发送给用户。

这可以确保你一直在使用最新和最强的软件包。这有时是件好事,但当它破坏一些东西时,对一些用户来说可能会很不方便。

10、硬件兼容性

Ubuntu 是一款面向台式电脑的主流发行版,所以在发布之前,它需要测试与各种硬件的兼容性。

我可以打包票,Ubuntu 开箱即用的硬件兼容性非常优秀

Arch Linux 不像 Ubuntu 那样进行过大量的测试,所以它不一定能在你的硬件上正常运行。

不过,正因为 Arch Linux 有着最新最强的 Linux 内核包,所以有时它的表现要优于 Ubuntu。

如果你不太清楚自己硬件的兼容性,你最好请教一下周围的人,确保你在安装 Arch Linux 时不会出现别人已经遇到过的问题。

因此,选择 Ubuntu,你就可以高枕无忧了,除非你使用的是非常尖端的设备。

11、稳定性

如果你不想让你的系统崩溃,或是不想遇到错误,Ubuntu 应该是更好的选择.

Arch Linux 的话,情况就不好说了。它可以工作得很好,也可以因为一次更新而倒下。

Arch Linux 本身并不算稳定,你需要自行维护它,确保在自定义以及更新过程中不会出现任何问题。

再三考虑: 你该选哪个?

考虑到稳定性、兼容性、软件生态以及上手速度等因素,对于那些只想顺利完成工作而不想麻烦折腾的人来说,Ubuntu 是一个完美的选择。

而对那些想要定制桌面体验而适应自己工作内容,以及寻求最新功能和最强性能的用户来说,Arch Linux 最合适不过了。

如果你想探索未知,Arch Linux 可以给你带来非常奇妙的体验。但对于一些人来说,Arch Linux 使用起来可能比 Ubuntu 要困难许多。

那么,考虑到以上所有因素,你觉得自己会选哪个? 期待你能在下方评论区留言。

常见问题解答:如果你还没决定到底用哪一个

可能有些人还会有一些问题,可以参考一下内容:

Arch 比 Ubuntu 更好吗?

对,也不对。就技术层面来讲,Arch Linux 确实更好,但是你也需要考虑它的稳定性、软件生态以及维护它所需要的学习时间。也就是说,在得出答案之前,你需要根据自己的喜好,再三考虑一番。

哪个更快?Ubuntu 还是 Arch?

Arch Linux 更快,因为它安装的东西很少。不过,根据你的配置不同,情况可能也会有所不同。

注意,Ubuntu 与 Arch Linux 相比,速度并不会差很多。只不过因为它开箱即用的包会更多,所以有些人会认为 Ubuntu 比较臃肿。

我是不是应该从 Ubuntu 转到 Arch 呢?

如果你想优化体验,想要一直获取最新最优秀的软件包,同时又不会担心稳定性,Arch Linux 会比较适合你。

如果你只是为了完成工作,需要的是一些基础功能,Ubuntu 就够用了。


via: https://itsfoss.com/ubuntu-vs-arch/

作者:Ankush Das 选题:lujun9972 译者:aREversez 校对:wxy

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