Help us understand the problem. What is going on with this article?

Linuxカーネル、その29年の歴史レポート

2020/08/25、Linux Foundation2020 Linux Kernel History Reportというレポートを発表しました。
1991年9月17日の最初のリリースから、2020年8月2日にリリースされたLinux5.8まで、29年におよぶLinuxカーネルの歴史をまとめたものです。

ということでざっくり斜め読みしてみました。
ていうかコピペできないPDFなのどうにかしてくれ。

Linux Kernel History Report

このレポートは、Linuxの全ての歴史を調査したものである。
1991年9月17日に最初のカーネルがリリースされてから、最新の5.8カーネルがリリースされた2020年8月2日までには、BitKeeperとgitに100万件以上のcommit履歴が記録されている。

Kernel Archeology

最初のリリースは88ファイル1万行、2964トークンしかなかった。
当初の痕跡はごくわずかしか残っていないが、vsprintf.cには1991/09/17のLinus自身によるファーストコミットが今も存在する。

01.png

Linux5.8のカーネルの半分以上はこの7年以内に書かれたコードである。

02.png

Impact of Development Process Best Practices

開発のベストプラクティスを推進するため、CIIは2015年にベストプラクティスバッジ制度を作った。
Linuxコアは最初期にこのバッジを取得したプロジェクトのひとつで、2020年6月には最高級称号であるゴールドバッジを取得した。

とか書いてあるんだけど、CIIはLinuxFoundation内の組織なのでどうにもマッチポンプ感が拭えない。

Adoption of Maintainer Hierarchy

1996年の1.3.68で初めてMAINTAINERSファイルがコミットされた。
わずか107行で、メンテナは僅か3人。
Alan Cox、Jon Naylor、そしてLinus Torvalds。

MAINTAINERS
REST:
P: Linus Torvalds
S: Buried alive in email

Linuxカーネル開発の初期の議論は複数のMLでなされていたので、1997年以前の議論については断片的にしか存在していない。
集められた一部についてはhttp://lkml.iu.edu/hypermail/linux/で公開されているが、これにも抜けがあるので、当時のログを持っている人がいたら提供してほしい。

翻って5.8のMAINTAINERSは19033行もあり、そして1501人のメンテナがリストされている。

MAINTAINERS
THE REST
M: Linus Torvalds <torvalds@linux-foundation.org>
L: linux-kernel@vger.kernel.org
S: Buried alive in reporters
Q: http://patchwork.kernel.org/project/LKML/list/
T: git git://git.kernel.org/pub/scm/linux/
kernel/git/torvalds/linux.git
F: *
F: */

Version Control Systems

03.png

BitKeeper以前は、誰がどれくらい貢献していたかについてはあまりはっきりとしていない。
きちんとした履歴は2002年ごろにはじまっていて、それ以前については各文献に残された履歴から推測している。

2005年に色々あってBitKeeperが使えなくなったので、Linusが一からGitを作ってそっちに移行した。

開発者の確保は永遠の課題であり、Linux FoundationもOutreachyやLKMPプログラムといった支援を続けている。
女性コントリビュータを増やす取り組みも行ってきた。

04.png

Removing Unused Code

使用していないコードを削除する取り組みは継続していて、たとえば2018年の4.17では8アーキテクチャ18000行を削除した。

ということらしいのだけど増加量に比べたら微々たる量でしかないな。

05.png

Highly Diversified Corporate Contributors

Linuxカーネルは多くの企業から貢献を受けている。
2007年から2019年まで、1730の企業から780048のコミットがあった。
そのうちトップ20企業が68%を占めている。

06.png

この10年では、毎年400社程度からのコントリビュートがある。

07.png

Release Model with Predictable Release Cycle Cadence

Linuxのリリースモデルは4種類に分類される。
・Prepatch (RC)
・Mainline
・Stable
・Long Term Stable

最新のカーネルはhttps://www.kernel.org/で見ることができる。

リリースサイクルについては多くの議論がなされたが、2011年以降概ね機能するリリースモデルが構築された。
まず2週間のmerge windowから始まり、新機能はテストされてgitリポジトリに導入される。
RC1のタグが振られると結合テスト、デバッグ、最適化のサイクルに入り、品質と安定性が確保されるまでRCが毎週更新される。
新機能がリリースされると、ふたたび次のmerge windowが始まる。

08.png

Improving Automated Testing the Kernel

カーネルのテストはコミュニティの努力によって成り立っている。
自動テストBOTとしてSparse、Smatch、coccicheck、ファジングテストとしてTrinity、syzbotなどが走っている。
これらによって多くのバグが発見されている。

09.png

Stable Release Process

安定版へのリリースはおよそ週1で行われる。

Linux5.7.9を例に取ると、まずリリース候補RCがMLにメールでアナウンスされる。
このRFには166のパッチがあり、それらは全て個別にMLで通知される。
各開発者および自動テストツールがそれらのリリース工法をテストし、結果をメールに返信する。
RCに問題があればRC2、RC3と後続が作成されるが、RC2が作られることはあまり多くない。

自動ビルドBOTは30種以上のアーキテクチャに対してビルドを実行する。
安定版では31アーキテクチャ、56コンフィグに対してビルドが行われる。
そしてLKFT、LTP、Linux Kernel Selftests、Linux Perfなど多くのテストが行われる。
テストが十分に果たされるとリリースされ、その通知がMLに送られる。

Longterm Release Kernels

長期サポートを導入したことにより、組込製品などにおいてLinux人気がさらに高まった。
SUSE、Ubuntu、Red Hatなどのディストリビューションが先駆けて導入して有用性を証明したことで、カーネルにもこの概念が導入されることになった。

安定版カーネルで発見されたバグはまず安定版に適用されるが、LTSにも適用可能であると判断された場合はバックポートされる。
安定版の修正をLTSも適用可能であるかの判定は、Sasha Levinによる機械学習ツールの開発などによって年々改善されている。
2019年には18668件のバックポートが行われたが、これは15年前の安定版カーネルへの変更より多い件数である。

LTSよりさらに長い超長期サポートSLTSを求めている市場もあり、一部の開発者はLinux4.4と4.19をSLTSとしてサポートすることにしている。

Conclusion

現在のLinuxカーネルは、医療機器から宇宙船に至るまで、セキュリティと安全性が必要なあらゆる分野で使用されている。
Linuxを使う前に、適切なセキュリティと安全性を確保できるようインフラを改善していくことが、次の取り組んでいる大きな課題のひとつである。

Linuxカーネルには、OSS業界全体を改善していくためのベストプラクティスを作成し、世界をリードし続けるための素晴らしい基盤が存在している。

Thanks

なんか見切れてるんだけど。

10.png

感想

もはや世界的に無くてはならない存在であるLinuxですが、その成長の軌跡がざっくりわかる興味深い資料でした。
コミッター数もコミット数もコード量も、近年のその飛躍的な増加も、このプロジェクトの重要性をよく示していますね。

ただまあ公的に近い資料だけあって表沙汰にできるような内容しかありません。
の集まったレポートとかもあると楽しそうです。

最近はクラウドだーサーバレスだーと、低レベルOSの存在は裏に隠そう隠そうと躍起になっていますが、何かあるとすぐコマンドとかログとか掘り返さないといけなくなって結局Linuxの知識が必要となるのは今でもあまり変わりません。
OSの存在や種類など気にしなくていいような世界は、本当にいつの日かやってくるのでしょうか。

rana_kualu
不労所得で生きたい。
https://twitter.com/rana_kualu
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした