NetBSD/pkgsrc開発者になる方法


はじめに

2019年3月1日にNetBSD開発者となり、syspkgとInstallationの作業をすることになりました。大学院での研究成果について日本NetBSDユーザーズグループ(JNUG)のBoFで発表したところ「いっそ開発者になってアップストリームをいじればいい」と言われてから半年以上が経ち、2019年1月からようやく重い腰を上げて開発者申請をしたという経緯がありました。

NetBSD自体がマイナーなOSであり、その開発者になるにはどうしたらいいかという文書は日本語で書かれている印象がありません。そこでこの文章を書いておくことにしました。pkgsrc(7)のCVS repositoryに直接commitするにも同じくNetBSDの開発者申請が必要ですがここではその話はしません。しかし手順そのものは同じですのでぜひ参考にしていただければと思います。

NetBSDを使う

まずはNetBSDを使わないと話が始まりません。用途・動機はなんでもいいと思います。pkgsrc(7)であればGNU/Linux distributions・FreeBSD・OpenBSD上で利用できるので、OSをインストールして使うより敷居は高くありません。なにかしらのFLOSS開発者なら、FLOSSを配布する手段のひとつとしてpkgsrc(7)を選んでもいいでしょう。

ここでNetBSDを「使う」と書いたのは言葉の解釈を広げるためです。PCや仮想マシンにインストールすること、ソースコードをダウンロードして読んでみること、なにかしらのUnix環境でソースツリーをビルドしてみること……などのように様々なケースを考えられます。

僕の場合

大学3年生冬の研究室配属ののち、研修で触ったのがNetBSDでした。卒業論文のために書いたプログラムはNetBSDに完全に依存していて、修士論文もまた同様でした。これは自発的に(無論、研究テーマを決めたのは自分自身)NetBSDを使い始めたというわけではなく、なりゆきでそうなったと言うのが正しいと思います。

おそらくはじめに使わされたのがOpenBSDならOpenBSDの開発者を目指したと思います。UbuntuならUbuntuに貢献しようと思い立っていたのかもしれません。理由はとにかく、まずは使わせること。それからFLOSSの文脈をきっかけになにかしらの貢献をさせるよう仕向けることが、開発者を増やすもっとも堅実な方法ではないでしょうか。

できそうなことを見つける

NetBSD/pkgsrc(7)を使っていく中で、少なからず不便に思った点や困った点が見つかるときがきます。それはカーネルやユーザランドプログラムの不具合に遭遇してしまったときかもしれませんし、求めているデバイスドライバが存在しないときかもしれませんし、ドキュメントが古くて調べものに時間がかかってしまったときかもしれません。そのとき、その問題を自分で解決したいと思ったのであれば、それはThe NetBSD Projectへ参加する動機になるでしょう。

Do It Yourselfはどこから?

なお、ここには飛躍があります。それは、利用者が公開されているソースコードを頼りに自力でなんとかしようとするだろうという前提で書かれているということです。「ただ使うだけ」の状態から「いざとなったら自分で直してみよう」という気持ちにさせるには、なにかしらの訓練が不可欠ではないかと考えています。これは難しいことですしどうすればいいのかもよくわかりません。本稿の範囲外です。

Project proposals for NetBSD

NetBSD WikiのProject proposals for NetBSDには未解決・進行中のプロジェクトの一覧が載っています。もしあなたが問題解決好きなエンジニアであればこの中から自身のスキルと嗜好に合ったものを探してみるといいでしょう。しかし中には古い情報が含まれている可能性もあります。興味のあるプロジェクトを見つけたら、メーリングリストに興味がある旨を投稿するのが一番です。

Google Summer of Code

NetBSDのプロジェクトの中にはGoogle Summer of Codeに応募して取り組められるものもあります。GSoCに参加したくてかつNetBSDに少しでも興味があるのであれば、良いとっかかりになるのではないでしょうか。https://wiki.netbsd.org/projects/gsoc/を参照してください。

僕の場合

修士論文で書いたプログラムがNetBSDのソースツリーの一部に依存しており、事実そこだけforkしている形になっていました。しかしforkingの弊害、つまりアップストリームの変更に追従していくのが大変という問題に気づきました。当時はアップストリームのコードとの差分をpatchとして保持しておくという考えに至らず、上流のコードが更新されたらforkしたコードの修正をまたゼロからやり直すという作業をしていたのです。図らずとも、この無知が直接上流のコードをいじってしまいたいというモチベーションを高める要因になっていました。

できそうなことをある程度こなす

やりたいこと・やってみたいことが見つかったら、それを実際にやってみます。そしてその成果をなんらかの形で共有します。共有する方法はなんでもいいです。SNSでシェアしてもいいですし、FLOSS系のイベントやカンファレンスで少し時間をもらって発表してもいいです。とにかく、なんらかのやりたいことがあって、それを現実に実行していると他の開発者に伝えることが重要です。おそらくもっとも理解が深い人からの反響を得られるのはメーリングリストに成果や途中経過について投稿してみることでしょう。

