分类 观点 下的文章

向他人介绍开源最有效的办法是,告诉他们开源可以提供给他们想要的。

 title=

如果你在浏览这里,可能你会编程,而且或许你正使用某些难以捉摸的 Linux 发行版的开源浏览器上阅读这些内容。你也许很多年没有看到过浏览器广告了,因为你正运行着一个开源的广告拦截器。当你想到企鹅时,你感到温暖而又陌生。

简单地说,你知道开源的力量,并且它已经成了你生活的一部分。不幸的是,并不是每个人都发现了如何利用开源的方式。他们的电脑慢得令人痛苦,当他们上网浏览时他们看到的广告比内容都多,他们把钱花在专利和版权的垃圾上。这些人中可能有些是与你有关系的,例如你的侄女和侄子。

知识就是财富

那么你如何向你的侄女和侄子(以及任意一个人)介绍开源?

我尝试着回答这个问题,作为一个教授,一个以长篇大论著称的职业,我最终还是出了一本书:《使用开源项目创造、分享和省钱》,由 McGraw-Hill 出版。

我认为诀窍在于先发现你的侄女或侄子想要获取但没有钱去购买的东西,然后向他们展示如何通过开源知识来得到他们想要的东西。

 title=

可升降的桌子 (Joni Steiner and Nick Ierodiaconou, CC-BY-SA-NC)

知识是所有商品里独特的财富。不像黄金或小麦,它不仅在分享时会保留价值,而且可以迅速增值。因为互联网信息分享成本趋近于零,因此无限地扩展了此过程。每个可以访问互联网的人都史无前例地拥有这一财富。例如,我提供免费的仓库链接到关于书籍、教育、电影、攻略、地图、音乐、照片、艺术品、软件和烹饪等内容。

不要买,而是去制作它

免费和开源逐渐扩展到现实世界,我们现在有机会从根本上降低通过沃尔玛或亚马逊购买的东西的成本,包括玩具电器家居用品和衣服。使用 3D 打印或类似的工具,结合开源分享和数字制造,使得每个人可以制造属于他们自己的复杂的、有用的工具。

 title=

3D 打印的家居用品 (Joshua M. Pearce, CC BY-SA 3.0)

前些年,科学家已经在他们的实验室中做这些工作了。但是现在,任何人都可以轻松地定制满足他们具体需求的产品。已经有数百万个免费的设计可供使用。

 title=

Recyclebot (Joshua M. Pearce, GPLv3)

真正降低一个产品的价格,就要通过垃圾来获取其原材料。伴随着小规模的回收利用过程(例如我实验室正在使用的 Recyclebots)最近得到了改进,这使得人们可以从废物中制造有用的产品,因此产生了一系列让人眼花缭乱的产品。最重要的是,任何人都可以利用专有系统的一小部分成本来获取到这些定制的绿色产品。我们生产出相比常规商品销售税更低的定制产品——它们具有相同的功能,更好的定制形式,而且几乎没有成本。

了解更多

《使用开源项目创建、分享和省钱的项目》一书中,我分享了在家庭制造和回收利用的潜力,以及如何利用开源来为大宗商品评分,如房屋、电力。你可以在我和 Megan Krieger 以及 Janet Callahan 三人为密歇根理工学院的 Husky Bites 录制的网络研讨会了解更多。

希望这些知识能足够激励你把一到两个侄女或侄子带到开源的路上来!


via: https://opensource.com/article/20/10/influence-open-source

作者:Joshua Pearce 选题:lujun9972 译者:萌新阿岩 校对:wxy

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

Emacs 并不是一个单纯的文本编辑器,它将掌控置于你手中,让你几乎可以解决你遇到的任何问题。

 title=

我是一个典型的 Emacs 用户。不是我选择的 Emacs,而是它选择了我。早在我刚开始学习 Unix 的时候,我偶然发现了一个奇怪的名为 Emacs 的应用程序,它隐藏在我的电脑上,其中有一个鲜为人知的功能。传说中(而且被证明是真的),如果你在终端上输入 emacs,按 Alt+X,然后输入 tetris,你就可以玩一个掉方块的游戏。

 title=

那就是我对 GNU Emacs 的印象。虽然这很肤浅,但它也准确地表明了 Emacs 的意义:用户可以重新编程他们的(虚拟)世界,并且可以用一个应用程序做任何他们想做的事情。在你的文本编辑器中玩俄罗斯方块可能不是你日常的主要目标,但这说明 Emacs 是一个值得骄傲的编程平台。事实上,你可以把它看作是 Jupyter 的一种先驱,它把一种强大的编程语言(准确的说叫 elisp)和自己的实时环境结合起来。因此,Emacs 作为一个文本编辑器是灵活的、可定制的、强大的。

如果你习惯于 Bash、Python 或类似的语言,elisp(以及扩展的 Common Lisp)不一定是最容易入门的语言。但是这种 LISP 方言是很强大的,而且因为 Emacs 是一个 LISP 解释器,所以你可以用它构建应用程序,不管它们是 Emacs 插件还是你想开发成一个独立项目的原型。极其流行的 org 模式项目就是一个例子:它是一个 Emacs 插件,同时也是一个标记语法,有移动应用可以解释和扩展其功能。类似的有用的 Emacs 内应用的例子还有很多,包括电子邮件客户端、PDF 浏览器、Web 浏览器、shell 和文件管理器。

两个界面

