Linux 内核社区学习如何培育更多企鹅

尚无读者喜欢此内容。
Hands together around the word trust

Opensource.com

Linux 内核是当今最大且最成功的开源项目之一。

Linux 基金会的一份报告谁在编写 Linux (2013)表明,最近发布的 Linux 内核(现在以 70 天为间隔发布)包含超过 10,000 个补丁,由超过 1,100 名开发人员制作,代表超过 225 家公司。

自 2012 年 4 月上次报告发布以来,已合并了来自 3,738 位个人开发者(代表约 536 家公司)的近 92,000 个变更集,增加了近 200 万行代码。 累计而言,Linux 内核是超过 11,000 名开发人员合作超过 20 年的成果。

这种程度的参与和活动量是前所未有的,并且可以作为大多数开源项目渴望达到的典范。 时间对 Linux 和内核社区来说确实是美好的,而随着时间的推移,变化不可避免地会到来。 这是一件好事。

Linux 内核社区目前正在发生的一个变化是成员人口结构的变化。

在 2010 年 Linux 合作峰会期间举行的小组讨论中,Linux Weekly News主编 Jonathan Corbet 向一群顶尖的 Linux 内核开发人员问道:“Linux 内核开发人员团队是否变得太老了?” 他当时正在观察后续几代开发人员的规模。

最近,软件开发分析公司 Bitergia对 Linux 内核 Git 存储库的贡献进行了分析,结果显示:

  • 从大约 100-150 人(2005 年)到每季度 30-50 人(2013 年),几代人规模越来越小

  • 老一代人变得不那么活跃

  • 年轻一代人现在的规模比六年前小得多

维持这个庞大社区的活力并非自发发生。 相反,这需要社区成员投入奉献和关注,研究如何吸引新的贡献者加入,以及如何培训他们并将他们与成熟的开发人员整合在一起。

正如 Jim Whitehurst(红帽 CEO)在最近的博客中写道:

仅仅因为人们过去参与过,并不意味着他们将来会参与。 必须继续激发和培养参与度,才能维持参与。

因此,Linux 基金会和 Linux 社区中的其他机构正在采取措施,吸引新的开发人员参与内核开发。 例如,接触业余爱好者开发人员参加内核峰会,并在 LinuxCon 的 活动计划中增加以下活动:

  • 新人招待会:“为新参会者提供与一些关键 Linux 内核贡献者会面的机会”

  • OSS 女性午餐会:“为开源领域的女性提供交流机会,相互联系和学习”

  • 为希望参加 LinuxCon 和 CloudOpen 但未获得公司赞助或没有个人资金参加的女性提供奖学金

Linux 基金会 2013 年的报告还提到

内核项目首次参与了 女性外展计划,共收到 41 份申请,竞争 7 个可用职位。 在申请过程中,向内核提交了 374 个补丁,其中超过 1/3 的补丁被 3.10 内核版本接受。 实习过程正在进行中,但结果要到未来的内核版本才会显现。

女性外展计划非常成功,以至于其对内核 3.12 版本的代码行数贡献在顶级贡献组织中排名第 11 位; 例如,高于 IBM 和三星。

这些举措的一个重要方面是降低新手开发人员加入 Linux 内核社区的技术和文化门槛。

Greg Kroah-Hartman 就是一个很好的例子,他是 Linux 内核的主要开发人员之一,也是稳定分支的当前维护者(还有许多其他职责),他撰写了《Linux 内核概要》一书。 Greg 解释说:

我希望这本书能帮助更多人加入 Linux 内核开发行列。 为您的机器构建自定义内核是成为 Linux 内核开发人员所需的基本任务之一。 尝试过这一点并意识到整个 Linux 内核流程背后没有任何真正的魔法的人越多,就越多人愿意加入进来,帮助内核做到最好。

Greg 还观察到,许多 Linux 内核项目(例如他自己的 Linux 驱动程序项目)对开发人员的要求很少,除了他们的设备驱动程序具有正确的开源许可并且他们的软件可以编译。 具体来说,有