またsend-pr(1)あるいはNetBSD Problem Reportsを通じて不具合の報告やパッチの投稿ができます。プロジェクト公式のフォームからなにかしらの貢献をするとそれが実績として認められ、開発者申請のアピールポイントにもなるようです。コミット権を持っていない人が自分のコードをアップストリームに反映させられる手段のひとつですので、ぜひ活用してみてください。

僕の場合

成果をAsiaBSDConや日本NetBSDユーザーズグループのBoFで発表しました。成果物があまりにも特定分野に偏りすぎているがために特定のユーザコミュニティ内で成果発表をしないとあまり意味がない場合もあります。GNU/LinuxやLinuxカーネルならまだしも、*BSDはまさにこの典型です。

スポンサーを探す

最難関の手順です。まずこの時点で誰がNetBSDの開発者なのかを把握していないといけません。そのためにはSNSだけでなく対面して会える現実世界でのカンファレンスやイベントに出向く必要もあります。スポンサーになってくれるかを開発者に尋ねて、OKをもらってください。

ここからNew NetBSD developer application procedureの流れに沿って動くことになります。この時点ではまだ"Existing members decide to sponsor a potential member."の途中です。

後々の事務手続きに必要になるので、この時点でスポンサーにPGP公開鍵へ署名してもらうといいでしょう。NetBSDでは現実世界で直接会い、パスポートや社員証といった顔写真付きの公的な身分証明書を確認してはじめて公開鍵に署名するというやりとりをします。Debian GNU/Linuxのチームがこれと同じような厳格さで署名をするようです(『Debian -- 鍵署名 (Keysigning)』)。NetBSDのPGP公開鍵について詳しくは『NetBSD開発者のためのPGP鍵管理ガイド』を参照してください。

開発者申請する

スポンサーを1人以上集めたら、いよいよ開発者申請をします。スポンサーと相談しながらNetBSD Foundation Membership Application Formに必要事項を記入してください。以下を記入する必要があります。

スポンサーと相談してすべて書き終えたら、NetBSDのMembership committeeにMembership Application Formをメールで送ります。テキストを本文に書いてしまうといいでしょう。審査はMembership committeeによるものと既存の開発者らによるものがありますが、特に反対意見が出ない限りは審査は通るようです。が、日頃からなにかしらの成果や実績を残しておくに越したことはありません。

事務手続きをする

Membership committeeと開発者らによる審査が通ったら事務手続きをして完了です。この事務手続きはmembership agreement formに署名をしてThe NetBSD Foundationに郵送(あるいはFAX)し、PGPの公開鍵で署名された/etc/passwdのエントリとSSH公開鍵のテキストを所定のメールアドレスへ送る必要があります。ここで、署名するためのPGP公開鍵は既存のメンバーによって署名されたものでなければなりません。

郵送は国際郵便、FAXは国際FAXです。日本から送るのであればFAXが便利です。ファミリーマートのマルチコピー機では国際FAXが使えます。僕がFAXを送ったとき、いやに手続きに時間がかかるなと思いメールで問い合わせてみたところ向こうからは「FAXはまだ来ていないよ」と返ってきました。後日、このトラブルは受け取り側のFAX機が動いていなかったことが原因で起きたものだと発覚しました。このようなトラブルを避けるために、FAXを送ったら「送りましたよ」と一言メールで連絡しておくといいでしょう。

完了!

事務手続きが終われば、ソースコードへのアクセス方法やメール・チャットの基本的な使い方が書かれた電子メールが送られてきます。これでNetBSDの開発者申請は完了し、めでたくNetBSD開発者の一員となれました。スポンサーとのやりとり以外はすべて英語なので厳しい人には厳しいかもしれませんが、英語でのやりとりは多くのFLOSSプロジェクトで必須でしょうからこれに限った話ではありません。

FLOSSはライセンスを守っていればアップストリームから好きにコードをもってきて自分の思うように書き直せますが、一番効率が良いのは自分自身でアップストリームのコードをいじり・保守していくことだと思います。可能であれば積極的にコミュニティやプロジェクトに自分の成果を還元していくことはFLOSSの共有の精神に則った素晴らしい行為でもありますし、積極的に挑戦していくべきでしょう。

追記 2019/08/06

この文章の初稿は、開発者申請が通った2019年3月にその勢いのまま書いたものでした。その約半年後、2019年8月に開催されたOSC京都2019のNetBSDセミナーにて蛯原純さんに紹介されました。このとき初めて他の人がこの文章を読んでいると知って驚いたのです。いざ自分で読み直してみると妙に文があっさりというか簡潔に過ぎるという感覚を拭えませんでした。そのため少し加筆・修正を加えています。

本稿にインスパイアされた『FreeBSD developer (ports) になる方法』という記事もあるようです。ぜひご一読ください。