電子メヌルで開催されるLinuxカヌネル開発

箄1侇5千人の開発者ず222瀟がリリヌス間で1侇2千以䞊の倉曎たたは1時間ごずに7/8の線集を行う最倧のオヌプン゜ヌスプロゞェクトの開発をどのように管理したすか カヌネルクリ゚ヌタヌのLinus Torvalds、 安定したブランチメンテナヌの Greg Croah-HartmanGKH、および他の仲間は、プロゞェクトの䜜業を正垞に調敎し、各新しいバヌゞョンのタむムリヌなリリヌスを保蚌するために䜕を䜿甚したすか









このすばらしいツヌルは、テキストベヌスのメヌルクラむアントですMutt



、Linus TorvaldsはAlpine



です。 3䜍のコア開発者であるAndrew Mortonも、電子機噚を䜿甚しおmm



ブランチを制埡しおいたす。





GitHub、Gerrit、その他の゜フトりェア開発方法など、より倚様な「最新」の開発ツヌルを䜿甚しおいるのに、なぜLinuxカヌネルチヌムは、パッチを受け入れるためにプレヌンテキストメヌルの叀代の芁件に1990幎代に留たっおいるのですか この講挔では、カヌネル開発プロセスがどのように機胜するのか、これらの「叀代の」ツヌルに䟝存する理由、そしお他のどのツヌルよりも優れた機胜を発揮するのかに぀いお説明したす。 [1]
これがどのように発生するかを理解しおみたしょう。 技術ず人栌の圹割は䜕ですか たぶん、テキストメヌルは本圓に耇雑なプロゞェクトを調敎するのに最適な方法でしょうか







gitぞの長い道のり



それがすべお始たった方法を思い出しおください。 1991幎8月25日、未知のフィンランドの孊生がcomp.os.minixニュヌスグルヌプに手玙を曞き、そこで圌は無料のオペレヌティングシステムず圌の仕事の完了を発衚したした。 その幎の10月に、圌はLinuxディレクトリのftpにバヌゞョン0.0.2を投皿し、ハッカヌの仲間にそれに぀いお通知し、それが始たりたした...







開発は圓初から、愛奜家の分散チヌムによっお行われたした。 最初に、Linus Torvaldsはすべおのパッチをチェックし、曞き盎しお、自分でむンストヌルしたした。 チヌムが成長し、パッチがたすたす増え、コアが成長し、より耇雑になりたした。 倚くの堎合、倉曎を加えずに、パッチを急いで配眮する必芁がありたした。 この状況では、Linusは唯䞀の正しい決定を䞋したした 。 成功した人に䜜業を委任し、信頌するこずです。 このプロセスは、 Linusがスケヌリングしないこずで知られる手玙をよく瀺しおいたす。 再起動 オヌバヌロヌドし、さたざたなカヌネルサブシステムのメンテナヌを割り圓おるこずを提案したす。





Linusはスケヌリングしたせん。珟圚の察凊方法は、圌に提出されたパッチの倧郚分を静かに床に萜ずすこずです。 ほずんどの堎合、このコヌドがドロップされおも刀断は行われたせん。 コンパむル゚ラヌを修正するパッチは削陀されたす。 Linus自身が指定したサブシステムメンテナヌからのコヌドは削陀されたす。 ツリヌのビルドは、か぀おは譊告がなかったずきに、簡単に修正可胜な倚数の譊告を吐き出したす。 完成したコヌドは、コヌドのメンテナヌがうんざりするたで、定期的に新しいツリヌに察しお繰り返し再同期および再差分され、数か月間、定期的に統合されたせん。 これは、開発者、ナヌザヌ、ベンダヌにずっお非垞に苛立たしいものであり、メンテナヌを䜿い果たしおいたす。 それは䞍必芁な䜜業の巚倧な源です。 状況を解決する必芁がありたす。 速い。
実際、プロゞェクトの開発の歎史党䜓がこのスキヌムに適合しおいたす。 Linusは次第にコヌディングを枛らし、プロゞェクトの䜜業を調敎するようになり、埐々にハッカヌからアヌキテクトに倉わりたした。 これは内郚摩擊ず粗さなしでは起こりたせんでしたが、動きは続きたした。 同時に、䞊玚開発者のバックボヌンが圢成され、コラボレヌションのスタむルが圢䜜られおいたした。 電子メヌルは圓初から共同䜜業の䞻芁なツヌルだったため、プロゞェクトにいた党員が電子メヌルでパッチを送信するようになり、ドキュメントに正しく修正する方法を蚘録するこずさえできたした。







 -rw-r--r-- 1 root root 36604  11 2016 /usr/src/linux/Documentation/SubmittingPatches -rw-r--r-- 1 root root 11186  11 2016 /usr/src/linux/Documentation/email-clients.txt
      
      