GNU Emacs 至少有两个用户界面:图形用户界面(GUI)和终端用户界面(TUI)。这有时会让人感到惊讶,因为 Emacs 经常与运行在终端中的 Vi 相提并论(尽管 gVim 为现代 Vi 的实现提供了一个 GUI)。如果你想把 GNU Emacs 以终端程序来运行,你可以用 -nw 选项来启动它。

$ emacs -nw

有了 GUI 程序,你可以直接从应用程序菜单或终端启动 Emacs。

你可能会认为 GUI 会降低 Emacs 的效率,好像“真正的文本编辑器是在终端中运行的”,但 GUI 可以使 Emacs 更容易学习,因为它的 GUI 遵循了一些典型的惯例(菜单栏、可调节的组件、鼠标交互等)。

事实上,如果你把 Emacs 作为一个 GUI 应用程序来运行,你可能在一天的时间里会完全没有意识到你在 Emacs 中。只要你使用过 GUI,大多数常用的惯例都适用。例如,你可以用鼠标选择文本,导航到编辑菜单,选择复制,然后将光标放在其他地方,选择粘贴。要保存文档,你可以进入文件,然后选择保存另存为。你可以按 Ctrl 键并向上滚动,使屏幕字体变大,你可以使用滚动条来浏览你的文档,等等。

了解 Emacs 的 GUI 形式是拉平学习曲线的好方法。

Emacs 键盘快捷键

GNU Emacs 以复杂的键盘组合而恶名远扬。它们不仅陌生(Alt+W 来复制?Ctrl+Y 来粘贴?),而且还用晦涩难懂的术语来标注(Alt 被称为 Meta),有时它们成双成对(Ctrl+X 后是 Ctrl+S 来保存),有时则单独出现(Ctrl+S 来搜索)。为什么有人会故意选择使用这些呢?

嗯,有些人不会。但那些喜欢这些的人是因为这些组合很容易融入到日常打字的节奏中(而且经常让 Caps Lock 键充当 Ctrl 键)。然而,那些喜欢不同的东西的人有几个选择:

  • “邪恶”模式让你在 Emacs 中使用 Vim 键绑定。就是这么简单。你可以保留你的肌肉记忆中的按键组合,并继承最强大的文本编辑器。
  • 通用用户访问(CUA)键保留了所有 Emacs 常用的组合键,但最令人头疼的键(复制、剪切、粘贴和撤消)都被映射到现代的键盘绑定中(分别为 Ctrl+CCtrl+XCtrl+VCtrl+Z)。
  • global-set-key 函数,是 Emacs 编程的一部分,允许你定义自己的键盘快捷键。传统上,用户定义的快捷键以 Ctrl+C 开头,但没有什么能阻止你发明自己的方案。Emacs 并不敝帚自珍,欢迎你按照自己的意愿来扭转它。

学习 Emacs

要想很好地使用 Emacs 是需要时间的。对我来说,这意味着打印出一张速记表,每天都把它放在键盘旁边。当我忘了一个键组合时,我就在我的速记表上查找它。如果它不在我的速记表上,我就学习这个键盘组合,要么通过执行该函数,并注意 Emacs 告诉我如何更快地访问它,要么通过使用 describe-function

M-x describe-function: save-buffer

save-buffer is an interactive compiled Lisp function in ‘files.el’.

It is bound to C-x C-s, <menu-bar> <file> <save-buffer>.
[...]

当你使用它的时候,你就会学习它。你对它了解得越多,你就越有能力去改进它,使它变成你自己的。

尝试 Emacs

人们常开玩笑说 Emacs 是一个包含文本编辑器的操作系统。也许这是在暗示 Emacs 臃肿和过于复杂,当然也有一种说法是文本编辑器根据其默认配置不应该需要 libpoppler(你可以不需要它来编译 Emacs)。

但这个笑话背后潜藏着一个更大的真相,它揭示了 Emacs 如此有趣的原因。将 Emacs 与其他文本编辑器,如 Vim、Nano,甚至 VSCodium 进行比较是没有意义的,因为 Emacs 真正重要的部分并不是你可以在窗口中输入东西并保存的这种思路。那是连 Bash 都能提供的基本功能。Emacs 的真正意义在于它如何将控制置身于你的手中,以及如何通过 Emacs Lisp(Elisp)解决几乎任何问题。


via: https://opensource.com/article/20/12/emacs

作者:Seth Kenlon 选题:lujun9972 译者:wxy 校对:wxy

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

Linux 基金会对 自由和开源软件 free and open-source software (FOSS)社区进行的一项新调查表明,贡献者花在安全问题上的时间不到 3%,而且几乎没有增加这一比例的意愿。

Linux 基金会和 哈佛大学创新科学实验室 Laboratory for Innovation Science at Harvard (LISH)根据近 1200 名 FOSS 贡献者的回答所做的一份报告显示,随着企业和经济越来越依赖开源软件,开发人员“明显需要”将更多的时间用于 FOSS 项目的安全。

该调查包括了旨在帮助研究人员了解贡献者如何分配他们在 FOSS 上的时间的问题,该调查显示,受访者平均只花了其总贡献时间的 2.27% 来应对安全问题。

此外,这些问题的回答还表明,许多受访者对增加安全方面的时间和精力兴趣不大。一位受访者评论说,他们“觉得安全是一件令人心力交瘁的苦差事,是一个最好留给律师和流程狂人的课题”,而另一位受访者则说:“我发现安全是一个令人难以忍受的、无聊的流程障碍。”

研究人员得出结论,需要对 FOSS 的安全和审计采取一种新的方法,以改善安全实践,同时控制对贡献者的负担。

贡献者需求最多的一些工具是错误和安全修复、免费的安全审计,以及将安全相关工具添加到其持续集成(CI)管道的简化方法。