进入暂存树内核没有门槛。

促进年轻人参与 Linux 内核开发的一种自然方式是联系大学和学院,举办培训活动,让学生和教师学习如何为内核做出贡献。 这可以特别侧重于理解内核的流程和驾驭内核的治理。 在与其他开源爱好者合作下,我们在我现在教授的两门大学课程中引入了培训活动,并将在 Opensource.com 上提供有关体验的反馈。


User profile image.
Luis Ibáñez 在芝加哥的 Google Inc 担任高级软件工程师。

37 条评论

只要负责整个项目的人是一个粗鲁、报复心强、傲慢、偏执和辱骂的人…… 我这一代人就不会有兴趣在任何重要层面上参与其中,许多人会被阻止参与任何活动。 Linux 社区因他及其直接下属在社区中的根深蒂固而受苦。 他们的毒性是所有参与者都能感受到的,所有对技术新闻略有兴趣的人都能听到的,并且通过使任何事情看起来都比与这样的人一起当老板更好,从而阻碍了发展进步和参与。

同意!!

作为一个 40 出头的老家伙,我同意你的观点,但我感觉有必要对此进行一些阐述。

老一代人,现在 60 多岁的人,在 20 多岁时比我们这一代人更有生产力,而我们这一代人在 20 多岁时和你们这一代人都不如前几代人有生产力。

这不是就业问题,我知道你们中的许多人缺乏机会,我说的是当你们得到想要从事的工作时的生产力。

发生这种情况是因为我们这一代人的政治正确性开始兴起,我们在许多方面被羞于表达自己。 当今的年轻一代整天如履薄冰,因此几乎一事无成。

这就像一个女人花了 8 个小时为 40 分钟的晚餐打扮自己,然后回家一样。 你更担心肤浅的方面,而不是把事情做好。 你们是那种会雇佣一个声称自己多么喜欢亚洲人的白人朋友,但不会雇佣一个声称自己多么喜欢白人女朋友的人。

因为那是种族歧视。

然后,你们只能责怪自己,因为你们的偏见选择了外表最好的人,而不是有能力的人,导致你们这一代人以及之后的人将遭受效率低下、腐败和堕落。

我是一名操作系统开发人员,今年 68 岁。 在我 20 多岁时,我从事的是一种叫做内核的东西,而不是内核。 我对几代内核程序员的生产力持有些不同的看法。

我认为,任何从事智力工作的人在 20 多岁时都比年长时更有生产力和才华。 随着年龄的增长,人们的智力会下降。 每个人都会注意到老年人的这一点。 (我现在在说什么来着,哦,对了。)但是,当一个人发挥其智力能力的顶峰时,他们的智力衰退就会在 30 多岁时开始变得明显。 这种现象与身体衰退相似。 每个人都会注意到老年人在身体上变得衰弱。 然而,职业运动员的身体衰退在他们达到 30 岁左右时就会变得明显。

另一个需要考虑的因素是,正如人们的身体能力存在很大差异一样,个人的智力能力也存在很大差异。 我认为,目前 20 多岁的人的智力能力范围与我年轻时没有什么不同。 回顾我们那一代内核开发人员,我们不记得平庸之辈。 我们记得 Ken Thompson、Brian Kernighan 和 Dennis Ritchie。 如果我们将今天的普通内核开发人员与 Thompson、Kernighan 和 Ritchie 进行比较,那么当前一代当然会逊色。

我认为,当前一代内核开发人员与前几代人相比相当不错。 大多数人都是平庸之辈,大部分重要的工作都是由少数超级巨星完成的。 五十年后,人们只会记住当前的超级巨星。 那么,谁是当前的超级巨星呢?

---------------------------
Steve Stites

我试图比较他们 20 多岁时的几代人。

并非当前一代人缺乏前几代人所表现出的能力,如果我没有说清楚,我很抱歉,而是政治正确性大大阻碍了思想的辩论。

