分类 代码英雄 下的文章

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

什么是《代码英雄》

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

本文是《代码英雄》系列播客第二季(4):更好的失败音频脚本。

导语:失败是探索时的心跳。我们会在尝试新事物时会多次跌倒。其中秘诀是放弃快速失败,取而代之的是,更好地失败。

本期节目关注在科技领域如何拥抱失败。(对于科技领域来说)以好奇和开放的态度来对待失败是过程中的一部分。Jennifer Petoff 分享了 Google 是如何建立起一种从失败中学习和改进的文化;Jessica Rudder 通过视角的转变,展示了拥抱错误如何能带来意想不到的成功。而 Jen Krieger 则介绍了敏捷框架如何帮助我们为失败做计划。

失败未必是终点。它可以是迈向更伟大事物中的一步。

00:00:00 - Saron Yitbarek

如果你没有听过这个笑话 —— 两个工程师在编译他们的代码。新手举手喊道:“哇,我的代码编译好了!”;老手则会眯着眼睛喃喃道:“唔,我的代码居然编译好了”。

00:00:18

如果你已经做过一段时间编程,当你开始思考失败这件事,对有些事情的看法可能就会有所不同。那些过去无法解决的问题,如今开始看起来像一个更大的解决方案中的一个正常组成部分。那些你曾经称之为“失败”的东西,现在看起来像是变相的成功。

你开始希望你的代码无法通过编译。你希望可以一路摆弄和实验它们,调试和修订和重构这些代码。

00:00:37

你正在收听的是红帽公司的原创播客节目《代码英雄》。我是主持人 Saron Yitbarek。

老实说,那句“ 快速失败 fail fast ”的口号经常被用来作为通往成功的捷径。但是,如果我们不是告诉彼此加快速度并快速失败,而是鼓励彼此更好地失败呢?

00:01:20

《代码英雄》的第二季将介绍的是开发工作中真实的体验:“当我们生活在代码中,到底感觉如何?又是如何变化的?这也是为什么我们要用一整集的时间来讨论失败,因为正是这些失败时刻促使我们适应它。我们称之为“失败”的东西,是进化的心跳,而开源开发者正在拥抱这种进化。当然,这说起来容易做起来难。

00:01:59

想象一下,如果一首全新的莎士比亚的十四行诗被发现了。网络上会兴起一阵热潮,每个人都想去搜索它。但这时,有个小小的设计缺陷导致了所谓的“文件描述符耗尽”。这会造成一连串的失败。突然之间,这所有的流量都在越来越少的服务器之间流动。很快,在 Google 上的“莎士比亚”搜索崩溃了,并崩溃了一个多小时。

00:02:33

现在,你丢掉了 12 亿次搜索查询。这是一场莎士比亚式的悲剧,所有的一切,在网站可靠性工程师(SRE)四处补救的同时上演。

00:02:45 - 配音

还有你吗,布鲁特?那就倒下吧,凯撒!

00:02:54 - Saron Yitbarek

不好意思,我打断一下。但上面说的这个莎士比亚事件其实并不存在。事实上,这是一本书《SRE:Google 运维解密》中一系列灾难性场景的一部分。从这本书中学到的重要的一课就是你必须超越灾难本身。这就是我的意思。

00:03:13

在这个莎士比亚的例子中,当流量被集火到一个被牺牲的单独集群时,这个死亡查询问题就解决了。这为团队赢得了扩充容量的足够时间。但你不能就此止步。尽管这个问题很糟糕,但解决它并不是真正的重点所在。因为失败不一定以痛苦告终,失败也可以引导你的学习。

00:03:38 - Jennifer Petoff

嗨,我是 Jennifer Petoff。

00:03:41 - Saron Yitbarek

Jennifer 在谷歌工作。她是 SRE( 站点可靠性工程 site reliability engineering )团队的高级项目经理,领导谷歌的全球 SRE 教育计划,她也是这本描述了莎士比亚场景的书的作者之一。对于 Jennifer 来说,钻研这样的灾难才能使事情变得更好,但前提是你需要有一个拥抱错误和意外的文化。

00:04:08

所以,让我们再拿莎士比亚举例子。有一个直接的办法,减少负载可以让你免于这种连锁故障。但,真正的工作将在一切恢复正常之后开始,重点在于事后分析报告。

00:04:25 - Jennifer Petoff

事件解决后,我们会创建一个事后分析报告。谷歌的每一个事件都需要有一个事后分析和相应的行动项目,以防止将来再次出现问题,以及更有效地检测和缓解未来出现类似事件或整类问题的可能。

00:04:42 - Saron Yitbarek

这是一个关键的区别。不仅仅是解决这个特定事件,而是看到这个事件告诉你的一系列问题。真正有效的事后分析,不只是告诉你昨天哪里出现了问题。而是让你对今天所做的工作以及对未来的计划有深刻的见解。这种更广泛的思想,灌输了对所有这些事故和失败的尊重,使它们成为日常工作生活中至关重要的一部分。

00:05:12 - Jennifer Petoff

所以,一个真正好的事后分析不仅仅要解决手头的单个问题,它还解决了整个问题。事后分析的重点是什么地方作对了,什么地方做错了,在何处幸运的解决了问题,以及可以采取哪些优先行动来确保这种情况不会再次发生。如果你不采取行动,历史必将重演。

00:05:32 - Saron Yitbarek

在谷歌,人们关注的是 无责任的事后分析 blameless post-mortems ,这就造成了根本的不同。如果出了问题而没有人要责怪,那么每个人都可以诚实地挖掘错误,真正地从错误中吸取教训,而不必掩盖任何线索,也不必争吵。这些无责任的事后分析已经成为谷歌文化的一个重要组成部分,其结果是一个不必害怕失败的工作场所。这是一种正常情况。

00:06:01 - Jennifer Petoff

谷歌如何看待失败?100% 的在线时间是一个不可能的目标。如果你认为这是可以实现的,那就是在自欺欺人。所以,失败会发生只是时间和方式的问题。在谷歌,失败是值得庆祝的,因为我们可以从中吸取教训,而事后分析也会在团队中广泛分享,以确保学到的东西可以广泛使用。

00:06:23 - Jennifer Petoff

错误是不可避免的,但你永远不想以同样的方式失败两次。犯错是人之常情,但反复犯错是可以避免的。

00:06:34 - Saron Yitbarek

听到 Jennifer 讨论失败的方式,这真是太有趣了,因为就像她在犯那些错误一样。比如,当事情出错的时候,这意味着你已经走到了一个可以挖掘价值的地方。

00:06:50 - Jennifer Petoff

你会现场处理这种情况,但事后花时间把发生的事情写出来,让别人可以从中学习。发生任何事件时,你都需要付出代价。如果你不写出事后分析,并真正从这个经验中吸取教训,你就不会重新收回解决问题所花费的成本。在我看来,这是至关重要的一课。在谷歌,我们坚信无责任文化。你不会因为指责别人而获得任何好处,那只会让人们去掩盖失败,而失败,总是会发生。

00:07:27 - Saron Yitbarek

这里非常重要的一点是,要记住 Jennifer 之前说过的一些话,没有错误的工作是一种幻想,总会有出错的地方。归根结底这是思想的转变。我们可以抛弃那种认为只有一个单一的、可确定的最终目标,即一切最终都会按照我们想象的方式发展的想法。我们没有人试图达到这一目标,事实证明,这是非常强大和积极的东西。

谷歌拥抱失败的做法很有意义。超级实用。但我想知道,这只是口头上的么?我们是否有一些具体的让事情变得更好的失败例子,或者这只是一种当我们进行第 200 次编译时,让我们感觉更好的一种方法。

00:08:26

事实证明,有人可以回答这个问题。

00:08:29 - Jessica Rudder

我的名字叫 Jessica Rudder。我是 Github 的软件工程师。

00:08:33 - Saron Yitbarek

Jessica 在 Github 经历过失败。从某种意义上说,这是一个失败的舞台,在这一过程中,她收集了一些关于失败是通往巨大成功的故事。比如这个:

00:08:50 - Jessica Rudder

90 年代有个游戏开发公司正在开发一款全新的游戏。从本质上说,这是一款赛车游戏,但他们的转折之处在于将其改为街头赛车。所以当赛车手在街道上飙车时,他们不仅是在互相飙车,而且他们也是与在追赶他们的警车(非玩家角色)赛车。如果一辆警车抓住了你,它会让你靠边停车,然后你就输掉了比赛。然后他们把这些代码衔接起来,然后开始运行,他们发现他们完全调校错了算法:警车只是尖叫着从侧街冲出来,直接撞向玩家的车,而不是追赶玩家的车。

00:09:37

所以这里简直是一团糟。他们想,不要惊慌,让我们继续前进,看看人们如何看待它的,这样我们就知道该怎么调整算法了。所以他们把它交给了游戏测试人员,他们发现游戏测试人员在逃离警察并试图躲避被这些流氓暴力警车抓捕的过程中获得了更多乐趣。而事实上,它是如此的有趣,以至于开发团队改变了他们为游戏打造的整个理念。

00:10:17 - Saron Yitbarek

你能猜出这是怎么回事吗?

00:10:21 - Jessica Rudder

所以我们才有了《 侠盗猎车手 Grand Theft Auto 》。我的意思是,它确实是有史以来最畅销的电子游戏,它能存在的全部原因都是因为当时他们没有使用正确的算法时所导致的失误,他们想,好吧,让我们来试试;看看我们得到了什么,看看我们能从中学到什么。

00:10:41 - Saron Yitbarek

很神奇吧?但这里有个技巧,《侠盗猎车手》团队在遭遇失败时必须保持宽容;他们必须保持好奇心。

00:10:52 - Jessica Rudder

所以,如果这些开发者没有开放的思想,并决定从这个错误中去学到什么,我们将永远不会有《侠盗猎车手》,我们只能玩一些无聊的、普通的街头赛车游戏了。

00:11:07 - Saron Yitbarek

让我们再就游戏主题讨论一分钟,类似的事情也发生在《 寂静岭 Silent Hill 》的制作过程中。这是一个大型的、3A 级的大制作游戏。但他们遇到了严重的弹出问题。局部景观的处理速度不够快,因此突然之间,你会突然发现一堵墙或一条小路突然冒出来。这是一个破坏性的问题,而且他们的开发已经到非常后期。他们是怎么做的?完全放弃游戏,举手投降?还是将错就错。

00:11:42 - Jessica Rudder

他们所做的就是让这个世界充满了非常浓郁、诡异的雾气。因为事实证明,雾对处理器来说非常容易渲染,而且不会有任何延迟。而且另外,雾使你看不到远处的东西,所以在现实中,那些建筑物仍然会突然出现,但由于雾遮挡了你的视线,你看不到它们。所以当它们进入视野时,它们已经被渲染了,看起来它们是从雾中出来的。

00:12:15 - Saron Yitbarek

雾是变得如此受欢迎,它基本上被认为是《寂静岭》系列中的一个特点。它限制了玩家的视野,使游戏变得更加恐怖。甚至当处理器的速度快到不需要再掩盖那些弹出的时候,他们也保留了雾气。

00:12:33 - Jessica Rudder

你无法在没有雾的情况下玩《寂静岭》。而这些雾最初所做的一切都是在掩盖一个错误。

00:12:40 - Saron Yitbarek

我喜欢这个故事!他们拥抱失败而不是逃避失败,从而挽救了一个重大的发展。这条关于不怕失败的原则也适用于个人的小事,而不仅仅是全公司的决策。从容面对失败是我们一点一点地变得更好的方法。

00:13:01 - Jessica Rudder

很多时候人们脑子里想的太多了,他们认为失败意味着我不擅长某样东西。并不是代码坏了我还不知道如何修复它,而是“我不知道如何编写 JavaScript”。而且,你永远不会通过说“我不知道如何编写 JavaScript”来学习所需的知识。但是如果你能确定,“哦,我不知道如何在 JavaScript 中实现这个循环”,那么你可以通过 Google 找到答案,而且效果很好。我是说,你仍然需要努力,但你遇到的麻烦会少的多。

00:13:36 - Saron Yitbarek

因此,无论你是新开发人员还是大型工作室的负责人,我们的错误将我们推向更大的领域,那些实验,那些失败,那些英勇的尝试,它们占据了旅程的大部分。在我所熟悉和喜爱的开源社区里,这是最真实的情况了。失败在开源中可能是一件美好的事情,这就是我们接下来的故事。

00:14:14

我们在前面看到了失败是如何带来惊喜 —— 那些我们甚至不知道自己想尝试的事情。在最好的情况下,开源开发文化正好符合这一点。它让失败变得正常。为了理解这种愿意失败的想法是如何被引入开源开发的,我和 Jen Krieger 聊了聊。她是 Red Hat 的首席敏捷架构师。我们讨论了对开源失败的态度,以及这些态度是如何塑造无限可能的。请听:

00:14:47

我想谈谈这个口号,我觉得这也许是一个很好的表达方式。“ 快速失败,打破现状 fail fast and break things ”,这几乎是为我们社区所设计的一个巨大的召集口号。你怎么看?

00:15:04 - Jen Krieger

我对此有很多想法。

00:15:06 - Saron Yitbarek

我也觉得你会有。

00:15:06 - Jen Krieger

快速失败,在失败中前进,所有这些都是一个意思。所以,在我刚刚参加工作的时候,我在一家没有失败空间的公司工作。如果你做错了什么事情,你就可以准备辞职了。任何人都不能做错事,没有任何空间、途径允许你犯错。这令人们困扰。你绝对没有失败的余地,导致我们几乎陷入一场文化运动。愿意的话,这会催生出一个很棒词 —— 敏捷,以及催生出另一个很棒的词 —— DevOps。当我看到这些词的时候,我看到的是我们只是要求团队做一系列非常小的实验,帮助他们修正方向。

00:16:02

这是个,哦,你已经做出了选择,而这实际上是一件积极的事情。你可能会做一个冒险的决定,然后你赢了,因为你做出了正确的决定。或者反之,就是你做了错误的决定,然后你明白了,那不是正确的方向。

00:16:18 - Saron Yitbarek

是的,这是有道理的。所以,当你把“快速失败,打破现状”当成这个运动的时候,感觉在如何失败,如何以正确的方式失败上还是有一些方式,有一些最佳的实践的。那么,如何以一种正确的方式失败,有哪些最佳实践和原则呢?

00:16:44 - Jen Krieger

我总是喜欢告诉工程师,他们需要尽早和尽可能多地破坏构建。如果他们正在破坏他们的构建,并且他们意识到他们已经破坏了构建,他们在当下还有机会真正修复它。而这一切都围绕着“ 反馈循环 feedback loops ”这个概念,并确保你在工作中得到的反馈循环尽可能小。

00:17:08

所以在开源开发中,我提交了一个补丁,然后有人说,“出于这九个原因,我不会接受你的补丁”,或者“我认为你的补丁很棒,继续吧”。或者,你提交了一个补丁,但是机器人告诉你它失败了,因为它没有正确构建。有各种不同类型的反馈。

00:17:25

然后在开源开发中,你可能会遇到更长的反馈循环,你可能会说,“我想设计这个新功能,但我不确定所有的规则应该是什么。有人能帮我设计吗?”因此,你进入了一个漫长的过程,在这个过程中,你要进行长时间和详细的对话,而人们参与进来,提出最好的想法。

00:17:45

所以有各种各样的反馈循环可以帮助你完成这个。

00:17:50 - Saron Yitbarek

Jennifer 认为,每个公司的反馈循环看起来都不一样。它们是可定制的,人们可以使它们以 100 种不同的方式工作。但重点是,她甚至没有把它们称为失败或错误。她只是称它们为“反馈循环”。这是一个有机系统,这是一种思考整个过程的健康方式。

00:18:11

与此同时,对这些小毛病的另外一种态度却产生了完全相反的效果。

00:18:18 - Jen Krieger

有些组织所做的事情是完全错误的。

00:18:23 - Saron Yitbarek

嗯是啊。

00:18:24 - Jen Krieger

让你的领导团队(或者,在一个很高的层面上,比如组织)认为,羞辱做错事情的人,或者在绩效结果方面灌输恐惧;就像是,“如果你工作做得不好,就拿不到奖金”或者“如果你工作做得不好,我会把你列入绩效计划。”这些都是会产生敌意的事情。

00:18:50 - Saron Yitbarek

她描述的是一个不正确的失败。不能接受失败就是失败。她也在呼应 Jennifer Petoff 的态度,对吧?就是我们在这集开头提到的那个无责任的事后分析?

00:19:07

是的,这很有趣。就好像如果我们在如何一起工作上要求更严格一点,或者只是更用心,更有目的性的在一起工作,我们几乎就会被迫在失败中表现得更好。

00:19:23 - Jen Krieger

是的。有一些公司已经学会了这一点,而且他们很久以前就学会了,丰田就是一个很好的例子,它接受了这种不断学习和改进的理念,这是我在其他公司很少看到的。就是这样一种想法,任何人在任何时候都可以指出某些东西不能正常工作。不管他们是谁,在公司的哪个级别。在他们的文化中,认为这是对的。这种持续学习和改进的环境,我想说,是一种领先的实践,这是我希望公司能够做到的事情,能够适应失败并允许它发生。

00:20:06 - Saron Yitbarek

嗯,没错。

00:20:07 - Jen Krieger

如果你问的是为什么事情进展不顺利,而不是指责或试图隐藏事情,或责怪别人,这就会造成完全不同的情况。那就是改变对话方式。