“显然需要为 FOSS 的安全投入更多的精力,但这个负担不应该只落在贡献者身上。”报告中写道。“开发人员一般不想成为安全审计人员,他们希望得到审计结果。”

研究人员提出的其他解决方案包括:鼓励组织将精力重新投入到识别和解决项目本身的安全问题上。另外,开发人员“可以重写 FOSS 项目中容易出现漏洞的部分或整个组件”,而不是试图修补现有代码。

研究人员继续说道,“提高重写安全性的一种方法是将内存不安全的语言(如 C 或 C++)转换为内存安全的语言(几乎所有的其它语言)。……这将消除一整类漏洞,如缓冲区溢出和双重释放。”

性别多样性 —— 或者说,缺乏多样性 —— 是该报告的另一个关键发现。

在 1196 名调查对象中,91% 的人报告说是男性,年龄在 25 至 44 岁之间。研究人员指出,这一发现“强调了人们对 FOSS 社区缺乏女性代表的持续关注。”并指出,报告中缺乏女性代表表明,结果“偏向于男性贡献者的 FOSS 活动,并不能完全代表女性对 FOSS 的贡献。”

调查的大多数受访者来自北美或欧洲,大多数人从事全职工作。将近一半(48.7%)的人说,他们在开放源码贡献上花费的时间得到了雇主的报酬,而 44.02% 的人说,这是他们唯一得到报酬的途径。

有趣的是,结果表明,COVID-19 大流行病对贡献者的工作状态影响不大,只有极少数受访者报告说已脱离工作。研究人员再次指出,由于调查中缺乏女性代表,“这些调查结果可能并不能反映为 FOSS 做出贡献的女性的经历,特别是那些在大流行期间受到家庭责任增加影响的女性。”

虽然绝大多数受访者(74.8%)都是全职雇员,超过一半(51.6%)的受访者是专门为开发 FOSS 而接受报酬的,但在开发者为开源项目做出贡献的动机中,金钱的得分很低,“渴望得到同行的认可”也是如此。

相反,开发者说他们纯粹是对为他们正在开发的开源项目寻找功能、修复和解决方案感兴趣。其他最主要的动机包括享受和希望回馈他们所使用的 FOSS 项目。

“现代经济 —— 无论是数字经济还是实体经济 —— 越来越依赖于自由和开源软件,” 哈佛商学院 Harvard Business School 助理教授 Frank Nagle 说。

“了解 FOSS 贡献者的动机和行为是确保这一关键基础设施未来安全和可持续性的关键一环。”


via: https://www.techrepublic.com/article/open-source-developers-say-securing-their-code-is-a-soul-withering-waste-of-time/

作者:Owen Hughes 译者:wxy 校对:wxy

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

代码英雄讲述了开发人员、程序员、黑客、极客和开源反叛者如何彻底改变技术前景的真实史诗。

什么是《代码英雄》

代码英雄 Command Line Heroes 是世界领先的企业开源软件解决方案供应商红帽(Red Hat)精心制作的原创音频播客,讲述开发人员、程序员、黑客、极客和开源反叛者如何彻底改变技术前景的真实史诗。该音频博客邀请到了谷歌、NASA 等重量级企业的众多技术大牛共同讲述开源、操作系统、容器、DevOps、混合云等发展过程中的动人故事。

本文是《代码英雄》系列播客《代码英雄》第三季(5):基础设施的影响音频脚本。

导语:用在 IT 基础设施中的语言是没有有效期的。COBOL 已经存在了 60 年 —— 而且不会很快消失。我们为大型机维护了数十亿行经典代码。但我们也在用 Go 等语言为云构建新的基础设施。

COBOL 是计算机的一次巨大飞跃,让各行各业变得更加高效。Chris Short 介绍了学习 COBOL 是如何被视为安全的长期投注的。60 年后的今天,还有数十亿行并不容易被替换掉的 COBOL 代码 —— 懂这门语言的专家也很少。Ritika Trikha 解释说,有些事情必须改变。要么更多的人必须学习 COBOL,要么依赖 COBOL 的行业必须更新他们的代码库。这两个选择都很困难。但未来并不是用 COBOL 编写的。今天的 IT 基础架构是在云端构建的,其中很多是用 Go 编写的。Carmen Hernández Andoh 分享了 Go 的设计者是如何想要设计一种更适合云计算的语言。Kelsey Hightower 指出,语言通常都是超专注于一种任务。但它们正变得越来越开放和灵活。

00:00:00 - Saron Yitbarek

1904 年,纽约市地铁首次开始运营时,它被惊叹为现代的一个奇迹。但是……当今天的通勤者仍依赖一个多世纪前设计的基础设施时,会发生什么?列车挤满了人,而且常常晚点。纽约每年有 20 亿人次地铁出行,再也没有人为此感到惊叹了。我们还在依赖昨日的过时基础设施,我们必须找到新的好办法,让它发挥作用。

00:00:44

过去,基础设施项目通常是些可见的大而具体的事物,例如地铁。而且由于这种物理可见性,它们损坏时也显而易见。高速公路开裂、电线杆倒下,我们很清楚这些东西何时需要维修。为了使我们的生活与老化的基础设施保持协调,大量的工作是必不可少的。

00:01:12