达到某个程度,有太多的“少数族裔配额”需要填补,以至于最终会有一群不称职的人,你不得不关闭企业。

我们应该只雇用有能力的人,无论如何,有时我一想起一些不喜欢洗澡的同事的气味就想吐,但他们有能力,并且因为他们做了他们必须做的事情而赢得了他们的位置,外表没有进入等式。

让政治正确性进入 IT 行业将使其陷入停顿。 我不想和一群粉红色的家伙一起工作,我想和优秀的程序员一起工作。

好吧,只要你不想要政治正确性,我就不会犹豫地指出,一方面,这是一个荒谬的非理性概念,没有任何数据支持,另一方面,它非常法西斯。

好吧,老爷爷,当你们年轻的时候,男人是真正的男人,女人待在厨房里,那是她们该待的地方,没有人到处雇用黑鬼。 随便吧,去睡个午觉,好吗?

实际上,当我上系统编程学校时,大多数学生都是女性。 当时越南战争吸走了大多数年轻人。

当时系统编程领域也有一些黑人,但他们很杰出,因为当时种族隔离仍然盛行。

--------------------------------
Steve Stites

Steve,

感谢您富有洞察力的评论。

您关于不同年龄段技能差异以及我们倾向于记住杰出参与者而忘记其他人的观点很有道理。

总的来说,当社区规模超过一定规模(我推测是 200 名开发人员)时,拥有多元化的人口变得非常重要,这种人口结构应将年长的开发人员与年轻的开发人员、以及性别、国籍和教育背景的多样性结合起来。 这种综合的多样性滋养了社区的智力能力。

我不会说其中一些人比另一些人“更好”,因为正是他们结合的多样性使社区能够运作。 用有机术语来说,我们可能不会说骨骼对运动员来说比肌肉更重要。 没有彼此,拥有其中一方用处不大。

话虽如此,只是为了回应您的观点:很难定义什么是“超级巨星”,但是,如果我们为内核社区提出一些可量化的衡量标准,我们可以尝试根据以下内容回答您的问题

1) 贡献的提交数量
2) 贡献的代码行数
3) 审核的补丁数量

对于这三个问题,我们可以在 Linux 基金会报告中找到答案
http://www.linuxfoundation.org/publications/linux-foundation/who-writes-linux-2013

例如,在第 7 页和第 8 页,我们发现
“排名前 30 的开发人员贡献了略高于总数的 18%”,以及列出排名前 30 的开发人员姓名的表格,如果我们从 2.6 版本开始衡量,或者如果我们从 3.10 到 3.12 之间衡量。

然后在报告的第 10 页,我们找到了顶级审核者。 一个有趣的表格,也显示了社区是如何变得更具参与性的,并且依赖于更广泛的开发人员。 例如,Linus Torvalds 仅签署了 0.7% 的补丁,而 Greg Kroah-Hartman 的签署量最多,为 12.7%。

可以通过使用从内核 Git 存储库收集数据的脚本找到贡献者的完整列表。 您将在报告末尾找到这一点,其中引用了 Jonathan Corbet 编写的“gitdm”工具:git://git.lwn.net/gitdm.git。

我们确信的是,内核可以使用更多新的和年轻的开发人员,并且有大量简单的补丁供他们学习时使用。 将这些新开发人员与更有经验的开发人员联系起来是成功的秘诀之一。 这是 LinuxCon 开始发生的事情之一,并且可能会定期继续发生。

“发生这种情况是因为我们这一代人的政治正确性开始兴起,我们在许多方面被羞于表达自己。”

我同意政治正确性在一定程度上扼杀了智力成就。 我上大学的时候,政治正确性正开始在学术界根深蒂固。 以我的经验来看,政治正确性一直是智力和社会进步的主要阻力。 当前政治正确性泛滥的例子是气候变化政治运动。

-----------------------------
Steve Stites

当前政治正确性泛滥的例子是假装需要与气候变化否认者接触,就好像他们是某种资金雄厚的地球是平的邪教一样。