00:20:23 - Saron Yitbarek

这很有趣,因为你之前提到过“快速失败,打破现状”这句话是这种文化,这种对过去做事方式的反击。 但这听起来似乎是一种口头禅,也许也创造了一种在公司内部、技术团队内部的不同的团队工作方式。再给我讲讲这个问题,它是如何改变了开发人员看待自己角色的方式,以及他们与公司其他人互动的方式?

00:20:55 - Jen Krieger

我早期和工程师一起工作的时候差不多是这样的,工程师们都坐在一个小区域,他们互相交谈。他们从未真正与任何商业人士进行过交流。他们从来没有真正理解他们的任何需求,我们花了很多时间真正专注于成功所需的东西,而不一定是企业实际完成工作所需的东西。所以,它更像是,“我是一个工程师,我需要什么才能编写这个功能片段?”我观察到,今天在几乎每一个和我一起工作的团队中,对话方式已经发生了巨大的变化,“作为工程师我需要什么才能完成工作”变成了“客户是谁,或者用户需要什么才能真正感觉到这我做的这块功能对他们来说是成功的?他们如何使用产品?我该怎样做才能让他们更轻松?”

00:21:56

很多这样的对话已经改变了,我认为这就是为什么如今公司在提供有意义的技术方面做得更好的原因。我还想说的是,我们发布的速度越快,我们就越容易知道我们的假设和决定是否真正实现了。所以,如果我们对用户可能想要什么做了假设,在此之前,我们需要等待,比如,一年到两年才能确定这是不是真的。

00:22:25

而现在,如果你看看亚马逊或奈飞的模式,你会发现,他们每天会发布数百次假设的客户需求。他们从使用他们的应用程序的人们那里得到的反馈,会告诉他们他们是否在做用户需要他们做的事情。

00:22:46 - Saron Yitbarek

是的,这听起来需要更多的合作,因为即使是你之前提出的关于构建、破坏构建、经常破坏它的建议,这就需要工程团队或开发人员与 DevOps 保持步调一致,以便他们能够破坏它,并了解尽早发布并经常发布是什么样子的。听起来这需要双方更多的合作。

00:23:15 - Jen Krieger

是的,对于拥有敏捷教练这个头衔的人来说,或者以我作为首席敏捷架构师看来,总是很有趣,因为《敏捷宣言》的初衷是让人们从不同的角度来考虑这些事情。我们通过开发和帮助别人开发来发现更好的开发软件的方法。它确实是敏捷所要做的的核心、根本和基础。因此,如果你将 10 年,15 年以上的时间快速推进到 DevOps 的到来,并坚持我们需要持续进行集成和部署。我们有监控,我们开始以不同的方式思考如何将代码扔出墙外。

00:23:56

所有这些东西都是我们最初开始讨论敏捷时应该想到的。

00:24:03 - Saron Yitbarek

嗯。绝对是的。所以,不管人们如何实践这种失败的理念,我认为我们都可以接受失败,将失败规范化只是过程的一部分,是我们需要做的事情,是我们可以管理的事情,是我们可以用“正确的方式”做的事情,这是一件好事。它对开源有好处。跟我说说这个新运动的好处,这种接受失败是过程的一部分的新文化的一些好处。

00:24:36 - Jen Krieger

看着这个过程发生是一件美妙的事情。对一个人来说,从一个他们害怕可能发生事情的环境,到一个他们可以尝试实验、尝试成长、尝试找出正确答案的环境。真的很高兴,就像它们已经盛开花朵。他们的士气提高了,他们真正意识到他们可以拥有的是什么,他们可以自己做决定,而不必等待别人为他们做决定。

00:25:05 - Saron Yitbarek

失败即自由。啊,我喜欢! Jen Krieger 是红帽公司的首席敏捷架构师。

00:25:19

并不是所有的开源项目都像 Rails、Django 或 Kubernetes 那样声名鹊起。事实上,大多数都没有。大多数都是只有一个贡献者的小项目,解决一小群开发人员面临的小问题的小众项目,或者它们已经被抛弃,很久没有人碰了。但它们仍然有价值。事实上,很多这样的项目仍然非常有用,可以被回收、升级,被其他项目蚕食。

00:25:54

而另一些人通过他们的错误启发我们,教导我们。因为在一个健康的、开放的舞台上,失败会带给你比胜利更好的东西。它给了你洞察力。还有一点。尽管有那些死胡同,尽管有各种冒险的尝试和惊呼,但开源项目的数量每年都在翻倍;我们的社区正在繁荣,事实证明,尽管因失败我们没有繁荣,但因失败我们正在繁荣。

下一集预告,DevOps 世界中的安全性如何变化。持续部署意味着安全正在渗透到开发的每个阶段,这正在改变我们的工作方式。同时,如果你想了解更多关于开源文化的知识,以及我们如何改变围绕失败的文化,请访问 redhat.com/commandlineheroes ,免费资源等着你。

00:26:54 - Saron Yitbarek

《代码英雄》是红帽的原创播客。你可以在 Apple Podcast、Google Podcast 或是其他你喜欢的途径免费收听。我是 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-2/fail-better

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

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

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

什么是《代码英雄》

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

本文是《代码英雄》系列播客第二季(3):准备提交音频脚本。

导语:想进入开源领域但不知道从哪里开始?你是一个贡献者,想知道为什么只有一些 拉取请求 Pull Request 被接受?或者,你是一个感觉有点不知所措的维护者?
这一集将探讨投身于一个开源项目的意义。我们将跟随我们的英雄们,跟着他们在开源贡献者的角色中不断进步:从寻找项目并为其做出贡献,到建立和维护繁荣的社区。Shannon Crabill 在 2017 年的 Hacktoberfest 上分享了她是如何开始从事开源工作的,而 Corinne Warnshuis 则介绍了将来自各种背景的人纳入到创造优秀软件的过程中是多么重要。
为开源做出贡献的方式有很多。让我们一起来了解一下。

00:00:03 - Nolan Lawson

在我刚开始做软件开发的时候,我基本上只做些让自己开心的小项目,像小应用程序、命令行小工具之类的。

00:00:12 - Lindsey Tulloch

我只是真的不知道作出贡献那么容易。而且你不需要解决 P = MP 那样的难题,你的投入依然可以是很有价值的。

00:00:21 - Kanika Muraka

本地社区使我有了足够的信心去做出贡献。

00:00:28 - Saron Yitbarek

当我还完全是个编程新手的时候,我和我的朋友 Dan 一起发起了我的第一个开源 拉取请求 Pull Request (PR),这也是我的第一次开源贡献。

00:00:42

我听过很多为开源做贡献的故事,说它有多么神奇,有多么可怕。我很清楚,并非所有社区都和善,也不是所有维护者都很友好。

00:00:57

那个项目本身对新手来说相当不错。我们只是添加了一个 JavaScript 库,让人们可以在线预览网站。这是一个很好的适用范围很广、自成体系的项目。而且如果这玩意儿不起作用,我基本上确信它不会毁掉整个网站。

00:01:18

然而,我对这个 PR 非常紧张。我和 Dan 阅读了这个库的文档,埋头于写我们的代码。我仍记得当我们最终完成的时候,只是互相看着彼此,好像在说:“就这样吗?”我们发起了 PR。它被审查,然后合并,我想我至今还是对这一切感到惊讶,我还是不知道这些机制是怎么运行的。

00:01:43

这并不是什么只有他们才能做到的,也不是什么神秘或神奇的事情。我意识到我确实也可以对开源作出贡献。这是我们在这一集中想要传递的一点知识 —— 为开源做出贡献并不神奇,它也不一定可怕。我们将带你一起走过这个过程。

00:02:05 - Lindsey Tulloch

这是一个突破性的认识,这些项目实际上是完全开放的,我也可以做出贡献。

00:02:15 - Saron Yitbarek

在这一场的开场白中,你会听到像你一样的代码英雄在加入开源行列时,经历着同样的恐惧。他们分别是 Nolan Lawson、 Lindsey Tulloch、 Kanika Muraka,这些是今天来做客的代码英雄。

00:02:34

你正在收听的是红帽公司的原创播客节目《代码英雄》。我是主持人 Saron Yitbarek。

00:02:47

这是一个关于两个代码英雄的故事,他们只是想在广阔的开源世界中,做出更好的东西。他们其中一个人是贡献者,另一个人是维护者。他们都不是真实存在的人物,而是两个虚构人物,用来代表所有的贡献者和维护者,他们和我们分享了他们的故事。希望你也可以在他们的历程中看到一些你自己的影子。

00:03:16

首先来见一见我们的朋友 —— 贡献者。她是个新手,就像曾经的我们那样。她不确定基本的工作流是什么,但是她看到了一个需求,并且认为她可以添加一个功能来提供帮助。我们这个虚构的贡献者很想提交代码,但是该怎么做呢?

00:03:44 - Corinne Warnshuis

你一直在成长,学习新技能。而且你不一定必须在孩提时代拆过电脑,才有资格在成年后学写代码。

00:03:52 - Saron Yitbarek

这位是 Corinne Warnshuis,一个名叫“Girl Develop It” 的很棒的组织的执行董事。该组织的目的是帮助那些可能不太敢提问的,或在聚会中觉得自己不太受欢迎的女性。

00:04:07

Girl Develop It 意识到做出贡献的难度并不是对所有人而言都是一样的 —— 这是社会造成的问题。作为社区,我们的一部分职责,就是要让世界多一点同情心,以及包容健康多元文化。

00:04:22 - Corinne Warnshuis

在我们看来,加入开源的壁垒有很多,但我们喜欢称它们为“没有充分的理由”,有三个这样的壁垒将女性专门排斥在技术之外,它们是:刻板印象、可及性和环境。

00:04:40 - Saron Yitbarek

值得记住的是,促进多元化不仅具有良好的道德意义,同时也有商业意义。

00:04:48 - Corinne Warnshuis

作为一个行业,技术可能拥有着最大潜力,能给当今世界带来最大的变化。你确确实实希望,来自各行各业的人们都为塑造世界的工具、服务和其他事物做出贡献。我认为来自各种背景的人们一起开发软件,并为开源项目做出贡献真的非常重要。

00:05:13 - Saron Yitbarek

事实是,我们并非一开始就拥有同样的优势和经验。下一代的伟大开发者可能看上去并不像硅谷的程序员。

00:05:23 - Corinne Warnshuis

面对面指导对人们而言,历来是非常昂贵而又难以获取到的。再者,我认为从 2014 年至今,情况有所改善。我认为除了 Girl Develop It 之外的组织(比如 Outreachy 和 CodeNewbie ),正通过提供安全的网络或空间,来提出问题并获得更多的舒适感来做到这一点。

00:05:49

为这些想法和问题提供一个安全而友好的测试平台,是一个不错的起点。

00:06:02 - Saron Yitbarek

说到新手,回到我们正在追踪的那个贡献者。倘若你不是来自主流背景时,那么第一次提交可能会压力非常大。感觉就好像你必须得证明你自己。不过一旦我们将加入的壁垒降得足够低,我们在准备做出贡献时,实际需要考虑的是什么呢?

00:06:23 - Vincent Batts

对某些项目感到兴奋这事很酷,但你想要解决的用例是什么呢?

00:06:31 - Saron Yitbarek

Vincent Batts 在红帽主要从事容器架构方面的工作。他鼓励新的贡献者尝试并有针对性地开展工作。找到你和项目一起有意义的那个利基。

00:06:45 - Vincent Batts

我认为一个可让人持续贡献的项目通常来自于互惠关系。它满足了你的一个需求,而且在这个过程中你又发现了满足它的需求的方式。即使它是一个由人构成的社区,它也已经成为了一种共生体系。

00:07:01 - Saron Yitbarek

比方说:

00:07:02 - Vincent Batts

因为朋友的推荐,我最终弄了一台 Slackware Linux 机器。它非常适合我想做的事情,我帮着将其打包到了主流 Slackware Linux 社区,并最终成为了这个项目的贡献者和维护者。这并不是因为我想成为 Slackware Linux 社区的贡献者,而是因为这是最适合我的一个项目,它的用例正好是我一直致力于解决的事情。

00:07:33

我想很多人都会遇到这种情况,他们因自己量身定制的用例而编写一个数据库软件。他们发现用 Golang 编写很合适,因此他们写了这样一个高性能的数据库,所以他们能够对 Golang 做出修复或优化方面的贡献,以帮助他们的数据库运行得更快。

00:07:54 - Saron Yitbarek

你可以找到你自己的小众领域,并开始自然发展。关键在于,从某处开始去做。你不必等待有了学位或绝对的自信才开始。

00:08:08 - Vincent Batts

如果你需要直接编写代码或文档的经历,或是成为一个后端数据库、Web 服务器的系统管理员,那么好消息是,大部分社区都是基于志愿者构成的。你可以参与诸如 Debian、Fedora 或其他一些类似的项目,这些社区都建立起了文档页面。那些项目必须在某处的 Web 服务器上运行,一些人,甚至是一个没有薪酬的、正在积累经验的社区成员,负责去检查 Web 服务器是否停机或出了什么问题。

00:08:43 - Saron Yitbarek

Vincent 强调了开源的平等主义本质。无论你来自哪里,只要你愿意,都可以真正开始做出贡献。如果你想的话,你可以为自己扬名立万。

00:08:57 - Vincent Batts

一旦它被合并,你的名字就会附在某个项目上。你可以公开表示你在某个地方做出了改进,这是相当有意义的事情。

00:09:11

我曾与那些不是从事日常技术工作的电视修理工和教师共事过,他们很有代表性。他们也在社区上做出了很多贡献。另一方面,我也曾和一些开发者合作过,他们有的能有 30 年开发经验,但他们从来没有像那样公开贡献过代码。

00:09:40 - Saron Yitbarek

对了,我们的贡献者怎么样了?嗯,她找到了她的定位。她克服了她的恐惧,并最终发起了她的第一个 PR。现在她可以休息一下,并战战兢兢地等待维护者作出回复。

00:09:56 - Vincent Batts

向上游做贡献有点像第一次上台做才艺表演。你会感到紧张,走上舞台后手心冒汗。你做了一件事,然后它好像就变成了你的成就。你将被彻底改变,跟过去不再一样。

00:10:17 - Saron Yitbarek

彻底改变?或许吧。事实上,维护者有四种可能的回应:沉默 —— 这很有趣,也可能是完全拒绝,或是直接接受,或是柔和的中间立场 —— 要求修改。

00:10:37

提交 PR 的几天后,我们虚构的贡献者终于收到了来自维护者的回复。跪迎结果吧,是要求修改。作为一个新手,她将这视为一场小型灾难。她还不知道要求修改是个实际上是成功的一步。她甚至还对维护者的简略语气感到一点气愤,听上去就像维护者没空搭理她一样。

00:11:03

这里存在着一堵墙,新的贡献者不知道墙的另一边正在发生什么。

00:11:12

我们来认识一位维护者。他正在维护的项目并不是他的全职工作。这是一个周末项目,他时常熬到深夜,给工单排优先级,并且提醒人们发起 PR 时更新文档,然后你就明白了。他相当忙碌,有时甚至出现了一些维护倦怠。

00:11:38

一位现实生活中的维护者,Nolan Lawson 写了一篇很棒的有关倦怠的文章,最近引起了很多关注。

00:11:51 - Nolan Lawson

老实说,我认为那篇博文有一部分实在寻求帮助。这是我表达我自己偶然发现了这个开源的项目,起初我觉得它确实很有趣,但现在却感觉没那么有趣了。我不确定该如何恢复兴致。

00:12:05 - Saron Yitbarek

Nolan 有一份日常工作,但和大多数维护者一样,他在开源项目中投入了大量的休息时间,因为这家伙真的很在意这个项目。讽刺的是,他的部分痛苦来自于,他清楚贡献者也同样很在意这个项目。

00:12:23 - Nolan Lawson

真正使我精疲力竭的实际上只是如潮水般涌来的好心人。你真的想帮他们,真的真的很想。他们所做的只是问一个问题,他们所做的就是 —— 他们在你项目中发现了阻碍他们的 bug,或者他们所做的只是 —— 他们真的费心去下载代码并弄清楚它是如何构建的,并提供 bug 修复。他们只是希望你审查他们贡献的代码。

00:12:43 - Saron Yitbarek

像 Nolan 这样的维护者正不断地审查 PR 库,弄清每个提交将如何发挥作用。他们促使贡献者尽可能做到最好,遵守内部限制,为了能让项目达到更高的水准,用最有意义的方式做出贡献。

00:13:06

我的观点是,那些维护者有可能不是一个新贡献者所担心的混蛋。他们正努力地想去做到一切。他们甚至会花时间标注一些东西保留给新手(很多维护者都这样),以便新手有机会施展自己。

00:13:27

但到最后,PR 和提交总是非常的多。我们要如何确保这种情况不会发生呢?我们该如何为维护者创造合理的环境呢?

00:13:41

一种解决方案是 —— 像 Fedora 这样拥有强大社区的开源项目。Fedora 项目负责人 Mattew Miller 解释了项目吸引维护者和贡献者的地方。

00:13:55 - Matthew Miller

Fedora 项目中许多不光是开发,还有开发过程中所相关的一切。总体来说,IT、 CS(计算机科学)事实上都是如此。开源可能并没有足够的这类围绕开源的支持性的角色。

00:14:11 - Saron Yitbarek

那种支持实际上看起来是怎样的呢?

00:14:14 - Matthew Miller

我们拿来举例的带薪角色之一是 Fedora 项目经理,他帮着让计划按部就班进行,并且监管着人们来保证文书工作完成。让人有酬劳地来做这份工作事实上可以帮着减少官僚主义,因为他们可以把时间花在使项目成为人看懂的事情,而不只是一堆杂乱的文件。

00:14:34 - Matthew Miller

我认为,像这样的企业参与某些角色,可以赋予你无法用志愿者保证的稳定性。

00:14:43 - Saron Yitbarek

这有点让我想起了自由职业者使用的共享工作空间。那里有一个共享的接待区、共享的 WiFi 和共享的咖啡。有一个人在管理它,然后你就可以自由地做你自己的事情。

00:14:55

Matthew 告诉了我们另一个 Fedora 采取的策略。他们让你想在项目中途停下来休息一下时,可以很自然,而不是感觉一切都崩溃了。

00:15:04 - Matthew Miller

我们研究的一个问题是确保领袖角色的漂亮退场,所谓的职位并不一定是终身的委任。你可以重新申请担任角色,并且不会在一年任期后结束后,看起来像被踢出去似的。如果六个月后你想离开,你可以优雅地这样做,而不必觉得这会让人失望。我们已在努力确保人们可以没有障碍地退出。

00:15:27 - Saron Yitbarek

Matthew 认为,找到支持该开源社区的方法,而又不至于重蹈覆辙才是关键。

00:15:35 - Matthew Miller

社区几乎就像一个家庭,而不是工作场所之类的东西。在这里做出贡献很有意义,因为你不仅只在为自己或是某些薪酬或终端产品工作。而且由于共事的是你的朋友,你们一起工作能做出比单人作品更伟大的东西。

00:15:56 - Saron Yitbarek

无论是 Fedora 还是其他社区,它们都造就了一个开源贡献得以持续的世界,这个世界还值得努力让它继续变好。

00:16:10

同时,让我们回到办公桌旁,我们关注的那个贡献者刚完成了维护者要求的修改。她还没意识到,但她即将拥有第一个被接受的 PR。

00:16:24

当我们谈论诸如倦怠之类的长期工作的问题时,很容易忽视那些早期问题。每天都有很多新的贡献者加入进来。这实际上就是为什么我们需要构建可持续的社区,为所有这些开源魔术提供场地。

00:16:49

最终,我们的贡献者和维护者共同努力,推动事情向前发展。故事的最后一句话 —— 记住所有的交流都依赖于 GitHub 和 GitLab 之类的开发平台,这些平台使得我们可以聚集到一起。

00:17:09

我想深入探讨一下这些社区是如何使我们的工作成为可能的。我和 Shannon Crabill 谈过这个问题。Shannon 白天是个电子邮件开发者,但到了晚上,她正在学习前端开发。她也是一个对社区价值有第一手了解的人。

00:17:28

去年她参加了一个长达一个月的名为 Hacktoberfest 的开源活动,该活动旨在让更多的人为开源做出贡献。当时, Shannon 完全是一个开源新手。

00:17:44 - Shannon Crabill

回想起十月那时候,我感觉我没有太多工作要做,而且可能还有更多的新手,没找到需要做的东西。如果我提出一些相对容易的待办事项,他们就可以找到用于尝试和学习的突破口,并且开始习惯使用 Git 和 GitHub。

00:18:04

我认为最困难的部分,在于习惯工作流程并付诸实践。如何推送存储库?如何分享项目?如何处理 PR 和相关的东西?我帮助人们对开源做出了贡献,这事令人惊讶,感觉也确实很棒。

00:18:21 - Saron Yitbarek

真的很恐怖吗?我觉得如果你是个新手 —— 尽管你拥有存储库,也要走出自己的小世界,把自己放在社区里。现在,维护者所在的社区里出现了正在作出贡献的人,你必须和他们交谈,审查他们的代码并发表意见。这听上去是有点吓人。

00:18:42 - Shannon Crabill

我认为最初的反应是,“哦,我的天哪,这太酷了”,还有,“天哪,我让自己陷入了什么境地?”我意识到我只合并过自己的代码,合并过自己的 PR 并将其推送到自己的站点上,以及其他所有只关于自己的事情,我从没处理过别人的东西。我认为我之前尚未完成过真正意味上的合并 PR,所以我不得不把这弄清楚。总的来说,将复杂的东西简单地合并起来,仍然是我要努力熟练解决的问题。

00:19:09

这是旋风一样的感觉,“这很酷,但我不知道该怎么做。”每个人都很友好,并且我也努力保持非常友好和真诚,即使只是,“嘿,我有点不知所措。我看到了每个人提交的 PR。虽然今晚我不会找他们,但我明天会的。”人们对这种情况似乎反应良好。

00:19:26 - Saron Yitbarek

是的。当你维护一个项目时(尤其是作为一个新的开发者时),我一直想知道的是,是不是这意味着你必须是整个存储库贡献者中最聪明的人?你实际上在评估、评判并审查其他人的代码。你是否遇到过,自己懂的东西不如提交 PR 的人那么多的情况?你是如何处理的?

00:19:55 - Shannon Crabill

好问题。我认为,“噢,我需要成为有史以来最聪明最好的开发者”,这样的想法会成为障碍。我觉得自己很幸运,当我进入这个领域的时候,我没有这样想,所以我能像这样说,“让我们先开始,并且期待未来会发生什么吧。”

00:20:12

你无需成为一个有 20 年经验的高级开发人员。你只需要有一个好点子,知道如何使用相应软件,然后愿意去学习自己不知道的东西。

00:20:22

肯定有一两个 PR 为我的项目添加了一些很酷的功能,说实话,如果它们崩溃了,我真不知道该如何修复。我可能会看着代码然后想道,“是的,它崩溃了。”我不知道该怎么做才能从头构建它们。

00:20:34

我认为这就是它酷的地方。如果只有我一个人在做贡献,我可能就做了一些基本的工作,但没法像其他拥有丰富经验的人所作出的贡献一样,将项目变得那么酷。

00:20:45 - Saron Yitbarek

作为一个维护者,在使项目更易于访问,更加友好,更加易于贡献的过程中,你学到了些什么呢?

00:20:55 - Shannon Crabill

哦,确实有件我认为很有帮助,并且我希望我一开始就做的事,那就是尽可能的建立模板,以及文档、文档、文档。

00:21:07

我的确在我的 README 文件里加了很多东西,并且我认为在项目开始时有一个 README 文件确实是很重要的一步。这件事情意味着你对其他人大声说,“嘿,请查看我们的贡献指南。”我认为我制作了一个 PR 模板、一个议题模板,“单击这里查看当前议题”,这样人们才不会多次提交同样的内容。

00:21:31

我认为让项目尽可能简单,或尽可能对用户友好,这是你作为维护者需要迈出的一大步。

00:21:38 - Saron Yitbarek

绝对是这样,我经常看到 README 文件,经常听说他们有多么多么重要。我觉得在 README 文件里还可以做很多事情。归根结底,它就像是一个空白文档,告诉别人去阅读它。你应该在文档里写什么呢?你该如何构建它,来使得它真正与希望做出贡献的人产生关联呢?

00:22:00 - Shannon Crabill

我在我的 README 文件里放了很多 gif。

00:22:03 - Saron Yitbarek

很好。

00:22:05 - Shannon Crabill

我有 gif,也有链接。

00:22:07 - Saron Yitbarek

我一开始就知道 Shannon 已经认识到了合作关系的重要性。她早就知道,如果有人被邀请来协作,这项目就会变得耀眼,大家也会因此度过美好的时光。

00:22:20 - Shannon Crabill

有人用开源项目作出很棒的事情,我也认为这很有趣,而且有个有意思的项目,“嘿,我制作了这些很酷的蝙蝠,每次你单击页面的时候,它们都会随机生成。”

00:22:33 - Saron Yitbarek

我也喜欢人们做不同的事情。如果你真的很喜欢艺术性的东西,你可以做蝙蝠生成功能。如果你想让项目变得整洁,你也可以做。如果你想说,“我会坚持贡献文档,我将花时间为其他的贡献者们打造更干净,更舒适的环境”,那你也可以选择做这个。

00:22:56 - Shannon Crabill

是的。我已经说得很清楚了,无论你想贡献的是什么,都没有问题。如果你发现了一个拼写错误并且想要纠正它,很好。如果你发现某个链接损坏并且想要修复它,也很好。如果你只是想帮着注释这份代码,使得它更易于阅读和理解,那也将很有帮助。

00:23:12 - Saron Yitbarek

我认为,你在社区中获得了积极的反馈真的很棒,因为我听说过很多并不是这样美好的故事。人们在网络上并不十分友好,也不太热情善良,尤其是对我们这一些,可能会问出比他们想象中更简单问题的新手。

00:23:33

你认为,是什么使得你的社区,比起其他社区更加友好呢?

00:23:41 - Shannon Crabill

只是因为在我们社区,贡献是一件很随意的事。如果你想做出贡献,你可以,这很酷。如果你不想,那也很酷。我理解有人认为开源是一件令人恐惧的大事,你需要具备所有这些经验,并且了解所有这些复杂的语言,或是前后端以及其他的一切,才能够做出贡献。

00:24:03 - Saron Yitbarek

绝对是这样。做 Hacktoberfest,它是怎样改变了你现在对开源的想法?

00:24:11 - Shannon Crabill

它肯定对我造成了积极的影响。就像我说的,我有过很棒的经历,而且我希望每一个以某种方式参与我项目的人也能有很好的经历。这毫无疑问促使我想去尝试更多类似的事情,即使它们没有进一步的发展。现在这看起来这些项目更加平易近人了。

00:24:32 - Saron Yitbarek

真是个好消息。

00:24:34

这儿有个信息,来自数百家公司的数千人,以及一些根本没在公司工作的人,为 Linux 内核做出过贡献。这意味着基本上运行着互联网的 Linux 是由一群日常英雄在维护的。如果你渴望为开源作出第一次贡献,或许你会想了解有关 Fedora 社区的更多信息,我们有大量的资料正等着来帮助你。请查阅 redhat.com/commandlineheroes 以获得更多信息。

00:25:20 - Saron Yitbarek

快速提醒一下,这一季我们将构建我们自己的开源《代码英雄》游戏。欢迎你以对你来说合适的方式来做出贡献。快来了解如何成为其中一员吧。我们希望你可以通过 redhat.com/commandlineheroes 和我们一起开发这款游戏。

00:25:42 - Saron Yitbarek

下一集,我们将讨论残酷的达尔文式错误以及开源开发中失败的美丽之处 —— 它如何困扰我们,指导我们,并使我们变得更好。

00:25:57 - Saron Yitbarek

《代码英雄》是红帽的原创播客。你可以在 Apple Podcast、 Google Podcast 或是其他你喜欢的途径免费收听。我是 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-2/ready-to-commit

作者:Red Hat 选题:bestony 译者:JonnieWayy 校对:acyanbird, wxy

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

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

什么是《代码英雄》

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

本文是《代码英雄》系列播客第二季(2):Hello, World音频脚本。

导语:每一种新的编程语言的诞生,都是为了做一些以前无法完成的事情。如今,有非常多编程语言可以选择,但哪些才是你真正需要了解的?

本集将深入探讨编程语言的历史。我们将会了解到被称为 “神奇葛丽丝” 的天才 —— 海军少将葛丽丝·哈伯。多亏了她,开发者不再需要数学博士的学历就能使用机器代码编写程序。参与录制的还有 Jupyter 项目的 Carol Willing,她是 Python 基金会的前理事;以及《 纽约时报杂志 New York Times Magazine 》和《 连线 Wired 》的撰稿人 Clive Thompson,他最近正在撰写一本关于程序员如何思考的书。

00:00:07 - 各种语言

“你好,世界。”

00:00:12 - Saron Yitbarek**:

你好,世界。现在我们发出的是信号还是噪音?我们日日夜夜无休止地写代码,做测试工作,我们追求的事情只有一个:我们是否传递了我们的信号?

00:00:29 - 各种语言

你好。

00:00:29 - Saron Yitbarek

或者我们的信号是不是丢失了?难道我们一直在制造无意义的杂音吗?

00:00:40

我是 Saron Yitbarek,这是代码英雄第二季,来自红帽原创播客。今天的话题将在“翻译”中挖掘。这关于编程语言的故事:它们是怎么来的,如何选择其中一个语言来学习。我们将深入研究如何与机器对话。探究这些语言是如何演化的,以及我们如何用它们来让我们的工作变得更好。

00:01:08 - Sari

Daisy,daisy,来告诉我你的正确回答。

00:01:11 - Saron Yitbarek

如果你像我一样是一个开发者,你可能也经受着去精通多种语言的压力。最起码你得会 Java,更好一些得懂 Python、Go、JavaScript、Node,甚至能够用 C++ 思考。也许为了增加可信度,可能你还要熟悉古典的 COBOL。甚至你还得学点新东西,比如 Dart。实在太累了。

00:01:36

奇怪的是,我们正在讨论的计算机只讲一种语言:机器语言,以二进制形式飘过的 1 和 0。说到底,我们学习的每个语言都是殊途同归。不管有多抽象,它都是用来简化我们工作的道具。

00:02:03

这就是我希望你们记住的,故事开始了,从那一刻,那一个经典辉煌的时刻,一个女人说:“你知道么?我是人类,我不想用二进制来讨论思考,我就想用英语去编程。”

00:02:22

在今天可能看来是一个简单的概念。但曾几何时,使用人类的方式与计算机对话这个主意 —— 说轻点是一个笑话,严重点就是亵渎。

00:02:37

代码英雄第二季,将讲述成就我们基础的螺丝钉展开。这一讲的英雄是一个女主人公,如果你想要进一步了解故事,你必须知道她的经历。在此给你们隆重介绍:软件界的第一夫人。

00:02:58 - 发言人

尊敬的先生们和女士们,我非常荣幸的给你们介绍 葛丽丝·玛丽·哈伯 Grace Mary Hopper 准将,谢谢。

00:03:02 - 葛丽丝·哈伯

我曾到加拿大的圭尔夫大学演讲,那时候我必须在多伦多的机场办理入境手续。我把护照递给移民官,他打量了护照和我说:“你是在哪里工作的?”

00:03:17

然后我说,“美国海军。”

00:03:20

她再次深深的打量我一下。然后他说:“你一定是海军里最老的。”

00:03:28 - Saron Yitbarek

她就是 1985 年担任海军少将的葛丽丝·哈伯。在麻省理工学院发表了著名的演讲时,她 79 岁。即使在那时,她也是一个传奇人物。她是独立编程语言之母,实现通过编译器,用人类语言替代数学符号编程这一伟大成就的女性。

00:03:51

她获得了国家技术奖章,她去世后(1992 年),被追授国家自由勋章。以上记录纯属真实,他们称她w为“神奇葛丽丝”。

00:04:03 - Claire Evans

如果有人能够被称为天生的程序员,那么这个人一定是葛丽丝。

00:04:06 - Saron Yitbarek

这是 Claire Evans,一个科技记者和《 宽带 Broad Band 》一书的作者,而这本书讲述了科技领域的女性先锋。Evans 描绘了早期的计算机世界,在 1940 年,当葛丽丝·哈伯还是一个年轻的女孩时,她加入了美军的海军预备役部队。当时的电脑有一个小房子那么大。

00:04:25 - Claire Evans

早期的那些程序员,他们就像一个圣职者。他们是一群擅长做枯燥乏味事情的人,因为那会儿没有编译器,没有编程语言,人们是确实是一个比特一个比特地对机器编程。

00:04:42

想要改变这种现实,你真的必须是一个特别的人,而葛丽丝真的就是那种人。

00:04:49 - Saron Yitbarek

现在,她意识到让人类使用机器语言的是一种多么疯狂的限制。就像走路的时候,去告诉你身体的每个原子该怎么做。这是可能的吗?是,效率呢?不高。

00:05:06

在程序员的意图和计算机的行为之间一定有一条捷径。自从有了算盘,人类一直在将数学思维机械化。一定有一种方法可以在计算机上再次实现这一点。

00:05:19 - Claire Evans

在过去,数学家必须做出所有的步骤。所有这些枯燥的,一步一步的工作都是为了得到一个真实而有趣的答案。然后有了计算机后,它尽可能地承担了这些机械的运算。所以解放了数学家去进行高层面的、更智慧的、面向系统的思考。

00:05:39

只不过,事实并没有如此发展。有了计算机,数学家就变成了程序员。他们又一次被这些枯燥无味的编程所束缚,做着这些一点一滴的繁琐的规则导向的小计算。

00:05:53

因此,我认为,葛丽丝的期望是,她希望计算机能够辅助数学家,然后数学家就可以去更进行宏大的思考,做更伟大的事情,而不至于让他们陷入细节之中。

00:06:12 - Saron Yitbarek

葛丽丝也加入了思想家的行列。我们都知道, 帕斯卡 Pascal 在 17 世纪发明了第一台计算器。 巴比奇 Babbage 在 19 世纪发明了分析机。这些伟大的杰作是发明家们解放人类的大脑的创作。这些发明让我们处理数据的能力空前绝后。这就是葛丽丝踏入的领域,发明了所有人都认为不可能的东西。

00:06:42 - Claire Evans

我觉得,葛丽丝的想法是,人们应该用人类语言与计算机沟通。这个语言必须独立于机器的,因此不同计算机可以交互操作,这在当时是革命性的。

