Lasu 比我更多地参与了许可讨论。
对我来说,选择 GPLv2 并不是一个大的政治问题,主要是我原来的许可证是临时的,需要更新,我很感激 gcc,GPLv2 满足了我的期望。
我不想创建另一个许可证(或者只是修改原始许可证 – 只需删除“不花钱改变项目所有者”条款就可以解决),我想选择一个人们已经了解并涉及一些律师的许可证。
来源:tag1咨询
JA:你典型的一天是怎样的?您将花费多少时间来编写代码、审查代码、阅读和撰写电子邮件?您如何
LT:这些天我写的代码很少。这样的情况已经持续了相当一段时间了。当我编写代码时,最常见的情况是针对特定问题进行讨论,然后我进行更改并将其作为修复程序发送,主要是作为对提议的解决方案的解释。
本文探讨了 WhatsApp 号码数据对消费者购买决策 WhatsApp 号码数据 的影响。它强调了企业如何使用 WhatsApp 提供个性化互动、及时更新和客户帮助。根据报告,成功使用这个消息平台可以建立消费者信任并增加购买可能性,可以改善客户关系并增加整体销售额。
换句话说,我写的大部分代码更多的是“看看像这样做什么”,其中修复的是一个非常具体的例子。人们很容易陷入一些关于如何解决某些问题的高级理论讨论中,而且我发现描述解决方案的最佳方法通常是只编写一段代码(也许不是整个事情),然后将其实现具体就是这样。
因为我所有的真正工作都是花在阅读和写电子邮件上。主要是沟通,而不是编码。事实上,我认为与记者和技术博主等的这种交流实际上是我工作日的一部分——它的优先级可能比实际的技术讨论要低,但我仍然花了不少时间在上面。
是的,我也花时间进行代码审查但老
实说,当我收到审查请求时,它应该已经被更多人审查了。因此,当我仍在查看补丁时,我实际上更多地关注补丁的解释和历史。我什至不检查与我共事时间最长的人:他们是其子系统的管理员,我不会在那里检查他们的工作。
因此,我的主要角色常常是“在那里”,成为收集点并成为管理和执行发布的人。换句话说,我的工作通常更多的是维护过程而不是低级代码。
JA:你的工作环境怎么样?例如,您喜欢没有干扰的黑暗房间还是有风景的房间?您倾向于安静工作还是边听音乐边工作?您通常使用什么样的硬件?您是在终端中使用 vim 还是使用精美的 IDE 检查代码?您有适合这项工作的首选 Linux 发行版吗?
LT:我的房间并不是完全黑暗,但我关上了桌子旁边窗户上的百叶窗,因为我不喜欢明亮的阳光。所以看不到任何风景,只有一张(肮脏的)桌子,配有双 4k 显示器和桌子下面的功能强大的桌面。当我在旅途中时,还有一些笔记本电脑可供测试。
我想默默地工作。我曾经讨厌机械磁盘驱动器的滴答声——很高兴长期被扔进垃圾箱,因为我已经专门使用 SSD 十多年了——而且嘈杂的 CPU 风扇也是不可接受的。
所有这一切都发生在传统终端中,即使我没
有使用“vi”。我正在使用这个名为“micro-emacs”的令人厌恶的东西,它与 GNU emacs 完全没有关系,除了一些键绑定是相似的。当我还是个小男孩的时候,我在赫尔辛基大学就习惯了它,而且我一直无法忘记它,尽管我怀疑我很快就会忘记它。几年前,我遇到了非常有限的 utf-8 支持,但似乎我的助手自 90 年代中期以来就没有得到维护。
赫尔辛基大学使用 micro-emacs 是因为它运行在 DOS、VAX/VMS 和 Unix 系统上,我就是这样熟悉它的。现在我已经用手指硬编码了。我真的需要切换到实际维护的并且正确执行 utf-8 的东西。可能是“纳米”。但我那段被黑客入侵的历史垃圾却表现得足够好,以至于我从来不需要教我的老手指新的技巧。
所以我的工作环境相当简单:几个打开的文本终端和一个带有电子邮件的网络浏览器(以及一些其他选项卡,主要是新闻和技术网站)。我想要有相当大的桌面空间,因为我习惯了相当大的终端窗口(100×40 是我的默认起始大小),并且我有几个彼此相邻打开的终端。所以双 4k 显示器。
我在所有计算机上都使用 Fedora,并不是因为它一定是“首选”,而是因为我已经习惯了。我不太关心发行版——对我来说,这主要是一种在机器上安装 Linux 并设置所有工具的方法,这样我就可以更换内核并继续工作。
JA:Linux 内核邮件列表是公开进行
内核开发的地方。您如何跟上这么多电子邮件?您是否探索过邮件列表之外的其他协作和通信解决方案,或者是否有一个简单的邮件列表非常适合您的工作?
LT:噢,我已经很多年没读过这本书了。已经太多了。
这些天我改用lore.kernel.org功能,因为它工作得很好,而且其他工具都是围绕它构建的。讨论将是可见的,而不是自动将驱动器存档在我自己的邮件存档中。但基本工作流程在概念上是相同的。
当然,我收到了相当多的电子邮件 – 但在许多方面,这些年来它变得更好而不是更糟。一个重要的部分是 Git 以及核心版本的工作情况:我们过去在代码流程和工具方面遇到了很多问题。在世纪之交,我的电子邮件情况要糟糕得多,当时我们仍在交换巨大的补丁炸弹,并且在开发过程中遇到了严重的可扩展性问题。
目录模型及其周围的工具确实运行得很好
这并不是说人们不使用除电子邮件之外的其他通信方式(个人联系人和邮件列表):有些人喜欢不同的实时聊天设置(IRC 是传统的)。虽然这从来都不是我的事,但很明显有些人喜欢用它来进行头脑风暴。但这种“地址列表作为存档”模型运行得非常好,并且可以毫无问题地处理整个“以电子邮件形式在开发人员之间发送修复程序”和“以电子邮件形式发送问题报告”的问题。
因此,电子邮件仍然是主要的沟通渠道,并通过集成到同一媒介中的修复来促进技术问题的讨论。而且它可以跨时区工作,当每个人的地理位置都如此分散时,这一点非常重要。
JA:目前最新版本是5.12-rc5。发布流程的标准化程度如何?例如,-rc1 与 -rc2 等相比有何变化?您什么时候决定该版本已准备好正式发布?如果你错了并且在最终版本之后出现了很大的回归,会发生什么?这种情况发生的频率是多少?多年来这个过程是如何演变的?
LT:我之前提到过这一点:流程本身确实非常标准,并且在过去十年中一直如此。在此之前它经历了几次改组,但实际上它的工作方式就像 3.0 版本中的 美国电子邮件列表 瑞士手表一样(实际上是在那之前的几年 – 迁移到 Git 在很多方面都是现代流程的开始,并且花了很长时间)同时让大家习惯)。
我认为我们有“两周”的节奏后候选者等待
最终版本的时间大约为 6-8 周。过去 15 年以来,它一直以这种方式运作。
规则始终是相同的,尽管并不总是严格执行:合并窗口用于所谓“经过测试并准备就绪”的新代码,接下来的两个月左右的时间用于修补并确保所有问题都得到解决。但这并不总是发生,有时所谓的“就绪”代码在发布之前会被禁用,甚至会重新被重写。
来源:tag1咨询
然后它会重复 – 所以我们大约每 10 周发布一次版本。
我对发布标准非常有信心,这当然取决于不断收到的问题报告类型。如果某个区域仍然出现问题,我会非常积极地退回东西,并说“一旦我们完全解决了这个问题,我们将在以后的版本中处理这个问题”,但总的来说,这种情况非常罕见。
总是有效果吗?不。一旦内核发布 – 特别是当发行版采用它时 – 你会得到新用户,你会得到那些在开发过程中没有测试它的人,并发现我们在 rc 期间没有发现的不起作用的东西。这几乎是不可避免的。这就是为什么我们拥有完整的“稳定核心”树,可以在发布后继续添加补丁。一些稳定内核的维护时间比其他内核长,称为 LTS(“长期支持”)内核。
尽管我们最终实现了更多自动化,但所有这
一切在过去十年中都没有改变。自动化内核测试通常很困难 – 部分原因是内核的很大一部分是驱动程序,这当然取决于硬件可用性 – 但有几家公司可以执行启动和性能测试,并执行各种随机压力测试。多年来,这种情况已经有了很大改善。
JA:核心中是否有某些内容不是最佳的,但需要完全重写才能使其正确?换句话说,内核已经有30年的历史了,30年来知识、语言和硬件都发生了 市场趋势:如何识别它们以制定可持续的业务战略 很大的变化:如果让你现在从头开始重写,你会改变什么?
LT:事实上,如果有必要的话,我们真的很擅长甚至完全重写一些东西,所以任何可能立即引发灾难的东西在很久以前就已经被重写了。
当然,我们有相当数量的“兼容性”层,但它们通常并不可怕。目前尚不清楚,如果从头开始重写,即使这些兼容性层实际上也会消失 – 它向后兼容较旧的二进制文件(并且通常向后兼容较旧的架构,例如在 x86-64 上运行 32 位 x86 应用程序)。由于我认为向后兼容性非常重要,因此我也想在重写中保留它们。
显然,有很多事情是“次优的”,从某种意义上说,有些事情可以改进,但在制定答案时,我不得不说,不,没有什么是我鄙视的。
有些老司机没人会关心,所以他们可以向
系统扔棍子。这不是一个问题,当它成为一个问题时,我们往往会非常积极地删除对旧版本驱动程序的支持,因为我们找不到任何人来使其保持最新。因此,多年来我们已经摆脱了许多驱动程序,并且当维护整个架构不再有意义时,我们也摆脱了对整个架构的支持。
“覆盖”的唯一主要原因是,如果您最终遇到一些整个结构不再有意义的用例。最可能的情况是一些小型嵌入式系统,它不需要 Linux 提供的所有功能,并且硬件占用空间很小,它只需要比 Linux 多年来变得更小、更简单的东西,因为 Linux 已经发展得如此之快。很多。如今,即使是小型硬件(例如手机等)也比开发 Linux 的原始机器功能强大得多。
来源:tag1咨询
JA:使用 Rust(一种专为性能和安全性而设计的语言)至少重写部分内容怎么样?这样的方式还有改进的空间吗?您认为像 Rust 这样的另一种语言有可能在核心中取代 C 吗?
LT:我们拭目以待。我不认为 Rust 会接管
内核,但在其中创建单独的驱动程序(可能还有整个驱动程序子系统)听起来也并非完全不可能。甚至可能是文件系统。所以这不是“替换 C”,而是“在有意义的地方扩展我们的 C 代码”。
但驱动程序尤其占实际内核代码的一半左右,因此还有很大的空间,但我认为没有人真正期望用 Rust 重写现有驱动程序,更像是“有些人会在Rust 以及一些驱动程序可能会在有意义的地方被重写”。
但现在它更多的是“人们尝试它并玩它”而不是其他任何事情。指出好处很容易,但肯定存在复杂性,因此我非常采取观望态度,看看承诺的好处是否真正实现。