2022年5月

如果想让开源社区繁荣发展,管理者需要达到透明度的五个层次。

 title=

开源社区的管理者必须意识到社区有五个层次的透明度,这对于建设繁荣发展的开源社区来说至关重要。

本文将详细介绍各个层次及其目标与作用。不过首先,我想谈一谈透明度对开源社区的重要性。

为什么开源社区需要保证透明度?

  • 透明能够增进社区成员之间的信任,促进合作。
  • 开放是社区合作和交流的前提。
  • 只有在开放透明的环境下,开源工作才能避免矛盾与冲突。
  • 社区管理者需要向参与者报告社区情况。
  • 向成员公开社区各项情况,营造信任氛围,有利于社区健康发展。

透明度的五个层次

层次一:发布源码

在这一层次,社区需要遵循 OSI 认可的许可证,在 Git 等公开的版本控制系统上发布源码。

层次一的目标在于创建开源项目。

  • 建立开源社区,理应达到这一层次。因为没有公开源代码,也就无所谓开源项目。
  • 开源项目的核心便是参与者们编写的源码,并在 OSI 批准的许可证下授权。
  • 公开的版本控制系统能够促进合作,使得每一位开发者都能了解项目情况,理解合作模式。

层次二:发布社区指南

达到这一层次,需要发布相关文档以及资源。也可通过组织活动来指导社区成员。

层次二的目标在于为一个开源项目建立和发展一个开源社区。

  • 建立一个活跃的社区需要的不仅仅是源代码。
  • 公开项目开展方式和贡献方式,能够吸引更多的开发者参与到项目当中。
  • 为了推动社区的发展,管理者可能需要举办一些重要活动,并为贡献者们筹办一些特殊的活动。

层次三:继往开来

到了这个层次,管理者有必要分享自己对于社区的见解,发布项目进展情况报告。

层次三的目标在于继往开来,确保社区进入后续阶段后能够更上一层楼,实现长远发展。

  • 随着开源社区的发展,社区内的情况将会越来越难以把握。
  • 公开社区活动,让成员意识到自己的付出能够为公众所见,为公众所识。
  • 在这一层次,无论是报告还是分析,发布的时间并不固定,使用的工具也无定法。

层次四:掌握社区的动态

这一层次就在于倾听社区声音:通过观察社区活动,关注项目发展;跟进软件开发进度,据此采取合适的应对措施。

层次四的目标在于保持科学严谨的态度,持续把握社区的发展情况及发展轨迹,引导社区朝着下一个层次迈进。

  • 建立报告机制,运用分析工具,掌握社区动态。
  • 将社区的各项活动与社区成员的反响与基线和社区内的其他活动进行比较。
  • 坚持倾听社区声音,形成对于社区更深刻的见解。

层次五:维护社区,长久发展

最后一个层次就是依据社区各项指标,提高社区成员的参与度。

层次五的目标在于制定行之有效、能够产生积极影响的决策方案,让开发者更好地参与社区项目。

  • 适当调整系统,以适应社区各项指标的变动。
  • 跟进这些变动,理解它们是如何通过各项指标和数据分析体现出来的。
  • 针对社区维护者与开发者,制定服务等级协议和问责制度,为其设立参与度目标,确保项目整体顺利进行。

总结

开源社区管理者需要做到上述五个层次,保证透明度,才能构建起一个繁荣发展的社区。


via: https://opensource.com/article/22/2/transparency-open-source-communities

作者:Emilio Galeano Gryciuk 选题:lujun9972 译者:aREversez 校对:wxy

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

几天前,我分享了我 对新 GNOME 文本编辑器的体验,它是原编辑器 Gedit 的替代品。

但它并不是唯一的应用程序替代品。GNOME 42 还有一个新的终端,叫做 控制台 Console

让我来分享一下 GNOME 提供的这个新终端的新功能,以及它的使用体验吧!