Steve,发布你知道很多人会不同意的政治观点会将人们从你的社区中推开。

您的观点很有道理,您的看法也得到了认同。

我们经常在本论坛中讨论掌握软技能的必要性,这是促进开源社区发展和繁荣的关键要求。

这当然是我们所有人都可以在我们参与的社区中做得更好的事情。 对社区中的人类敏感性保持关注实际上需要培训和纪律。

也就是说,内核社区严厉的普遍看法主要是由 Linux 内核邮件列表 (LKML: https://lkml.org/) 上少数几篇引人注目的帖子滋养的,这些帖子在网络领域掀起了波澜。

Linux 内核社区的日常现实更加友好和冷静。 必须认识到,LKML 每月承载超过 17,000 封电子邮件。 (例如,请参阅去年 10 月的流量:https://lkml.org/lkml/2013/10)。 这大约是每天 550 封电子邮件(例如,请参阅今天 11 月 12 日:https://lkml.org/lkml/2013/11/12)。 这些消息中的绝大多数都是礼貌和文明的,并且谈论的是……嗯……编程。 在这成千上万条消息的集合中,少数消息时不时地会走红并成为新闻,而超过 1,200 名开发人员的大量工作则以 11,000 个补丁的形式悄无声息地流入新的版本,每 70 天发布一次。

将年轻一代人带入内核社区(或任何其他开源社区)的努力,将必须侧重于创建一个安全、友好和*有趣*的环境,欢迎新人,并让他们可以逐步学习和磨练技能。 女性外展计划 [OPW: https://open-source.net.cn/business/13/11/linux-kernel-interns-outreach-women] 就是这样一个成功举措的伟大而成功的例子。 在该计划中,一个由七名实习生组成的团队从培训体验中脱颖而出,并作为一个群体,成为 Linux 内核 3.12 版本的第 11 大贡献者。

另一个需要掌握的重点是,内核中需要大量简单的补丁,并且这些补丁正在等待新手和初学者来处理。 这些补丁可以用作培训练习,只需相对较小的努力。

我们将在后续文章中介绍类似的努力,在其中我们将讨论我们在两所大学为 Linux 内核贡献所做的培训练习。

……也同意,看到这种辱骂行为发生令人非常失望。 有人需要被送去参加领导力课程……

去你的,linux 社区不需要发牢骚的混蛋

女士们先生们,这就是 Linux 社区的现场示例!

是的,不是。

那是当你搞砸得很糟糕并且你罪有应得的时候。

请记住,书呆子重视能力,而不是礼貌。 如果你想要礼貌,请去理发师课程,快乐地生活吧。

我们有一项非常严肃的工作要做,如果你剪错了头发,最多你会听到一些尖叫声,并在你的城镇里被诟病,如果我们搞砸了,人们可能会因此而丧生。

例如,

当我们为发展一个健康繁荣的社区创造条件时,我们不会这样表达自己。 :-)

实际情况是,内核社区中的绝大多数对话都集中在代码上(每月大约有 17,000 封电子邮件!:https://lkml.org/lkml/2013/10)。 诚然,社区中时不时会出现一些色彩鲜艳的消息,它们会受到极大的关注,正是因为它们与众不同。 报告“今天在一个邮件列表中以文明的方式处理了 650 封电子邮件……”并不光彩。(当然……可能并非所有邮件都经历了自己的挣扎)。

与此同时,大量的活动在悄然进行,并且基本上没有被在线新闻报道,除非我们查看 Linux 基金会发布的关于内核每次发布时发生的巨大活动的年度报告 (http://www.linuxfoundation.org/publications/linux-foundation)。 例如:在过去的 12 个月中:向 Linux 内核添加了 200 万行代码。

当然,有空间让来自各行各业的许多新开发人员加入社区,并尽其所能做出贡献。 在此过程中,他们获得了经验,发展了技能,内核也变得越来越好。

此评论已编辑以遵守我们的社区行为规则,每个注册用户和评论者都通过网站条款和条件同意该规则。 此评论正处于被删除的边缘。 我们不容忍 opensource.com 上的这种行为。

“您不得发布或链接到具有威胁性、辱骂性、诽谤性、中伤性、贬损性、暴力性、骚扰性、偏执性、仇恨性、亵渎性、淫秽性、下流、淫荡、色情或其他令人反感的,引起民事或刑事责任的内容,或以其他方式违反任何适用法律的内容。”

https://open-source.net.cn/legal

Jason

>此评论已编辑以遵守我们的社区行为规则...

天啊,这简直是 1984 再现。

Jason,

我陈述显而易见的评论被删除了,为什么? 它没有违反你们的任何规定。

陈述你们的行为像 1984 年,审查人们,现在也被你们的法律框架禁止了吗? 我不能抱怨你们的审查制度,因为什么?

做这样的事情与允许人们使用过多的感叹词一样不利于 Linux。

如果你审查合理的辩论,你就完全违背了 Linux 的立场以及你似乎捍卫的立场。 我们不需要你的政治正确独裁统治。 去做一些更有用的事情吧。

看起来它被标记为垃圾邮件。

我们绝对鼓励对话,但在本出版物和社区中,我们将保持清洁,并促进进行健康的辩论。

Jason

不,Jason,

消息显示了一段时间,然后你让它消失了。

我看到你在搞营销。 好吧,说实话不是你的工作描述的一部分,这很正常,哈哈。

无论如何,更有趣的事情将发生在用户空间中。 那才是需要人才的地方。

诚然,用户空间中发生了许多有趣的活动,并且那里将欢迎人才。

也就是说,这不应阻止新手窥探深层内核。 在各处都有大量简单的补丁可以完成,其中许多都在初级开发人员的触及范围之内。 这些补丁是培训新开发人员的绝佳材料。

开源项目的工作负载分配遵循幂律的长尾分布。 这就是 80/20 法则,其中 80% 的工作由 20% 的人完成 (http://en.wikipedia.org/wiki/Pareto_principle)。 这并没有减少 80% 的人将完成的 20% 的工作的重要性,特别是因为这就是他们接受培训的方式,以便他们中的一些人成为完成 80% 更改的 20% 的一部分。 换句话说,分布中长尾的形状也预示了社区随时间推移的人口结构。

因此,有空间让成千上万的贡献者做出小的更改,这些更改可能只是一些代码行。 这些更改是更有经验的开发人员可以进行的更改,但这会分散他们处理更复杂问题的注意力。 因此,不断有机会将开发人员的技能与特定级别的挑战相匹配,并创造每个人都受益的条件。 初学者提高他们的技能,代码库同时也变得更好。 这是使用真实内核补丁作为任何编程课程的培训材料的理想情况,尤其是那些关于操作系统或大型软件系统的课程。

Luis,感谢您撰写这篇有趣的文章。 我不得不承认,Linus 的一些更精彩的帖子已在互联网上广泛传播。 这也让我一直没有尝试参与。 但是,您能否跟进如何与这个社区中的开发人员取得联系。

我担任系统管理员已经 13 年了(从 17 岁开始),管理 Linux、AIX 和 HP-UX,现在我发现自己对内核编程非常感兴趣。 但是我对 C 语言知之甚少,目前正在学习 Python,我也没有接受过数据结构和算法的正式编程培训。

我也知道用户空间和 Web 现在最受关注,但内核编程一直是我感兴趣的领域。 问题是我正在寻找一位可以指导我的开发人员。 我住在田纳西州纳什维尔,很难找到导师。

对于像我这样的人来说,您有什么建议可以开始入门? 您推荐什么书,我在哪里可以找到一位好导师,像学徒一样带领我入门?

我之所以问,是因为您看起来与我遇到过的普通人不同。 通常你会遇到非常粗鲁的人,他们会说去找个项目然后开始编码。 这类似于那些只说 RTFM 的人。

谢谢

Josh,

感谢您的评论。

您的观点是完美地过渡到后续文章,在其中我们将描述几周前在伦斯勒理工学院、伦斯勒开源中心 (RCOS) 和纽约州立大学奥尔巴尼分校举行的一系列培训活动。 它们的重点正是您正在寻找的内容

“如何轻松入门参与内核社区”

这些活动由来自红帽的热情团队推动,该团队由 Matthew Whitehead 和 Priti Kumar 组成。

这是我们用于这些培训课程的材料的在线版本

http://www.opensourcesoftwarepractice.org/Linux-Kernel-Training-Session-I/#/

这是用 Reveal.js 完成的(我们最近在这里讨论过它:https://open-source.net.cn/education/13/10/teaching-with-revealjs)。

这些培训幻灯片的源材料在这里的 Github 中
https://github.com/SUNY-Albany-CCI/Linux-Kernel-Training-Session-I

请注意,幻灯片向右移动,有时向上/向下移动。

中心点是

“参与内核社区很容易”

关键是从简单的补丁开始。

上面的演示文稿侧重于引导您完成整个过程。

它涵盖了

A) Git 入门
http://www.opensourcesoftwarepractice.org/Linux-Kernel-Training-Session-I/#/6
(幻灯片向下移动)

B) 如何获取源代码
http://www.opensourcesoftwarepractice.org/Linux-Kernel-Training-Session-I/#/7
(幻灯片向下移动)

C) 快速概述审核过程
http://www.opensourcesoftwarepractice.org/Linux-Kernel-Training-Session-I/#/8

D) 我们与学生一起完成的简单补丁
http://www.opensourcesoftwarepractice.org/Linux-Kernel-Training-Session-I/#/9

E) 打补丁的过程
http://www.opensourcesoftwarepractice.org/Linux-Kernel-Training-Session-I/#/10
(幻灯片向下移动)

还有

F) 其他材料的参考资料
http://www.opensourcesoftwarepractice.org/Linux-Kernel-Training-Session-I/#/11

