2020年12月

距离 2020 年结束只剩下区区 24 天,我们即将结束魔幻的 2020 ,迎来新的一年,新的一年或好或坏,但终将到来。

Github 年度报告的两点变化

在上周,Github 发布了 2020 年度报告,相信各位都有所耳闻。在对比了从 2016 年至 2020 年共计五年的报告后,我观察到了以下两点变化:

1、从关注数据,到关注人

2020 年和往年的报告一个很不同的点在于,不再单纯的以数据讲话。这样的表现“很不程序员”,反倒是和我们所熟悉的另外一个科技巨头 —— 苹果很像。不再强调数据的绝对差值,更多关注技术对于人、事、物引发的变化。

在 2020 年的报告中,内容被分为了三个不同的部分:寻找平衡、赋能社区、保护软件安全

这三者则分别对应在今年发生在每一个 GitHub 开发者身上的事件:

  • Covid-19 新冠肺炎迫使开发者居家办公,以及由此引发的生活和工作平衡的思考;
  • GitHub 为开源项目提供新的功能 Discussions 允许开源项目建立社区,让 议题 issue 可以更加专业;
  • GitHub 为所有项目开启安全检查项目,提醒开发者为项目更新出现安全问题的依赖和软件代码。

除了一个标准的概览之外,GitHub 还为这三个不同的大事件准备了详细的报告,如果你感兴趣,可以下载来看。

2、从只给数据,到还给建议

和往年的报告只关注数据不同,今年的 GitHub 2020 年度报告给出了不少的建议,指导开发者们的下一步行动。而这些建议,无论你是否可以遵循,都可以给你一些新的思考维度,可以让你获得更全的信息。

比如,在生产力篇的第 6 页,GitHub 给出了一些建议,来帮助开发者获得工作和生活的平衡,谋求更好的开发体验。

类似的建议也出现在了安全篇的第 6 页,GitHub 为开发者提供了一些有效的保护软件安全的介绍,帮助开发者防御安全问题。

报告中的其他地方也出现了类似的建议,帮助更多的开发者避开问题。

值得关注的数据

除了 2020 年度报告的结构和行文变化,报告中的一些数据也值得我们关注:

GitHub 不仅仅是开源的代名词,更是工作的代名词

在 2020 年度报告中,GitHub 首次给出了按周计算的活跃度信息,可以看到,GitHub 的活跃用户信息和工作日、节日等节点高度重合,明显表现出了工作日和休息日的区别。

和我们曾经设想的,工作时做公司的事,下班的时候做开源不同。如今,GitHub 已经成为一种工作方式,我们会在工作的时候,因为工作需要而打开 GitHub,在休息的时候,因为个人兴趣而打开 GitHub。

Github 如今已经成为了一种必备品,我们每天都在“面向 GitHub 编程”~

变大的总量,新加入的学生和占比减少的开发者们

GitHub 公布的 2020 年开发者总数为 5600 万开发者,而在 2019 年这一数字是 4000 万开发者,过去的一年里新增了 1600 万开发者,而纵观近几年数据,今年新增的数据是历年来新增用户最多的一年。

而总量变化的同时,开发者的比重在所有用户的所占比重在下降,从 2016 年的 60% 逐年递减至 2020 年的 54%,相反,我们可以看到,教育相关的学生用户、教师用户的比重在不断的攀升,到 2020 年,教育相关用户的比例已达 23%,几乎达到了 Github 用户比重的四分之一。

学生成为 GitHub 用户中的主力,在未来,我们将会看到更多基于 GitHub 的学习、教育的方式,GitHub 也将成为软件开发、计算机科学等相关领域的必修课。

自动生成的安全更新和更快的软件安全更新

对于绝大多数的软件来说,对于第三方库和代码的依赖是不可避免的,特别是使用 JavaScript、Ruby 和 .Net 的开发者,对于第三方库的依赖都在 90% 以上;这些第三方依赖除了引入了更便捷完成代码逻辑以外,还带入了更多的安全问题。对于开发者来说,如何尽可能不受依赖影响,保障软件安全就成为了一个值得关注的问题。