控制台:GNOME 的新终端模拟器

这个新应用程序的目标是提供一个“简单的、用户友好的终端模拟器”。它确实“简单”,因为它没有提供以往 GNOME 终端下用户习惯的许多功能。

后面我会继续谈这个话题。让我们先看看 GNOME 控制台的新功能。

桌面通知

Ubuntu 上的 GNOME 终端从来没有这个功能,不过我在 elementary 和 Fedora 等发行版中看到过。

这是一个很方便的功能,当一个长期运行的命令执行完毕时,终端会发送一个桌面通知。

GNOME 控制台的通知

如果你在命令正在运行的同时,需要做其他事情,那么得到命令完成的通知有助于你保持工作效率。

进行 root 和 SSH 操作时改变窗口颜色

这很可能是我在其他终端程序中没有见过的独特功能。

当你用 sudo 运行命令或 切换到 root 用户 时,应用程序窗口会变成红色。

GNOME 控制台在使用 sudo 或 root 用户时变成红色

我想它的目的是警告用户他们正在使用高级权限,因此在运行命令时要小心。

同样,如果你使用 SSH 连接到一个远程服务器,终端应用程序窗口的颜色会变成紫色。

GNOME 控制台在 SSH 连接时变成紫色

这也是提醒用户命令正在远程 Linux 机器上运行,而不是在本地机器上运行的好方法。

主题

遵循新的设计准则,控制台提供了三种主题:浅色、深色和跟随系统。

GNOME 控制台主题

控制台默认使用系统主题,它根据你的操作系统的深浅主题而改变终端配色。你也可以单独使用控制台的浅色/深色主题,而不用改变系统主题。

关于主题的内容差不多就这些。你可以进行的 终端定制 并不多。

关闭终端窗口时更好的警告

当你试图关闭一个仍在运行的命令时,老的 GNOME 终端也会显示一个警告。

旧版 GNOME 终端中的警告

这个警告在新的 GNOME 控制台中稍好一些,因为它也会显示正在运行的命令。

新版 GNOME 控制台中的警告

透明界面

GNOME 控制台默认有一个透明界面。在正常模式下,你可以透过它看到一点背景。

例如,你可以看到背景程序中的一些模糊的文字。

GNOME 控制台的透明界面

我注意到,当控制台进入全屏模式时,界面不再透明。而且,你无法配置透明度。

其他功能

谢天谢地,你可以在控制台中使用标签。

标签式界面

你可以执行与以往 GNOME 终端一样的搜索操作。

GNOME 控制台中的搜索操作

它没有太多的选项。 汉堡菜单 hamburger menu 让你一眼就能看到所有可用的键盘快捷键。

GNOME 控制台中的键盘快捷键

以上就是关于 GNOME 控制台的一切。

在 Ubuntu 22.04 上安装 GNOME 控制台

如果你的发行版使用了原版 GNOME 42,那么它应该默认提供了新终端。

尽管 Ubuntu 22.04 使用的是 GNOME 42,但它仍然使用旧的 GNOME 终端。不过,你可以使用下面的命令来安装新的控制台。

sudo apt install gnome-console

总结

你可能会想,既然我们已经有了一个更好的、功能更强的 GNOME 终端,为什么还要开发一个新的控制台呢?这是因为 GNOME 有了新的设计指南。改造这些应用程序的旧代码库太复杂了,可能也不大划算,从头开始写反而会更容易,因此你会看到更多的“新的” GNOME 应用程序,如控制台和文本编辑器。

由于这个新的应用程序的目标是让事情更简单,因此它没有提供很多功能。你不能定制它,改变颜色、字体等。由于不支持定制,所以也不需要配置文件。

对于很少使用终端的人来说,控制台已经够用了。不过,我认为应该增加在输入密码时显示星号的功能。其他 面向初学者的发行版,如 Mint,就使用了这个功能,从而避免对 Linux 新手用户造成困扰。