特别是,您会发现这本书很有用

Linux 内核概要
http://www.kroah.com/lkn/
其中有完整的 PDF 免费下载(在页面底部)
http://files.kroah.com/lkn/lkn_pdf.tar.gz
源代码也在 Git 中
http://git2.kernel.org/git/?p=linux/kernel/git/gregkh/lkn.git.

请注意(故意地),
本练习中使用的补丁非常简单

本质上是,
诸如将“printk(...)”替换为“printk(KERN_DEBUG....)”。
http://www.opensourcesoftwarepractice.org/Linux-Kernel-Training-Session-I/#/9/4

通过这种方式,我们能够专注于提交补丁的过程,而不必担心内核本身的软件架构。

有成千上万个这样的简单补丁,正在等待志愿者来处理它们。 正如 Linus Torvalds 所说
http://www.opensourcesoftwarepractice.org/Linux-Kernel-Training-Session-I/#/3

“……微不足道的补丁是最重要的补丁之一 -
正是因为它们是每个新开发人员的“入门”补丁。”

我们使用 Amazon EC2 中的 Ubuntu 13 VM(使用 Amazon 慷慨地提供给纽约州立大学奥尔巴尼分校的赠款)与学生一起完成了练习。 VM 中的设置一点也不花哨。 只需要安装几个开发包即可。 (很乐意提供详细列表)。 如果您想克隆 VM,我也可以为您指出 VM 的公共映像。