GitHub 为开发者提供了无痛的自动生成安全更新 拉取请求 Pull Request (PR)功能,系统在后台自动检测依赖代码是否有相应的安全更新,并创建相应的拉取请求,为开发者提供了一键解决依赖库所引发的安全问题的功能。降低开发者维护软件的成本,将一部分可以自动化完成的工作,交由系统自动完成。根据 GitHub 的测算,在接入了该功能以后,开源代码的安全更新速度相比于之前提升了 4.4 周时间,让软件的迭代更加的快捷。

不过目前该功能仅支持六种不同的包管理器和编程语言,具体包括:Composer(PHP)、Maven(Java)、npm(Javascript)、NuGet(.Net)、PyPI(Python)、RubyGems(Ruby),其他语言暂时无法享受到来自 GitHub 提交的安全更新。

总结

今年的 Github 报告中的一些表现,和往年的报告有所不同,表现出的人性,让我们有了更加暖心的建议。作为一个开发者,我十分建议你下载一份官方的报告,细读其中的建议,让自己的开发更有效率;让自己的生活更加丰富多彩;让自己的代码,更少 Bug !

这些有用的技巧将改变你使用这个流行的版本控制系统的工作方式。

Git 是目前最常见的版本控制系统之一,无论是私有系统还是公开托管的网站,都在使用它进行各种开发工作。但无论我对 Git 的使用有多熟练,似乎总有一些功能还没有被发现,下面是改变我使用 Git 工作方式的七个技巧。

1、Git 中的自动更正

我们有时都会打错字,但如果启用了 Git 的自动更正功能,就可以让 Git 自动修正打错的子命令。

假设你想用 git status 检查状态,却不小心输入了 git stats。正常情况下,Git 会告诉你 stats 不是一条有效的命令:

$ git stats
git: ‘stats’ is not a git command. See ‘git --help’.

The most similar command is
status

为了避免类似的情况发生,请在 Git 配置中启用 Git 自动更正功能:

$ git config --global help.autocorrect 1

如果你希望这个命令只适用于你当前的版本库,请省略 --global 选项。

这条命令启用了自动更正功能。更深入的教程可以在 Git Docs 中找到,但尝试一下和上面一样的错误命令,就能很好地了解这个配置的作用:

$ git stats
git: ‘stats’ is not a git command. See ‘git --help’.
On branch master
Your branch is up to date with ‘origin/master’.

nothing to commit, working tree clean

Git 现在不会建议使用其他子命令,而是直接运行最上面的建议,在本例中是 git status

2、计算你的提交量

你需要计算提交数量可能有很多原因。例如,许多开发者通过计算提交数量来判断何时该增加构建版本号,或者只是想了解项目的进展情况。

要计算提交数量其实很简单直接,下面是 Git 的命令:

$ git rev-list --count branch-name

在上面的命令中,branch-name 应该是当前版本库中有效的分支名称:

$ git rev-list –count master
32
$ git rev-list –count dev
34

3、优化你的仓库

你的代码仓库不仅对你有价值,对你的组织也有价值。你可以通过一些简单的做法来保持你的版本库的清洁和更新。其中一个最好的做法是 使用 .gitignore 文件。使用这个文件,就是告诉 Git 不要存储许多不需要的文件,比如二进制文件、临时文件等等。

为了进一步优化你的版本库,你可以使用 Git 的垃圾收集功能:

$ git gc --prune=now --aggressive

当你或你的团队大量使用 pullpush 命令时,这条命令就会起到帮助作用。

这个命令是一个内部工具,可以清理仓库中无法访问或 “孤儿” Git 对象。

4、备份未被跟踪的文件

大多数时候,删除所有未被跟踪的文件是安全的。不过很多时候,你不仅要删除,还要为你的未跟踪文件创建一个备份,以备以后需要。

通过 Git 和一些 Bash 命令管道,可以很容易地为你的未被跟踪的文件创建一个压缩包:

$ git ls-files --others --exclude-standard -z |\
xargs -0 tar rvf ~/backup-untracked.zip