你如何看待这个新的 GNOME 控制台,以及这种创建“新的 GNOME 应用程序”的方式呢?欢迎在下方评论区发表你的看法。


via: https://itsfoss.com/gnome-console/

作者:Abhishek Prakash 选题:lkxed 译者:lkxed 校对:wxy

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

RHEL 9 是使用 CentOS Stream 构建的最新升级版。这也是其在 IBM 旗下发布的第一个主要版本。

红帽 9

红帽企业 Linux(RHEL)无疑是开源企业生态系统中的一个重要角色。

可能你记得,IBM 在 2019 年以 340 亿美元收购了红帽公司。因此,可以说,RHEL 8 是它被收购前的最后一个主要版本。

多年来,RHEL 8 已经有了几次更新。

最后,红帽宣布发布了 RHEL 9,作为为企业 IT 基础设施提供动力的下一代升级版本。

在这里,让我重点介绍一下该版本的主要新增功能。

RHEL 9 的新变化

请注意,该平台将在未来几周内普遍提供。但是,既然已经正式宣布,应该不会花很长时间。

如果你是一个 Linux 桌面用户,也不关心云创新,你会发现有许多技术术语。你需要参考红帽的官方文档来了解它们。

如果你已经在使用 CentOS Stream,你可能对 RHEL 9 的升级有一定的了解。

是的,RHEL 9 是第一个由 CentOS Stream 构建的生产版本。

根据 新闻稿,新版本的重点是两个不同的功能:

  • 全面的边缘计算管理,以服务的形式交付,以更大的控制和安全功能来监督和扩展远程部署,包括零接触的配给,系统健康的可视性,以及更灵敏的漏洞缓解,所有这些都来自一个单一的界面。
  • 通过 Podman(RHEL 的集成容器管理技术)自动回滚容器,它可以自动检测新更新后的容器是否无法启动,然后将容器回滚到以前的工作版本。

其他主要亮点包括:

  • 一个新的镜像构建器服务。
  • 与 AWS Graviton 处理器的整合。
  • 针对 Spectre 和 Meltdown 等硬件级安全漏洞的改进。
  • 引入一个新的完整性测量架构。
  • WireGuard VPN 技术(无支持的技术预览)。
  • 改进了自动化。
  • Python 3.9
  • Node.js 16
  • Linux 内核 5.14

你可以参考 RHEL 9 测试版发布说明 以了解更多关于该版本的信息。

总结

虽然该版本可能不具有最新和最伟大的技术,但这些更新特性和功能应该有助于为较新的 IT 需求提供增强的支持。

最新版本应该在未来几周内通过红帽客户门户和云供应商市场提供。如果你不了解,可以在 官方网站 上查看这个 Linux 平台的定价。

当然,你也可以通过 红帽开发者计划 免费在一些系统上测试它。


via: https://news.itsfoss.com/rhel-9-release/

作者:Ankush Das 选题:lkxed 译者:wxy 校对:wxy

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

保护开源软件需要多少钱?OpenSSF 称 1.5 亿美元

在华盛顿特区刚刚举行的第二届开源软件安全峰会上,OpenSSF 宣布了一项雄心勃勃、多管齐下的计划,有 10 个关键目标,以更好地保护整个开源软件生态系统。OpenSSF 估计,其计划在两年内将需要约 1.5 亿美元的资金,目前成员已经认捐了 3000 万美元。

消息来源:venturebeat
老王点评:确实,开源软件有一些历史问题需要专门投入人力和资金解决夯实一下。真要是花了这么多钱能解决大部分主要问题,也是好的。

DeepMind 的最新人工智能可以执行 600 多项任务

