25年間のLinuxカーネル開発経験をまとめた9つの経験を簡単に述べる。
原文:9 lessons from 25 years of Linux kernel development
作者:Greg Kroah-Hartman
雁が寒さに驚く
Linuxカーネルコミュニティは2016年に設立25周年を記念し、多くの人が私たちにこのプロジェクトが衰えず成功した秘訣を聞いた。私は普通先に笑って、それから冗談を言って、私は本当に25年を経験したことを知りません。このプロジェクトはずっと分岐と挑戦に直面している。しかし、厳粛に言えば、私たちがこれを行うことができるのは、コミュニティの反省と変化の能力と大きな関係があります。
約16年前、多くのカーネル開発者がお互いに会ったことがなく、私たちは電子メールで連絡しただけなので、Ted T'soはカーネルサミットの考えを提出しました。現在、カーネル開発者は毎年集まって技術問題を解決しています。さらに重要なのは、過去1年間で私たちがどのような正しいことをしたのか、またどのような間違いを犯したのかを振り返ることです。開発者は、相互にどのように交流するか、開発プロセスがどのように動作するかを率直に議論することができます。そして、プロセスを改善し、Gitのような新しいツールを開発し、協力方法を絶えず変えます。Linuxカーネルの成功のすべての重要な原因はまだ完全に認識されていませんが、共有する価値のある経験があります。
1.より短いリリースサイクルが重要
Linuxプロジェクトの初期段階では、カーネルの各プライマリ・バージョンが何年もリリースされる必要があります。これは、ユーザーが新しい機能を享受するのに長い時間を待つ必要があることを意味します。これは、ユーザーとディーラーにとってかなりがっかりしています。さらに、このような長い周期は、大量のコードを一気に統合する必要があることを意味します。こんなに多くのコードを1つのバージョンに統合するのは、プレッシャーも大きい。より短いサイクルでこれらの問題をすべて解決できます。新しいコードは、より短い時間で安定版に組み込むことができます。新しいコードをほぼ安定したベースラインバージョンに統合することで、システムに最小限の影響を及ぼす場合に根本的な変化を導入できます。開発者は、このリリースサイクルを逃した場合、2ヶ月以内にもう1つあることを知っています。そのため、コードを早期に組み込むことはめったにありません。
2.プロセスの拡張には分散型の階層開発モデルが必要である以前は、すべての変更要件がLinus Torvaldsに直接移行していましたが、オペレーティングシステムのカーネルのような複雑なプロジェクトを全面的に把握できる人はいなかったため、すぐに不適切であることが証明されました。早くから、カーネルの異なる分野のメンテナンス者たちは、カーネルの一部をその分野に詳しい人に割り当てるという考えを提出した。例えば、ネットワーク、無線、PCIまたはUSBのようなドライバサブシステム、またはext 2またはvfatのようなファイルシステムである。その後、数百人の保守担当者がコードの審査と統合を担当するように拡張し、製品の品質を犠牲にすることなく、各リリースのバージョンに何千もの変更を含めることができます。
3.ツールの重要性カーネル開発はBitKeeperというソースコード管理システムが登場するまで、開発者の範囲を拡大しようとしていたが、ほぼ一夜にしてコミュニティのやり方が変わり、Gitの出現は再び飛躍をもたらした。適切なツールがなければ、カーネルのような項目は正常に動作せず、自身の重量に押しつぶされます。
4.強力な世論誘導モデルが重要一般的に、ある開発カレーが提出した変更を拒否した場合、この変更は統合されません。開発者が数ヶ月前に提出したコードがメールリストで拒否されたことに気づいたら、それは非常にがっかりします。しかし、これはカーネル開発が多くのユーザーと問題に適応できることを保証しています。他のグループを犠牲にして変更できるユーザーコミュニティはありません。マイクロシステムからスーパーコンピュータまでサポートできるコードライブラリがあり、多くのシーンに適用できます。
5.強力な「回帰なし」ルールも重要約10年前、カーネル開発コミュニティは、指定されたカーネルが特定の環境で正常に動作すれば、後続のすべてのカーネルバージョンもこの環境で正常に動作することを約束しました。コミュニティが変更が他の問題を引き起こしたことを発見した場合、彼らはすぐにこの問題を解決します。このルールは、システムのアップグレードが元のシステムを破壊しないことを約束します。したがって、メンテナンス者は、新しい機能を開発するときにこのカーネルを継続したいと考えています。
6.企業が開発プロセスに参加することは重要ですが、カーネル開発を主導できる企業はありません。2014年12月のバージョン番号3.18のカーネルリリース以来、500社近くの個人開発者約5062人がLinuxカーネルに貢献しています。多くの開発者は、彼らの仕事のために報酬を得ていますが、彼らの変更は彼らの会社のためにサービスされています。しかし、どの会社も具体的なニーズに応じてカーネルを改善することができますが、他人を傷つけたり、カーネル機能を制限したりすることを主導する会社はありません。
7.プロジェクトに内部境界があるべきではないカーネル開発者は、カーネルの特定の部分に集中する必要がありますが、修正が合理的であれば、どの開発者もカーネルの任意の部分を修正することができます。したがって,問題は回避ではなく発生時に解決される.開発者は、カーネル全体について様々な見方を持っており、最も頑固なメンテナンス者であっても、指定されたサブシステムに必要な改善を無期限に棚上げすることはできません。
8.重要な機能は少しずつ始まる元の0.01版カーネルは10000行のコードしかありません。現在では2日ごとに10000行以上増加しています。開発者が現在追加している基本的な、微小な機能は、将来的に重要なサブシステムに発展する可能性があります。
9.以上のように、25年間のカーネルの発展の歴史は、持続的な協力が共通の資源をもたらすことを示しており、これはあるグループだけで開発できるものではない。
2005年以来、1300社以上の企業から約14000人の個人開発者がカーネルに貢献してきた。そのため、Linuxカーネルは互いに激しい競争関係を持つ多くの会社の努力の下で、規模の大きい公共資源に発展した。