请尝试上面的教程,并分享您对如何改进它的反馈,使其更易于访问,特别是:更有*趣*! :-)

这个过程确实非常容易,所以,如果材料中有任何令人困惑的地方,那就意味着我们没有正确理解内容,因此我们必须修复它。 因此,请随时指出任何问题。

谢谢!

实际上,如果您不介意,请提供开发包列表和 vm 的位置。

Josh,

以下是我们用于准备 VM 的命令

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install tmux

我们遵循了这些说明
https://help.ubuntu.com/community/Kernel/Compile

sudo apt-get install fakeroot build-essential
sudo apt-get build-dep linux
sudo apt-get install git-core libncurses5 libncurses5-dev libelf-dev asciidoc binutils-dev
sudo apt-get install git-email

AWS 中的 AMI 是:ami-8faaf7e6

然后,获取源代码的说明在这里
http://www.opensourcesoftwarepractice.org/Linux-Kernel-Training-Session-I/#/7
(幻灯片向下移动)

如果您在任何部分遇到任何问题,请告知我们。

谢谢!

谢谢 Luis。 我从来没有真正考虑过只做补丁来入门。 但是,当考虑到这一点时,这正是我一直在寻找的那种建议。

它让我想起了旧式学徒制,大师会说,在你建造一把完整的剑之前,你必须从这里开始(例如,给火加煤以获得良好的热量。)