DeepMind 本周发布了一个名为 Gato 的“通用”人工智能系统,一个可以被教导执行许多不同类型任务的系统。研究人员训练 Gato 完成了 604 项任务,包括给图像加标题,进行对话,用真正的机器人手臂堆积积木,以及玩雅达利游戏等等。Gato 不一定总是能很好地完成这些任务,DeepMind 称,Gato 在一半以上的时间里表现得比专家好。Gato 的参数比 GPT-3 的 1700 亿个参数要小几个数量级,只有 12 亿个。

消息来源:techcrunch
老王点评:虽然距离通用人工智能还有一定距离,在理解和学习人类所能完成的任何任务的能力方面还远远不够,但是也是很可喜的进步了。

谷歌发布 Flutter 3

谷歌在几年前创建了 Flutter,目的是做一个跨平台的软件框架。Flutter 可以为安卓、iOS 构建应用程序,而且都来自同一个共享的代码库。Flutter 在今年 2 月份为 Windows 平台提供了稳定支持,但 macOS 和 Linux 仍然只处于测试阶段。在今年的谷歌 I/O 大会上宣布的 Flutter 3,对 macOS 和 Linux 的应用构建也提供了稳定支持。对 Linux 的支持是与 Canonical 合作提供的,Canonical 已经用 Flutter 开发了一些关键应用,包括软件安装和固件更新。

消息来源:xda
老王点评:正如谷歌注意到的,跨平台不仅仅是生成各个平台的二进制,更重要的是,要符合各个平台的体验。

简介

正如我们 最近解释的,WebAssembly 是一种用于以任何语言编写的二进制格式的软件,旨在最终无需更改就能在任意平台运行。WebAssembly 的第一个应用是在 Web 浏览器中,以使网站更快、更具交互性。WebAssembly 有计划推向 Web 之外,从各种服务器到物联网(IoT),其创造了很多机会,但也存在很多安全问题。这篇文章是对这些问题和 WebAssembly 安全模型的一篇介绍性概述。

WebAssembly 跟 JavaScript 很像

在 Web 浏览器内部,WebAssembly 模块由执行 JavaScript 代码的同一 虚拟机 VM 管理。因此,WebAssembly 和 JavaScript 一样,造成的危害也是相同的,只是效率更高,更不易被察觉。由于 JavaScript 是纯文本,运行前需要浏览器编译,而 WebAssembly 是一种可立即运行的二进制格式,运行速度更快,也更难被扫描出(即使使用杀毒软件)其中的恶意指令。

WebAssembly 的这种 “代码混淆” 效果已经被用来弹出不请自来的广告,或打开假的 “技术支持” 窗口,要求提供敏感数据。另一个把戏则是自动将浏览器重定向到包含真正危险的恶意软件的 “落地” 页。

最后,就像 JavaScript 一样,WebAssembly 可能被用来 “窃取” 处理能力而不是数据。2019 年,对 150 个不同的 WASM 模块的分析 发现,其中约 32% 被用于加密货币挖掘。

WebAssembly 沙盒和接口

WebAssembly 代码在一个由虚拟机(而不是操作系统)管理的 沙盒 中封闭运行。这使它无法看到主机,也无法直接与主机交互。对系统资源(文件、硬件或互联网连接)的访问只能通过该虚拟机提供的 WebAssembly 系统接口 WebAssembly System Interface (WASI) 进行。

WASI 不同于大多数其他应用程序编程接口(API),它具有独特的安全特性,真正推动了 WASM 在传统服务器和 边缘 Edge 计算场景中的采用,这将是下一篇文章的主题。在这里,可以说,当从 Web 迁移到其他环境时,它的安全影响会有很大的不同。现代 Web 浏览器是极其复杂的软件,但它是建立在数十年的经验和数十亿人的日常测试之上的。与浏览器相比,服务器或物联网(IoT)设备几乎是未知领域。这些平台的虚拟机将需要扩展 WASI,因此,肯定会带来新的安全挑战。

WebAssembly 中的内存和代码管理