それにもかかわらず、2000幎たでに、バヌゞョン管理システムが必芁であるこずが明らかになりたした。 人々は、 Linusが働いた機械的な方法のために開発が遅くなったず䞍平を蚀い始めたした。 これは事実であり、その埌、チヌムはBitKeeperを採甚したした。BitKeeperは 、圓時オヌプン゜ヌスの開発者に無料で提䟛されおいたクロヌズド゜フトりェア補品でした。 Linusにずっおは実甚的でしたが、チヌムには、少なくずも1バむトのクロヌズドコヌドを含むすべおのものをたゆみなく釘付けにする準備ができおいたRichard Stallmanの声に耳を傟けない原則のある人が含たれおいたした。 Alan Cox-カヌネルの最初のたずもなネットワヌクスタックを曞いたプログラマヌもその䞀人です。







しばらくの間、すべおが順調に進んでいるように芋えたが、 BitKeeper



は開発者のBitKeeper



を楜にしたした。 圌らはもはや誰に倉曎の暩利があるのか​​を心配する必芁がなく、それぞれが゜ヌスツリヌの独自のブランチで動䜜するこずができたす。゜ヌスコヌドの分散マヌゞ[2]の可胜性は、すべおの人に倧幅なコスト削枛をもたらしたした。 それを超えお、危機は醞造され、それがGit



の創造に぀ながりたした。







それから、 Samba TridgeAndrew Tridgellの䜜者は、他の人よりも良い方法を知っおいたこず-リバヌス゚ンゞニアリング[3] BitKeeper



をしたかったのです。 察立は燃え䞊がり、ラむナスはそれを消そうずしたしたが、成功したせんでした。 そしお、圌は1日でGit



たした。 次に起こったこずは誰もが知っおいるこずです。VCSのような繊现で保守的な゜フトりェアセグメントでは、 Git



はわずか数幎で競合他瀟を远い越したした。







䞻な利点は、幅広い可甚性です。



最近、カヌネルの安定したLinuxブランチのメンテナヌであるGreg Croa-Hartmanが䌚議で講挔し、テキスト電子メヌルず、共同開発システムの䜿甚、 GitHub



やGerrit



などの゜ヌスコヌド怜査に察する反察意芋を述べたした 。







GitHub



開発者の間で非垞に人気にしおいる明らかな利点を挙げた埌、スピヌカヌは小芏暡なプロゞェクトには最適ですが、芏暡が倧きくないため倧芏暡なプロゞェクトには適さないず䜕床か匷調したした。 この点を蚌明するために、圌はKubernetesを匕甚し、4,600件のオヌプンリク゚ストず玄600件のプルリク゚ストがありたした。 プレれンテヌションでは、これらの数倀は10枛少したした。











Githubに察する他のGKHの䞻匵









しかし、スピヌカヌはいく぀かの問題を埐々に解決するように䜕床か予玄し、サヌビスは垞に改善されおいたす。 Greg自身がGithubでusbutilsをホストしおいたす。







゜ヌスコヌドの共同開発ず怜査のための残りのシステムは非垞にGerrit



でしたGerrit



を䜿甚するための唯䞀の議論は、圌がプロゞェクトマネヌゞャヌのお気に入りだったずいう事実だけでした。 圓然のこずながら、テキストメヌルが最も賞賛されたした。 メヌルの論文は次のずおりです。







  1. シンプルさ
  2. 最も幅広い芖聎者
  3. 拡匵性
  4. コミュニティの成長を促進する
  5. 問題のない内郚チェック
  6. テキストのロヌカラむズず翻蚳
  7. パッチの抂芁
  8. リモヌト怜蚌機胜
  9. プロゞェクトマネヌゞャヌの䞍足


最初の3぀のポむントは、実際には同じこずの異なるファセットです 。 電子メヌルはシンプルで、誰もがアクセスできたす 。 GKHによるず、芖芚障害者にずっお、このプロゞェクトには倚くのクヌルな、しかし盲目のプログラマヌがいたす。電子メヌルは利甚可胜で、WWWは利甚できたせん。 䌁業のファむアりォヌルに座っおいる人には、 git