上面的命令制作了一个名为 backup-untracked.zip 的存档(并排除了 .gitignore 中列出的文件)。

5、了解你的 .git 文件夹

每个版本库都有一个 .git 文件夹。它是一个特殊的隐藏文件夹。

$ ls -a
. … .git

Git 的工作主要依赖于两个部分:

  1. 工作树(你当前签出的文件状态)。
  2. 你的 Git 仓库的路径(即你的 .git 文件夹的位置,其中包含版本信息)。

这个文件夹存储了所有的引用和其他重要的细节,比如配置、仓库数据、HEAD 状态、日志等等。

如果你删除这个文件夹,你的源代码的当前状态不会被删除,但你的远程信息,如你的项目历史记录,会被删除。删除这个文件夹意味着你的项目(至少是本地副本)不再处于版本控制之下。这意味着你不能跟踪你的变化;你不能从远程拉取或推送。

一般来说,不需要在 .git 文件夹里做什么,也没有什么应该做的。它是由 Git 管理的,基本上被认为是个禁区。然而,这个目录里有一些有趣的工件,包括 HEAD 的当前状态。

$ cat .git/HEAD
ref: refs/heads/master

它还可能包含对你的存储库的描述:

$ cat .git/description

这是一个未命名的仓库,编辑这个 description 文件可以命名这个仓库。

Git 钩子文件夹(hooks)也在这里,里面有一些钩子示例文件。你可以阅读这些示例来了解通过 Git 钩子可以实现什么,你也可以 阅读 Seth Kenlon 的 Git 钩子介绍

6、查看另一个分支的文件

有时你想查看另一个分支的文件的内容。用一个简单的 Git 命令就可以实现,而且不需要切换分支。

假设你有一个名为 README.md 的文件,它在 main 分支中,而你正在 dev 分支上工作。

使用下面的 Git 命令,你可以在终端上完成:

$ git show main:README.md

一旦你执行了这个命令,你就可以在你的终端上查看文件的内容。

7、在 Git 中搜索

只需一个简单的命令,你就可以像专业人士一样在 Git 中搜索。更棒的是,即使你不确定是在哪个提交或分支上做的修改,也可以在 Git 中搜索。

$ git rev-list --all | xargs git grep -F 'string'

例如,假设你想在你的版本库中搜索 font-size: 52 px; 这个字符串:

$ git rev-list –all | xargs git grep -F 'font-size: 52 px;'
F3022…9e12:HtmlTemplate/style.css: font-size: 52 px;
E9211…8244:RR.Web/Content/style/style.css: font-size: 52 px;

试试这些技巧

希望这些高级技巧对你有用,提高你的工作效率,为你节省很多时间。

你有喜欢的 Git 小技巧 吗?在评论中分享吧。


via: https://opensource.com/article/20/10/advanced-git-tips

作者:Rajeev Bera 选题:lujun9972 译者:wxy 校对:wxy

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

LibreOffice 是一款自由开源的跨平台办公生产力软件。如果你没有充分利用它,那么必须看下 LibreOffice 小技巧

甚至在非编程人员中,深色主题也越来越受欢迎。它减轻了眼睛的压力,特别适合长时间使用屏幕。有人认为,这使文本看起来清晰明了,有助于提高生产率。

如今,某些 Linux 发行版例如 Ubuntu 带有深色模式,使你的系统具有更暗的色彩。当你打开 深色模式 dark mode 时,某些应用将自动切换到深色模式。

LibreOffice 也会这样,但你编辑的主区域除外:

LibreOffice semi dark mode matching with the system theme

你可以更改它。如果要让 LibreOffice 进入完全深色模式,只需更改一些设置。让我告诉你如何做。

如何在 LibreOffice 中完全启用深色模式

如前所述,你需要先启用系统范围的深色模式。这样可以确保窗口颜色(或标题栏)与应用内深色完全融合。

接下来,打开套件中的任意 LibreOffice 应用,例如 Writer。然后从菜单中,依次点击 Tools -> Options -> Application Colors,然后选择 Document background 和 Application backgroundBlackAutomatic(任意适合你的方式)。