与普通的编译程序相比,WebAssembly 应用程序对内存的访问非常受限,对它们自己也是如此。WebAssembly 代码不能直接访问尚未调用的函数或变量,不能跳转到任意地址,也不能将内存中的数据作为字节码指令执行。

在浏览器内部,WASM 模块只能获得一个连续字节的全局数组( 线性内存 linear memory )进行操作。WebAssembly 可以直接读写该区域中的任意位置,或者请求增加其大小,但仅此而已。这个 线性内存 linear memory 也与包含其实际代码、执行堆栈、当然还有运行 WebAssembly 的虚拟机的区域分离。对于浏览器来说,所有这些数据结构都是普通的 JavaScript 对象,使用标准过程与所有其他对象隔离。

结果还好,但不完美

所有这些限制使得 WebAssembly 模块很难做出不当行为,但也并非不可能。

沙盒化的内存使 WebAssembly 几乎不可能接触到 外部 的东西,也使操作系统更难防止 内部 发生不好的事情。传统的内存监测机制,比如 堆栈金丝雀 Stack Canaries 能注意到是否有代码试图扰乱它不应该接触的对象,但在这里没用

事实上,WebAssembly 只能访问自己的 线性内存 linear memory ,但可以直接访问,这也可能为攻击者的行为 提供便利。有了这些约束和对模块源代码的访问,就更容易猜测覆盖哪些内存位置可能造成最大的破坏。破坏局部变量似乎也是 可能的,因为它们停留在 线性内存 linear memory 中的无监督堆栈中。

2020 年的一篇关于 WebAssembly 的二进制安全性 的论文指出,WebAssembly 代码仍然可以在设定的常量内存中覆盖字符串文字。同一篇论文描述了在三个不同的平台(浏览器、Node.JS 上的服务端应用程序,和独立 WebAssembly 虚拟机的应用程序)上,WebAssembly 可能比编译为原生二进制文件时更不安全的其他方式。建议进一步阅读此主题。

通常,认为 WebAssembly 只能破坏其自身沙盒中的内容的想法可能会产生误导。WebAssembly 模块为调用它们的 JavaScript 代码做繁重的工作,每次都会交换变量。如果模块在这些变量中的任意一处写入不安全的调用 WebAssembly 的 JavaScript 代码,就 导致崩溃或数据泄露。

未来的方向

WebAssembly 的两个新出现的特性:并发 和内部垃圾收集,肯定会影响其安全性(如何影响以及影响多少,现在下结论还为时过早)。

并发允许多个 WebAssembly 模块在同一个虚拟机中并行。目前,只有通过 JavaScript web workers 才能实现这一点,但更好的机制正在开发中。安全方面,他们可能会带来 以前不需要的大量的代码,也就是更多出错的方法。

为了提高性能和安全性,我们需要一个 本地的垃圾收集器,但最重要的是,要在经过良好测试的浏览器的 Java 虚拟机之外使用 WebAssembly,因为这些虚拟机无论如何都会在自己内部收集所有的垃圾。当然,甚至这个新代码也可能成为漏洞和攻击的另一个入口。

往好处想,使 WebAssembly 比现在更安全的通用策略也是存在的。再次引用 这篇文章,这些策略包括:编译器改进、栈/堆和常量数据的 分离 的线性存储机制,以及避免使用 不安全的语言(如 C)编译 WebAssembly 模块代码。

本文 WebAssembly 安全的现在和未来 首次发表在 Linux 基金会 - 培训


via: https://www.linux.com/news/webassembly-security-now-and-in-the-future/

作者:Dan Brown 选题:lujun9972 译者:hanszhao80 校对:wxy

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

通过这篇新的可下载指南开始探索容器技术的要领。