00:06:59

早期她称这个为 “自动化编程”,在程序员和计算机人的群体中,被认为是像太空学员一样。

00:07:12

而那些迟迟不上岸的人们被看成了尼安德特人,这在当时是计算机界的一个巨大的分歧。

00:07:21 - Saron Yitbarek

葛丽丝要说服她的上级跨越这个分歧并不容易。但她认为这是她的责任,她必须尝试。

00:07:30 - 葛丽丝·哈伯

这里总是有一条线,那条线代表了你的老板在那个时候会相信什么。当然,如果你过线了是得不到预算的。所以你对那条线有双重责任:不要踩过它,但也要不断教育你的老板,让你把这条线移得更远,这样下次你就能走得更远。

00:07:52 - Saron Yitbarek

她推动的那个未来,就是我们的现在。几乎你我依赖的每一种语言都归功于她和她的第一个编译器。因此太空学员们活了下来,尼安德特人灭亡了。

00:08:07

写代码不用数字,而是用人类风格的语言是她的观点。你敲下“执行操作 8”,或“关闭 文件 C”的精简操作,才是符合人类习惯的编程。

00:08:21 - Claire Evans

葛丽丝独特地意识到,计算将成为改变世界的事情。但是如果没有人知道如何接触并使用计算机,那么它就不会成为改变世界的事情。因此她想确保它对尽可能多的人开放,尽可能多的人可以使用。

00:08:37 - Claire Evans

这就需要编程在可理解性和可读性上做一些妥协。因此最终创造一个编程语言的目标就是给机器提供更多切入点,让它脱离这个神职,让它的开发面向大众和未来新一代。

00:08:59 - Saron Yitbarek

我想在这里打断并强调下 Claire 的说法:现在我们所已知的编程语言,都来源于科技开放的愿望。这让计算机不再是数学博士们的专属玩具,让编程开发变得更容易。

00:09:14

编译器所有工作的本质,是让程序变得更好理解,更有人性。

00:09:21

Claire 有一个猜测,为什么葛丽丝是做出改变的那个人,这与她在二战期间的工作有关。

00:09:29 - Claire Evans

她的工作是解决扫雷问题、弹道问题和海洋学问题。她用很多不同的、交叉的学科来模拟战争里的所有的暴力、混乱和现实的灾难,并将他们转化成在 Mark I 计算机上运行的程序。

00:09:45

她知道如何在语言之间去做翻译转换。我的意思不是说计算机语言,是人类语言。她知道如何倾听一个提出复杂问题的人的意见,并尝试理解问题的背景,其信息和所涉及的专业规律,然后将这些转为计算机可以理解的程序。

00:10:06

从这个角度看她如同早期的编译器。就像一个人类版本的编译器,因为她知道你必须理解他们才能满足他们的需求。

00:10:17 - Saron Yitbarek

编译器干的事情就是一个解释和理解。我觉得我们应该在学习新语言,或想知道为什么有一些东西根本不能编译的时候牢记这个理念。编译器的工作就是满足你使用生活中说的语言来编程。

00:10:32

葛丽丝知道人类一旦可以学会讲编程语言,而编译器可以将我们的意图转换为机器语言,就像为洪水打开了大门一样。

00:10:43 - Claire Evans

她知道如果计算机太孤立和太具体,就不会发展为一个产业,从而成为改变世界的力量。也就是说计算机的从业者,可以让提出问题的人跟机器直接沟通。

00:11:00

因此她真的是一个善于人类语言翻译的专家,至少我是这么想的。这使她有独一无二的机会,去思考和创建编程语言。

00:11:15 - Saron Yitbarek

葛丽丝对英文式数据处理语言的研究最终演变成了 COBOL,它在某种意味上很不错。因为它不浮华,很适合商务用途,葛丽丝·哈伯也是这样的人。

00:11:28

从某种角度看,她给了我们一个很像她的语言。像葛丽丝一样,COBOL 语言也很长寿,它现在已经 60 多了。

00:11:50

葛丽丝的编译器就像一个 巴别鱼 babelfish ,在程序员和机器之间充当翻译,不过它们翻译的都是高度概括性的语言。

00:12:03

然后,几十年之后,另一个重要的思潮在语言界兴起。想象下画面:自由软件社区在 1980 年出现,但是 Unix 的替代品 GNU 被开发出来后,却没有任何自由开放的编译器随之出现。

00:12:22

为了让 GNU 给我们提供一个真正的开源 UNIX 替代品,为了让编程语言在开源世界蓬勃发展,社区需要找来一个格蕾丝·哈伯 —— 我们需要一个开源编译器。

00:12:38

这是 Langdon White,红帽的平台架构师,来讲讲他对这个事情的理解。

00:12:45 - Langdon White

在 80 年代,你要买一个编译器很轻松就要花上上万块钱。费用是最大的问题,我没有多余的钱去给自己买编译器。再一个事实是,我必须为所有我想要的目标平台买一个对应的编译器。那个时代大部分是 Unix 平台,但是细节和风格各不相同。

00:13:06

因此你就不能买一个,你需要为不同的架构,不同的供应商购买多个编译器。

00:13:14 - Saron Yitbarek

Langdon 指出这不仅仅是成本问题,在一些情况下,对编码工作也带来了问题。

00:13:21 - Langdon White

大家都没有意识到,你如何用很特殊的方式来组织你的代码是很重要的。做嵌套 for 循环或者做嵌套 while 循环之类的事情可能是可以的,这取决于编译器。

00:13:38

因此,大家都应该明白,如果你不知道编译是如何优化你的代码的,就很难知道如何写出最优的代码。

00:13:49 - Saron Yitbarek

必须要提的是,我们需要一个免费的、可获得的、可值得信赖的编译器。这就是 GNU C 语言编译器:GCC。它横空出世在 1987 年,它是格蕾丝·哈伯的编译器革命和自由软件运动的结合。

00:14:12

它是使编译更标准化,从而让所有人可以编译别人写的代码。我们编程语言的丰富性要归功于它。

00:14:22 - Carol Willing

GCC 是开放的,可以说将编程语言推向一个更高的层次。

00:14:29 - Saron Yitbarek

这是 Jupiter 项目成员 Carol Willing,她是 Python 软件基金会的前理事。

00:14:35 - Carol Willing

人们开始意识到,专有的语言会在特定时间内被服务于一个目的,但并不能得到开发者社区的认可和热爱。因为如果你是一个开发者,你希望学习最常用的,以及未来最流行的东西。

00:14:59

我没必要去发展一种将我锁定在一种技术上的技能。我想 Python 成功的一个原因是因为它是开源的,它有非常简洁的语法。

00:15:11

它的特点就是允许人们用常见的方法,快速高效地解决问题,也允许大家合作解决问题。我想这就是好的程序和代码库的标志:如果你可以用最小的工作量完成你的工作,并且与他人分享,这是确实很棒的事情。

00:15:35 - Saron Yitbarek

这么多年过去了,GCC 逐渐的支持了 Java、C++、Ada 和 Fortran 语言,我还可以继续说说它的进步。

00:15:43 - Carol Willing

通过像 GCC 这样的通用底层接口,人们可以根据自己的特殊需求来定制语言。例如,在 Python 的世界里,有大量的库,甚至具体到科学 Python 世界里,我们有 numpy,还有 scikit-image、scikit-learn 这样的东西。

00:16:08

每个库都是为一个特定目的而工作。因此,我们也看到了生物信息学和自然语言处理之类的东西。而人们可以在一个共同的基础上,做出很多不同的事情。而且可以把它们放到编程语言或库里,使他们能够在他们特定的行业或领域中优化问题的解决。

00:16:42 - Saron Yitbarek

因此,这就是编译器技术一头撞进开源运动的结果吧?随着时间的推移,这种不同技术的碰撞,爆炸般地创造了一个新的、被社区支持的语言,大家都可以学习和完善它。

00:16:58

现在有成百上千的编程语言存活着。

00:17:03 - Carol Willing

随着开源软件越来越流行和被广泛接受,我们看到了编程语言的大量激增。现在有大量围绕着手机技术的编程语言,不同的编程语言也让游戏开发更加简单快速便捷。各种用途的语言,如 Python 和 Ruby,它们算是现代网页开发和交付网页应用和网站的基础。

00:17:34 - Saron Yitbarek

这个队伍还会继续壮大。是的,我们建造的这个巴别塔在未来会更加拥挤。但是你可以把它当作一个聚宝盆,一个语言的盛宴。下面我们将会帮你们梳理这个盛宴。

00:17:55

现在我们已经知道编程语言泛滥的原因了。但是这些对我们有什么具体的意义?我们如何选择对我们重要的语言呢?这是个大问题,因此我们找了一些人帮忙:Clive Thompson,是最好的作家之一,他能让科技世界变得更有意义。他是《连线》的专栏记者,《纽约时报》杂志的特约撰稿人,他现在正在写一本关于计算机程序员心理学的书。

00:18:24

当我们挑选我们想要学习的编程语言时,我们需要知道我们到底想要什么。

00:18:31

这是我和 Clive 反复讨论得出的结论。

00:18:35

当我作为一个开发新人第一次入手的时候,我就说:“让我选一个最好的编程语言,然后掌握并熟练运用它,不就完事了么。”

00:18:44

不过事情不会这样简单,否则为什么有那么多的编程语言呢?

00:18:49 - Clive Thompson

每个语言都有那么点它的特长。因此通常来说,有人创造一个新语言是因为现有的语言满足不了他们的需求。JavaScript 就是一个典型的例子。

00:19:03

网景公司 Netscape 曾经在 90 年代中开发了一款浏览器,所有的网站管理员想做一些更具交互性的事情。他们希望有一种方法,使其可以在网站上运行一些脚本。

00:19:16

当然这些需求都提给了网景。然后他们说:“好吧,现在我们没有可以做到这一点的办法,我们需要一个可以集成到我们浏览器的脚本语言。”

00:19:25

于是他们雇佣了 Brendan Eich,一个被认为很资深的家伙。他当时 32 岁,其他人 21 岁的样子。

00:19:32 - Saron Yitbarek

这在开发者圈里就很资深了

00:19:35 - Clive Thompson

他们给他 10 天时间开发 JavaScript。因此他真的就 10 天没有睡觉,然后疯狂地捣鼓出一个脚本语言。它看起来有点挫,有点糟,但是可以运行。它允许人们做一些简单的事情,它还有按钮,对话框,弹框和其他东西。

00:19:54

这就是造一个编程语言的例子,用来做在当时没有办法完成的事情。

00:20:01 - Saron Yitbarek

是不是很有意思。

00:20:03 - Clive Thompson

这就是为什么存在这么多编程语言,人们不断进取,去做别人做不到的事。

00:20:11 - Saron Yitbarek

这也是为什么我对开发者和编程语言之间的关系很感兴趣,我们对这些工具有很强的依赖性。为什么呢?

00:20:22 - Clive Thompson

有几个原因。一个是有时你学习你的第一个编程语言完全是一场意外,有点像你的初恋。

00:20:30

我觉得不同性格的人,也会匹配不同类型的编程语言。例如 Facebook 是用 PHP 设计的。PHP 是有点像毛球,它很不规则,它的成长断断续续,Facebook 也有点这种感觉。

00:20:49

与此相反,来自谷歌的伙计决定:“我们想要一个超高性能的语言,因为在谷歌我们的东西都高速运行着,维护着万亿级的用户吞吐。”

00:21:02

因此他们决定开发一个 Go 语言,Go 非常适合高性能计算。

00:21:08 - Saron Yitbarek

让我们深入一点。作为一个开发者,我有自己的个性,我是不是对一部分编程语言有天然的喜欢呢?或者我工作用的编程语言可能会影响我的个性?

00:21:25 - Clive Thompson

两者肯定都存在。但我确实认为当你遇到你喜欢的编程语言的时候,有一种强烈的共鸣感。你上计算机课程时学习了必修语言:他们都教 Java,有时会多教一门 JavaScript 或 Python。

00:21:46

问题是,你被强制要求,所以你学了它。但当你有选择余地时会怎么样呢?这就是你真正看到一个人的那种情感或心理风格是如何倾向于一门语言的地方,因为我和一个人谈过,他试着学了一堆 JavaScript。

00:22:03

这是个看起来有点丑的语言,它简直是花括号的噩梦。所以他试了又试,试了又试,失败了又失败。直到有一天他看到朋友在用 Python。在他看起来,这是多么的纯净和美妙的语言。因为他是个作家,而 Python 被认为是一个书写型的编程语言,缩进使一切都易于阅读。

00:22:28 - Clive Thompson

它和他一拍即合,主要在于 Python 的工作方式和外观,漂亮的排版打动了他。

00:22:39 - Saron Yitbarek

和 Clive 的交流让我意识到,有一些编程语言是硬塞给我们的。我说的是那些古老的编程语言,已经类似于拉丁语了。

00:22:53

其实我们也有很多选择,去选择适合我们个性的编程语言。如果你想知道最新的东西有哪些,你去问问开发者们周末在用什么就知道了。

00:23:05

下面是我们对话的更多内容:

00:23:08 - Clive Thompson

当我问人们:“你闲暇的时候做什么?”回答肯定是些稀奇古怪的东西。我想实际上其中一个好的,最值得称颂的开发者的特点,就是他们是富有好奇心。

00:23:22

我知道有人会说,“我要学习 Erlang了,就是为了好玩。”

00:23:26 - Saron Yitbarek

我尝试想象人们在周末开发这些项目,项目不是最重要的,他们在学习工具,编程语言才是重要的事情。这才是他们真的想要的状态。

00:23:41 - Clive Thompson

确切的说,你将看到为什么大家不停的重复迭代开发这些日历和待办事项,因为这是一个快速的学习方法。但需要指出的是,编程语言做了什么以及如何工作都与我们没关系,我只需要尽可能的构建我的东西。

00:23:56

他们想知道用那样的编程语言思考是什么感觉。是不是会感觉很轻松、刺激、游刃有余?我目前的使用的语言没这个感觉,是不是入门之后一切事情都变得简单了?

00:24:13 - Clive Thompson

很有可能你遇到一个新语言后会非常兴奋,想起来都很兴奋。

00:24:20 - Saron Yitbarek

我是一个 Ruby 从业者,作为 Ruby on Rails 开发者我非常自豪,我想大概是两年前,另一个非常著名的 Ruby 开发者,Justin Serrals 做了一个非常好的演讲,倡导编程语言从实用角度出发,没有必要那么性感。

00:24:41

他的观点是,Ruby 之所以是一个令人兴奋的编程语言的原因在于它很新,而且差不多几年前都已经得到印证了,它已经不需要更新什么了。它已经是一个稳定、成熟的编程语言了。不过因为它的成熟,开发者对它也就不那么兴奋,我们逐步把目光转移到新的花样来了。

00:25:05

从某个意义上说,很有可能我们的好奇心会扼杀了一个编程语言,或者让它变得庸俗,而这与编程语言本身的好坏没有关系。

00:25:18 - Clive Thompson

我认为这是完全正确的。事实上,你看到的开发者这个极度好奇心和自学欲望的特点,会让他们不断地寻找新鲜事物。并用这种语言去复制其他语言已经基本做得很好的东西。

00:25:37 - Saron Yitbarek

是的。

00:25:37 - Clive Thompson

就是这样,好奇心有好处,同时也是一个陷阱。

00:25:43 - Saron Yitbarek

是的,说的很好。

00:25:49

有时我们的好奇心可能是一个陷阱,但是它也是编程语言革命的动力。开发每个新编程语言的时候他们会说,“有没有别的可能?”它们出现的原因在于,开发人员想要做不一样的事情。

00:26:06

我们想要全新的表达方式。

00:26:08 - 葛丽丝·哈伯

我向你们承诺一些事情。

00:26:11 - Saron Yitbarek

我想葛丽丝·哈伯想在这儿最后讲两句。

00:26:15 - 葛丽丝·哈伯

在未来 12 个月里,你们谁要是说我们一直都是这么做的,我将会瞬间实质化在你的旁边,然后我 24 小时围绕着你。我倒是要看看我能不能引起你的注意。我们不能再相信那句话,这是很危险的。

00:26:34 - Saron Yitbarek

葛丽丝的故事和第一款编译器提醒我们,只要能可以找到表达方法,我们总有更好的办法做事情。

00:26:43

不管编程语言有多抽象,不管我们在机器的 1 和 0 高位还是低位浮动,我们都需要确保它是一个明智选择。我们选择一个语言,是让它帮助我们的想法更容易表达出来。

00:27:03

如果你想更深一步学习编程语言和和编译器,你不会很孤独,我们收集了一些很有用的文档帮你深入学习。敬请在我们节目下面留言。请查看 redhat.com/commandlineheroes

00:27:20

下一期节目,我们将关注开源贡献者的艰辛之路。那些维护者的真实奋斗生活是什么样的?我们如何提出第一个拉取请求?

00:27:32

我们将带你们简单认识开源贡献。

00:27:39

代码英雄是红帽的原创播客。你可以在苹果播客、谷歌播客以及其他可能的地方免费收听这个节目。

00:27:48

我是 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-2/hello-world

作者:Red Hat 选题:bestony 译者:guevaraya 校对:acyanbirdwxy

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

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

什么是《代码英雄》

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

本文是《代码英雄》系列播客第二季(1):按下启动键音频脚本。