如果图标不是深色,那么可以从菜单(如下图所示)中更改它们,Tools -> Options -> View ,我在 MX Linux 上的个人选择是 Ubuntu 的 Yaru 图标样式(如果你使用的图标包为深色版本,请选择它) 。

当然,你也可以尝试其他 Linux 发行版的 icon 主题

最终结果应如下所示:

LibreOffice flatpak 软件包的其他技巧

如果你使用的是 LibreOffice 套件的 Flatpak 软件包,那么 LibreOffice 的标题区域(或菜单区域)可能看起来是白色的。在这种情况下,你可以尝试进入 Tools -> Options -> Personalization,然后选择 “灰色主题”,如下截图所示。

它并不完全是黑色的,但应该可以使外观看起来更好。希望可以帮助你切换到深色主题的 LibreOffice 体验!

总结

深色主题逐渐开始在我们的台式机中占主导地位,它具有现代品味并减少了眼睛疲劳,尤其是在弱光条件下。

LibreOffice 使你可以自由地将工作环境切换为深色主题或保留浅色主题元素。实际上,你将有大量的自定义选项来调整你喜欢的内容。你是否已在 LibreOffice 上切换为深色主题?你首选哪种颜色组合?在下面的评论中让我们知道!


via: https://itsfoss.com/libreoffice-dark-mode/

作者:Dimitrios Savvopoulos 选题:lujun9972 译者:geekpi 校对:wxy

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

这是一份在同一台机器上设置 Linux 和 Windows 双重启动的速成解释,使用统一可扩展固件接口(UEFI)。

我将强调一些重要点,而不是一步一步地指导你来如何配置你的系统以实现双重启动。作为一个示例,我将提到我在几个月之前新买的笔记本计算机。我先是安装 Ubuntu Linux 到整个硬盘中,这就摧毁了预装的 Windows 10 环境。几个月后,我决定安装一个不同的 Linux 发行版 Fedora Linux,也决定在双重启动配置中与它一起再次安装 Windows 10 。我将强调一些极其重要的实际情况。让我们开始吧!

固件

双重启动不仅仅是软件问题。或者说它算是软件的问题,因为它需要更改你的固件,以告诉你的机器如何开始启动程序。这里有一些和固件相关的重要事项要铭记于心。

UEFI vs BIOS

在尝试安装前,确保你的固件配置是最佳的。现在出售的大多数计算机有一个名为 统一可扩展固件接口 Unified Extensible Firmware Interface (UEFI)的新类型固件,UEFI 差不多取代了另一个名为 基本输入输出系统 Basic Input Output System (BIOS)的固件类型,(包括很多固件供应商在内的很多人)通常称 BIOS 为 传统启动模式 Legacy Boot

我不需要 BIOS,所以我选择了 UEFI 模式。

安全启动

另一个重要的设置是 安全启动 Secure Boot 。这个功能将检测启动路径是否被篡改,并阻止未经批准的操作系统的启动。现在,我禁用这个选项来确保我能够安装 Fedora Linux 。依据 Fedora 项目维基“功能/安全启动”部分的介绍可知:Fedora Linux 在安全启动选项启用的时候也可以工作。这对其它的 Linux 发行版来说可能有所不同 — 我打算今后重新研究这项设置。

简而言之,如果你发现在这项设置启用时你不能安装你的 Linux 操作系统,那么禁用安全启动并再次重新尝试安装。

对启动驱动器进行分区

如果你选择双重启动并且两个操作系统都在同一个驱动器上,那么你必须将它分成多个分区。即使你使用两个不同的驱动器进行双重启动,出于各种各样的原因,大多数 Linux 环境也最好分成几个基本的分区。这里有一些选项值得考虑。

GPT vs MBR