但是事物并不总是那么一是一、二是二。如今,我们还拥有 IT 基础设施,在偏僻地区嗡嗡作响的服务器农场,跨越海洋的光纤电缆,还有软件基础设施。而像遗留的操作系统或没人敢替换的 shell 脚本,这些 IT 基础设施变得陈旧和破旧时,我们是无法看出的。但是,造就了今日发展的基础设施却正在老化,就像旧的地铁轨道一样。这可能会扰乱我们的现代生活。如今命令行英雄们正努力确保我们不会被过去束缚,因此出现了大量新的挑战。

00:02:02

这是我们第三季进入编程语言世界探索的第 5 期。我们将研究两种编程语言,它们与最初设计的目标基础设施密切相关。COBOL 是一种大型机的原生语言,而 Go 是云计算的原生语言。它们都深受其起源的影响。理解这一点可能会让明天的开发者不至于像纽约人一样被塞进宾夕法尼亚州的车站。

00:02:33

我是 Saron Yitbarek,这里是红帽的原创播客,《命令行英雄》的第三季。

00:02:43 - 格蕾丝·赫柏 Grace Hopper

我们面前有很多事情需要去做,但是我们首先需要大量相关的且易于访问的信息。我们才刚刚开始。

00:02:53 - Saron Yitbarek

海军上将 格蕾丝·赫柏 Grace Hopper 在 20 世纪 40、50 年代率先开发了高级编程语言。而她之所以能够实现这种巨大的飞跃,是因为当时的基础设施,大型计算机。

00:03:08 - Chris Short

嗨,我叫 Chris Short。

00:03:10 - Saron Yitbarek

Chris 是红帽的首席产品营销经理,而且他也是一位历史爱好者。

00:03:17 - Chris Short

上世纪 40 年代的赫柏上将创造了 FLOW-MATIC,这在当时是革命性的,她被广泛认为是 COBOL 的祖母。因此,她能够坐在那里说:“嘿,只需将其放在大型机上”,或“嘿,只需将其存储在大型机上”即可。

00:03:31 - Saron Yitbarek

这是一个重大的游戏规则改变。突然,你有了这种机器无关的语言,即 COBOL,它是大型机环境特有的。可能性开始逐步打开。

00:03:42 - Chris Short

大型机和 COBOL 真正使得每个组织能够说,它们不再需要充满了带着铅笔、纸、计算器和滑尺的人的办公室,他们可能只需要半个办公室来安装大型机。然后,他们可以雇人用 COBOL 来编写一些应用程序来完成整个财务团队做的所有的数学、逻辑运算以及账目。因此,你需要的财务团队人数少了,仅仅是因为更多的输入可以被数字化,而不是全手动操作。

00:04:17 - Saron Yitbarek

如果你是那些新来的 COBOL 程序员之一,你会觉得你有了一份终身的工作。因为你的工作所基于的基础设施 —— 所有那些大型机 —— 始终会在那里。

00:04:30 - Chris Short

那时侯摩尔定律还未出现,所以你可以整整十年都在同一个大型机上工作,对吧?就像你不用去考虑下一个操作系统,或者下一个类型的容器编排器,又或者下一个出现 AI 之类的东西一样。你可能会整个职业生涯都在从事 COBOL。而且你知道自己的生活将会非常稳定。

00:04:55 - Saron Yitbarek

但是,摩尔定律最终还是来了。新的基础设施也出现了。现如今,程序员不太可能去学习一种半个世纪前的旧语言。但实际上,那些老旧的大型机其实并没有消失。这意味着我们对 COBOL 开发人员的需求也没有消失。

00:05:17 - Chris Short

寻找 COBOL 开发者变得越来越困难。最终会发生的事情是这些大型机可能已经存在了 50 年。这些仍然可以编写出色 COBOL 程序的开发人员将获得巨额收入,以帮助项目运行并完成大型机中的数据重组。而且,该技能肯定会绝迹,并且正在成为一个利润丰厚的职业领域,如果你……现在写 COBOL 绝对可以赚很多钱。

00:05:49 - Saron Yitbarek

尤其是在制造业和金融业。你无法超越几十年前建立的所有基础设施。遗留代码遍及全球。忽略这些老旧的基础设施及其相关的语言,将是一个巨大的错误。

00:06:08 - Chris Short

有两千亿行代码摆在那里,要重构这些代码真的很难。不,我不认为在有生之年我们会看到它消失,真的。

00:06:21 - Saron Yitbarek

Chris Short 是红帽的首席产品营销经理。

00:06:28

我想花一秒钟解释一下 Chris 的观点。你想想看,95% 的 ATM 交易中都有 COBOL 代码,那就是我们与这种语言的联系。但是,COBOL 程序员的平均年龄并不比该语言年轻多少。他们 45 岁,或许 55岁。新人们并不感兴趣这门语言。这就是为什么我想向你介绍一个人。

00:06:56 - Ritika Trikha

嘿,我是 Ritika Trikha。

00:06:59 - Saron Yitbarek

Ritika 是一名技术编辑,曾在 HackerRank 工作。她对 COBOL 的这个问题着迷:人们认为 COBOL 是后大型机时代无意义的残留品。

00:07:12 - Ritika Trikha

如今的开发人员根本不会考虑 COBOL 了,见也没见过,想也没想过。

00:07:17 - Saron Yitbarek

但这可能是灾难的根源。

00:07:21 - Ritika Trikha

如今,仍然有大量的 COBOL 代码在驱动企业的业务。每年至少新增 15 亿行 COBOL 新代码。我认为当你看特定行业时,真的很有意思。就像美国国税局有 5000 万行代码。社会保障局有 6000 万行代码。 因此,这些单位和实体正在处理一些如今最敏感、重要的信息,如果我们不继续为这些大型机提供支持和维护,就会造成很大的破坏。