导语:在“开源”和“互联网”这两个词被发明出来之前,就有了游戏玩家。他们创建了早期的开源社区,在彼此的工作基础上分享和创造。对于许多程序员来说,游戏引领他们走向了职业生涯。
在本期节目中,我们将探索在 ARPANET 平台上的,早期游戏开发天马行空的创意。游戏开发汇集了大量的创意并聚集了编程人才。虽然创建视频游戏在最开始是一个开放的过程,但如今很多事情已经发生了变化。听听你该如何参与打造我们自己的《命令行英雄》游戏,以及本着游戏的精神,找找本集的复活节彩蛋

00:00:01 - Saron Yitbarek

一群朋友正在玩 《D&D》( 龙与地下城 Dungeons and Dragons )游戏。 他们靠在一起,听他们的 地下城城主 dungeon master (DM)说话。

00:00:09 - D20 菜鸟地下城城主

好的,你在念咒语,你拿起你的权杖,把自然的力量注入其中。你可以看到藤蔓从里面伸出来,和你结合在一起。它在你手中的重量明显不同了,你感觉到了更强大的力量。

00:00:26

所以我要施一个魔法……

00:00:27

好的,你做到了,你还有一次行动机会。你要做什么呢?

00:00:34 - Saron Yitbarek

好吧,我得承认:我小的时候,从来没有坐在地下室里玩过《D&D》游戏,我也从没有渴望过成为一名 DM,不管它是什么。我不会在真人角色扮演游戏中的树林里找我的第一个男朋友,也不会在游览动漫展的过道上和我的死党黏在一起。那不是我。

00:00:52

但我知道是,游戏把人们聚集到了一起并形成了社区。而且,对于众多的开发者而言,游戏是编程的入门良方。正是游戏让他们了解计算机,并第一次将他们带入一个,以极客为骄傲的空间。

00:01:12

正是对游戏的热爱让他们想自己开发一款游戏,然后去打造游戏,不停超越自身。这是我非常喜欢的东西。

00:01:23

在我们的第一季中,我们探讨了开源从何而来,以及它如何影响了开发者世界的每个部分。这一季我们就在代码里面讲述:在今天,成为一名开发人员意味着什么。

00:01:39

这一切都是从找到你的伙伴开始的。所以,开始游戏吧。

00:01:51

甚至在“ 开源 open source ”和“ 互联网 Internet ”这两个术语被创造之前,就已经有了游戏玩家。那些游戏玩家想要相互连接起来。因此,当世界开始联网时,他们走在了前列。他们要建立连接和共享所需的一切,并且 ——

00:02:09 - D20 菜鸟甲

哦,它上楼了。哦,天哪,要疯。

00:02:11 - D20 菜鸟乙

放心,这把武器可以打死它,伤害是 8 点呢。

00:02:16 - D20 菜鸟地下城城主

随便你,来吧!

00:02:17 - D20 菜鸟乙

所以,捅它!耶!

00:02:19 - D20 菜鸟丙

捅谁,德鲁伊吗?

00:02:19 - D20 菜鸟甲

我干掉它了!

00:02:27 - Saron Yitbarek

好吧,接着玩吧。我是 Saron Yitbarek,这里是红帽原创播客 代码英雄 Command Line Heroes 第二季。今天的节目,《按下启动键,游戏和开源社区》。

00:02:45 - 配音

你站在一条路的尽头,前面是一座砖砌的小型建筑。你周围是一片森林。一条小溪从建筑物里流出,顺着沟壑而下。

00:02:56 - Saron Yitbarek

你对这些话有印象吗?如果你还记得,可以给你的历史知识打 10 分。但是,如果你和我一样,对它们没有印象,那么这些都是 《巨洞探险》 Colossal Cave Adventure 的开场白。

00:03:09

什么是《巨洞探险》?我的朋友,一切的改变始于 1976 年。那条路,森林边的砖房,那条流入沟壑的小溪,当时没有人知道,但这款基于文本的游戏(是的,根本没有图形)将是一扇闪亮的红色大门,通向了新的社区和协作形式。

00:03:38 - Jon-Paul Dyson

《巨洞探险》是一种被称为文本冒险的游戏。你可以通过输入命令与计算机交互:向西走、拿上剑、爬山等等。

00:03:51 - Saron Yitbarek

这是 Jon-Paul Dyson。他是 斯特朗国家游乐博物馆 Strong National Museum of Play 的副馆长,也是其电子游戏历史中心的主任。是的,相当有趣的工作。

00:04:04 - Jon-Paul Dyson

《巨洞探险》是一种非常不同类型的游戏。它更像是一款流程自由的探险游戏,就像在此时问世的《龙与地下城》一样。

00:04:17

因此,它开启了想象力。这是一场真正革命性的游戏……

00:04:22 - Saron Yitbarek

在 70 年代中期出现了一种新型游戏,这绝非偶然。正在其时,互联网的鼻祖 —— 阿帕网 ARPANET 出现了。

00:04:32 - Jon-Paul Dyson

事情是这样的,一位在 ARPANET 上工作的人,他叫 Will Crowther,有了开发这个洞穴探险游戏的想法。他大致依据他曾探索过的,肯塔基州猛犸象洞穴的一部分为基础,创作了这款游戏。

00:04:50

这真是革命性的突破,因为它给了玩家一个探索环境的机会。不过更有趣的是,他去度假了。而另一个人,叫 Don Woods 的伙计,因为当时 ARPANET 的存在而发现了这个游戏,然后做了些调整。

00:05:09

因此,几乎从一开始,这个游戏的开发就是一个协作过程,因为它已在网络上被共享。这恰是一个很好的例子,说明了该游戏是如何被开发、修改、改进,然后广泛传播的,这一切都是因为这些计算机是连接在一起的。

00:05:28 - Saron Yitbarek

因此,在计算机联网后,我们可以立即开始使用这些网络来分享游戏。而这些游戏本身也在不断演变。

00:05:38

事情是这样的:不仅仅是网络改善了游戏,游戏也改善了网络。因为越多的人想要分享这些游戏,他们就越需要一个社区的论坛。

00:05:53

因此,有了游戏技术,以及热爱它们的社区,它们彼此在相互促进。这是一个正反馈回路。同样,游戏开发人员彼此启发,相互借鉴。

00:06:09

ARPANET 真是一片肥沃的土地。Jon-Paul Dyson 再次发言:

00:06:16 - Jon-Paul Dyson

所以像《 冒险 Adventure 》这样的文本冒险游戏就在这个空间里运转,这个空间被技术先锋们占据,他们知道如何无厘头、搞笑,知道如何才好玩。

00:06:28

早期的游戏确实为开发者社区该如何协同工作提供了一种模式。

00:06:36 - Saron Yitbarek

记住,我们这里谈论的不是 《我的世界》 Minecraft ,也不是 《英雄联盟》 League of Legends ,我们谈论的是黑色屏幕上一行行绿色的文字,读完游戏内置的故事,并让你做出决定。这是一种相当简单的游戏文化,但它给了我们巨大的回报。

00:06:56 - Jon-Paul Dyson

有一种共同体的信念,认为分享有好处,即与生产专有产品相比,更多的协作可以产生更好的结果。因此,结果就是你开发的游戏都是从社区中涌现出来的,这些游戏本身对改变持开放态度,并鼓励人们改变游戏,可能是小的方面,也可能是大的方面。但有一种感觉是,如果游戏变得更好,那么一切都是好的。

00:07:31

所以我认为历史上的这种早期的理念,尤其是计算机游戏方面,在推动计算机社区的发展方面确实很重要。

00:07:45 - Saron Yitbarek

Dennis Jerz 教授特别研究了游戏的历史,尤其是《巨洞探险》。对他来说,这些原始开源社区对于所有创造力来说,都是一次自由的释放。

00:07:58 - Dennis Jerz

当时的文化是,人们在自己工作的基础上建立和分享自己的想法。而且很常见的是找到源代码后,第一件事就是在现有的源代码上再增加一个属于自己的空间。

00:08:22

这和同人小说的想法很像,就是人们创造自己的故事,这些故事穿插在《哈利·波特》的不同章节之间,或者是《 饥饿游戏 the Hunger Games 》中 Katniss 的世界里的小角色的故事。这种在主叙事的基础上进行补充、阐述和构建的文化。

00:08:44 - D20 菜鸟玩家甲

好吧,所以我现在急着要找 Van Tyler,看看她的伤口。哦,上面说武器的伤害变成了 d8。

00:08:56 - Saron Yitbarek

在基于图像或视频的游戏出现之前,这些基于想象力的游戏风格为大规模的在线社区铺平了道路。游戏社区和在线社区之间的是共生的,拥有强韧的联系。

00:09:11

但如果说有一件事是游戏玩家都知道,那就是强大的玩家可以将任务推动到一个新的方向。随着网络游戏的发展,它以社区为基础的根基开始被侵蚀。

00:09:24 - D20 菜鸟玩家甲

这次试着把它放在他的脖子后面。搞定!

00:09:33 - Saron Yitbarek

好的,让我们快进到如今。互联网已经成熟。有了它,在线游戏社区已经有了很大进步。如今,游戏每年的收入超过 1000 亿美元。预计在未来十年,这一数字将翻一番以上。

00:09:53 - Saron Yitbarek

但这些取得的成功也改变了游戏规则。这不是一群独立开发者在一个摇摇欲坠的论坛上分享他们的作品。今天尚存的游戏社区与《巨洞探险》早期的情况完全不同。

00:10:11 - Saku Panditharatne

大家好,我叫 Saku,我是一家名为 Asteroid 的初创公司的创始人,我公司为游戏开发者制作增强现实(AR)工具。

00:10:19 - Saron Yitbarek

Saku Panditharatne 觉得开放的互联网与游戏开发之间的关系最近已经扭曲。她说的很清楚,为什么游戏公司之间不共享部分代码,而有时候大型科技公司之间却能共享代码呢?

00:10:37 - Saku Panditharatne

如果你是唯一一个与所有人共享你的代码的游戏公司,那么你的竞争对手只会复制你的代码,他们会拿走你的所有秘密,并且他们会制作出比你更好的 3A 游戏。

00:10:47

这对大型科技公司来说也是个问题。但实际上,我认为是软件工程师的努力打破了这种平衡。因为如果没有人为一家闭源的公司工作,那么每个人都会被迫开源,然后所有的大科技公司都能尽可能地共享,这对软件整体来说是非常好的。

00:11:11

但这在游戏行业中从未发生过。

00:11:14 - Saron Yitbarek

Saku 的理论是,与其他领域相比,在游戏领域的传统上,开发者没有同样的决策控制权。那太糟糕了,因为这意味着我们都错过了开放。

00:11:26 - Saku Panditharatne

我们基本上知道具体如何将渲染、着色以及物理操作做到很高的标准。那不应该是每个游戏工作室都在复制的东西。但是,奇怪的是,游戏工作室通常仍会在内部构建引擎。不幸的是,他们陷入了这种……

00:11:46

我觉得游戏有点像电影,而不是像软件。你会使游戏开发陷入到地狱。你会遇到所有的问题,比如制作人的融资问题等等。

00:11:59

我认为所有这些因素都不利于软件变得更好。

00:12:05 - Saron Yitbarek

因此,游戏开发中的专有制度,导致了大量重复的工作,每个工作室都必须解决同样的问题。而且它们中的大多数都不是最佳解决方案。

00:12:18

同时,对于可能会提供新东西的独立开发人员来说,事情很快变得难以承受。游戏开发人员通常必须购买某个主流游戏引擎的许可证。或者,他们必须得购买一个脚本。

00:12:33

另一方面,Web 开发人员拥有更多可接受的选择。

00:12:37 - Saku Panditharatne

我觉得真正有趣的一个事实是,拍一部电影比做一架飞机更复杂。这只是因为你拥有的所有这些各种人都具有不同的技能,他们的工作时间表不同,他们受到的激励也不同。

00:12:51

所以,让他们一起工作就像一场组织挑战。而游戏引擎和其他游戏软件所做的事情之一:它是用来弥合这种鸿沟的,几乎成为最有效的工作软件。

00:13:06 - Saron Yitbarek

游戏开发的问题很像电影制作问题。你有艺术家、编剧、角色设计师,都在与程序员和系统管理员角力。如果不采取开源的态度,或者没有建立共享和同步的方式,那一群不同角色的人就会变得混乱。

00:13:27

这一切都归结为建设社区的挑战。那些最初的游戏,是由开发者利用自己的空闲,例如午休时间开发的。

00:13:38

另一方面,像《 魔兽世界 World of Warcraft 》这样的游戏,他们有大量的创意人员和程序员。社区已经达到了极限。例如,我认为没有任何论坛可以让开发人员向角色设计师提出“PR”以供审查。

00:13:54

但也许应该有 PR,Saku 知道我在说什么。

00:13:57 - Saku Panditharatne

我认为游戏的一个大问题是,它是一个跨学科的东西。跨学科做任何事情都是困难的,因为这几乎就像 C.P.Snow Essay 的文章 《 两种文化 The Two Cultures 》,你必须把用右脑的、富有创造性思维的人和用左脑的、富有逻辑思维的人聚集在一起,让他们共同努力做一些事情。

00:14:18 - Saron Yitbarek

我们能不能花点时间让全世界做点什么?如果 GitHub 上有人想找出一种开源游戏开发的方法,在开发者和艺术家之间进行转译,你就为世界做出了贡献。

00:14:32 - Saku Panditharatne

我有点觉得,游戏的限制一直都是把两群不怎么说话的人聚集在一起,然后努力创造一些东西。

00:14:42 - Saron Yitbarek

对我来说,简而言之就是开源的事。不过,特别值得一提的是,Saku 在想办法弥合两个社区之间的差距,从而形成一个更大的社区。

00:14:53 - Saku Panditharatne

是的,我认为这实际上可以真正改善整个行业。我认为那些大型的新兴创业公司很多都出现在 2007 年左右,都是因为他们可以使用大量的开源软件。

00:15:07

而且我认为,如果没有开发者把他们的东西免费放到网上,那股创业热潮就不会发生。

00:15:13

如果类似的事情发生在游戏行业中,我想我们会有比现在更多的独立游戏开发者。

00:15:21 - Saron Yitbarek

但有个好消息。游戏领域的开源革命,可能已经开始了。Jon-Paul Dyson 再次出现:

00:15:30 - Jon-Paul Dyson

在视频游戏的历史上,确实存在两个流派:一个是人们创造专有产品的地方,即封闭系统。它们通常经过精心打磨,出于商业目的而发布。想想像 任天堂 Nintendo 这样的公司。任天堂创造了令人赞叹的游戏,但你无法真正进行修改。

00:15:52

但在电子游戏和电脑游戏的历史上也出现了一种相反的趋势,这是一种更具协作性的方法。像《我的世界》这样的游戏就是一个现代的例子,人们正在参与对游戏的修改,那里有一个围绕游戏而生的社区。

00:16:14

你可以从互联网上的某个地方下载 MOD,然后在游戏中引入。因此,你拥有的是一种非常不同的,几乎是有机的开发游戏的方式,而不是一种更结构化的,可能是商业化的、工程化的方式。

00:16:35

在很多方面,《我的世界》都是诸如《太空大战》或《巨洞探险》等早期游戏的继承者,该游戏在社区中发展,对进行修改和改变的人们更开放。而且,其治理理念是,从某种意义上说,以长远角度来看,群体的工作将会比一个小团队或个人的工作更好。

00:17:04 - Saron Yitbarek

我认为我们现在要说的是,游戏行业并没有完成社区的建设,你也永远不能消灭这种开源精神。

00:17:14

这就是我们所知道的:游戏仍然激发了许多开发人员,这就是许多代码英雄最初进入该行业的原因。比如像 Josh Berkis 这样的代码英雄,

00:17:28 - Josh Berkus

嗯,我是从 Atari 800 开始的,因为它可以设计自己的游戏。

00:17:34 - Saron Yitbarek

以及 Ann Barcomb,

00:17:36 - Ann Barcomb

我写的大多是冒险游戏,那是可怕的意大利面代码。

00:17:42 - Saron Yitbarek

还有 Justin Flory。

00:17:43 - Justin Flory

在我意识到我在做开源之前,我就已经开源了。我从一台运行着《我的世界》的游戏服务器开始的,那时我 15 岁。

00:17:54 - Saron Yitbarek

当人们热爱某事时,那么对社区、对开源的态度就会蓬勃发展。Saku 对专有游戏元素的警告,实际上正是游戏在其旅程中必须克服的障碍。

00:18:09

一些游戏行业的领先者正开始实现这一飞跃。

00:18:17 - 在玩堡垒之夜的孩子们

我们实际上做得很好。

00:18:18

我当时正在疯狂射击,我干掉了 3 个,他们干掉了 1 个。

00:18:21

哦,Campbell 在背着我。

00:18:24 - Saron Yitbarek

如果你去年就快到 12 岁了,你很可能听说过一个叫《 堡垒之夜 Fortnite 》的小游戏。嗯,很小的游戏。在它发布的第一年,它就获得了超过 1.25 亿的玩家,所有玩家都在一场大逃杀中。

00:18:43 - 在玩堡垒之夜的孩子们

我得下线了,好吧,就一会,我得给我父母打个电话。

00:18:47 - Saron Yitbarek

是的,游戏在建立社区方面还是很不错的。实际上,《堡垒之夜》 是有史以来最大的免费主机游戏。它背后的工作室 Epic 还创建了《堡垒之夜》所使用的 虚幻游戏引擎 Unreal engine