如果你决定手动分区你的启动驱动器,在动手前,我建议使用 GUID 分区表 GUID Partition Table (GPT),而不是使用旧的 主启动记录 Master Boot Record (MBR) 。这种更改的原因之一是:MBR 有两个特定的限制,而 GPT 却没有:

  • MBR 可以最多拥有 15 个分区,而 GPT 可以最多拥有 128 个分区。
  • MBR 最多仅支持 2 TB 磁盘,而 GPT 使用 64 位地址,这使得它最多支持 800 万 TB 的磁盘。

如果你最近购买过硬盘,那么你可能会知道现代的很多硬盘都超过了 2 TB 的限制。

EFI 系统分区

如果你正在进行一次全新的安装或使用一块新的驱动器,那么这里可能没有可以开始的分区。在这种情况下,操作系统安装程序将先创建一个分区,即 EFI 系统分区 EFI System Partition (ESP)。如果你选择使用一个诸如 gdisk 之类的工具来手动分区你的驱动器,你将需要使用一些参数来创建这个分区。基于现有的 ESP ,我设置它为约 500 MB 的大小,并分配它为 ef00( EFI 系统 )分区类型。UEFI 规范要求格式化为 FAT32/msdos ,很可能是因为这种格式被大量的操作系统所支持。

分区

操作系统安装

在你完成先前的两个任务后,你就可以安装你的操作系统了。虽然我在这里关注的是 Windows 10 和 Fedora Linux ,当安装其它组合时的过程也是非常相似。

Windows 10

我开始 Windows 10 的安装,并创建了一个 20 GB 的 Windows 分区。因为我先前在我的笔记本计算机上安装了 Linux ,所以驱动器已经有了一个 ESP ,我选择保留它。我删除所有的现有 Linux 和交换分区来开始一次全新安装,然后开始我的 Windows 安装。Windows 安装程序自动创建另一个 16 MB 的小分区,称为 微软保留分区 Microsoft Reserved Partition (MSR)。在这完成后,在 512 GB 启动驱动器上仍然有大约 400 GB 的未分配空间。

接下来,我继续完成了 Windows 10 安装过程。随后我重新启动到 Windows 来确保它是工作的,在操作系统第一次启动时,创建我的用户账号,设置 Wi-Fi ,并完成其它必须的任务。

Fedora Linux

接下来,我将心思转移到安装 Linux 。我开始了安装过程,当安装进行到磁盘配置的步骤时,我确保不会更改 Windows NTFS 和 MSR 分区。我也不会更改 ESP ,但是我设置它的挂载点为 /boot/efi。然后我创建常用的 ext4 格式分区, /(根分区)、/boot/home。我创建的最后一个分区是 Linux 的交换分区(swap)。

像安装 Windows 一样,我继续完成了 Linux 安装,随后重新启动。令我高兴的是,在启动时 大一统启动加载程序 GRand Unified Boot Loader (GRUB)菜单提供选择 Windows 或 Linux 的选项,这意味着我不需要再做任何额外的配置。我选择 Linux 并完成了诸如创建我的用户账号等常规步骤。

总结

总体而言,这个过程是不难的,在过去的几年里,从 BIOS 过渡到 UEFI 有一些困难需要解决,加上诸如安全启动等功能的引入。我相信我们现在已经克服了这些障碍,可以可靠地设置多重启动系统。

我不再怀念 Linux LOader)(LILO)!


via: https://opensource.com/article/19/5/dual-booting-windows-linux-uefi

作者:Alan Formy-Duval 选题:lujun9972 译者:robsean 校对:wxy

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

大家好!今天是我搭建这个玩具项目的第 2 天。下面再来记录一下关于 Rails 的一些有趣的事情吧!

目标:做一个冰箱诗歌论坛

我想做一种无聊的标准网站来学习 Rails,并且其他人可以与之互动,就像一个论坛一样! 但如果人们真的可以在网站上打字,那就会产生各种各样的问题(如果他们是垃圾邮件发送者怎么办?又或者只是言语刻薄?)。

我想到的第一个想法是,可以让人们与网站互动,但实际上却不能在网站上打字,那就是一个“冰箱诗歌论坛”,只给你一组固定的字,你就可以随意组合。

所以,这就是我们的计划!