00:08:04 - Saron Yitbarek

因此,如果我们无法摆脱旧的基础设施,又无法挥舞魔杖来重建整个大型机业务,我们该怎么办?编码人员有时候仅考虑未来,该如何接受过去?我们首先需要直面该问题。

00:08:25 - Ritika Trikha

你知道,年轻一代将不得不重拾这些技能。或者,必须对这些大型机进行某种现代化改造。无论是哪种方式,这个问题都不会消失。这就是为什么 COBOL 还活着的原因。

00:08:35 - Saron Yitbarek

这并不容易。 Ritika 认为我们已经忽略这个问题太长时间了。

00:08:42 - Ritika Trikha

这非常昂贵、艰巨,并且替换数十亿行 COBOL 代码的风险也非常高。它是用于关键任务的代码,比如社会保障和金融信息。COBOL 是专门为此类大量交易而设计的。因此,它由格蕾丝·赫柏在 60 年代为商业交易而设计。自上世纪 60 年代以来,一直存在“如果没坏,为什么要修复它”的说法,现在我们处于这样一个关头,即延续了数十年的大量的高价值数据运行在 COBOL 上。

00:09:22 - Saron Yitbarek

从某种意义上说, Ritika 在呼吁一种文化的转变。改变对 "进 "与 "退 "的态度。由于发展的世界慢慢有了越来越久的历史,我们会更加地接触到自己的历史。你无法摆脱老化的基础设施。这意味着你也不能忽略编程语言的历史。

00:09:47 - Ritika Trikha

有些事情必须得做。当我在 HackerRank 时,我亲眼看到了多少银行和金融机构对 COBOL 开发人员的伤害,几乎是绝望的。这不是一个会被解决的问题,我认为要么必须有某种现代化的系统,要么我们继续培训人员并激励他们。我个人认为将会有 COBOL 再次出现的一天。真的,当所有拥有 COBOL 知识的开发人员退休,并且没有新一代的开发人员学 COBOL 时,将会发生什么?总得做点什么,对吧?所以,当从 COBOL 转向新的基于云的基础设施时,需要有更多的系统化和制度化的改变。

00:10:37 - Saron Yitbarek

Ritika Trikha 是一名旧金山的技术作家。

00:10:49 - Saron Yitbarek

那么 Ritika 提到的那些基于云的基础设施呢?我们今天建立的基础设施是否会将后代绑定到特定的语言,像我们仍绑定找 COBOL 上一样? 亚马逊 Web 服务 Amazon Web Services (AWS)可能是最大的单一云基础设施,于 2006 年推出。 Google 云平台 Google Cloud Platform (GCP)于 2008 年问世,微软 Azure 于 2010 年问世。 Go 语言以并发为重点,定位于在新的云基础设施上蓬勃发展。这是这个时代的语言。

00:11:26 - Carmen Andoh

嗨,我叫 Carmen Andoh, 我是谷歌 Go 团队的项目经理。

00:11:34 - Saron Yitbarek

Carmen 对 Go 语言与今天的基础设施有怎样的联系有深入的理解。这要从 Go 的创作者和编程语言历史的紧密联系说起。

00:11:47 - Carmen Andoh

Robert Pike、Robert Griesemer 和 Ken Thompson。这些名字算是从上世纪 60 年代就开始出现了。Ken Thompson 发明了 B 语言,然后他在夏天的假期继续发明 UNIX 操作系统。Rob Pike 发明了字符串编码 UTF-8,他还发明了 ASCII。他帮助 Ken Thompson 共同编写了 UNIX 编程环境。所以,这两个人是很多、很多年前的同事,他们一直在研究和发明用以前的编程语言编写的操作系统,这些语言包括 Ken Thompson 最终帮助 Dennis Ritchie 一起编写的 C 语言。

00:12:28 - Saron Yitbarek

Pike、Griesemer 和 Thompson 在 Google 工作之后,他们发现了一个严重的问题。并没有出现大规模的并发。人们等待了几个小时编译出来。他们使用的是 C++,并且必须得编写所有这些回调和事件调度器。那是在 2009 年,我们的基础设施再次发生了变化。诸如 C++ 之类的语言越来越不适应这种新的现实。

00:12:59 - Carmen Andoh

多核处理器、网络系统、大规模计算集群和 Web 编程模型等正在引入这些问题。而且,还有这个行业的增长,程序员数量在 2010 年就会达到成千上万。因此,直到那时,所有的编程语言都是在规避问题而不是在正面解决问题。

00:13:24 - Saron Yitbarek

最终,将达到一个临界点,必须开始改变。

00:13:30 - Carmen Andoh

嘿,我们讨厌 C++ ,我说:“好吧,让我们看看我们是否能发明些新的东西。”

00:13:37 - Saron Yitbarek

这种新语言需要完美地适应我们最新的基础设施。

00:13:43 - Carmen Andoh

2005 年云技术到来以后,你不再需要自己的计算机,在某种程度上在其他地方租用它,你就可以得到一个分布式系统。但是在分布式系统中,以及在云计算中,存在并发消息传递问题。你需要确保采用异步对你来说没有问题。Go 缺省就是异步的编程语言。基本上,这意味着你执行的每个操作(例如将所有这些不同的消息发送给系统中的另一个计算机)都无需等待另一个机器对你的响应即可完成。因此,它可以在任何给定时间处理多个消息。

00:14:28 - Carmen Andoh