00:19:02

很多其他的游戏也都使用虚幻引擎,因为 Epic 向世界免费发布了虚幻引擎。它不是直接开源的,但它的源代码是可访问的。这远超了大多数工作室。

00:19:16

有了虚幻引擎,任何人都可以获取到源代码。他们不仅提供了代码,还致力于建立一个答案中心、论坛、开发者支持。Epic 正在加倍努力建设一个尽可能大而广泛的社区。

00:19:32

而且他们并不孤单。你已经有了像 Godot 和 MonoGame 这样的完整的开源游戏引擎,它们正在催生自己的开发社区。红帽公司的软件工程师 Jared Sprague 是新一代的一员,他们可以使用所有这些工具和引擎来构建令人惊叹的游戏,如果没有这些社区,他们是永远不可能构建出来这种东西的。

00:19:55 - Jared Sprague

独立游戏行业最近发展很快。因此,你应该发现几年前,大多数游戏都是由大型工作室制作的。这些都还在市场上,对吧,任天堂之类的。

00:20:09

独立产业正在爆炸式增长。我认为这很大程度上是因为 Steam。

00:20:17 - Saron Yitbarek

他说的就是 Steam 平台,它让开发者可以将游戏内聊天功能、社交网络服务等所有好的东西整合在一起。他们在这方面已经做了 15 年了。

00:20:29 - Jared Sprague

Steam 使任何游戏开发者,都有可能发布一款游戏给数百万人。有很多大型游戏是从独立游戏开始的,也许只有一两个人在做,最后大放异彩。

00:20:48

《我的世界》就是一个很好的例子。刚开始,只有一个人,是独立开发者。现在这是有史以来最大的游戏之一。但这只是一个例子,说明独立游戏是如何真正成为游戏行业的主要力量。

00:21:06 - Saron Yitbarek

Jared 与他的红帽伙伴 Michael Clayton 合作制作了游戏 Jams,一群独立游戏开发人员聚集在一起,在很短的时间内开发出游戏。就像黑客马拉松一样,但用于游戏。

00:21:17

GitHub 上有一个叫做 Game Off 的版本,Jared 的版本叫做 Open Jam。如果你问他,他会说这是基于社区的游戏开发未来的一部分,而且会变得越来越大。

00:21:31 - Jared Sprague

例如,你可以使用 Linux,因为它是开源的,所有人都可以为它做贡献,添加工具、补丁等等,这就是它如此伟大的原因。比一个人独自完成的要好得多。

00:21:47

而且我认为开源的游戏或某种游戏系统或虚拟世界仍有潜力,成千上万的人可以做出比一个人可以做的更大的东西。

00:22:03 - Saron Yitbarek

游戏工作室已经开始转变了对开源态度。

00:22:10 - Jordan Weisman

我认为游戏能够让你的社区开启创造,它的这种力量是毋庸置疑的。

00:22:18 - Saron Yitbarek

Jordan Weisman 是 Harebrained Schemes 的联合创始人。 《 血色苍穹 Crimson Skies 》、 《 战斗机甲 Battle Tech 》、《 机械战士 Mech Warrior 》这些都是他的作品,他长期从事游戏开发。而他现在看到的是,随着工作室开始意识到好处,对开源的态度也在转变。

00:22:35 - Jordan Weisman

甚至像《战斗机甲》之类的游戏也有很多…… 我们已经尝试向玩家开放尽可能多的游戏数据。而且我们已经看到玩家为游戏提供了惊人的 MOD。看到他们的创意和成果,令我们兴奋,这与我们的原创内容相比,它以不同的方式吸引着玩家。

00:22:58

这只是关于你能做什么的一个小例子。随着游戏的发展,我们更加知晓了这一点,越来越开放,让玩家表达他们的创造力。

00:23:10 - Saron Yitbarek

Jordan 认为,不断变化的文化有助于他的游戏成为最好的。但是,你知道,就像我们在本期节目的《D&D》开场白中所暗示的那样,对社区的推动始终存在。

00:23:24 - Jordan Weisman

TRPG 来自于 GM 与玩家之间,互相用语言编织一场冒险的 RPG 游戏,人们围坐在一张桌子前合作讲故事并分享经验。在某段时间内,当我们开始分享某些电子游戏时,这两派非常分裂。

00:23:41

我认为,随着 MOD 工具和大家都能接触的引擎的诞生,以及工具更高的可访问性,和开发商转向开源。这在某种程度上,让我们重新回到了游戏的创建之初,这种非常社交化的。具有娱乐形式的协作。

00:23:58

所以我觉得这很令人兴奋。

00:24:01 - Saron Yitbarek

我也这样认为。至于 Jared Sprague,他将再次与 Michael Clayton 合作,开发一款全新的社区驱动的开源游戏。它被称为…… 代码英雄 Command Line Heroes

00:24:21

是的,我们正式成为一个多平台 IP。当然, 代码英雄 Command Line Heroes 游戏将成为一个开源项目。所以我们邀请社区(也就是你)与我们一起打造这款游戏。我们所要做的就是一个目标。

00:24:40

灵感来自 NASA,这将是一个火星之旅。它的细节?这取决于我们所有人的共同努力。这将是一个基于网络的游戏,我们将在整整这一季的播客节里致力于这项工作。GitHub 仓库将对任何想要贡献的人开放。

00:24:59

而且,再说一次,如果你正在收听此内容,则邀请你参与,与我们一起开发该游戏。设计一个角色,提一个拉取请求。或者只是玩测试版,然后将你的反馈发送给我们。

00:25:21

我们将利用我们在本期节目中谈到的所有开源魔法,共同构建一些东西。

00:25:22

趣事:还记得《巨洞探险》吗? 好吧,虽然这个游戏的代码一直可以访问的,但《巨洞探险》在 40 年后终于完全开源了。2017 年,官方版本在 BSD 许可证下发布了。

00:25:39

从最初的互动式文字游戏开始,游戏社区已经走过了很长一段路。

00:25:45 - 配音

你站在一条路的尽头……

00:25:50 - Saron Yitbarek

问题是,我们不是站在路的尽头。这条游戏之路绵延不绝。在此过程中,游戏正在帮助我们联合起来并建立整个宇宙。坦率地说,我们不知道我们的社区将如何安排自己沿着这条路走下去。

00:26:07

但我们知道游戏将会推动这一进程,因为我们从来没有停止过 —— 按启动键。

00:26:15

想了解更多关于早期开源社区和开源游戏起源的知识吗?在 代码英雄 Command Line Heroes 网站上有更多的内容等着你。你可以通过访问 redhat.com/comandlineheros 更深入地挖掘。在我们告别之前,我想让你知道我们在导语中有一项特殊礼物在等着你。这是 Warren Robinett 的故事,他创造了 Atari 游戏《 冒险 Adventure 》,这款游戏的灵感来自于《巨洞探险》。

00:26:48

他告诉我们,他与老板的争论是如何导致出现了第一个视频游戏的 复活节彩蛋 Easter egg 。这是一个很棒的故事,是我们发展史上很可爱的一部分,但我们想给它应有的空间。

00:27:03

所以请到 redhat.com/commandlineheroes 网站上听一听。

00:27:10

代码英雄 Command Line Heroes 是 Red Hat 的原创播客。在 Apple Podcast、Google Podcast 或任何你收听播客的地方免费收听它。

00:27:20 - 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-2/press-start

作者:Red Hat 选题:bestony 译者:gxlct008 校对:Bestonywxyacyanbird

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

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

什么是《代码英雄》

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

本文是《代码英雄》系列播客第一季(7):开启未来音频脚本。

想象一下,在这个世界上,开源从来没有流行过,没有人认为将源代码提供给别人是个好主意。在本期节目中,我们将想象这种奇异的可能性。而我们也会庆祝那些让我们走到今天的开源工具和方法论。

加入我们,我们将对第一季进行总结,高屋建瓴地来了解开源世界是如何形成的。下一季,我们将把镜头放大,聚焦于当今的代码英雄们的史诗般的奋斗。

配音

在一个没有开源的世界里,来自未来的执法者穿越时空去摧毁 Linus Torvalds 的计算机。

Saron Yitbarek

天啊。我又做了那个噩梦。在梦里,我有一些很棒的想法,但我不能上手开发,因为没有相应的开源技术可以使用。

Tristram Oaten

我认为一个没有开源的世界几乎注定是邪恶的。

00:00:30 - Saron Yitbarek

我想,如果软件(LCTT 译注:这里的软件指 MINIX)在 20 世纪 80 年代遭到闭源,而源代码再也没有被打开过,肯定会少很多创新。

Steven Vaughan-Nichols

那将是一个落后的世界。

Hannah Cushman

我认为智能冰箱肯定会变得更少。

配音

在一个没有智能冰箱的世界中。

00:01:00 - Saron Yitbarek

好吧,好吧。你懂的。我们正在想象一个没有开放源代码技术的世界,这并不特别美好。想象一下:你的在线生活由一些大型私有公司管理,为此你得向它们缴费。网络中的每一处都被它们看守着。对于我们开发人员来说,没有开源的世界意味着更少的自由和影响力。

00:01:30

在整整一季中,我们一直在纪录开发人员在开源世界中的角色。随着开源技术与工具的不断涌现,我们的工作也不断演进和扩展。无论是敏捷宣言,DevOps 的兴起,还是容器编排,我们宣称的力量和自由都与开源哲学紧密相关。

在本季的最后一集,我们将会回顾前几集中的内容。随着世界走向开源,这个词的原始含义能剩下多少呢?而我们,接下来,则将何去何从?

00:02:00

我是 Saron Yitbarek,这里是《代码英雄》,一款红帽公司原创的播客节目。第 7 集:开启未来。

Steven Vaughan-Nichols

没有开源的世界不是我想要的世界,也不是绝大多数人想在其中生活的世界。

00:02:30 - Saron Yitbarek

这位是 Steven Vaughan-Nichols。你可能在第一集第二集里谈论操作系统战争的时候记住了他。他是 哥伦比亚广播集团互动媒体公司 CBS Interactive 的特约编辑,从快速调制解调器的速度还是 300 比特每秒时以来,他就一直关注着科技。

Steven Vaughan-Nichols

除了 Linux 之外,你可能无法叫出任何一个开源程序的名字,但是你当前的生活是建立在开源之上的。

00:03:00 - Saron Yitbarek

如果不使用开源技术,绝大多数人甚至无法上网。开源技术几乎存在于地球上的每台超级计算机中。它运行在 物联网 Internet of Things (IoT)中。它存在于你的手机、你的 Web 服务器,你的社交媒体———以及,大型强子对撞机中。而且,并非只有我们开发人员了解开源的诸多益处。开源态度现在已经超越了技术的范畴,影响了其它行业,例如经济学、音乐、科学和新闻业。

00:03:30

如果建筑师以我们分享代码的同样方式分享建筑的蓝图会发生什么?如果一个记者打开她的档案,让任何人不仅可以检查她发表的文章,还能检查她的研究和采访记录,会发生什么?我们不应为此而惊讶,因为开发人员培育这份哲学已有多年。每个人都可以看到代码、注释代码、复制代码、提供补丁,这实际上是一件非常基础的事情,对吧?这就是分享。

00:04:00

自最早的人类分享膳食食谱以来,我们就知道公开分享指令集,或者说算法,对人类有净收益。在某些方面,开源技术现在能使我们重温这个基本事实。

Hannah Cushman

我认为,使更多的事物开源会促进和鼓励人们查阅原始资源,这总是很好的。

00:04:30 - Saron Yitbarek

这位是 Hannah Cushman,她是 DataMade 的一位开发人员,他们一直在努力使城市变得更加开放。将来自政府的大量公开数据进行整理并合理地处理,就可以让普通市民使用它来采取行动。他们使用的技术是开源的,同时他们对政治的态度也是如此。

00:05:00 - Hannah Cushman

我们在芝加哥与一个叫做 City Bureau 的组织进行了一个项目,和他们一起为公立学校测试铅含量。我们测试了这些学校中几乎全部的供水设备。这些全部公布的测试结果有 500 份 PDF 文件之多。

Saron Yitbarek

是的,这太好了。但这并不完全是一种使数据公开的有效方式。

00:05:30 - Hannah Cushman

在整个系统中,很难看到例如哪里发现了铅,以及哪里的铅含量更高。我们使用了另一个叫做 Tablua 的开源工具,可以在终端上运行;它能从 500 多个 PDF 文件中提取数据并将其放在一起,帮助我们把巨量信息转储到一个对人们有用的上下文中。

我认为查询源数据是一种非常有效的方式,这使人们可以了解信息的来源并验证其正确性。

00:06:00 - Saron Yitbarek

市民可以访问健康报告的详细信息,获取游说者的数据,还可以查看城市政治的整个组织结构,DataMade 为此提供了浏览门户。这使芝加哥人有更多机会对市政的方方面面作出改变。

加州州立理工大学 Cal Poly 的研究软件工程师 Carol Willing 认为,这种不断扩展的开源态度将给世界带来更广泛的变化。

00:06:30 - Carol Willing

就个人而言,我认为开源将从开源软件发展到开放硬件、开放政府、开放教育、开放协作、开放创新等等。开源会不断进化。

Saron Yitbarek

现在,开源逐渐变得更像是自然法则,而不仅仅是科技界的产物。

00:07:00 - Carol Willing

人们慷慨奉献自己时间的事迹古而有之。但令人耳目一新的是,开源深刻地改变了世界,因为它使不同的小群体联合起来,一起致力于他们中任何一组都无法单独处理的大型项目。

00:07:30 - Saron Yitbarek

“用全新的技术来践行古老的理念”——这个主意我喜欢。但先别急着高兴。随着开源这个词被越来越广泛地使用,它的定义可能会变得模糊。在某些场合下,它开始意味着“免费”,或者“众包”,甚至仅仅是“可定制”。

例如,如果我只是允许你选择在冰淇淋上哪撒些糖粉,这不代表我的冰淇淋是开源甜点。但是,如果我告诉你如何制作糖粉,让你改进我的糖粉配方——然后,如果你也想与他人分享糖粉制作的秘密,那么,恭喜你,我们得到了一些美味的开源。

00:08:00

那么,开源的原始定义又是什么?它很简单,但我们应当恪守。要实现真正的开源,你需要公开代码,或者蓝图,或者你的菜谱。换句话说,就是使任何人都可以随意研究、修改和重新分发原始数据。这种哲学将带来变革,不过对于命令行外的世界,一切才刚刚开始。

00:08:30 - Thomas Cameron

这是一种非常惊人的技术开发方式。无论是它的成功,还是我已经参与其中的这一事实,都让我感到震惊。

Saron Yitbarek

Thomas Cameron 在 1998 年“开源”这个词被发明之前就一直从事开源工作。今天,他是 Red Hat 的高级首席云推广人员。他完全有资格谈论开源在如今的进展,以及其发展的过程中发究竟生了多少斗争。

00:09:00 - Thomas Cameron

你知道,经理们不想承担风险,这是巨大的阻力。因为它是免费的,所以他们会想,“我没办法打电话寻求技术支持”,“我不得不依靠特定的开源软件”之类。这一类斗争还算简单,在部门服务器、群组服务器、小型 Web 服务器、小型文件服务器和打印服务器上,我们也赢过不少。随着时间的推移,在赢得这些简单的战斗之后,更艰难的战斗出现了。在每次“作战”中,你会发现,系统管理员和系统工程师对开源越来越着迷。

00:09:30 - Saron Yitbarek

尽管有这些斗争,你也无法否认一直以来的进展。

00:10:00 - Thomas Cameron

我目睹了开源给 IT 行业带来的改变,它最开始时用在某些系统管理员办公桌下私搭乱建的服务器里,并最终传播到家喻户晓的大公司之中——英特尔、IBM、AMD,每个你能想到的组织都开始为开源项目做出贡献。这绝对是一场斗争,我在不同的企业职位上都参加过如此多的相关争论;我曾说过,“我们需要把 Linux,或其他开源技术,引入数据中心。”

00:10:30 - Saron Yitbarek

Thomas 观察到,开源软件开发正逐步占据市场。但对于某些人来说,这很令人不安。

Thomas Cameron

我们能够分享信息与分析结果,这让那些一直占有信息并从中牟利的人感到害怕。这种模式使他们无法轻易获取利润,也难以哪怕得到对一个组织的完全控制,这是巨大的变化,随之而来的是恐惧。

00:11:00 - Saron Yitbarek

我们在本季开始时描述的支持开源的反叛者们现在领导着这个行业。但从更长远的角度来看,故事绝不会在这里结束。Christopher Tozzi 是 Fixate IO 的高级编辑。他将开源带来的颠覆视为某种根本性转变的开始,这种转变将使世界各地的人们都能协同合作——而不仅是在软件开发行业中。

00:11:30 - Christopher Tozzi

我认为,在过去的二十年里,开源变得如此强大的原因之一就是人们对去中心化一直保有兴趣。我认为,这也解释了开源如何影响其它技术创新。比如,区块链也建立在这样的思想上:如果我们摆脱集中的生产方式,去中心化的数据库或交易方式可能会更高效、更安全。重申一次,我认为今天的开源,自从 Torvalds 出现以来,就与开发工作的去中心化息息相关。

00:12:00 - Saron Yitbarek

全面的分权意味着整个世界都在走向开源。体现了这一理念的开发人员,他们是最能想象未来的人。

