FLOSSプロジェクトに貢献するための手引き

私はいくつかのプロジェクトにフリーソフトウェアのメンテナとして参加している関係上、そうしたプロジェクトに貢献したいという人々から寄せられる多数の電子メールに目を通す機会に恵まれている。だがそうした方々の大部分は、Free/Libre/Open Source Software(FLOSS)のカルチャについて何も知らない人が占めているようだ。よってここでは、開発者を目指す人間が心得ておくべきFLOSS世界の慣習や常識および、FLOSS系プロジェクトへの貢献法について、いくつかのヒントを解説することにしよう。

FLOSSコミュニティに参加するにあたっては、バグレポートであれ、コード開発であれ、あるいは何らかのアドバイスをするのであれ、必要な情報を収集して内容を理解する能力が不可欠である。その際には、電子メールの交換やIRCのチャットに頼るよりも、既存のドキュメントの形でまとめられている情報を探す方が効率的だ。これは一般的なトピックスについて、とくに当てはまる。

プロジェクト宛に質問を出すのは、事前にあらゆるリソースをあたってからにしよう。こうしたリソースを探すには、Eric S. Raymond氏がまとめた『Asking smart questions』というドキュメントが参考になるし、この中には質問をする際のマナーなども紹介されている。また自分が使い慣れた検索エンジンを活用して、目的とするプロジェクトのメーリングリストのアーカイブや関連するWikiなどを探すのも1つの手だろう。

自分で探せる範囲には情報が無かった場合や、特殊な知識が必要であれば、そのときは遠慮せずに経験者のアドバイスを求めよう。FLOSSの人々は、必要なドキュメントへのリンクを喜んで教えてくれるはずだ。ただしそうした有用な情報の多くは、これらの人々が手間と暇をかけて収集してきたリソースであり、情報提供者の好意に応える気があるならば、まずは教えてもらった情報に自分で目を通すことが最低限の礼儀だろう。

次に重要なことは、これから貢献しようとするプロジェクトのソフトウェアを、あらかじめ実際に使ってみておくことだ。ソフトウェアの構成や用途などは、実際に使うことでより深く理解できるものであり、自分がどのような貢献ができるかのヒントをつかめる場合もあるだろう。その際には、ソースツリーのトップレベルにある関連ファイルに目を通すのを忘れてはいけない。通常こうしたファイルには、README、CONTRIBUTING、HACKING、TODOなどの名前が付けられている。またプロジェクトのコードリポジトリから最新版のソースを入手できればベストだが、最新版のソースアーカイブでもいいだろう。

メンテナとのコンタクト

必要な情報の確認が終わったら、次は、プロジェクトへの新規開発者の参入を仲介してくれる責任者を捜し出す必要がある。そのための方法は、プロジェクトごとに異なるのが普通だ。IRCが窓口となっている場合もあれば、メーリングリストが常用されている場合もある。また規模の小さいプロジェクトだと、窓口担当者が1人しかいないケースも多い。具体的に何をすればいいのかは、プロジェクトのWebサイトや最終セクションで紹介されているファイルを参照すればいいだろう。また、たとえ自分が今すぐ作業に取りかかれる状況にあっても、そうしたタスクを他の参加者が現在手がけている最中であったり、あるいは過去に既に行われている可能性もあるので、その辺を確認しておくことも必要だ。

コンタクトを取る最適な方法が確認できたら、次は、相手に送るメッセージを書き起こす必要がある。その際には、自分にできることと、やりたいことを明確に記述しておかなければならない。文面については、業務用の書簡ではないので過剰に丁寧にする必要はない。同僚や仲間に宛てて書くような文体で構わないが、適度に敬意を払った文面にすることも忘れないようにしよう。

例文:

Hello Leslie,(Leslie様、はじめまして。)

In your job advertisement for GNU fdisk on Savannah you are asking for new developers. While I have not contributed to a free software project before, I have qualifications in C and believe that I can do something useful.(SavannahのGNU fdiskに関する新規開発者の募集要項を見た者です。私はこれまでにフリーソフトウェアのプロジェクトに参加したことはないのですが、Cでの開発能力はあるので、何らかの貢献ができるかと思ってメールをしました。)

I’m interested in helping with the user interface parts. Perhaps a completion framework would be useful? A similar thing already exists in many other software packages.(私が興味を持っているのは、ユーザインタフェース部です。completion frameworkを導入するといいと思うのですが、どうでしょう? 他のソフトウェアパッケージでは、同様のものが既に存在しています。)

Can you give me a few hints on tasks that would fit my interests?(この件に関して何かお考えがあるようでしたらお聞かせください。)

Happy hacking,(それでは楽しいコンピュータライフを。 )

Tom

英語として多少の問題があっても気にしてはいけない。私の知っている限り、読まされる英文にミスがあるのは堪忍できない、というFLOSSの人間に出会ったことはない。

タスクの選択

協力者を募集しているタスクの一覧を入手したら、次に行うのは、自分が一番貢献できる分野を選び出すことだ。その後に最新の開発者用ソースをダウンロードし(通常はCVSSubversion、GNU Archなどのリビジョン管理システムから入手可能)、必要な変更を加えることになる。コーディングのスタイルやその他の規約については、必ずプロジェクトのポリシを遵守しよう。

自分の加えた変更が世間に公開できるレベルに達していると判断したら、新旧ファイル間の変更箇所をパッチという形態にまとめる必要がある。ディストリビューションアーカイブやプロジェクトのスナップショットを扱っている場合は、自分が作った変更バージョンとの比較用にpristineバージョンを用意しなければならない。そして変更前後のバージョンを識別できる名前を付けてから、下記のdiffコマンドにより比較をする。

diff -Napur project-3.2.pristine project-3.2.modified > my.patch

リビジョン管理システムを使っている場合は、変更箇所を表示させる専用コマンドが利用できる。

CVS: cvs diff > my.patch
Subversion: svn diff > my.patch
GNU Arch: tla changes > my.patch

完成したパッチファイルは、プロジェクトのメーリングリストにポストするか、新規パッチの管理を担当している開発者に提出することになるが、その際には必ずプロジェクトのガイドラインを再確認しておこう。また提出後のパッチについては何らかのレビューが行われるのが普通で、問題が発見された場合は、その修正が求められるはずだ。その際には指示どおりに問題点を修正すればよいが、パッチは新規に作り直す必要がある。最終的なレビューに通過すれば、自分の行った変更がプロジェクトのソースとして正式登録されることになる。

まとめ

FLOSSコミュニティに参加して貢献することは難しいことではない。ただしその際には、相手に対して敬意を払い、礼儀を守り、プロフェッショナルな態度で接することが大切であるが、これは単に頭で分かっているだけでなく実際の行動で示す必要がある。こうした点を心得ておけば、プロジェクト固有の要件は別として、未知の技能をそれほど多く取得する必要はない。真剣に取り組む意志と実際に活動する意欲が自分にあることを示せば、プロジェクトの人間は喜んで初心者に必要なサポートをしてくれるはずだ。

NewsForge.com 原文