就是说,云计算是分布式的。因此 Go 的开发就是来满足这一确切需求。Go 早就成为进行这种分布式计算的标准方法之一。这就是为什么我认为它立即引起了开发人员的广泛关注。Go 绝对是云基础设施的语言,无论是其设计,还是所有云基础设施工具,以及在过去十年中如雨后春笋般出现的模块的生态。

00:15:06 - Saron Yitbarek

很快,诸如 Kubernetes 之类的关键应用都用 Go 编写了。谷歌还创建了 Go Cloud,这是一个开源库和一系列工具,使得 Go 更具吸引力。很显然,它是新生态系统的语言。它是云的语言。而且,它的创造者们因开发生命力持久的语言而享有声誉,这绝对没有坏处。

00:15:33 - Carmen Andoh

我认为业界的其他人会说:“嘿,我认为这不会很快消失。”这种语言的发明者恰巧也发明了语言有 50 、60 年了。

00:15:47 - Saron Yitbarek

Carmen Andoh 是谷歌 Go 团队的项目经理。

00:15:54

因此,我们有了一种新的语言 Go ,旨在提供云基础设施必需的并发性。听起来不错。Go 的设计师倾向于创造可以持续半个世纪的语言。这也很棒。但是我的问题是,从现在起,50 年后,当 Go 更像是 COBOL 时,这到底意味着什么?当世界上充满了只有老开发人员才能理解的旧版 Go 代码时,这又意味着什么?在当今的云基础设施老化的时候,我们是否会做好准备?我们是否从 COBOL 和大型机领域吸取了教训,可以帮助我们为 Go 和云设计更美好的未来?

00:16:40

幸运的是,我找到了问所有这些问题的合适人选。这就是下面这位。

00:16:51

我们如何使我们的语言能面向未来?我们知道他们与当今的基础设施息息相关。我们也知道,随着数十年的发展,新的基础设施必将取代旧的基础设施。那么,我们今天做些什么以确保将来能平滑演进?

00:17:10 - Kelsey Hightower

我是 Kelsey Hightower ,我在谷歌,是一名开发人员推广大使,我致力于引入开放性技术并将它们应用于谷歌云上的产品。

00:17:19 - Saron Yitbarek

Kelsey 花了大量时间思考编程的未来。我很好奇,是否有一天我们将陷于握有 Go 语言技能的是另一批老龄化的程序员的问题,就像我们现在缺少 COBOL 的引导一样。我们是否在为这个长远的未来做计划?因此,我和 Kelsey 坐下来进行讨论。

00:17:42 - Kelsey Hightower

...等等。但是,如果你考虑到今天面临的一些新的挑战,如应对互联网,这种网络,你将面临许多用户,成千上万的并发用户,以及不同的机器和架构类型的组合。考虑到这些新的场景,因此你通常希望有一种新的语言来解决。例如, JavaScript 是用于 Web 的,你不会想改造 COBOL 以便可以用它来进行 Web 编程。最终,我们今天已经有了数百种相当完善的语言,而且它们都非常专注于他们的优势。

00:18:15 - Saron Yitbarek

那么,在那种情况下,我们是否需要积极推动人们走向 COBOL ?如果我们正在为这些新问题开发新语言,并且它们是高度定制化的,而 COBOL 仍在坚持不谢幕,我们是否需要鼓励人们选择它,以便我们可以维护我们的旧代码?

00:18:32 - Kelsey Hightower

好吧,我认为这将对企业是个挑战吧?所以,你已经在 COBOL 上投入了 10 到 20 年,没有人会主动想学习一些新的 COBOL。或者你不会像刚从大学毕业那么“我要加倍努力……”。

00:18:45 - Saron Yitbarek

没错。

00:18:46 - Kelsey Hightower

“...这种语言比我父母的年龄都大。” 因此,在那个领域,你必须问自己,继续使用 COBOL 的风险是什么?未来是否仍然有意义?我认为它仍然有益于某些类型的工作任务,但是我们必须问自己一个问题,是时候推进了吗?是时候进化一点了吗?因此,如果你仍然有数十亿行的 COBOL 代码,那么你将必须寻找所有剩余的 COBOL 人才,并将其招进来,但也许我们该开始考虑其他语言能从 COBOL 学习些什么,并将某些功能和库加入到其他语言中。

00:19:26 - Saron Yitbarek

COBOL 终止以后的日子,将会是一个巨大的基础设施项目。用我对纽约地铁的比喻,就像是要替换每条地下隧道。因此,展望未来,我想知道我们是否可以预见到这些问题,甚至将来对自己也能有所帮助。

00:19:48

如果我们将今天的云计算与大型机进行比较,我们是否会在最终到达同一条船上,有着这些旧代码库,使用着旧的但非常稳定的语言,而且我们也到了必须做出选择的时候,我们应该继续前进还是保持不变?

00:20:05 - Kelsey Hightower

云有点不同的是它不是来自一个制造商,对吗?许多云提供商通常提供了一系列技术集合,你就可以选择编程语言、编程范式,无论你是要事件驱动还是基于 HTTP 的全 Web 服务。这意味着你可以选择编程的方式,然后只需专注于要解决的问题。因此,数据进进出出,但是你来选择处理数据的方式。

00:20:36

大型机通常只有一个主界面,对吗?就像你编写一份任务一样,这就是你提交任务的方式,这就是你监控任务的方式,这就是结果。这本身就是一个限制。如果你考虑一些较新的大型机,它们也会支持些较新的技术,因此即使在大型机领域,你也会开始看到可用于运行任务的编程语言扩展。

00:20:58

那么我们开始问自己,好吧,既然我有了新的选项,该什么时候离开这种特定的编程范式继续前进呢?我认为我们不会陷入困境。