这是 Tristram Oaten,他是伦敦的一位开发者,他肯定在考虑这场漫长的比赛。

00:12:30 - Tristram Oaten

就像是 3D 打印机将通过在家生产零件来使我们的生活更轻松——而且多半能更环保一样。无论什么时候有东西坏了,你都可以在家里新制造一个。这是 星际迷航 Star Trek 式的未来的复制器,就和理想中一模一样。希望这样的生产方式能真正投入使用,这样,说不定,整座房子都能变得开源了。

Saron Yitbarek

Tristram 设想了一个世界,在这个世界上,开源是各个领域都遵守的规则。这意味着,开发者即使不是大师,至少也会成为人们的向导——这种向导是至关重要的。

00:13:00 - Tristram Oaten

在未来,我们作为开发人员的角色将越加重要,我们会变得越来越像“魔法师”——如果我们现在还不够像的话。

Saron Yitbarek

好吧,魔法师。我们会成为魔法师。

00:13:30 - Tristram Oaten

我们能用奇怪的语言驱使机器做奇妙的事,于是,我们会被高薪雇来做宫廷魔法师,或者公司魔法师。当每个人的身体中都有设备,并且无处不在的设备都可以通过互联网访问,还能被远程控制时,我们则需要作为一个团体,一个行会,以最好的信念行事,就像医疗行业要有不伤害他人的宪章等等。这非常重要。

我认为,开发人员需要共同决定不要制造杀手机器人,也不要在每个人的路由器和每个人的助听器中安置间谍软件。我们需要彼此确认,并向所有人保证,我们将为更大的利益而努力,而非为了伤害人类。

00:14:00 - Saron Yitbarek

让我们现在保证不会造机器人杀手,对吧?好。在此之上,我确实认为 Tristram 说得对。在某些方面,我们开发者已经看到了未来,这代表我们有机会在塑造未来上出一份力。

10 年后,开源开发的道德标准将会是什么样子的?

00:14:30 - Tristram Oaten

我们现在有着极大的特权,因此,我们有责任做正确的事。

Saron Yitbarek

那么,魔法师们,我们将去向何方?我们能为开源创造一个健康的未来吗?我想和一个对这一切进行了深入思考的人谈谈,于是,我找到了这一位。Safia Abdalla 是一名软件工程师,她一直在为 交互计划 Interact Project 做开源贡献。我们将会讨论,真正的“可持续的、广泛的开源”会是什么样子。听听看。

在你心里,未来的开源会是怎么样的,和现在有什么不同之处?

00:15:00 - Safia Abdalla

嗯,我想,我所看到的最大的新兴趋势之一就是对开源可持续性的高度关注,也就是关于如何让开源项目一直得到良好维护和更新的讨论。有一些项目对整个技术界生态都至关重要,讨论也集中于它们。我认为,在该领域,已经有了许多有趣的进展。

00:15:30 - Saron Yitbarek

Safia 让我思考,如果我们能够建立她所描述的可持续发展的方法,如果公司能够贡献时间、代码和资源,我们的工作能够得到多少改善?又会发生多少变化?所以我问她,这样可持续的方式会给我们所创造的产品,和我们建构的工具,带来怎么样的改变?

00:16:00 - Safia Abdalla

可悲的现实是,当你没有精力,时间和金钱来为每个人打造好东西时,你就会倾向于只为自己做好它。

Saron Yitbarek

嗯,确实。

Safia Abdalla

在这种情况下,你构建的产品会将把很多人排除在用户之外。因此,我相信,如果我们发现开放源代码的更具可持续性的模型,那么我们实际上将开始构建可供盲人、听障者或以其它方式残障的个人使用的软件。

00:16:30 - Saron Yitbarek

有趣,我喜欢。考虑到开放源代码的原则、流程、文化和社区,以及你提到的所有这些内容该如何适用于技术之外、软件开发之外的行业时,你认为真正可以从开源中受益的领域是哪些?你认为接下来开源可能会出现在哪里?

00:17:00 - Safia Abdalla

喔,这是个有趣的角度。我第一个想到的是,开源思维可以被用于科学界,使科学变得更加开放。之所以我会想到这一点,是因为,当你以开放方式分享软件时,你所分享的并不是一行行的代码 —— 好吧,你确实在分享代码 —— 但,更重要的是,你在分享知识和细节,在与其他人交流该如何做事。因此,你真正分享的是知识。

00:17:30

开源的方式可以相当直接地应用于科学界,因为研究人员也会花费大量的时间来探究特定课题,随后就此课题发表论文。而且,我认为,我们需要向科学界倡议更加开放的科研方式,以确保科研成果能够对所有人开放,使所有人都能理解、分享和参与,这将会提高社会对科学的理解,并在一定程度上促进科学研究本身。

00:18:00 - Saron Yitbarek

当我上大学时,我从事生物化学研究;我非常习惯于带着热情进行实验、研究、尝试新事物。然而,同时,你也不能让人随意插手研究,因为你需要做通讯作者。你需要信誉。这是学术界进步的一个很重要、很重要的组成部分。

00:18:30

因此,开源的原则——即分享原始数据、贡献劳动,以及将未完成的产品公之于众,依靠集体智慧将其完工的这些原则——和某些更具保护意识的行业必然发生冲突。你如何看待这种冲突?

00:19:00 - Safia Abdalla

这是个好问题。我认为这涉及一个更大、更复杂的问题。为了成功地将开源引入其他行业,外在的动机和鼓励在很大程度上是必要的。你不能依赖于鼓励人们只专注于自己的目标的现有体系,因为那样会牺牲他人的利益和社会的更大利好。

00:19:30

我认为,我们必须根本地改变我们看待很多事情的方式,并更改许多体系的运作方式,以使它们关注集体利益而非单一利益。很难撤销像终身教职这样对大学有很多负面影响的制度。很难消除其它可能损害生态、损害他人,或者阻碍社会进步的激励机制。不管是采用开源的思维方式,还是主动取消这些体系,我们都有极长的路要走。

00:20:00 - Saron Yitbarek

确实。如果你可以从头重新创造开源,那么,属于你的开源版本又会是什么样的?

00:20:30 - Safia Abdalla

哇噻。关于开源,我要改变的第一件事是它的公共关系和形象。我可能会尝试建立一种开源文化或社区,让人们认识到,你即使不是精英,或者精湛的开发人员,也能活跃并取得成功。现有开源文化中的精英倾向使我感到震慑。

00:21:00

另外,我也要重点关注开源的可持续性,增加公司的责任感和开源体系的健康程度。我认为很多人没有意识到的事情之一是,许多受欢迎的技术公司和平台都包含了开源要素。例如,有很多 Rails Web 应用程序是极其成功的,盈利能力可观。而且,我认为,对我们来说,重要的是确保这些公司对开源社区有管理权,认识到其价值所在,并给予回馈。

00:21:30 - Saron Yitbarek

好的,在 Safia 的开源中,企业将会负起责任,并对开源的可持续性做出贡献。项目的贡献者和维护者可能会因为自己所做的工作而获得报酬。这样的开源多半会是更加开放、更具有关怀之心的模式。

Safia Abdalla

是的。

Saron Yitbarek

听起来像是一个很棒的开源的版本,我喜欢它。

Safia Abdalla

谢谢。

00:22:00 - Saron Yitbarek

Safia Abdalla 是 交互计划 Interact Project 的软件工程师和贡献者。她是一位新一代开发人员。而她在平时也对开源抱有自己的期望。所以,我想向这支新的代码英雄军队大声呼喊:“你们都将会向我们展示未来,因为你们现在正生活在未来之中,而你们也将负责领导我们走向明天。”

00:22:30

现在,尽管我对开源革命心怀热情,但我也不想成为一个盲目乐观的人。开源也将会受到挑战。开源的存在越广泛,我们就越需要确保它的可持续性。我们找到了一种可扩展的方式来维护开源项目吗?我的意思是,虽然 Linux 内核的贡献者中有一些是全职员工,但是大多数的开源项目仍然是由志愿者维护的。

00:23:00

开源的工作并不会因为我们不再“反叛”而终结。市值数十亿美元的公司都在运行 Linux,而开源先锋们现在是技术领袖。我们需要跟随这条道路,并试着想象接下来会发生什么。

尤其是,可能会出现什么问题?Christopher Tozzi 告诉我们,曾经作为规则破坏者的开源并不对破坏本身免疫。

00:23:30 - Christopher Tozzi

开源革命尚未结束,因为挑战并没有停止。即使今天基本上地球上每个使用计算机的人都在以这样或那样的方式使用开源软件,但这并不代表开源必然是绝对安全的。尤其是从致力于开源社区最初目标的人们的角度来看,诸如云计算之类的事物确实使情况变得复杂了。

00:24:00 - Saron Yitbarek

开源能有多开源呢?Christopher 提到了云计算,而在第六集中,我们描述了依赖于别人的数据中心肯定会使开源最初的目标复杂化。

这是一个棘手的领域,我们仍在了解这个领域的情况。在前进的过程中,我们必须不忘初心。

00:24:30

每个年轻的反叛者都需要 欧比旺·克诺比 Obi Wan 的原力全息仪。他们会从过去吸取经验教训吗? 林纳斯·托瓦兹 Linus Torvalds 曾经说过,“在真正的开源中,你有权掌握自己的命运。” 如果开发人员能够在更大的世界中宣扬这种精神,那么,干得漂亮。

00:25:00

到此为止,这是第一季的最后一集,真不敢相信。这一季过得很快。在着手编写这一系列播客之前,我从没有想过,是谁创造了 DevOps、敏捷开发和云计算;我从没有想过它们从何而来。我从没想过它们会有自己的家,有团队贡献才能、照顾它们,帮助它们成长。它们只是我工具箱里的一堆工具。但我现在不是这样看待它们的。

00:25:30

它们不仅仅是随机的工具,而是我生活环境的一部分。在我之前,开发者们已经花了几十年的时间来塑造这一局面。现在,我要致力于塑造未来。真是棒极了。

00:26:00

第一季即将结束,但好消息是,我们已经在准备第二季了。在这七集中,我们专注于开源工具和方法论,这些工具和方法使我们有了今天。这有点像是从 3 万英尺的高度看开源世界的形成史。在第二季中,我们将着眼于细节,并关注当今代码英雄们史诗般的奋斗。我们将跟随每一集,看看开发者如何挑战常规。这些都是塑造我们行业未来的真实故事。

00:26:30

当我们寻找这些故事的时候,我们很希望收到您的来信。告诉我们,你的代码故事是什么?你参与过哪些史诗般的开源战役?访问 redhat.com/command-line-heroes 留下你的故事。我们正在倾听。

00:27:00

如果现在你还在听的话,你可能想要看看将于 5 月 8 日至 10 日在旧金山举行的 2018 红帽峰会的阵容。峰会包括为期三天的分组会议、动手实验和主题演讲,其中包括了有关开源的主题演讲,而你也可以参与其中。希望能在那里见到你。

00:27:30

代码英雄是红帽的原创播客。请确保你订阅了该节目,以在您的设备上免费获取第一季中的所有剧集,并在第二季开始时收到通知。只要在苹果播客、Spotify、Google Play、CastBox 和其他播客平台中搜索《代码英雄》,然后点击订阅,你就可以第一时间收听新一期。我是 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-1/days-of-future-open

作者:Red Hat 选题:bestony 译者:LaingKe 校对:Northurland

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

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

什么是《代码英雄》

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

本文是《代码英雄》系列播客第一季(6):揭秘云计算音频脚本。

“没有什么云。这只是别人的电脑。”确切地说,还是服务器。大型云提供商提供了一种相对简单的方式来扩展工作负载。但真正的成本是什么?

在本期节目中,我们将讨论云中的战斗,说谁是赢家还很早。Major Hayden、微软的 Bridget Kromhout 等人会帮我们了解这场正在酝酿的风暴,以及它给开源开发者带来的影响。

Saron Yitbarek

Ingrid Burrington 想要走进云的世界。不是真实的“一朵云”哟,而是“云计算”的世界。

Ingrid Burrington

我不知道互联网真正的样子,我也不认为互联网是我想象中的那样,所以我想尝试找出它真实的模样。

00:00:30 - Saron Yitbarek

Ingrid 是一名记者。在她为《 大西洋 Atlantic 》撰写的系列报道中,她讲述了自己参观一个数据中心的经历,一个我们网络生活越来越依赖的地方。她在那里并不是走马观花逛一圈,而是浸入式的复杂体验。首先,她要拍照登记,申请访客身份卡。然后,要通过安检站,签署一份保密协议。最后,她才能去看机房。机房基本上就像个仓库,就像超市的那样,但比它大得多。

00:01:00

整个机房看起来有种别样的美,所有的东西都整齐陈列着。一堆光鲜靓丽的服务器上,连接着通往世界各地的光缆,光缆沿着天花板上的轨道整齐布线。正在通讯的光电信号闪烁着点点神秘的蓝光,仿佛粒子加速器一样。但本质上,它是一排排如猛兽般动力强劲的服务器。

00:01:30

数据中心每年消耗的能源比整个英国还要多。这就意味着它会释放惊人的巨大热量,这就是为什么当 Ingrid 环顾四周时……

Ingrid Burrington

对的,我发现这座建筑主要的设计理念,是建造最理想最完美的暖通系统(HAVC)。

00:02:00 - Saron Yitbarek

Ingrid 发现围绕数据中心的一切都强调经济实用,简单说就是一堆主机、一摞风扇、一大块租金便宜的地皮、用很多便宜的用来冷却的工业用水。完全没有“云”这个词本身散发的浪漫,但另一方面,我们的生活、我们的工作以及我们的话语,都在这个服务器的仓库里搏动着。

00:02:30 - Ingrid Burrington

是的,这有点超现实主义。并不是说我就知道那台机器里存有某人的电子邮件,这台机器又存有别的东西,而是我意识到周围有很多看不见的事情正在发生,我能听到服务器的呼呼声和大量运算产生的微小噪声。说来奇怪,我开始对工业充满敬畏……

00:03:00 - Saron Yitbarek

时刻要记住,在我们使用服务的时候,它们的基础,这些建筑都在某个隐蔽的角落嗡嗡运作着。以前,当我们谈论在云上存储东西,或创建应用程序时,我们有时会自欺欺人地认为它就像天上的云,是没有人能触碰的存在。但现实恰恰相反,一旦我们认识到云数据中心真实存在于某地,我们就会开始思考谁拥有着云了。那么是谁在控制这些服务器、线缆和风扇呢?

00:03:30 - Saron Yitbarek

它们是如何改变开发者构建未来的方式的呢?云让我们紧密地连接在一起。

我是 Saron Yitbarek,这里是《代码英雄》,一档由红帽公司推出的原创播客栏目,第六集,揭秘云计算。

Chris Watterston

没有所谓的“云”。那只是别人的电脑。

00:04:00 - Saron Yitbarek

Chris Watterston 是一名设计师,他对围绕云产生的误解很是恼火。这个词模糊了数据中心的形象,就像 Ingrid 参观过的那个一样。当 Chris 把这句口号做成贴纸时,他因此成为了网红。“没有所谓的‘云’,那只是别人的电脑。”这句话现在出现在 T 恤、帽衫、咖啡杯、海报、杯垫和许多主题演讲上。

00:04:30 - Chris Watterston

人们完全不理解云是什么,还用的很欢乐又心安。他们可能完全误解了云,不明白他们的数据实际上是穿过铜轴电缆、或者光纤,来到某一个实际上由他人管理和拥有的存储设备。显然,对于一些有需要隐藏的私人内容的人来说,这是相当可怕的隐患。

00:05:00

所以,下次你想把东西扔到云上的时候,想想 Chris 的贴纸吧。想想你到底要扔到哪里去。在 App 上工作也是同样道理,声称 App 跟服务器无关的说法都是骗人的,根本没有无服务器的 App。云就是别人的服务器、别人的电脑。不过云这件事情从某种意义上说,是一种成长。说到成长,在整一季节目里,我们会一直追溯开源的成长与变革。

00:05:30

从最初的自由软件运动到 Linux 的诞生,直至今天,开源工具和方法把我们带到了远离家园的云端。可以打个比方,一个人找房东租房,他需要签合同、搬进去、把房子整理成自己的居所。当开发者寻找云供应商时,他们也在做着同样的事情。这就是我们现在所处的情况,全世界的开发者都在转向各种云上线产品,然后开始明白租赁的真实含义。

00:06:00

严肃地发问一句,为什么我们一开始就急着跳上云端呢?

Brandon Butler

因为开发者不想维护 App 运行所需的设备。

Saron Yitbarek

这位是 Brandon Butler,《 网络世界 Network World 》的高级编辑,多年来致力于研究云计算。

00:06:30 - Brandon Butler

开发者想要开发 App,部署 App,并只在乎 App 能不能正常运行。我们已经看到云孕育的,越来越多的服务,例如无服务器计算、功能即服务、容器和容器管理平台,如 Kubernetes。

Saron Yitbarek

顺便打个广告,想了解容器和 Kubernetes,请看我们的上期节目

Brandon Butler

所有的这些成果都有助于抽象化 App 运行时所需要的底层基础设施。这将是一个可以在未来可预见的持续发展的趋势。

00:07:00 - Saron Yitbarek

云拥有巨大吸引力的部分原因,可以用“超大规模”这个词来解释。通过云为你提供的所有基础设施,你可以根据自己的需求,快速创建和定制自己的服务器。你不再需要购买自己的设备,你只需要租赁你想要的规模的云。Brandon 解释了“超大规模”对初创公司的具体帮助。