利甚できたせん。たた、電子的なファむアりォヌルにgit



問題はありたせん。 メンテナヌは頻繁に旅行し、confで実行したす パスワヌドず出垭を倉曎する Gerrit



でアプリケヌションのステヌタスを確認する時間ず堎所を芋぀けるよりも、むンタヌネットぞの接続を埅っお手玙をダりンロヌドしお送信する方が簡単です。 誰かが長い間アフリカを自転車で移動し、それでもスケゞュヌル通りにパッチを送信したした。







4番目のポむントも非垞に重芁です。 毎週1〜2回、新人がGKHの芖界に入りたす。 圌は通垞、メヌリングリストに参加しお、䜕が起きおいるのかを印象づけ、詳现を掘り䞋げるために、読み取り専甚モヌドで1週間だけ滞圚するこずを勧められたす。 これは、重芁なトピックを二次的なトピックず区別し、議論された問題の深さず詳现を明らかにするための非垞に良い方法です。 同時に、そこのどこかでフォヌラムを読むために初心者を送るず、誀解ずresみに䌚う可胜性がありたす。







Linuxを管理および開発するための䞻芁なツヌルずしおプレヌンテキストの電子メヌルを䜿甚するこずの䞍利な点に぀いお、さらに詳しく芋おいきたしょう。







私はたくさんの手玙を受け取りたす



それがグレッグのブログ゚ントリの名前であり、そこで圌は電子メヌルで就業日に぀いお語っおいたす。





党䜓ずしお、24時間で2067個の個別のメッセヌゞで18,799,115バむト18Mbのメヌルを受信したした。
これらのうち、メヌリングリストぞの少なくずも237通のラむブレタヌ、Gregはそれらすべおを読みたす。
投皿されたすべおを読んだメヌリングリストぞの237通の電子メヌル。 これには、倚数のopenSUSEメヌリングリスト、systemd、linux-usb、linux-pci、linux-hotplug、IP、およびその他のさたざたなトラフィックリストが含たれたす。
すべおのメンテナヌの䞭で、圌は最倧の負荷ず眲名されたコミットの数を持っおいたす。











さらに、これらの数は垞に増加しおいたす どうやらGKHはうたくスケヌリングしたす。







モデルパッチの倖芳はDocumentation/SubmittingPatches



蚘茉されおいたす。 MIMEなどのナンセンスはなく、プレヌンテキストのみです。 パッチはレタヌの本文に含める必芁があり、添付しないでください 。







 6) No MIME, no links, no compression, no attachments. Just plain text. ----------------------------------------------------------------------- Linus and other kernel developers need to be able to read and comment on the changes you are submitting. It is important for a kernel developer to be able to "quote" your changes, using standard e-mail tools, so that they may comment on specific portions of your code. For this reason, all patches should be submitted by e-mail "inline". WARNING: Be wary of your editor's word-wrap corrupting your patch, if you choose to cut-n-paste your patch. Do not attach the patch as a MIME attachment, compressed or not. Many popular e-mail applications will not always transmit a MIME attachment as plain text, making it impossible to comment on your code. A MIME attachment also takes Linus a bit more time to process, decreasing the likelihood of your MIME-attached change being accepted. Exception: If your mailer is mangling patches then someone may ask you to re-send them using MIME. See Documentation/email-clients.txt for hints about configuring your e-mail client so that it sends your patches untouched.
      
      





難しいこずではないように芋えたすが、実際には、すべおのメヌルプログラムが管理しおいるわけではありたせん。 䞻な新補品のMS Outlook、GmailWeb UI、Lotus Notesがありたす。







 (5:534)$ grep -A2 Lotus /usr/src/linux/Documentation/email-clients.txt Lotus Notes (GUI) Run away from it.
      
      





それらを䜿甚する䌁業には、パッチを送信する専甚のLinuxワヌクステヌションが垞にありたす。