我将在本周和下周尝试完成它们。 我是一个非常慢的读者,所以需要一些时间。 但是一旦我完成,我猜在这些文档的某个地方会有一个电子邮件地址,我可以回复评论。

再次感谢您帮助像我这样的人入门。 我实际上对终于能够开始感到非常兴奋。

是的,有些人有这种想法,但肯定不是所有人。

我是一个 20 多岁的女孩。 我的内核经验主要是在 ARM 设备上,为新的 ARM 设备制作部件/补丁。

关键问题之一是计算机科学毕业生没有被推向嵌入式或操作系统领域。 它不“酷”或不引人注目。 通过制作一个启用新总线的补丁,你通常不会变得很受欢迎,就像你制作一个可以向潜在公司演示的 HTML5 或移动应用程序一样。 它不像应用程序开发或集成那样是一种高需求的技能。

核心群体正在老化。我昨晚参加了一个嵌入式 Linux 会议,在一个 30 人左右的群体中,只有 3 个 20 多岁的人。大多数人都在 40-70 岁之间,还有几个人在 30 多岁。另一个需要考虑的事情是,现在已经完成了很多工作,仅仅是理解在哪里添加和更改就比 15 年前要复杂得多。

像 C 和汇编代码这样的核心技能在普通大学里教授的课程不超过 1 门。操作系统通常不是必修课,除非是在顶尖大学。这限制了能够开始了解内核工作原理的人群范围,除非他们自学。

让我们来谈谈社区中的一些人。有很多“专业人士”和完全的新手刚刚开始学习“dd”命令。 参与其中的中间水平的人不多。 中间水平的人会被专业人士嘲笑。

底层方面的文档也不多,尤其是在能够教给有天赋的大学生的层面上。

请相信我,困扰模拟电子工程和业余无线电领域的问题与操作系统领域的问题相同。 婴儿潮一代没有将知识传递下去。 年轻人如果充分请教“专业人士”,可以从他们那里学到东西。 然而,这是一件非常私人的事情,而互联网论坛并不具备私密性。

如果你想学习,就在 IRC 频道中找人交谈。 大部分时间用来倾听。 你会感到惊讶的。

Stacy,说得太好了,

不过,你应该从另一个角度考虑:一旦婴儿潮一代停止构建基础设施,而能够解决问题的人又寥寥无几时,你认为你能赚多少钱?

那里有巨大的机会。 应用程序开发人员一抓一大把,这些人将像过去的 COBOL 和 Clipper 程序员一样,他们将一文不值,并且很快就会被取代。

Ulrich,

你说得很有道理,
这一点也延伸到许多基础设施项目,这些项目现在由可能在 10 年左右退休的开发人员维护。 这几乎不足以给他们配备年轻的学徒,以便他们能够指导和培训这些学徒,直到年轻人能够继续维护和改进基础设施。

一个有趣的例子是

VistA:退伍军人事务部的 EHR(电子健康记录系统),它已被广泛认为是最高级的医疗记录系统之一,但其开发者社区也面临着年轻群体不足的问题。

