LWN:内核开发者的更好的工具

时间: 2020-02-13阅读: 120标签: 工具

从许多角度来说,Linux kernel这个项目在用的工具都太过时了,远远落后于现代的孩子们经常用的工具。kernel的工作流程在过去几年表现都很好,不过已经有些迹象表明它不会永远保持不变。一直以来都有一些讨论关于如何改善kernel的工作流程,不过基本还没怎么真正动起来。最近新提出的一个名为get-lore-mbox的简单工具可能预示了工作流程的改进会逐渐加速。

kernel项目一直以来都依赖email,这一点让许多人感到很惊奇,觉得它很过时。这也许真的跟kernel社区开发人员的年龄层次有关。许多开发者,尤其是那些重要的maintainer们,都是在那些基于网页的git服务管理网站出现之前就开始做现在的工作了。许多人其实还用过打孔编程的方式,他们中的许多人仍然没有接受文本编辑器的价值。不过,kernel一直依赖emal的真正的原因其实还是因为没有多少其他工具可以用来支撑这么大规模以及多样化的一个社区。

所以,尽管看起来email(这里不是指那些Gmail这类的公司服务)的未来还不是很明确,但是kernel社区后续会有什么替换工具还很不明朗。首先需要能说服开发者们,新工具会让他们更轻松,而不是更麻烦。对于那些非常繁忙的maintainer来说,如果有什么改进方式会让做事情更慢,他们一定不会接受的。

Konstantin Ryabitsev提出的get-lore-tool并不是一个需要大量开发工作的产物,它仅仅有500行左右的Python代码。核心功能很简单:提供某封email的message ID,它会为你从lore.kernel.org下载完整的email thread,生成一个车本地的mbox文件。这个功能本身其实对所有需要了解某个email塔轮的来龙去脉的人都有用,不过它还拥有许多有用的功能:

  • -a 选项,只会下载这个email thread中最核心的那一系列patch文件,排好序并整理好格式,方便直接传递给git am命令。同时在email thread中如果有一些回复里包含有用的tag(例如Acked-by),也会自动加到相应的patch上去。

  • -t 选项,可以把那些只回复给这组patch的cover letter的tag都打到这组中所有的patch上面去。

  • 如果这个email thread中有多个版本的patch,那么只会保存最新一个版本的patch文件。也可以用 -v 选项来指定要求某个特定版本的patch文件。

  • 如果没有提供message ID,此工具可以从标准输入中读入一个email message,提取出message ID。这样在许多邮件阅读软件里面只要按一个键就可以完成所有工作了。

Kernel maintainer经常需要花许多时间来阅读email thread,从中整理patch,打上tag,等等。这个工具一发出来,最早的反馈(也包括在kernel.org内部用户的邮件列表上的反馈)都是说这是他们长久以来一直渴求的工具。仅需要花很短的时间写出这样一个工具,就能省下许许多多的开发者的时间,不过此前一直没人做这件事情。

也许有人好奇这个工具为什么直到现在才出现。其实要想完成这个工作,首先有两个前提条件。其中之一就是要把所有的kernel mailing list的内容都要可靠地存放起来,并且能用一个程序来简单地进行查询。此前一直缺少一个可靠地存放服务,并且没有一个集中式的地方包含所有的kernel相关的list。在这个问题解决之前,get-lore-mbox这种类型的工具也无从查询历史邮件。lore.kernel.org服务就解决了这个问题,目前看来它已经成为了kernel开发流程的一部分,不过其实它也才出现了不到两年。

早在1975年的时候,Fredrick Brooks在他名为Mythical Man-Month(《人月传说》)的书中,断定说一个高效的软件开发团队需要像一个手术团队一样工作,不同的人做完成不同的角色的任务。kernel项目中也有这样的核心“外科大夫”,同时也有许多其他的专家来完成其他工作。Brooks认为每个团队都要有两位秘书,而kernel社区看起来一直没有这样的角色。他还说每个团队都要有位工具专家,专注于创建团队所需的工具。

kernel项目长期以来一直缺少这样的工具专家。甚至没有一个人能把各位maintainer为了方便自己的工作来创建的工具搜集起来,改为适合大家使用的工具。因此,maintainer在日常工作中经常没有一个合适的工具,或者在使用他们自己简单拼凑出来的工具。这样导致社区失去了改善整体开发效率的 一些 机会。

在自由软件(free-software)世界里,有一个众所周知的秘密:有一部分开发工作得到了许多公司的支持,但还有一些一直没有公司投入进来。kernel里面也有同样的情况,甚至可以说,有许多很急迫的工作,因为看起来并不是某个人导致的问题,因此没有人会花精力来进行响应的开发。对这类问题的忽视,已经引出了许多问题:精疲力尽的开发者用尽方法来利用自己的业余时间开发来确保项目能有进展;许多安全漏洞;缺少测试和文档;缺少整个社区都需要的工具,等等等等。