在电视剧 《 太空堡垒卡拉狄加 Battlestar Galactica 》中,这艘名副其实的巨型飞船其实并没有做什么。它是船员们坚定的庇护所,是战略和协调的中心联络点,也是资源管理的安全场所。而 卡布里安毒蛇号 Caprican Vipers 这种单人的独立太空船,出去对付邪恶的 赛昂人 Cylons 和其他太空中的危险。他们也从不只派一两艘毒蛇号出去。他们派了很多。这许许多多的冗余的飞船具有基本相同的能力和目的,但由于它们非常灵活和数量众多,它们总是能够处理每个星期都在威胁战星的任何问题。

如果你认为你感到这像是一个正在发展中的比喻,那么你是对的。现代的“云”大而无当,是分布在很远距离的大量基础设施的集合体。它具有强大的能力,但如果你将其视为普通计算机,就会浪费了它的大部分能力。当你想要处理来自数百万个输入源的大量数据时,把你的解决方案(无论它是采用应用、网站、数据库、服务器还是其他形式)打包起来,并发送该解决方案的微小镜像来处理数据集群,实际上是更有效的。当然,这些都是 “ 容器 container ”,它们是云的劳动力。它们是你发送来处理服务请求的小型解决方案工厂,并且由于你可以根据任何给定时间传入的请求生成所需要的数量,因此理论上它们是取之不尽的。

在家里使用容器

如果你没有大量的传入请求需要处理,你可能会想知道容器给你带来什么好处。不过,在个人电脑上使用容器确实有其用途。

容器作为虚拟环境

通过 Podman、LXC 和 Docker 等工具,你可以像以往运行虚拟机一样运行容器。不过,与虚拟机不同,容器没有因模拟固件和硬件而产生的开销。

你可以从公共仓库下载容器镜像,启动一个最小化的 Linux 环境,并将其作为命令或开发的测试场所。例如,假设你想试试你在 Slackware Linux 上构建的一个应用。首先,在仓库中搜索一个合适的镜像:

$ podman search slackware

然后选择一个镜像,作为你的容器的基础:

$ podman run -it --name slackware vbatts/slackware
sh-4.3# grep -i ^NAME\= /etc/os-release
NAME=Slackware

在工作中使用容器

当然,容器不只是个精简的虚拟机。它们可以是针对为非常具体的需求提供的特定解决方案。如果你不熟悉容器,那么新系统管理员最常见的入门仪式之一可能会有所帮助:启动你的第一个 Web 服务器,但是在容器中。

首先,获取一个镜像。你可以使用 podman search 命令来搜索你喜欢的发行版,或者直接搜索你喜欢的 httpd 服务器。当使用容器时,我倾向于信任我在裸机上使用的相同发行版。

当你你找到一个镜像作为你的容器的基础,你就可以运行你的镜像。然而,正如这个术语所暗示的,容器是封起来的,所以如果你只是启动一个容器,你将无法访问标准的 HTTP 端口。你可以使用 -p 选项将一个容器端口映射到一个标准的网络端口:

$ podman run -it -p 8080:80 docker.io/fedora/apache:latest

现在看看你本地主机上的 8080 端口:

$ curl localhost:8080
Apache

成功了。

了解更多

容器拥有比模仿虚拟机更多的潜力。你可以将它们分组在 “ pod ” 中,构建复杂应用的自动部署,启动冗余服务以满足高需求等等。如果你刚刚开始使用容器,你可以 下载我们最新的电子书 来学习该技术,甚至学习创建一个 “ pod ”,以便你可以运行 WordPress 和数据库。

下载我们最新的电子书

(LCTT 译注:容器环境中使用的 “Pod” 一词,我以前根据容器相关术语多用航海领域名词比喻来将其译做“吊舱”,但也有同学表示了不同意见。根据对 Kubernetes 文档,这个词来自对 鲸鱼荚 pod of whales 豌豆荚 pea pod 的比喻,所以我觉得采用“荚”的翻译比较合适。—— wxy)


via: https://opensource.com/article/22/5/containers-pods-101-ebook

作者:Seth Kenlon 选题:lkxed 译者:geekpi 校对:wxy

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