如果在 Linux 内核的背景下,我们担心没有足够的大学教授 C 语言,那么在 VistA 的案例中,我们担心只有少数几所大学教授 MUMPS 语言,而这种语言不仅在 VA 的 VistA 中使用,也在使用 CHCS 的国防部医院中使用,并且在包括 EPIC 在内的大多数商业 EHR 系统中使用。 这些系统在数百家医院运行,为数百万患者提供护理,因此是关键基础设施的核心。

Stacy,

我赞同你关于在经验丰富的“专业人士”和新手之间建立个人联系以传递经验的重要性。 完全同意你的观点,在线交流是不够的,文档(虽然有用)也不能替代面对面的互动。

我发现邀请行业人士作为特邀演讲者到课堂上,有助于建立这种联系。 这当然还不够,但这是一个起点。 经验丰富的专业人士总是珍惜与年轻人交谈并分享他们所知道的机会,同时学生们也喜欢从教授以外的演讲者那里听到关于“现实世界”的信息。

这种联系可以通过黑客空间(HackerSpaces)来扩展,我认为这是每所大学都应该拥有的,并且应该有当地经验丰富的专业人士参与其中。 这种非正式和非结构化的教育是将经验“传递”给年轻一代的非常有效的方式。

Ulrich,我同意你的看法。

我可以说,在寻找加入我团队的人时,拥有扎实的 C 语言背景非常重要。

如果你不能编写库或驱动程序,我对你的 Java、C#、HTML5 等不感兴趣。 这可能才是真正需要的。

很多时候,问题比人们意识到的要深层,“当 API 崩溃时你该怎么办?”。

这里的一种可能性是,计算机科学(CS)也不包含任何电子工程(EE)的要求。 了解你的硬件以及它的工作原理很重要,这在 30 年前是理所当然的事情。 现在,这种水平的知识已被纳入一个新的学位,计算机工程(Computer Engineering),它也侧重于计算芯片设计。

计算机工程通常也是最难的工程专业之一,而且并非所有大学都提供。 公司会试图将计算机工程师(CE)“安排”到更传统的计算机科学(CS)或电子工程(EE)角色中,但实际上它应该被更多地视为“嵌入式计算”,但它也是通用的。

我所学的课程是计算机工程(CE),基本上是:跳过计算机科学(CS)和电子工程(EE)的所有入门课程; 直接进入 200 和 300 级课程。 完成这两个学位的最高要求,并修读 4 门芯片/逻辑/操作系统设计课程。 计算机工程(CE)学生的 GPA 在大多数情况下会较低,因为他们没有“缓冲”,就像典型的化学工程课程一样。 它需要对两个或多个工程学科的深入了解。

所以也许这里的解决方案是社区重新让基础知识成为基础。 这很困难,因为院长们想要展示光鲜亮丽的项目,而急躁的学生想要快速获得满足感。

Stacy,

感谢这些富有洞察力的评论。

我完全同意你的看法,特别是关于在编写驱动程序和底层 API 时,对硬件有一定的了解非常重要。

树莓派(Raspberry Pi)以及类似的廉价开发板(如 Beagle Bone)目前的流行,为教育新一代工程师提供了一个有希望的场所,这些工程师精通从电子学、控制器、底层接口、驱动程序到操作系统的连续主题范围。

一些大学看到了这些项目的价值。 例如,这里是纽约州立大学奥尔巴尼分校(SUNY Albany)采用树莓派代替教科书的案例
https://open-source.net.cn/education/13/10/raspberry-pi-trade-textbook

你的观点很有道理,许多大学项目更感兴趣的是那些光鲜亮丽的移动应用程序,因为它们具有高度的可视性和易用性,可以作为出色的演示。

要了解更多关于“Linux 内核中的基本数据结构和算法”的信息,请参阅
http://cstheory.stackexchange.com/questions/19759/core-algorithms-deployed/19773#19773

链接在 Hacker News 上找到。 请参阅 https://news.ycombinator.com/item?id=6787836

JC

感谢分享这些链接。
它们看起来确实非常有用!

© . All rights reserved.