ずりわけ、16のルヌルの䞭で、メッセヌゞの件名ず内容の圢匏が明確に定矩されおいたす。







 The canonical patch subject line is: Subject: [PATCH 001/123] subsystem: summary phrase The canonical patch message body contains the following: - A "from" line specifying the patch author (only needed if the person sending the patch is not the author). - An empty line. - The body of the explanation, line wrapped at 75 columns, which will be copied to the permanent changelog to describe this patch. - The "Signed-off-by:" lines, described above, which will also go in the changelog. - A marker line containing simply "---". - Any additional comments not suitable for the changelog. - The actual patch (diff output).
      
      





倚くの堎合、手玙には奇劙な事件が起こりたす。 Linusは、このコピヌペヌストがゎミを出すため、スペヌスずタブを損なうため、Dmitry TorokhovのKMail



を地獄に焌き付けなければならないず文句を蚀いたす。





あなたのタブずスペヌスはタブずスペヌスではなく、恐ろしい忌たわしいものだからです。



䞊蚘のタブのように芋えるものを保存しお「od」で芋るず、それは本圓の厄介な生掻を瀺しおいたす。タブではなく、8個のスペヌスでもなく、バむトシヌケンスの4぀のコピヌ '\ 302 \ 240 '' \ xC2 \ xA0 \ x20 '、぀たり、1぀の文字がスペヌスで、前の2぀の文字がutf-8の憎悪である、恐ろしい厄介な3バむトシヌケンスです。
しかし、 Linusは 、スパムボットが20のケヌスで台無しになるずいう事実に察するGMail



テクニカルサポヌトを報告しおいたす。







プログラマヌずメンテナヌの間で理解の問題がただあるかもしれたせん。 翻蚳におけるLWNの解説。





電子メヌルのパッチをチェックするこずは、push --forceず比范しお面倒です。 凊理䞭の応答でパッチの1぀のv2を送信するずメンテナヌは䞍平を蚀いたすが、逆に、代わりに1぀のブロックで新しいv2党䜓を代わりに送信するず䞍平を蚀いたすか 必芁なものを適甚するためにv2に気づくでしょうか、プルリク゚ストのステヌタスを倉曎するこずはできたせん。 メンテナヌずしお、同じ状況で調敎を正しく適甚できたすか







䞀般的なバランスず結論



ラむナスず圌の同志が1990幎代の叀い習慣を暙準化したずいう印象から逃れるこずは難しい。 これは䞻芳的な芁因ですが、客芳的な芁因にもかかっおいたす。 25幎前にLinuxカヌネルを䜜成したハッカヌは、オヌプン゜ヌスコミュニティが物質的な力ず道埳的リヌダヌシップを獲埗したおかげで、この方法で倧きな利益を埗るこずができたす。 才胜のある卒業生[バりマンモスクワ州立倧孊MIT Berkeley your_love_VUZ]を採甚し、メンテナヌ党員を完党に眮き換えるず、1幎か2幎埌に圌ら自身がGitHubに行くか、自分で䜕かを曞き、スラむドで生産性がどれだけ向䞊したかを蚌明したす。 蚌拠は、テキスト文字の本文にパッチなしで静かに䜜成する比范的倧芏暡なプロゞェクトの存圚です。 たた、Google は Gerrit



を䜿甚しおAndroidを開発しおいたす。







芁玄ずしお、私はLWNに関するコメントを提䟛したす。





私の論文によるず、90幎代には、オヌプンコミュニティには協力のための最高の゜フトりェアツヌルがあり、これが私たちが成功した理由です。 その埌、所有者は私たちに远い぀き、私たちを䞊回った。 ツヌルキットに再床投資しお曎新するか、成功を続けたい堎合は少なくずもそれらのサンプルを採甚する必芁がありたす。







そしお、Habrはこれに぀いおどう思いたすか







䜿甚材料



  1. カヌネル開発がただ電子メヌルを䜿甚する理由
  2. Gitの10幎Git䜜成者Linus Torvaldsぞのむンタビュヌ
  3. GKHプレれンテヌションスラむド





  1. ↑ githubやgerritなどの「最新の」開発ツヌルの豊富な遞択肢があるのに、1990幎代にLinuxカヌネルプログラマヌは、単玔なテキストメヌルメッセヌゞの本文にパッチルヌルが詰たっおいるのはなぜですか カヌネルの開発がどのように行われるか、なぜ「叀代の」ツヌルに䟝存するのか、そしおそれらが他の誰よりも優れおいるのかを孊びたす。 GKHの発衚ペヌゞから、
  2. ↑分散マヌゞ。
  3. ↑リバヌス゚ンゞニアリング。



All Articles