我这个项目的目标是想知道我是否能用 Rails 来做其他的小型网络项目(而不是像我通常做的那样,使用一些更基本的东西,比如 Flask,或者放弃后端,用 Javascript 来写所有东西)。

怎么把字拖来拖去呢?jQuery 的可拖放 UI!

我想让大家能够把文字拖动起来,但我又不想写很多 Javascript。结果发现这超级简单 —— 有一个 jQuery 库可以做到,它叫做 draggable!一开始,拖动并不成功。

一开始拖动在手机上是不行的,但是有一个技巧可以让 jQuery UI 在手机上工作,叫做 jQuery UI touch punch。下面是它的样子(有兴趣看工作原理的可以查看源码,代码很少)。

banana forest cake is

一个有趣的 Rails 功能:关联

我以前从来没有使用过关系型 ORM,对于 Rails,我很兴奋的一件事就是想看看使用 Active Record 是什么样子的!今天我了解了 Rails 的 ORM 功能之一:关联。如果你像我一样对 ORM 完全不了解的话,那就来看看是怎么回事吧。

在我的论坛中,我有:

  • 用户
  • 话题(我本来想把它叫做“线索”,但显然这在 Rails 中是一个保留词,所以现在叫做“话题”)。
  • 帖子

当显示一个帖子时,我需要显示创建该帖子的用户的用户名。所以我想我可能需要写一些代码来加载帖子,并为每个帖子加载用户,就像这样(在 Rails 中,Post.whereUser.find 将会运行 SQL 语句,并将结果转化为 Ruby 对象):

@posts = Post.where(topic_id: id)
@posts.each do |post|
    user = User.find(post.user_id)
    post.user = user
end

这还不够好,它要为每个帖子做一次单独的 SQL 查询!我知道有一个更好的方法,我发现它叫做关联。这个链接是来自 https://guides.rubyonrails.org 的指南,到目前为止,它对我很有帮助。

基本上我需要做的就是:

  1. User 模型中添加一行 has_many :post
  2. Post 模型中添加一行 belongs_to :user
  3. Rails 现在知道如何将这两个表连接起来,尽管我没有告诉它要连接到什么列上!我认为这是因为我按照它所期望的惯例命名了 posts 表中的 user_id 列。
  4. UserTopic 做完全相同的事情(一个主题也有很多帖子:has_many :posts)。

然后我加载每一个帖子和它的关联用户的代码就变成了只有一行! 就是这一行:

@posts = @topic.posts.order(created_at: :asc).preload(:user)

比起只有一行更重要的是,它不是单独做一个查询来获取每个帖子的用户,而是在 1 个查询中获取所有用户。显然,在 Rails 中,有一堆不同的方法来做类似的事情(预加载、急切加载、联接和包含?),我还不知道这些都是什么,但也许我以后会知道的。

一个有趣的 Rails 功能:脚手架!

Rails 有一个叫 rails 的命令行工具,它可以生成很多代码。例如,我想添加一个 Topic 模型/控制器。我不用去想在哪里添加所有的代码,可以直接运行

rails generate scaffold Topic title:text

并生成了一堆代码,这样我已经有了基本的端点来创建/编辑/删除主题(Topic)。例如,这是我的现在的主题控制器,其中大部分我没有写(我只写了高亮的 3 行)。我可能会删除很多内容,但是有一个起点,让我可以扩展我想要的部分,删除我不想要的部分,感觉还不错。

数据库迁移!

rails 工具还可以生成数据库迁移! 例如,我决定要删除帖子中的 title 字段。

下面是我要做的:

rails generate migration RemoveTitleFromPosts title:string
rails db:migrate

就是这样 —— 只要运行几个命令行咒语就可以了! 我运行了几个这样的迁移,因为我改变了对我的数据库模式的设想。它是相当直接的,到目前为止 —— 感觉很神奇。

当我试图在一列中的某些字段为空的地方添加一个“不为空”(not null)约束时,情况就变得有点有趣了 —— 迁移失败。但我可以修复违例的记录,并轻松地重新运行迁移。

