【LinuxConレポート】「PerfectはGoodの敵」、カーネル開発コミュニティ参加へのアドバイス
Linuxの開発者が集まる世界的な技術カンファレンス「LinuxCon Japan 2012」が6月6~8日にパシフィコ横浜で開催された。約650人と、前年の1.5倍近い登録者を集め、講演や技術セッション、ロビーでの会話など、Linux技術者による熱心なやりとりが行われた。
The Linux Foundation ジャパンディレクタ 福安徳晃氏 |
■カーネル開発コミュニティにこれから参加する人へのアドバイス
James Bottomley氏(Parallels社) |
最終日の基調講演では、SCSIサブシステムなどのメンテナーを務める主要Linuxカーネル開発者のJames Bottomley氏(Parallels社)が、「Social vs Technical Engineering in the Kernel」と題し、これからカーネル開発コミュニティに参加する人に向けたアドバイスを、ユーモアをまじえて語った。
冒頭でBottomley氏は、初期のカーネル開発コミュニティは、とにかく機能を追加することが優先で気楽にパッチが取り込まれる「西部の荒野時代」だったとふり返った。その結果、クラッシュなど信頼性の問題がしばしば起こったという。その反省から、現在ではパッチの品質に重きを置いて、多数のメンテナーによる綿密なレビューと、変更を加えるに足るだけの正当性が重視されている。
こうしたプロセスについてBottomley氏は「新しく参加する人には、威圧的に感じたり、ばかげているように見えたりするかもしれない。しかし、これまでの経験から来た意味がある」と語り、いわばISO9001のような品質管理の要件だと思ってほしいと説明した。
そのうえで、パッチの採用を目指すためのアドバイスがいくつか語られた。まず、機能追加は認められにくいので、最初はバグ修正から始めるのがよいという。
また、コーディングスタイルなどの決まりごとを守る必要性にも触れた。Bottomley氏によると「メーリングリストには他人の揚げ足を取って得意になるタイプの人もいて、コーディングスタイルの違いは格好の材料」なのだそうだ。そのためにも、パッチを送る前には、カーネルのソースに含まれるコーディングスタイルなどのチェックツールで事前にチェックしておくのが重要だと説明した。
パッチを受け入れてもらうためには、正当性について十分に説明する必要がある。そこで、先に同僚や知人に説明したり、ユーザーグループなどで発表したりということをBottomley氏は勧めた。それにより、説明の足りない部分を見つけ、自分自身の考えも深められるという。
また、Change LogにはC言語のコードと同じことを書いてもしょうがなく“なぜそうするのか”を書くこと、大きなパッチを避け一連のパッチに分割することで論理的なステップを伝えることもできることなどもアドバイスした。
さらに重点的に解説されたのが、タイトルにもある“ソーシャル”な側面だ。Bottomley氏によると、メーリングリストには一般的に、煽(あお)り屋なども登場する。そこで、そうした人を無視し、影響力のある重要な人を見つけて話をするのが重要だという。
そのためにも「(LinuxConのような)カンファレンスに参加し、重要な人に実際に会って、時にはアルコールもまじえて、自分の新機能やバグフィックスについて話してみるのがいい。面識があれば、あとでメーリングリストでも話が通じやすい。技術的な話であれば、英語ネイティブじゃない人も、意思が通じるだろう」とアドバイスした。
そのほか「アジア系の人に向けて」と前置きして語られたのが「PerfectはGoodの敵」ということだ。いわく、日本などアジア系の人は、完全なものを作り上げてから見せようと考える文化があるが、むしろ完成する前に話をするのがよいという。「完全でないパッチを投げることで、ほかの人が参加できる余地もある」とBottomley氏は説明した。
Bottomley氏は最後に、「パッチを出すときには、自信を持って出そう」と、カーネル開発者を目指す人たちにエールを送って講演を終えた。
「コードや機能だけではなく、品質や正当性に重きを置くようになった」 | 「まず身近な人に説明してみよう」 |
「カンファレンスに参加して、手助けしてくれる重要な人に会おう」 | 「PerfectはGoodの敵」 |
■「事前に気にしすぎず“Just Do It”で」
Bottomley氏の基調講演のあとは、氏を司会としてパネルディスカッション「Asian/International Kernel Developer Panel」が開かれた。
パネリストは、Arnd Bergmann氏(IBM、Linaro Project)、Chris Mason氏(Oracle、Btrfs開発者)、Herbert Xu氏(Red Hat)、Masami Hiramatsu氏(日立)。Bottomley氏の講演を継いで、Linuxカーネル開発者としての苦労やアドバイスについて口々に語った。なお余談だが、Mason氏はちょうど会期中、6月にOracleからFusion-io社に移ることをBtrfsの開発メーリングリストで公表した。
Bottomley氏がカーネル開発コミュニティでの難しい点を尋ねると、Hiramatsu氏は「日米の時差の関係で、自分のコードに関する議論が寝る時間に始まって、参加できなかったりする」ことを紹介。それに対しMason氏は「時間を置くのがいい場合もある」と返した。また、Xu氏は「同じ目的を持った人どうしで見解が違うこともあり、コラボレーションしていくためには調整が必要になる」と語った。
また、問題点とその解決方法について説明してもなかなか採用してもらえないことや、最初にひとりで完成させようとして失敗した経験、コミュニティを知るのに時間がかかることなども話された。会場からは、仕事でLinux開発していることでの会社との関係についての質問もあり、会社に対して説明責任がある苦労も語られた。
日本の開発者へのメッセージとしては、「自分が本当に必要とする分野を選び、時間をかけて学ぶのがよい」というアドバイスや、「単なる仕事じゃない。ゴルフのように楽しい」という声、「メンテナーになれるよう手助けして、実際すばらしいメンテナーになった」という経験などが語られた。
また、Bottomley氏がアジア固有の事情を尋ねると、Hiramatsu氏は「日本人は最初から100%を目指してしまうところがある。カーネル開発は継続的によくしていくプロセス」と答え、「メーリングリストでは大変なこともあるけど、パッチを出す前にはあまり気にしないほうがいい。トップレベルとのエンジニアとの議論は楽しい。“Just Do It”で行こう」と聴衆に呼びかけた。
Arnd Bergmann氏(IBM、Linaro Project) | Chris Mason氏(Oracle) |
Herbert Xu氏(Red Hat) | Masami Hiramatsu氏(日立) |
■OS技術からロボットまで、さまざまな技術セッション
会期中には、さまざまな技術セッションが開かれた。その中から一部のセッションを紹介する。なお、ほぼすべてのセッションの発表スライドが、LinuxCon Japan 2012のサイトで公開されている。
David Mandala氏(Canonical)は、組み込み機器などで使われるARM CPU版のUbuntuを紹介した。ほかのディストリビューションのARM版に比べて、ARMの中ではハイエンドの浮動小数点数などの機能に対応しているという。それに関連して、重点分野としてARMサーバーが語られた。特に、ハイパースケールと呼ばれる高集積サーバーで電力消費が膨大になるのを防ぐためにARMが使われるだろうという。さらに、それだけの台数のサーバーを管理するためのMAASやjujuといったUbuntu独自のプロビジョニングツールも紹介された。
そのほか、Android端末をモニターにつなぐとUbuntuが動く「Ubuntu for Android」や、COMPUTEX 2012でも展示された「Ubuntu TV」などを紹介。現在取り組んでいることとして、ARMv8 64bit版対応や、UEFIブートなども語られた。
David Mandala氏(Canonical) | ARM版Ubuntuの歩み |
HPのARMサーバー | Ubuntu for Android |
Jon Masters氏(Red Hat)は、同じくARM版のFedoraを紹介。主に、ARM版に固有の問題や、そのための協力者募集が語られた。
ARM用に汎用のLinuxディストリビューションを作るうえで難しい点としては、ARM社が基本アーキテクチャをライセンスし、各ベンダーがそれぞれCPUを作るため、機能などがまちまちなことがある。さらに、デバイス形態としても、組み込みボードやスマートフォン、タブレット、PC、サーバーなどさまざまなものがある。Masters氏はこれを「Linuxディストリビューションの悪夢」と表現した。
上記のUbuntu ARMは、ARMの中ではハイエンド仕様を想定した構成だが、Fedoraはいまのところ、それよりはローエンド仕様の互換性を持った構成のようだ。発表スライドでも、BeagleBoardやPandaBoard、Raspberry Piなどの低コストのボードコンピュータが紹介された。なお、ARMv8 64bit対応も進めているというが、Fedoraとしての全体構成を保つために順を追って作業する必要があると説明された。
Jon Masters氏(Red Hat) | Fedora ARM Projectの現状 |
ARMデバイスの例:PandBoard | ARMデバイスの例:文庫本ぐらいのサイズのSlimSlice |
Jesse Gross氏(Nicira)は、LinuxによるソフトウェアL2スイッチOpen vSwitchについて解説した。Open vSwitchは、L2ネットワークのフローをソフトウェア制御するOpen Flow技術に対応しており、セッションでもSDN(Software Defined Networking)が主な利用目的として語られた。
Open vSwitchは、制御をつかさどる中心となるデーモンovs-vswitchd、ovs-vswitchdの制御の下で実際にポート間転送するカーネルモジュールのopenvswitch.ko、設定情報のデータベースのovsdb-serverの3つから構成される。なお、openvswitch.koはLinux 3.3でカーネルに統合された。
セッションでは、ovs-vswitchdとopenvswitch.ko、ovsdb-serverの役割や動作について解説し、実際に学習によるフロー制御をデモしてみせた。
Jesse Gross氏(Nicira) | Open vSwitchの構成 |
Mark Charlebois氏(QuIC)は、gccコンパイラを対象に書かれているLinuxカーネルを新しいコンパラであるClang(LLVM)でコンパイルできるようにするプロジェクトについて、問題になった点や、ARMのクロスコンパイルなどについて解説した。
Hiroo Matsumoto氏(富士通)も、同じくLinuxカーネルをClangでコンパイルしたときに問題になった点や、Clangの静的解析機能によるバグ発見の試みについてセッションを行った。
Mark Charlebois氏(QuIC) | Clangの静的解析ツール |
Cong Wang氏(Red Hat)は、initramfs(カーネル起動時にドライバなどを読み込むために一時的に使うRAMディスクイメージ)を生成するツールDracutを紹介した。特徴としては、ほかの同様のツールに比べて拡張性が高いという。セッションでは、Dracutの追加モジュールを記述して、initramfsにインストールするドライバやプログラムなどを追加する方法を、kdumpのダンプをネットワーク経由で出力する場合などを例に解説した。
Cong Wang氏(Red Hat) | kdumpのダンプをネットワーク経由で出力するための設定内容 |
Hiroyuki Kamezawa氏(富士通)は、プロセスをグループ化してメモリの使用量を管理するmemory cgroup機能について、機能追加やパフォーマンス改善などの開発動向と、これから対応するべき機能や問題などを報告した。また、メモリを食うプロセスをグループに移動して停止させコアダンプさせる例などをデモした。
Hiroyuki Kamezawa氏(富士通) | メモリを食うプロセスをグループに入れて処置するデモ |
Bdale Garbee氏(HP)は、「The Business of Contribution」と題し、オープンソースのコミュニティ開発モデルと企業との関係について論じた。企業での活用として、オープンソースをベースにしたビジネスモデルの例や、オープンソースのソフトウェアに変更を加えたときに開発元に取り込んでもらうことにより開発コストを下げる効果、差別化にならない部分にオープンソースソフトウェアを使い差別化となる部分に自社開発リソースを集中する方法などが語られた。
Bdale Garbee氏(HP) | 変更を開発元に送って開発コストを下げる |
和服姿で登場したNoritsuna Imamura氏(SIProp.org)は、「Content-Centric Embedded」と題し、既存のものを組み合わせてアイデア機器のプロトタイプをすばやく作る活動を紹介。実例として、KINECTのカメラを搭載して人の顔を認識し追尾するカメ型ロボット「Auto Chasing Turtle」や、脳波センサーで測定した落ちつきぐあいで近藤科学のロボットKHR-3WLをリモート操作しブラザーのヘッドマウントディスプレイ「AiRScouter」に映されたレーダー風表示中の宝物を取る「Treasure Hunting Robot」を紹介した。また、実際にTreasure Hunting Robotを聴衆に体験してもらうデモも実施した。
和服姿で登場したNoritsuna Imamura氏(SIProp.org) | 人の顔を認識し追尾するカメ型ロボット「Auto Chasing Turtle」 |
「Treasure Hunting Robot」の実演。左が近藤科学のロボットKHR-3WL |