目次
フリーソフトウェアプロジェクトがどのようにして始まるのかについては、 Eric Raymond が説明しています。彼は、今や超有名になった文書 「伽藍とバザール (The Cathedral and the Bazaar)」 の中で次のように述べています。
よいソフトはすべて、開発者の個人的な悩み解決から始まる。
(http://www.catb.org/~esr/writings/cathedral-bazaar/ より引用。日本語訳は http://www.tlug.jp/docs/cathedral-bazaar/cathedral-paper-jp.html)
Raymond は、決して「開発者の個人的な悩み解決」 だけがオープンソースプロジェクトの始まるきっかけだとは言っていないことに注意しましょう。 というよりは、プログラマ自身が問題の解決に関心を持っているときに よいソフトウェアが出来上がることが多いと言っているのです。 フリーソフトウェアを作り始める動機としていちばん多いのが 「個人的な悩み解決」だったということでしょう。
現在でも同じ理由で始まるフリーソフトウェアプロジェクトは多いでしょうが、Raymond がこの文章を書いた 1997 年当時に比べるとその割合は少なくなっています。 現在では、巨大な中央管理型のオープンソースプロジェクト (営利団体が管理するものも含む) を最初から作ろうとする空気があります。 一匹狼のプログラマが個人的な問題を解決するためにガシガシ書いたコードが 結果として広く受け入れられるということは今でもあるでしょうが、 いまやそれだけではなくなったということです。
しかし、Raymond の指摘は今でも洞察に満ちています。 ソフトウェアの作者自身がそのソフトウェアに興味を持っているというのは、 成功するために必要不可欠なことです。なぜなら、 彼らは自分自身でそれを使うことになるからです。 もしそのソフトウェアが期待通りに動かなければ、 日々それを使用している作者は不満に思うことになるでしょう。 たとえば OpenAdapter プロジェクト (http://www.openadapter.org/) を考えてみましょう。これは投資銀行 Dresdner Kleinwort Wasserstein が始めたオープンソースのフレームワークで、 さまざまな金融情報システムを統合するためのものです。 どう考えても、これは「開発者の個人的な悩み解決」 のために作られたものとはいえないでしょう。 どちらかというと「制度上の問題を解決」するためのものです。 しかし、この問題はその機関とパートナーの経験から直接くるものです。 したがって、もしこのプロジェクトがうまくいかなければ、それが直接影響することになるでしょう。 このようなプロジェクトは、よりよいソフトウェアをうみ出すでしょう。 なぜなら、あるべき方向に導こうとみんながフィードバックを行うからです。 プログラムというのは、見知らぬ誰かが彼ら自身の問題を解決できるように書くものではありません。 最初は自分たち自身の問題を解決するために書かれます。 そしてそれがみんなと共有されるようになります。 「問題」を病気にたとえると、ソフトウェアは薬のようなものです。 流行病を完全に根絶するために薬をばらまくのと同じように、ソフトウェアを配布するようになります。
本章では、新しいフリーソフトウェアプロジェクトをスタートさせる方法を扱います。 しかし、本章にかかれている内容の多くは、 保険所が薬を配布するときの方法と似ていることでしょう。 両者の目標はよく似ています。薬の効能ははっきり示さないといけないでしょうし、 それを本当に必要とする人に手渡さないといけないでしょうし、 またそれを受け取った人は薬の扱い方を知っていなければなりません。 しかしソフトウェアの場合はさらに、 薬を改良するための研究に参加してもらうように患者を勧誘するという作業もあります。
フリーソフトウェアの配布作業は、通常の2倍の作業量となります。 ソフトウェアのユーザを獲得すると同時に、開発者も獲得しなければならないからです。 これら2つは決して競合するものではありません。 しかし、プロジェクトをどのように見せるかという点において、これは少々複雑な話になります。 ユーザと開発者の両方に対して有用な情報もあれば、 そのどちらか一方にしか役立たない情報もあります。 これら2種類の情報の割合には気をつける必要があります。つまり、 読み手が時間をかけて熱心に読めば読むほど、 それにあわせた詳細な情報が得られるようになっていなければなりません。 努力すればするほど、それに対する見返りが得られるべきです。 ユーザ向けと開発者向けの情報がうまく関連していなければ、 人はそこに参加する意欲を失ってしまうでしょう。
ここで登場するのが、見栄えよくするという問題 (appearances matter) です。 プログラマという人種は、これをあまり好まないようです。 見栄えなんかよりもその本質にこだわるという、プロとしてのプライドがあるからです。 多くのプログラマはマーケティングや広報活動を毛嫌いしているようだし、 プロのグラフィックデザイナも「プログラマって人たちはいったい何を考えているのか」 と恐れているようです。
これは残念な話です。見栄えのよさもその本質の一部であり、 プロジェクトをどのように見せるかも本質の一部であるからです。 たとえば、あるプロジェクトの存在を知った人が最初に目にするのは、 そのプロジェクトのウェブサイトの見た目です。 実際に何が書かれているかとかどこにリンクされているとかよりも前に、 まずそのウェブサイトがどんな感じかということが目に入るわけです。 おかしな話だと思われるかもしれませんが、 第一印象っていうのは結構重要なものなのです。 見た目に気を使って作ったか否かにかかわらず、そのサイトの見た目は人に何らかの影響を与えます。 見た目に気を使って作っているかどうかは、意外と簡単に見抜かれてしまうものです。 たいていの人は、そのサイトが片手間に作られたものか よく練りこまれているものかを一目見て判断することができます。 そのプロジェクトを世に出すにあたって最初に見てもらうところがウェブサイトなのですから、 そのできばえはプロジェクト全体に大きくかかわってきます。
したがって、本章で「プロジェクトのはじめ方」 として書かれている内容の多くは、見栄えの問題も含めたものであることを念頭においておきましょう。 プロジェクトのウェブサイトは (エンドユーザと開発者の) 2種類の人たちが利用するものなので、 どちらを対象としたものなのかをはっきりさせる必要があります。 本書はウェブデザインの専門書ではありませんが、 ひとつだけ重要な法則を示しておきます。 このようにさまざまな相手 (部分的に重複することもあるでしょう) を対象とするときは特に重要なことです。 リンク先に何があるのかが、リンクをクリックしなくても大まかにわかるようにしておきましょう。 たとえば、ユーザ向けのドキュメントなのか開発者向けのドキュメントなのかが、 リンク先ではなくリンクそのものを見ただけで 判断できるようにしておくべきです。情報を提供することは、 プロジェクト運営のひとつの側面になります。そして、それは同時に安心感を提供することにもなります。 あるべき場所に普通に情報が提供されているというだけで、 そのプロジェクトに興味を持っているユーザや開発者は非常に安心します。 「このプロジェクトはやるべきことを行い、想定される質問に対応し、 その質問に対する答えをできるだけ簡単に得られるようにしている」という努力が見えるからです。 このような気合を見せることで「このプロジェクトは決してあなたの期待を裏切らない」 というメッセージを送ることができます。それこそが皆が聞きたいメッセージです。
オープンソースプロジェクトを始める前に、ひとつ忠告しておきます。
まずは周りを見渡して、同じようなプロジェクトが既に存在しないかどうかを確認しましょう。 あなたが今まさに解決しようと思っている問題を、 別の誰かがもっと前に解決しているという可能性は大いにあります。 別の誰かが同じことをやっていてそれをすでにフリーなライセンスで公開しているのなら、 あえて車輪の再発明をする必然性はありません。 もちろん、例外もあります。自分の勉強のためにプロジェクトを開始するのなら、 既存のコードは助けにならないでしょう。あるいは これからはじめようとしているプロジェクトがあまりにも特定の分野に特化したものであり、 他の人が同じことをしている可能性がゼロに等しい場合などもあるでしょう。 しかし通常は、あえて周りを見渡さない理由はありません。 見渡すことで得られる利益はかなりのものになるでしょう。 一般的なサーチエンジンで結果が得られなければ、 http://freshmeat.net/ (オープンソースプロジェクトに関するニュースサイト。 詳細は後ほど説明します) や http://www.sourceforge.net/、 そして Free Software Foundation のフリーソフトウェアディレクトリ (http://directory.fsf.org/) を調べてみましょう。
そのものずばりのものが見つからなかったとしても、 よく似たものが見つかるかもしれません。 そんな場合は、そのプロジェクトに合流して必要な機能を追加するほうが、 1から作り直すよりもいいでしょう。
まわりを見渡してみたけれど望みどおりのものが見つかりませんでした。 ということで、結局新しいプロジェクトを始めることになりました。
さて何をしたらいいのでしょう?
フリーソフトウェアプロジェクトの立ち上げ時に最も厄介なのは、 個人的なビジョンをみんなにわかる形に置き換えることです。 あなた (あるいはあなたの属する組織) にとっては何がやりたいのかは明白でしょう。 しかし、そのプロジェクトの目標が何なのかを一般にもわかるように表明することは、 それなりに大変な作業です。しかし、これは基本的なことなので、 時間を割いてでもやる必要があります。 あなた (そして共同でプロジェクトを立ち上げた他のメンバー) は、まず「そのプロジェクトがどんなものなのか」「何をやりたいのか」 「何をやらないのか」といったことをきちんと把握し、 それを表明する必要があります。 普通は、これはそれほど困難なことではありません。 しかし、この作業によって、暗黙の了解であったことや意見の相違が浮かび上がってくるかもしれません。 それでいいんです。後になってからそれが判明するよりも、 早いうちに見つけてしまったほうが解決しやすくなります。 この作業が終われば、次にすることは 一般公開用のパッケージを作成することです。 これは、ぶっちゃけて言うと単純でつまらない骨折り仕事です。
何がそんなに面倒くさいのかというと、その作業の大半が、既にみんなが知っている —ここでいう「みんな」とは、これまでずっとプロジェクトにかかわってきた人のことです— ことをまとめ上げて文書化するということだからです。 つまり、その作業を実際に行う人には直接的なメリットは何もないのです。 彼らにとっては「このプロジェクトは……」というような README ファイルは不要ですし、もちろん設計文書やユーザマニュアルなんかも不要です。 ソフトウェアをソースで配布するときにみんなが標準的に使っているような コードツリーを構成する必要も感じていないでしょう。 別にディレクトリ構成がどうであっても彼らは気にしません。 だってもうそのコードの内容を熟知しているのだし、 コードが動き出せば、あとはどう使えばいいのかも知っているわけですから。 彼らにとっては、そのプロジェクトの基本的な設計方針が文書化されていなくても平気です。 だってそれは彼らの頭の中にちゃんとあるのですから。
一方、新参者にとってはそのようなドキュメントは必須です。 とはいえ、幸いなことにすべてのドキュメントが一度に必要となるわけではありません。 プロジェクトを公開する前に、あらゆるリソースを提供できるようにしておく必要はありません。 理想を言えば、新しいオープンソースプロジェクトを始めるときには 設計文書や完全なユーザマニュアル (今後実装予定の機能についての説明も含む)、 複数プラットフォームで動作するきれいにパッケージされたコードなどがそろっているといいのでしょう。 しかし現実的には、これらをばっちりそろえることは手間がかかりすぎます。 とにかく一度プロジェクトを始めてしまい、 プロジェクトが動き出してから協力者を探すという手もあるでしょう。
しかし、必要なのは何なのかといえば、 見栄えの調整に十分に力をいれ、新入りさんがプロジェクトになじみやすくすることです。 ちょっと面倒な作業ですが、これを 新規プロジェクトを立ち上げる際に最低限必要な動力と考えてみましょう。 新入りさんが「このプロジェクトに対して何らかのかかわりと持とう」 と考えるために必要なエネルギーの閾値のことを、どこかの誰かが ハクティベーション (hacktivation) [10] エネルギー と呼んでいました。ハクティベーションエネルギーが低ければ低いほどいい、 というわけです。あなたが最初に行う作業は、 プロジェクトのハクティベーションエネルギーを下げて いろいろな人たちがプロジェクトに参加しやすくすることとなります。
以下の各項では、新しいプロジェクトをはじめるにあたって重要となる内容について個別に説明します。 そのプロジェクトをはじめて知った人が遭遇するであろう順に並べていますが、 もちろんこのとおりの順で作成しなければならないというわけではありません。 これらの項目を、チェックリストとして用いるといいでしょう。 プロジェクトをはじめる際にはこれらの各項目が網羅されていることを確認しましょう。
どこかの誰かがあなたのプロジェクトのことを聞きつけたとしましょう。 おそらく、何かの問題を解決するためのソフトウェアを検索しているときに見つけたのでしょう。 彼らが真っ先に目にするのは、そのプロジェクトの名前です。
すばらしい名前をつけたからといって、 そのプロジェクトの成功が約束されるわけではありません。 また、変な名前をつけたからといって それだけの理由でプロジェクトが失敗するというわけでもありません —もちろん、あまりにも マズい名前をつけてしまったら悪影響があるかもしれません。 しかし、わざわざプロジェクトを失敗に持っていくようなことはしないだろう という前提の下で話を進めます。 ただ、(あまりにも不真面目だったり覚えにくかったりといった) 変な名前をつけてしまうと、そのプロジェクトの利用に踏み切るまでに 時間がかかってしまうかもしれません。
よい名前とは、次のような条件を満たすものです。
そのプロジェクトが何をするものなのか、 あるいは少なくとも何に関するものなのかがはっきりわかること。 そうすると、名前を聞いただけで何をするものなのかが判断でき、 名前を覚えてもらいやすくなります。
覚えやすいこと。 ここで、インターネットのデフォルト原語が英語となっている という事実を無視することはできません。つまり「覚えやすい」 とは「英語が読める人にとって覚えやすい」ということです。 英語のネイティブスピーカーの発音に基づくだじゃれを用いた名前などは、 英語を母国語としない多くの人たちにとってはわかりにくいものとなるでしょう。 ただ、それが人の心をひきつけるほど印象的なものならば だじゃれを使用する価値もあるでしょう。 英語を母国語としない人たちからみると、 だじゃれを用いたプロジェクト名を見てもその読み方を想像しにくくなる ということを覚えておきましょう。
既存の別のプロジェクト名と重複しない、 そして商標権を侵害しないものであること。 これは、礼儀の問題であると同時に法的にもよい考えです。 別のプロジェクトと混同されてしまうようなことは望ましくないでしょう。 ネット上ですでにさまざまな情報が流れているものと同じ名前にしてしまうと、 そのプロジェクトの情報を追いかけにくくなります。
あなたが考えているのと同じ名前のプロジェクトが既に存在するかどうかを調べるには、 まずは周りを見渡すことから項 で示したリソースを使用するといいでしょう。 登録商標に関する検索は http://www.nameprotect.org/ や http://www.uspto.gov/ で行えます。
できれば、.com や .net、.org のようなトップレベルドメインが利用できる名前を選びましょう。 この中のいずれか (おそらく .org でしょう) を利用すると、プロジェクトのウェブサイトを簡単に広めることができます。 他の2つのトップレベルドメインについては単純に プロジェクトのサイトに転送させるだけにしておきます。 これにより、第三者にそのドメインを悪用される心配をなくします。 仮にそのプロジェクトのサイトを別の場所 (公開場所項 を参照してください) におくとしても、プロジェクト名のドメインは取得しておくべきです。 そして、それらのサイトからプロジェクトの本来のページに転送させるようにしましょう。 そうすることで、覚えやすいシンプルな URL を提供することができます。
プロジェクトのウェブサイトを訪れた人たちが次に見るものは、 そのプロジェクトについての簡単な説明や目標などのメッセージです。 それらを見て (たいていは 30 秒程度で)、人は そこから先に進むか引き返すかを決断します。 このメッセージは、トップページの目立つ場所に配置しなければなりません。 プロジェクト名のすぐ下に置くといいでしょう。
この声明は、具体的で内容を絞り込み、そしてなによりも簡潔でなければなりません。 たとえば、以下に引用した http://www.openoffice.org/ の記述などがよい例です。
To create, as a community, the leading international office suite that will run on all major platforms and provide access to all functionality and data through open-component based APIs and an XML-based file format. (コミュニティとして、国際的な最先端のオフィススイートを作成します。 すべての主要なプラットフォーム上で動作し、 そのすべての機能やデータに対して オープンコンポーネントベースの API と XML ベースのファイルフォーマットでのアクセス機能を提供します)
たったこれだけの文章ですが、訪問者に予備知識を与えるという意味ではこれで十分です。 "コミュニティとして (as a community)" と明記することにより、 どこかの企業が開発するものではないことを表しています。また "国際的な (international)" という言葉によって、 このソフトウェアが複数の言語や地域で動作することを示しています。 そして "すべての主要なプラットフォーム (all major platforms)" とあることから、おそらく Unix、Macintosh そして Windows で動作するであろうことが読み取れます。 その他の箇所からは、インターフェイスが公開されていることや ファイルのフォーマットが一般的なものであることなどがわかるでしょう。 彼らが Microsoft Office の代わりとなるフリーソフトウェアを作ろうとしているとはどこにも書かれていません。 しかし、たいていの人は行間からその気持ちを読み取ることができるでしょう。 この声明はかなり大風呂敷を広げているように見えますが、 事実上これらは密接に絡み合っています。 また "オフィススイート (office suite)" という言葉を使用することで、その手のソフトウェアになじみがある人たちにとって かなり具体的な印象を与えることができます。つまり、 訪問者が持っているであろうと思われる前提知識 (この場合は MS Office に関するもの) を利用して、この声明を簡潔にまとめているのです。
この声明の本質は、それが対象としているソフトウェアだけではなく 「だれがそれを書いたか」にも依存します。 たとえば、OpenOffice.org があえて "コミュニティとして (as a community)" と書いているのがいい例です。 このプロジェクトはもともと Sun Microsystems が始めたものであり、 現在も同社が主なスポンサーとなっているからです。 あえてこの文言を含めることで Sun は「開発プロセスを 支配するようなつもりはない」ということを示しているわけです。 このように「そのような懸念があることを認識している」 ということを示すだけでも、あとで問題が発生する 可能性を減らすことができます。 一方、特定の企業の支援を受けているわけではないプロジェクトについては このような文言は不要でしょう。結局のところ、 普通はコミュニティベースの開発になるわけですから、 それをわざわざ示す必要はないわけです。
プロジェクトの目標についての説明 (ミッションステートメント) を読んで興味を持ったひとたちは、もっと詳細な情報を知りたくなることでしょう。 たとえばユーザ向けドキュメントや開発者向けドキュメントなど。 そして、何かをダウンロードしたくなるでしょうね。 でもその前に、まずはそれがオープンソースなのかどうかを知る必要があります。
プロジェクトのトップページで、 それがオープンソースであることを明記しておかなければなりません。 当然のことだとお考えかもしれません。しかし、 世の中にはそれができていないオープンソースプロジェクトが山ほどあります。 私がかつて見たとあるフリーソフトウェアプロジェクトのウェブサイトのトップページでは、 そのソフトウェアの配布時にどのライセンスを適用するかが示されておらず、 さらにそのソフトウェアがフリーなのかどうかさえ書かれていませんでした。 また、このような重要な情報が ダウンロードページや開発者向けページなどにしか存在しないというページもよくあります。 このような場合は、重要な情報を得るためにさらにマウスクリックが必要となってしまいます。 最もひどかった例では、ウェブサイト上のどこにもライセンスが示されていなかったものもありました。 ソフトウェアをダウンロードしてその中身を見ない限り、ライセンスの内容がわからなかったのです。
同じようなミスはしないでください。 そんなことをすると、せっかくの開発者候補やユーザ候補の多くを失うことになります。 トップページのミッションステートメント部の次に、そのプロジェクトが 「フリーソフトウェア」あるいは「オープンソース」であることを示し、 さらに具体的なライセンスについても記しておきましょう。 どのライセンスを適用すればいいかについては ライセンスの選択と適用項で説明します。 また、ライセンスに関するさまざまな問題については 章 9. ライセンス、著作権、そして特許 で詳しく説明します。
ここまでの情報を見るのに、訪問者が要する時間は1分かそれ以下でしょう。 これらの内容をもとに、彼/彼女 らがさらに次を読み進めるかどうかを決断するわけです。 次のセクションでは、最初の5分間で訪問者が見るであろう内容について扱います。
そのソフトウェアのちょっとした機能一覧 (まだ完成していない機能を一覧に含めてもかまいません。しかしその場合は "予定" とか "開発中" などとはっきり示して置くようにしましょう)、 そしてそれを動かすために必要な要件についての説明が必要です。 機能一覧/要件一覧は、そのプロジェクトについて誰かに聞かれたときに 答えるためにまとめたものと考えるといいでしょう。 これは、単にミッションステートメントの内容をより深く掘り下げたものと考えてもかまいません。 たとえば、ミッションステートメントで次のように説明したとすると、
全文検索用のインデックスを作成し、 高機能な API つきのサーチエンジンを用意します。 これらを使用することで、 大量のテキストファイルに対する検索処理をプログラマが行えるようにします。
機能一覧、要件一覧でその詳細を説明することによって ミッションステートメントの範囲を明確にします。
機能
プレーンテキスト、HTML および XML の検索
単語あるいはフレーズによる検索
(予定) あいまい検索
(予定) インデックスの差分更新
(予定) リモートのウェブサイトのインデックス化
要件
Python 2.2 以降
インデックス作成用のディスク領域 (元のデータの約2倍の大きさ)
これらの情報によって、訪問者はそのソフトウェアが自分の希望を満たすものかどうかを判断します。 また場合によっては開発者としてプロジェクトに参加することを検討してくれるかもしれません。
そのプロジェクトがいったい何をやっているのか、訪問者たちはきっと気になることでしょう。 特に新しいプロジェクトの場合は、 そのプロジェクトが掲げている目標のうち 現在どれくらいが達成されているのかが気になるところです。 十分に成熟したプロジェクトの場合に気になるのは、 「そのプロジェクトが現在活発に保守されているのか」 「どれくらいの頻度で新しいバージョンがリリースされているのか」 「バグレポートに対する反応の速さはどれくらいか」 などとなります。
これらの質問に答えるために、開発状況を示すページを作らなければなりません。 ここには、直近の目標とそれを達成するために必要なもの (たとえば「ある特定の分野に強い開発者を募集しています」など) を表示します。また、過去のリリース履歴や機能一覧などもここに掲載するといいでしょう。 そうすることで、そのプロジェクトの「進捗状況」がわかりやすくなります。
まだできあがっていないことを恐れる必要はありません。 できあがってもいないことを変にごまかすこともやめましょう。 ソフトウェアの開発にはいくつかの段階があることを、みんな知っています。 "このソフトウェアはアルファ版です。まだバグが存在します。 とりあえずは動作するでしょう。しかし、自己責任のもとで使用するようにしてください" と言ったところで、何も恥ずかしいことはありません。 そのような段階でプロジェクトが必要としている開発者は、 「アルファ版」という説明なんかではおびえたりしません。対エンドユーザという面では、 まだできあがってもいないソフトウェアにユーザが群がってしまうほどまずいことはありません。 いったん「不安定」だとか「バグだらけだ」だとかいう評判が出てしまうと、 それを払拭するのは大変な話になります。 結局のところ、多少保守的なほうがうまくいきます。 そのソフトウェアが「ユーザが期待しているよりも安定していた」 ほうが、期待はずれだった場合よりもずっといいでしょう。 そしてそのほうが、口コミによる広がりが期待できます。
標準的な形式で、ソフトウェアのソースコードをダウンロードできるようにする必要があります。 プロジェクトを立ち上げた最初のうちは、バイナリ (実行可能) パッケージはなくてもかまわないでしょう。 ただし、ビルド手順が面倒だったり依存性が複雑だったりする場合は バイナリ版も必要です (でも、 そんなプロジェクトは開発者にとってはあまり魅力的ではありません)。
配布形態は、便利で標準的なものにしましょう。 また、できるだけ利用者の負担を減らすべきです。 あなたがある病気の撲滅を狙っているなら、 薬を配る際に独自の注射器が必要となるような面倒な手段はとらないでしょう。 同様に、ソフトウェアについても標準的な手順で ビルド・インストールできるようにしておきましょう。 標準から外れれば外れるほど、 ユーザ候補や開発者候補はそのプロジェクトから離れてしまいます。
当然のことだと思われるかもしれません。 しかし、多くのプロジェクトは本当に切羽詰るまで インストール手順を標準化しようとはしないものです。 "ま、リリース予定日が迫ってきたら、 そのときにやろうよ。そんなことはいつでもできるんだから。" といった言い訳をしてしまいがちです。 彼らはわかっていないのです。そういった作業を後回しにしてしまうと、 結果的に余計に時間がかかってしまうということを。 また、それによって多くの開発者を失っていることにも気づいていないでしょう。 「誰かがウェブサイトを訪れた→ソフトウェアをダウンロードした →ビルドしようとした→失敗した→あきらめた」 ということがあちこちで積み重なっているはずです。 あきらめた本人以外には、そんなことがあったということはわかりません。 もともとあなたのプロジェクトに興味を持っていてくれたはずの人が黙って立ち去ってしまった、 そしてそれをプロジェクトのメンバーは誰も気づかないのです。
面倒だが見返りの大きい作業は、できるだけ早めに済ませてしまいましょう。 パッケージをきちんと作成すると、 プロジェクトへの参加障壁を劇的におろすことができ、 結果として大きな見返りを得ることになります。
ダウンロード用のパッケージを作成したら、それに対して 一意なバージョン番号を与えることが大切です。 それによって人は、2つのリリースのうちどちらが新しいのかを知ることになるのです。 バージョン番号のつけかたについては 章 7. パッケージの作成、リリース、日々の開発 の リリースに番号を付ける項 で、 そしてビルド手順やインストール手順の標準化については同じ章の パッケージング項 でそれぞれ詳しく説明します。
単にそのソフトをインストールして使いたいだけという人にとっては、 ソースパッケージで十分でしょう。しかし、デバッグをしたり 機能追加をしたりしたい人たちにとってはそれだけでは不十分です。 毎晩最新ソースのスナップショットを作成するという手もありますが、 開発が活発に行われているコミュニティではまだこれでも完璧だとはいえません。 常にその時点の最新のソースにアクセスしたいという人たちにその手段を提供するのが、 バージョン管理システムです。 バージョン管理システム上のソースに匿名でアクセスできるようにしておくと、 「このプロジェクトは、新しいメンバーの参加を歓迎しています」 というメッセージをユーザと開発者の両方に送ることになります。 もし今すぐにバージョン管理システムを用意できない場合は、 近々公開予定であるというメッセージを書いておくようにしましょう。 バージョン管理システムについては 章 3. 技術的な問題 の バージョン管理項 で詳しく説明します。
バグトラッカーについても同じです。 バグ追跡システムは、単に開発者たちにとって便利であるだけではなく、 周りでそのプロジェクトの進み具合を見守っている人たちにとっても便利なものなのです。 多くの人は、バグデータベースが公開されていると 「熱心に開発が進められているようだ」と感じます。 さらに、バグデータベースにたくさんのバグが登録されていればいるほど、 そのプロジェクトの見栄えはよくなります。 ちょっと直感に反しているように思われるかもしれません。でも考えてもみてください。 バグデータベースにたくさんのバグが報告されているということからわかるのは、 次の3つの事実です。まず、そのソフトウェアにたくさんのバグが存在すること。 次に、多くのユーザがそのソフトウェアを使用しているということ。 そして最後に、ユーザが気軽にバグを登録できるということ。 最初の1つはともかく、残りの2つは特に重要です。 ある程度の規模と複雑さを持つソフトウェアには、 基本的にバグが含まれているものです。本当の問題は、 それらのバグをいかにして見つけ、どのように優先順位を設定するかというところにあります。 したがって、よく整備された (バグに対する対応がすばやく、 重複したバグ報告はきちんと統一されているなど) 大規模なバグデータベースがあると、 バグデータベースがなかったりほとんど機能していなかったりするプロジェクトより ずっと印象がよくなります。
もちろん、そのプロジェクトが本当に始まったばかりなのなら バグデータベースに登録される内容はほんのちょっとだけになるでしょう。 それについてはどうにもしようがありません。 しかし、プロジェクトが始まったばかりであることがどこかにきちんと書いてあり、 かつデータベースに登録されているのが最近登録されたバグばかりであったとすると、 訪問者はそのプロジェクトがちゃんと運営されていることを読み取ってくれるでしょう。 バグの登録数があまりにも少ないからといって、心配されることはありません。
バグトラッカーに登録されるのはソフトウェアのバグだけではありません。 機能追加の要望やドキュメントの変更、 とりあえず保留になっている作業などが登録されることも多々あります。 バグトラッカーの運用方法については 章 3. 技術的な問題 の バグ追跡システム項 で詳しく説明するので、 ここでは深く立ち入りません。プロジェクトの見栄えという観点から見て大切なのは、 まずバグトラッカーが 存在する ということ。 そしてそれがプロジェクトのトップページからたどれる場所にあるということです。
プロジェクトの関係者の連絡先を知りたいという人もあらわれることでしょう。 関係者と連絡を取れるように、メーリングリストのアドレスや チャットルーム、IRC チャンネル、掲示板などの場所を示しておきましょう。 あなた、あるいはその他のプロジェクト関係者がこのメーリングリストに参加していることも明記しておきましょう。 そうすることで、「そこに行けば開発者と話すことができる」ということが伝わります。 あなたがメーリングリストに参加しているからといって、 すべての質問に答えなければならないとか すべての要望に答えなければならないとかいった義務が発生するわけではありません。 長い目で見れば、ユーザのほとんどはこのようなメーリングリストや掲示板には参加しません。 とはいえ、必要ならいつでも参加できるということを示すだけで、 安心感を与えることができます。
プロジェクトを立ち上げたばかりのころは、 エンドユーザ向けと開発者向けにフォーラムを分ける必要はありません。 それよりも、プロジェクトにかかわる人たちが1つの「部屋」 に集まってわいわいがやがや話をするほうがずっといいでしょう。 アーリーアダプター層においては、開発者とユーザの区別はあいまいです。 あえて分類するとしても、プロジェクトの初期には開発者の比率がかなり高くなります。 アーリーアダプターのすべてがそのソフトウェアをハックしたいと思っているとは限りません。 しかし、少なくともそのプロジェクトの今後の方向性に関する議論には 興味を持っていることでしょう。
本章では「プロジェクトをどのように立ち上げるか」についてのみを扱っています。 この段階では「とりあえずコミュニケーション用の場所が必要だ」というくらいで十分でしょう。 後で、章 6. コミュニケーション の 巨大化への対応項 においてさらに詳しく説明します。 ここでは、掲示板の設置や管理の方法について扱います。 また、いつかユーザ向け会議室と開発者向け会議室を分割することになったときに、 両者の間に溝を生じさせないための方法も説明します。
開発者としてプロジェクトに参加しようと考えた人は、 まず開発者向けのガイドラインを探すことになるでしょう。 このガイドラインは、技術的なものというよりもむしろ社会的なものとなります。 たとえば開発者同士のやりとりの方法、ユーザとのやりとりの方法、 プロジェクトをうまく進めるためにどのようにしていくかなどです。
このトピックについては 章 4. プロジェクトの政治構造と社会構造 の 全てを記録しておく項 で詳しく説明します。 ここでは、そこに含める基本的な内容だけをまとめておきます。
他の開発者とのやり取りのためのフォーラムの場所
バグ報告やパッチの投稿の方法
開発の基本方針— 「慈悲深い独裁者」式でいくのか「民主主義」式&