今天就到这里吧!

明天,如果我有更多的进展,也许我会把它放在互联网上。


via: https://jvns.ca/blog/2020/11/10/day-2--rails-associations---dragging-divs-around/

作者:Julia Evans 选题:lujun9972 译者:wxy 校对:wxy

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

2020 年对于 Linux 基金会 Linux Foundation (LF)和我们托管的社区来说,是充满挑战的一年。在这次大流行期间,我们都看到我们和世界各地许多同事、朋友和家人的日常生活完全改变了。在我们的社区中,有太多的人也为失去家人和朋友而悲痛。

看到 LF 的成员加入到对抗 COVID-19 的斗争中,令人振奋。我们在世界各地的成员为科研人员贡献了技术资源,为挣扎中的家庭和个人提供了援助,为国家和国际努力做出了贡献,有些人甚至一起在 LF 公共卫生 下创建了开源项目,以帮助各国应对这场大流行病。

今年,我们的项目社区在继续发展,在许多开放技术领域、开放标准、开放数据和开放硬件方面都有新的举措。今年,我们迎接了 150 多个新社区加入 LF,包括 FINOS 基金会,它是开源金融服务项目的保护项目。

我们的 活动团队 不得不进行了重大转型,在几周内,从面对面的活动转变为虚拟活动,参与者从不足 100 人到数万人不等。这些虚拟聚会帮助我们社区中的许多人在这个困难时期建立了联系。我们也学到了很多关于未来可能通过提供虚拟体验的 混合亲身活动 hybrid in-person events 来提供更具包容性的体验。今年,我们很想念在我们的社区中见到的许多朋友,并期待着在安全的情况下再次见到你们。

我们的 培训和认证 团队能够帮助 170 多万名报名参加我们免费培训课程的人。我要祝贺今年获得 LF 认证的 4 万多人。

LF 的 2020 年度工作报告》显示,尽管商业环境充满挑战,但经过培训和认证的开源专业人员仍有大有需求,并能轻松地展示其价值。

作为我们正在进行的多元化努力的一部分,在加入反对不平等的斗争中,我们的社区专注于该如何在项目中使用语言,并寻找导师来指导下一代的贡献者。我们的社区,如 Linux 内核团队和在北美 KubeCon 上发起的 包容性命名倡议 Inclusive Naming Initiative ,在加强我们的互动方式上取得了进展。

今年是我们 联合发展基金会 Joint Development Foundation (JDF)和 开放标准社区 open standards communities 的突破性一年。我们迎来了六个建立开放标准的新项目。JDF 还被批准为 ISO/IEC JTC 1 公开发布规范(PAS)提交者。今年还标志着我们的第一个开放标准社区 OpenChain 通过 PAS 程序,被正式认可为国际标准。今天,Linux 基金会可以把我们的社区,从开源仓库带到一个公认的全球标准。

今年,我们生态系统中的许多人已经站出来帮助安全工作。一个新的社区 开源安全基金会 Open Source Security Foundation (OpenSSF)启动了,以协调专注于提高开源软件安全性的努力。

当我们继续在美国与挑战作斗争时,我们也重申 LF 是全球社区的一部分

我们的成员必须得应对国际贸易政策变化的一年,并了解到开放源码在政治上的蓬勃发展。来自世界各地的我们的成员社区参与了 开放合作 open collaboration ,因为它是开放、中立和透明的。这些参与者显然希望继续与全球同行合作,以应对大大小小的挑战。

在这困难的一年结束时,所有这些都让我们确信,开放合作是解决世界上最复杂挑战的模式。没有任何一个人、组织或政府能够单独创造出我们解决最紧迫问题所需的技术。我们代表整个 Linux 基金会团队,期待着帮助您和我们的社区应对接下来的任何挑战。

Jim Zemlin,Linux 基金会执行总监

这篇文章首先发布于 Linux 基金会


via: https://www.linux.com/news/download-the-2020-linux-foundation-annual-report/

作者:The Linux Foundation 选题:lujun9972 译者:wxy 校对:wxy

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