00:21:08 - Saron Yitbarek

正确。

00:21:08 - Kelsey Hightower

我认为新的分布式机器很不错,可能起步成本更低,你不必购买整个大型机即可开工。但是我们仍然希望易用性和之前一样:给你我的工作,你为我运行它,完成后告诉我。

00:21:24 - Saron Yitbarek

绝对是这样,你觉得发生的事情,或者说 COBOL 所发生的事情,会发生在今天的任何一种语言上吗? 以 Go 语言做例子,你看到我们在努力地改进 Go 从而吸引人们在 30 年后还想用 Go ?

00:21:38 - Kelsey Hightower

我认为所有语言都会遭受这种命运吧?如果你仔细想一下,其实 Python 已经存在很长时间了。我想差不多 20 年了,甚至更久。因此,我认为会 …… Python 重新流行起来了,它现在是机器学习的基础语言。

00:21:53 - Saron Yitbarek

是的。

00:21:54 - Kelsey Hightower

对于 Tensorflow 之类的库,如果我们仅用时间来衡量,我认为这可能不是看待它的正确方式。还应该有社区是否活跃?语言的适配意愿是否活跃?我认为 Python 做得确实非常出色……社区看到了使其他语言更易于使用的能力。例如,Tensorflow 底层有很多 C++ ,使用这种语言编程可能没有 Python 这样的用户友好性。你可以用 Python,并用它来生成人们正在使用的一些东西,例如 Tensorflow 。现在机器学习非常热门,人们将 Python 引入了这个新领域,那么你猜怎么着? Python 仍然是活跃的,并且在未来的一段时间内都是活跃的。对于 Go 来说,这同样适用。如果 Go 能够继续保持活跃度,那么,它就像许多基础设施工具和许多云库的基层一样,它也将保持活跃。因此,我认为都是这些社区确保了它们将来占有一席之地,并且当未来出现时,确保那里仍有它们的位置。

00:22:58 - Saron Yitbarek

是的。那么,我们如何让我们的语言面向未来呢?就是说,我们如何有意地设计一种语言,使其能持续存在,并在 20、30 年内都保持活跃呢?

00:23:10 - Kelsey Hightower

使用语言的人,我认为这在开源世界中确实是独一无二的。现在,我们已经不再使用商业语言了,对吧,过去曾经来自微软的语言或太阳微系统的如 Java™ ,那时侯,每个人都依赖于供应商来尽心尽力来对语言能干什么以及对运行时环境进行新的改进。现在,我们看到的诸如 Go、Node.js、Ruby 之类的东西,所有这些都是社区支持的,并且社区专注于运行时环境和语言。这样任何人都可以添加新库,对吧?有一个新的 HTTP 规范,对,HTTP/2 几年前问世了,每个社区都有贡献者添加了那些特定的库,猜猜现在怎么样?所有现在这些语言,都兼容于大部分的未来网站。

00:24:01

我认为现在是个人真正地拥有了更多的控制权,如果他们想让语言适用于新的用例,只需要自己贡献即可。因此,我们不再受限于一两家公司。如果公司倒闭,那么运行时环境可能会因此而消亡。我们不再有这个问题了。

00:24:23 - Saron Yitbarek

我们之前在这个播客上已经说过了。未来是开放的。但是,令人着迷的是考虑怎样能做到再过几十年,过去也将是开放的。它们将继承能够变形和演进的基础设施和语言。

00:24:39 - Kelsey Hightower

太棒了,感谢你的加入,我期待人们的工作,而且大型机仍然有意义。它们是经典技术,因此我们不称其为遗产。

00:24:47 - Saron Yitbarek

哦,我喜欢,经典,非常好。

00:24:51

Kelsey Hightower 是 Google 的开发者推广大使。

00:24:57

我正在想象一个充满经典编程语言以及尚未诞生的新语言的未来。那是我为之兴奋的未来。

00:25:07 - 演讲者

请离关着的门远一点。

00:25:12 - Saron Yitbarek

要知道,2017 年 Andrew Cuomo 州长宣布纽约市地铁进入紧急状态。他的政府拨出 90 亿美元投资于老化的基础设施。这应该提醒我们,迟早我们得注意遗留的系统。你不仅需要继续前进,面向未来。你还背着历史包袱。

00:25:37

在开发的世界中,我们倾向于偏向未来。我们认为我们的语言仅在它们流行时才有用。但是,随着信息基础架构的不断老化,开发的历史变得越来越真实。事实证明,过去根本没有过去。记住这一点是我们的工作。

00:26:05

你可以前往 redhat.com/commandlineheroes ,以了解有关 COBOL 或 Go 或本季我们要介绍的其他语言的更多信息。那里有很多很棒的材料在等你。

00:26:19 - Saron Yitbarek

下一集是关于 Bash 的。我们将探索 shell 脚本的起源以及自动化的关键。

00:26:30 - Saron Yitbarek

《命令行英雄》是红帽的原创播客。我是 Saron Yitbarek 。下期之前,编码不止。

什么是 LCTT SIG 和 LCTT LCRH SIG

LCTT SIG 是 LCTT 特别兴趣小组 Special Interest Group ,LCTT SIG 是针对特定领域、特定内容的翻译小组,翻译组成员将遵循 LCTT 流程和规范,参与翻译,并获得相应的奖励。LCRH SIG 是 LCTT 联合红帽(Red Hat)发起的 SIG,当前专注任务是《代码英雄》系列播客的脚本汉化,已有数十位贡献者加入。敬请每周三、周五期待经过我们精心翻译、校对和发布的译文。