除非有哪个业界巨头或者组织愿意投入一些精力和资源来解决这类问题。对kernel来说,Linux Foundation就是这样的一个角色。Linux Foundation一直在许多方面对kernel社区进行支持,包括雇佣了一些关键开发者,在2011年kernel.org被攻破之后接手了它的系统维护工作(此前这个工作一直被大家无视了)。最近,Linux Foundation支持了创建并运营lore.kernel.org,也包括get-lore-mbox工具本身。

关于kernel工作流程的讨论已经达成了不少共识,不过在这个领域还有许多工作需要完成。kernel的开发流程和工具在过去多年一直缺乏关注,从某种意义上来说,这也是因为表面上所有一切都还能正常 工作 。kernel社区在努力把自己运营好,这方面的工作,比起多数项目来说都做得好得多。当kernel社区找到一段时间来专注于改进工具的时候——Git就是一个很好的例子——最终的产物都会在开发社区中产生连锁影响。不过还是需要先让kernel项目的开发流程碰到一些危机、证明它无法良好支持社区运营,才能有动力进行工具的改善。

真希望今后kernel这边的开发流程的大改变能够跳过这个“先遇到危机”的阶段。其实只要能对kernel社区投入足够的支持工作和资源,这一点希望是很有可能实现的。也就意味着,现在Linux Foundation在做的事情不仅不应该停下来,反而应该能变得更加宏大。支持这个开发工作(包括让Linux Foundation的成员公司来支持)将会是Linux Foundation今后能对整个kernel项目进行支持的最好方式。

Better tools for kernel developers
By  Jonathan Corbet
February 6, 2020
原文来自:https://lwn.net/Articles/811528/
站长推荐

1.阿里云: 本站目前使用的是阿里云主机,安全/可靠/稳定。点击领取2000元代金券、了解最新阿里云产品的各种优惠活动点击进入

2.腾讯云: 提供云服务器、云数据库、云存储、视频与CDN、域名等服务。腾讯云各类产品的最新活动,优惠券领取点击进入

3.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/7661

掌握 TS 这些工具类型,让你开发事半功倍

TypeScript 提供了为类型注解设置别名的便捷语法,你可以使用 type SomeName = someValidTypeAnnotation 来创建别名,比如:

node_modules干什么的?

node_modules是安装node后用来存放用包管理工具下载安装的包的文件夹。比如webpack、gulp、grunt这些工具。在node.js中模块与文件是一一对应的,也就是说一个node.js文件就是一个模块。

JavaScript工具函数大全

为元素添加on方法,为元素添加trigger方法,转义html标签,跨浏览器绑定事件

国内都有哪些免费的图床工具

七牛云是国内企业级云服务商,注册认证后有10G永久免费空间,每月10G国内和10G国外流量,速度相当快,七牛云是国内专业CDN服务商,插件支持比较多,有免费ssl证书,但https流量收费。同时可以自定义域名,系统会默认分配测试域名,测试域名只能用20天

推荐6款好用、免费的远程控制软件【远程管理工具】

远程办公就需要远程连接的工具,当然,你说你用VPN那也是没有毛病的。远程桌面工具也极大的方便了我们进行远程技术支持、远程办公的便利性,但是呢,很多时候,有些工具不支持电脑或者手机操作

程序开发必备工具推荐

工欲善其事必先利其器,作为程序员不光熟练掌握某种语言技能,相关的工具的运用和选择也相当重要,好的工具让你事半功倍,现在我向码农推荐一下工具

Mac上程序员很喜欢用10大开发软件

走进BAT,你们会发现,他们都喜欢使用Mac,Mac作为一个创作工具,一直深受程序员,教授,高科技行业从业者的喜欢。Mac及佳的稳定性,也是用户喜欢的一个主要原因,Mac可以让你专注于创作

vue时间处理工具momentjs

自己写的时间处理工具类有兼容性, 网上找都处理很多可靠的很少,几个项目被坑惨了,有时候还要经常处理获取月份啊周啊什么的bug 实在多,自己写实在麻烦还考虑不全

程序员必备的学习工具

学习技术过程我们经常需要使用搜索引擎来检索资料,国内常用的也就是某度了。当然有条件的话,搜索引擎首先还是推荐使用 Google,如果没办法使用,可以使用以下几个作为备用:

7款最好的笔记工具

编程容易产生挫折,即使作为一种业余爱好也可能是这样。建立一个网页,手机APP或桌面应用都是个很大的工程,好的记笔记技能是让这个工程井然有序的关键,也是克服压力、绝望和倦怠的好方法。

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!

文章投稿关于web前端网站点搜索站长推荐网站地图站长QQ:522607023

小程序专栏: 土味情话心理测试脑筋急转弯幽默笑话段子句子语录成语大全运营推广