00:07:30 - Brandon Butler

使用公有云进行 App 开发的整套模型,对开发者来说是一个巨大的进步。它曾经成就了一系列全新的初创公司,这些初创公司也已经成长为大众都喜欢投资的公司。想想 Netflix 这样的公司,它的大部分后端都运行在亚马逊的以及其他的云上。

00:08:00 - Brandon Butler

这些公司现在如此壮大的原因,正是因为他们在使用云。因此,云对开发者的影响是不可轻视的。云已经成为过去十年,App 开发领域的主要转变。

Saron Yitbarek

Nick Bash 是 Meadowbrook 保险公司的一位系统管理员,他还记得在云计算诞生之前,调整基础设施是多么痛苦的事。

00:08:30 - Nick Bush

以前,有些人想出新项目的点子,我们会说,“这需要硬件支持,而我们没有。”他们会问,“那么我们该怎么办?”我们以前总是受到内存的限制,尤其是运行虚拟机软件,通常是最困难的部分。我们经常需要在任意时间启动虚拟机,但能随时启动的虚拟机数量总是不多。所以我们不得不花很多钱买新处理器、新内存、新硬件,或者花 5000 美元加新的东西。一旦我们从几个不同的供应商得到报价,就得报给管理层,他们要花时间审核。这样,仅仅是购买硬件都需要漫长的过程。

00:09:00

更不要说构建虚拟机,再反复考虑和测试等等。所以其实我的意思是,有了云,我们可以在几个小时内完成以往需要几个月完成的前期工作。让虚拟机运行起来,第二天就交付给其他人。所以这是一个很大的转变。

00:09:30 - Saron Yitbarek

在拓展性、速度和价格这些方面,云计算相当吸引人。还是拿租房作比喻,云就像可以让你免费得到一个管家和司机的服务,你很难对云计算说不。如今市场上有主要的四家壮志雄心的云供应商在开疆拓土。他们都想成为你在云上的“新房东”。但是且慢,每个租过房子的人都知道,租房和买房不一样。你不能自己拆掉一堵墙,或者安装一个新的按摩浴缸,你得通过房东来干这些事。

00:10:00

那么 Brandon Butler 先生,我们使用私有云,在某种程度上会受制于一家独资公司。这会不会对我们不利?

00:10:30 - Brandon Butler

当你使用云供应商的私有云时,你有不同的使用方法:你可以拥抱开源标准和开源平台,并且在云上运行开源软件,即便这是个私有云;你也可以使用不是开源的原生工具,这些工具可能在公有云上有更好的集成。因此,这是终端用户必须考虑的一个重大问题:我是想使用云供应商的原生工具,这些工具可能与这个云供应商提供的服务,以及其他服务更好的集成;还是拥抱开源标准,使用一个开源平台,享受更大的自由度,在自己和其他提供商的平台上也能运行?

00:11:00 - Saron Yitbarek

随着我们所依赖的云技术不断发展,四大云供应商相互竞争,我们作为开发者有了新选择。我们是放弃一些独立性,依靠单一的云供应商来保护我们的工作,还是选择另一条路,在保持独立性的同时最大化云的拓展性?

00:11:30

换句话说,我们能否在租房合同上写明,“房客有权任意处置该房 ,例如拆墙或其他装修”?

00:12:00

那么,放弃一点点独立性又有什么问题呢?如果你是一名开发者,可能没受到什么影响。因为大多数时候都有运维团队在背后监督开发者们小心行事,他们格外留心于具体细节。这位是 Major Hayden,他是 Rackspace 的首席架构师。

00:12:30 - Major Hayden

有些时候,开发者经常发现他们有各种不同的需要,比如某些专门化的存储,或者可能想要一定大小的虚拟机,或者想要一种云供应商未能提供的东西。还有一些东西可能开发者没有第一时间想要,但你认为他们需要的,对这些东西你还要进行成本效益分析。好吧,虽然使用公有云我们有很大的灵活性,但我们到底付出了什么代价?

Saron Yitbarek

Major 指出了另一个问题,这个问题超越了实用性,并且触及了像我这样的开发人员所信奉的核心,那就是开源实践。即使云供应商允许你使用自己的开源工具,但云本身并不是开源的

00:13:00 - Major Hayden

因此,开源对于云来说是一个需要处理的有趣议题,因为有大量的开源技术支持用户去高效地利用公有云,但并不是所有公有云都把它们的基础设施开源了。举个例子,如果你使用亚马逊,你无法知道他们使用的什么技术来构建虚拟机和其他服务。所以,你不可能对这些东西做点调整,或者很难了解幕后的机理和运作方法。

00:13:30 - Saron Yitbarek

如果你听过我们之前关于 DevOps 的节目,你会知道打破开发者和运维之间的壁垒会让我们获益良多。架构师 Major 刚给了我们一些真知灼见,接下来的这位是系统管理员 Nick Bush,他所在的团队正准备向云端迁移。开发者们已经厌倦了每五年一次硬件换代,每个人都喜欢尽可能快地扩展,而 Nick 想指出一些开发者可能没有考虑到的东西。

00:14:00 - Nick Bush

是的。我想说的是,云是存在延迟的。举个例子,就像远在蒙大拿的数据库服务器,对比我在街上用着 10-gig 的网络,本地数据库调用还是会花费更长的时间。要达到低延迟的云内数据库调用还有很长的路要走,还有其他的安全问题,因此我们暂时不需要担心物理上的前提。在本地,我们尚可以控制我们的硬件和其他类似的东西。一旦你进入了云端,你就得考虑连接问题。

00:14:30

我认为,你也得稍微担心一下安全问题,虽然这更多也是一个成本问题。你想要按月租一个云端虚拟机,要求网速快并且带有充足的存储空间。每千兆的传输和存储都是要花钱的,以前我们都是一次性买断一个机器,我们只要买好了一个云端虚拟机,就可以存储和使用。只要余额和储存空间都还足够,我们就不用付更多钱。

00:15:00 - Saron Yitbarek

声明一下,Nick 确实认为此事利大于弊。他只是不想让我们认为这是个完美的系统。如果你的云供应商宕机,而你想在其他云中重新部署应用程序,会发生什么情况?或者,如果在不同事务上使用不同的云能带来价格优势呢?运维人员提出的这些问题都可以被总结于一个词汇下,也就是 供应商依赖 vender lock-in 。你可能很熟悉这个词。

00:15:30

供应商锁定的意思是,在别人的服务器上构建业务会让你越来越依赖于他们的平台。你被绑定在这个平台了。可能突然之间,你被迫升级系统、付出更多成本、接受新限制,你变得身不由己。你懂的。

00:16:00

当我们都戴上 DevOps 的帽子时,我们开发者和运维就可以一起工作,面对供应商锁定,对症下药,但当我们沉浸在自己的代码中时,我们有时会忘记观览全局。为什么不找个折中方法,同时在公共和私有云上工作呢?终极解决方案可能是混合云,对于两方而言这都是最佳选择。我给 Bridget Kromhout 打了电话,询问她的看法。她是微软员工中的头号云开发提倡者,对这方面非常了解。

00:16:30

如果我们考虑一种混合的解决方案,既包含一些公有云,也包含一些私有云,这是两者之间的完美平衡吗?对于开发者,这是理想的解决方案吗?如果云是混合的,那么我就能想做什么就做什么,想用什么工具就用什么,同时仍然可以从大型公有云提供商那里获得一些好处。

00:17:00 - Bridget Kromhout

当然是的。举个例子,我有朋友在制造业中从事高性能计算研究工作,他们有各种各样的绝密资料,像 NDA 这样的东西,不适合放在公有云上。于是,他们可能会在自己的数据中心跟这些资料打交道,处理客户数据,或者研究数据,等等,也可能有其他的……

00:17:30

他们也有适合放在公有云上的其他工作资料,不过我想这个问题就……有时也会有这样的问题,公有云是否适合某些工作资料,比如,如果你计划使用 InfiniBand 同步你的不同笔记,你能在公有云中做到什么程度呢?

Saron Yitbarek

但这并不一定是完美的解决方案。Bridget 认为混合云也有自身的弊端。

00:18:00 - Bridget Kromhout

混合云的问题在于,有时,人们欺骗自己,认为他们可以接受一些实际上不工作的东西,所以如果他们之前等待两周来获得一个虚拟机,如果有人经历过一个完整的这样的情况,并且这个虚拟机还不能正常工作的话,就会有一堆的人由于失望而开始和他们的公有云提供商谈论信用卡问题了,然后他们会试着把这些东西粘合在一起,但是还是有数据来源和延迟的问题,我不是很确定,脱同步的数据集有很多出错的方式。我认为,如果你和云服务提供商合作,你可以有一些可用的直接沟通这样你就可以更好地同步数据,这样是很有帮助的。

00:18:30 - Saron Yitbarek

是的。当我们在开源的语境下谈到云的时候,我觉得,作为开发者,可能大多数人,都喜欢开源;如果你还在听我们的播客节目,就更是这样。对吧?你希望一切都是开放的,透明的,还向大众共享代码;但我觉得,当我们谈到云计算,因为它不会给人感觉是代码库,不会让人觉得云本身是个项目,它是环境,是可以用来帮助我们运行代码的东西,开发人员们还会坚持要让它像是传统的项目和代码库一样开源、透明吗?

Bridget Kromhout

我觉得这是一个非常合理的问题,我觉得这可能也会归结到你到底要注目于技术栈的哪一部分。想一想,你对芯片的了解有多少?你又能在何种程度上操控它们?

Saron Yitbarek

是的,这是真的。你说得不错。

Bridget Kromhout

他们坐在那里,他们有硅,他们也有秘密。他们不一定会将后者给你。

00:19:30 - Saron Yitbarek

是啊,硅和秘密。顺便说一句,这是个好播客的名字。

Bridget Kromhout

对吧?也许问题不在于是否一切都是开放的,而在于你需要开放的一切是否都是开放的,以及,当服务没有完全按照正确的方式运行时,你的服务提供者是否会对你保持信息透明,因为不该出的错误就是不该出。

00:20:00 - Saron Yitbarek

所以,我得到了 Bridget 作为一个公有云提供商的观点,她提出了一个有趣的观点。开发者在云上的控制需要多细?至于我,我的看法不一样。我不想为了一点公有云的优势而牺牲的是什么呢?比如说,一个应用在公有云上运行,然后,等一下,现在我已经扩大了规模,或者有新的合规要求,我的应用在私有云上更合适。

00:20:30

把应用从一个地方迁移到另一个地方之前,我需要知道它在迁移之后仍能工作。我需要知道它是以原先同样的方式打包,以同样的方式配置。换句话说,我需要知道从一个云跳到另一个云总是可能的。

除此之外,我们还有什么选择?仅仅锁定在一家云提供商?一个甚至可能完全垄断整个行业的供应商?不能选择迁移到另一个环境的话,这就像把一只手绑在背后写代码一样。

00:21:00

所以,我们不想欠下任何一朵云的人情,并且被它困住。我们希望在合适的时候能够在云间跳转。用摇滚传奇 皇后乐队 Queen 的名言来说,“我想要挣脱束缚”。我们希望能够获得公有云的绝佳拓展性,但又不放弃使用开源工具和方法所带来的自由。

00:21:30

有个好消息。混合云的建设正在顺利进行中。Mike Ferris,红帽公司的的业务架构副总裁,他给出了一个很好的解释,说明了混合云是如何帮助我们保持开源精神的。

00:22:00 - Mike Ferris

开源是世界上几乎每一个云服务的基础,现在即便不是大多数,也有许多世界上应用程序的基础设施和工具是从这里发展出来的,管理能力,以及人们用于构建、部署应用程序(无论是任务关键型,还是非任务关键型应用程序)的工具都是基于开源的。

00:22:30

混合云的概念和这一点非常兼容,这代表着,我们可以在混合云中处处使用开源工具,也可以最大程度地发挥出基础设施的优势。这是基于以下的一点事实:开源通过其在当今的强大影响力,能够在一定程度上定义下一代的开发模式。

Saron Yitbarek

我认为云计算本身具有开放的意愿。在本季节目中,我们花了很多时间讨论开源的起源。你甚至可以证明,某些版本的混合云是这些相同理想的延伸。

00:23:00 - Mike Ferris

在过去几十年里,开源开发活动的变化是越来越多的人参与进来了,包括像微软、IBM 这样的行业巨头。你知道,举个大公司的例子,他们要么使用开源软件来提供产品,要么构建开源软件并将其回馈给社区,或者两项都参与。

00:23:30

这些来自客户的重要需求通过那些大公司涌入,确实帮助了开源世界的发展,使之从最初设想中 Solaris 和 UNIX 的替代方案,发展为不仅是社区和业余爱好者使用,而且肯定也是部分任务关键型企业使用的基础。

00:24:00 - Saron Yitbarek

开源正在快速成长。现在,我们有机会确保我们记住我们从哪里来。当我们跃上云时,我们可以为自己声明开源的部分,以此来保持云的开放。幸运的是,由于有了 OpenStack® 平台这样的工具,在云之间构建开源桥梁变得更加容易了。Rackspace 的首席架构师 Major Hayden 描述了它的起源。

00:24:30 - Major Hayden

OpenStack® 来自于 Rackspace 和 NASA 的合作:“你看,这是一种构建基础设施的新方式,我们应该公开进行。我们应该得到更多的投入,应该和更多的人交流。我们应该得到更多的用例。” OpenStack® 是一组应用,它能很好地协同创建基础设施,并全面管理基础设施。无论你需要复杂的虚拟机、复杂的网络,还是有奇怪的存储要求,OpenStack® 通常可以满足大部分的要求。

Saron Yitbarek

Major 指的是,加入一些开源知道如何提供的东西:也就是适应性。

00:25:00 - Major Hayden

在我看来,OpenStack® 是一组相互连接的开放源码应用程序,它允许你构建你想要的基础设施。如果它不能建立你想要的,那么你可以进入社区,对它做出改变。我喜欢我去和顾客交谈时他们的反应,他们说,“我们想改变这个。我们想要改变这一切。”我们会说,“嗯,你可以。”

Saron Yitbarek

我们如何确保这样的的适应性被包含在明天的云中呢?就像我们在之前的节目中谈到的许多问题一样,这需要强大的社区。有请 Brandon Butler,《网络世界》的高级编辑。

00:25:30 - Brandon Butler

例如,我们已经看到了云原生计算基金会的成立,这个基金会制定标准,推广应用容器的使用,并创造了 Kubernetes。我们也看到了 OpenStack 基金会的成立,好将 OpenStack® 用户聚集在一起,讨论创建开源基础设施服务云时的最佳实践。

00:26:00

支撑这些开源社区的社群对于开发下一波开源工具,学习如何最好地使用这些开源平台的,以及鼓励公有云厂商接受这些开源标准都非常重要。

Saron Yitbarek

一旦我们开始构建混合云,并使其尽可能地开放,潜力似乎真的无穷无尽。Major,请说。

00:26:30 - Major Hayden

最让我兴奋的是看到更多的东西可以聚集在不同的云之上。例如,OpenStack® 提供了一个很好的基础设施基础层,但是你可以在它之上做很多事情。我想有时候不同的公司会采用 OpenStack®,然后说:“伙计,我现在该怎么办?我的自由程度太高了。我不知道该怎么办。”这就像你有一个装满食物的冰箱,你会想,“啊,我不知道该做什么菜。”

00:27:00 - Saron Yitbarek

我喜欢这个问题。Chris Watterson 告诉我们的可能是对的。

Chris Watterston

没有所谓的“云”,那只是别人的电脑。

00:27:30 - Saron Yitbarek

但故事并未在此结束。我们要与混合云一起跨入下一章。创建混合云应用的关键可能还没有被破解。跨多云管理任务,对于今天的代码英雄们来说将是一项艰巨的任务。会有很多尝试和错误,但这是值得的,因为我们知道的唯一的一件事是,保持开源意味着开发人员总是可以构建他们想要工作的世界。这种灵活性正是紧紧抓住开源最擅长的叛逆精神的诀窍。

00:28:00

下一集是我们本季的最后一集,我们将以一种让你惊讶的方式,从宏观角度来看开源作为一种全球现象是什么样的。我们也将展望开源的未来,我们的开发人员如何保持像 Linus Torvalds 这样的英雄的精神,即使当他们正在重塑他们的行业时。

00:28:30

《代码英雄》是一档红帽公司推出的原创播客。想了解更多关于本期和往期节目的信息,请访问 RedHat.com/CommandLineHeroes 。在那里你也可以注册我们的新闻通讯。想免费获得新一期节目推送,请务必订阅我们。只要在苹果播客、Spotify、Google Play、CastBox 和其他播客平台中搜索《代码英雄》,然后点击订阅,你就可以第一时间收听新一期。我是 Saron Yitbarek。感谢你的聆听,编程不止。

OpenStack® 和 OpenStack 标志是 OpenStack 基金会在美国和其他国家的注册商标/服务标志或商标/服务标志,并经 OpenStack 基金会许可使用。我们不是 OpenStack 基金会或 OpenStack 社区的附属机构,也没有得到 OpenStack 基金会或 OpenStack 社区的认可或赞助。

什么是 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-1/crack-the-cloud-open

作者:Red Hat 选题:bestony 译者:LikChung 校对:acyanbird

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