欢迎加入 LCRH SIG 一同参与贡献,并领取红帽(Red Hat)和我们联合颁发的专属贡献者证书。


via: https://www.redhat.com/en/command-line-heroes/season-3/the-infrastructure-effect

作者:Red Hat 选题:bestony 译者:messon007 校对:wxy

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

12 月 8 日,CentOS 项目宣布,CentOS 8 将于 2021 年底结束,而 CentOS 7 将在其生命周期结束后停止维护。

换言之,“免费”的 RHEL 以后没有了。

一直以来,CentOS 就是以“免费的 RHEL 版本”而深得开源社区和运维工程师们的喜爱。RHEL 红帽企业 Linux Red Hat Enterprise Linux )是红帽公司推出的企业版 Linux ,向以稳定、可靠和高性能著称。但是,RHEL 是红帽公司的商业产品,用户需订阅红帽公司的商业支持服务才可以使用。而 CentOS 是基于红帽按照开源许可证发布的 RHEL 源代码,并去除了商标等商业信息后重构的版本。从产品特性和使用上来说,CentOS 和 RHEL 几无二致,当然,CentOS 的用户得不到红帽公司的商业支持。

除此以外,CentOS 的发行也比 RHEL 的发行晚得多。除了 CentOS 之外,还有一些也是基于 RHEL 衍生的 Linux 发行版,如 Oracle Linux。

可以说,在中国有大量的 CentOS 用户和装机量,这和 CentOS 的免费不无关系。

CentOS 项目本来是一个社区项目,但是后来红帽公司收购了 CentOS 之后,其地位就有些尴尬。红帽公司旗下有着三个主要的 Linux 发行版产品线:一个是 Fedora,作为先行实验版本,会在快速迭代的同时实验各种新的 Linux 功能和特性,稳定成熟后,这些特性会发布到 RHEL 上;另一个是红帽 Linux ,即 RHEL,它是红帽公司的主要 Linux 发行版,相对来说,在特性和新软件包的添加和更新方面更加保守;最后就是 CentOS,就是 RHEL 的自由开源构建版本,但是在 CentOS 被纳入红帽怀抱之后,其只是作为 RHEL 的一个“免费”版本发布,似乎在红帽公司内的定位也一直模糊。

而在去年,CentOS 团队宣布和红帽合作推出了一个新的滚动版 Linux:CentOS Stream。是的,你没看错,是滚动版。按照红帽的说法,这是一个“中游”的发行版,位于 Fedora 和 RHEL 之间。主要的目标是为了形成一个可循环的“彭罗斯三角”,以使社群对 CentOS 的改进可以流回到 RHEL 当中。

或许,从那一刻开始,就注定了 CentOS Linux 终将落幕吧。

在本次公告中,CentOS 项目宣布,“在接下来的一年里,我们将把重点从 CentOS Linux 转移到 CentOS Stream 上。CentOS Linux 8 作为 RHEL 8 的重构版,将在 2021 年底结束。”而尚在计划维护期的 CentOS 7 系列,也将在 2024 年维护期限到达之后停止维护。所以,还在使用 CentOS 作为生产服务环境的运维工程师们,要么考虑购买 RHEL 商业订阅;要么考虑自行根据 RHEL 源代码构建吧——或许也会有一群人重新接过这个重构的工作,发行新的 Linux 发行版吧。

目前使用 CentOS 的服务器,还可以继续在 RHEL 的计划维护期得到支持,见下表:

Red Hat Enterprise Linux Life Cycle

而 “CentOS Stream 将在该日期之后继续,作为 RHEL 的上游(开发)分支。”也就是说,以后,Fedora 依然是第一个上游,但是在 RHEL 发布新版本之后,CentOS Stream 会在它的基础上滚动更新,并将成熟的更新反哺到 RHEL 当中。

此外,CentOS Stream 也将成为 CentOS 特别兴趣小组(SIG)之间合作的核心,这可以让 CentOS 贡献者社区对 RHEL 的未来有很大的影响力。红帽认为,“将我们的全部投资转移到 CentOS Stream 是进一步推动 Linux 创新的最佳方式。”

当然,在 CentOS Linux 8 结束时,你可以考虑迁移到 CentOS Stream 8,它会像传统的 CentOS Linux 版本一样定期更新。但是,切记,这是一个作为 RHEL 中游的滚动发行版,并不太建议你在生产环境中使用。关于这个变化,你还可以参考这个 FAQ

不过,像 Facebook 这样的有足够技术力量的大型 IT 公司,已经将其运行着的数百万台服务器迁移(或正在迁移)到一个他们从 CentOS Stream 衍生而出的操作系统上了。红帽也鼓励所有合作伙伴和开发人员不仅仅参与 CentOS Stream,而是开始建立自己的分支。

此外,除了 CentOS Stream 之外,红帽也提供了一系列平台来支持不同的需求:

  • Fedora 项目:是 Fedora 操作系统的基础,用于那些希望贡献操作系统创新前沿的人。
  • Red Hat Universal Base Image:是一个免费的、可再发行的、面向开发人员的镜像,用于创建容器化的、云原生企业应用。有了它,开发人员可以更轻松地在 RHEL 上和红帽的开放混合云产品组合(包括红帽 OpenShift)中创建经认证的应用。
  • RHEL 开发者订阅:是一个免费的、自助支持的开发者订阅,它为应用的开发提供了一个开发/测试环境,在 RHEL 的稳定、更安全和高性能的基础上部署到生产中。

好了,你对这件事怎么看?

距离 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 !