オープンソースソフトウェアのつくりかた

フリーソフトウェアプロジェクトを成功させるコツ

Fogel Karl [FAMILY Given]

(著者)

高木 正弘 [FAMILY Given]

(翻訳者)

Takaoka Yoshinari [FAMILY Given]

(翻訳者)

謝辞

親友である Karen Underhill と Jim Blandy に本書をささげます。 ふたりがいなければ、本書を完成させることはできなかったでしょう。

目次

序文
この本を書いた理由は?
どんな人たちに読んでほしい?
情報源
謝辞
免責
1. 導入
歴史
独占的なソフトウェアとフリーソフトウェア
意識的な抵抗
無意識な抵抗
「フリー」と「オープンソース」の違い
現状
2. さあ始めましょう
手持ちのもので始めよう
名前の決定
明確な目標を掲げる
フリーであることを宣言する
機能一覧・要件一覧
開発の進捗状況
ダウンロード
バージョン管理システムやバグトラッカーへのアクセス
連絡手段
開発者向けのガイドライン
ドキュメント
ドキュメントの公開方法
開発者向けドキュメント
使用例とスクリーンショット
公開場所
ライセンスの選択と適用
「何でもできる」ライセンス
GPL
ライセンスを適用する方法
うまく引っ張っていく
個人的な議論を避ける
炎上を阻止する
きちんとしたコードレビューの習慣
もともと非公開だったプロジェクトをオープンにするときには、 変化の大きさに気をつけよう
広報
3. 技術的な問題
プロジェクトに必要なもの
メーリングリスト
スパム対策
投稿のフィルタリング
アーカイブでのメールアドレスの処理
識別しやすいヘッダ
Reply-to はどうすべきか
私のふたつの夢
アーカイブ
ソフトウェア
バージョン管理
バージョン管理に関する用語集
バージョン管理システムの選択
バージョン管理システムの使用法
すべてをバージョン管理する
ウェブで閲覧できるようにする
コミットメール
ブランチの活用
情報の一元管理
承認
バグ追跡システム
議論の場としてメーリングリストを使う
バグ追跡システムをあらかじめフィルタする
IRC / リアルタイムに行なわれるチャットシステム
ボット
IRCの会話を保存する
RSS フィード
Wiki
ウェブサイト
ツールが一通り揃ったホスティングサイト
ホスティングサイトを選ぶ
匿名性とプロジェクト参加
4. プロジェクトの政治構造と社会構造
優しい独裁者
誰がよき「優しい独裁者」になれるか?
合意に基づく民主主義
バージョン管理を行なうと堅くならずに済む
合意に至らなければ投票する
いつ投票を行なうべきか?
誰が投票するのか?
世論調査 v.s 投票
拒否権
全てを記録しておく
5. カネに関する問題
プロジェクトへの関わり方
開発者を長期に渡って雇用する
企業の人間としてではなく、個人として振る舞う
動機を隠し立てしない
カネで愛は買えない
Contracting
Review and Acceptance of Changes
Case study: the CVS password-authentication protocol
Funding Non-Programming Activities
Quality Assurance (i.e., Professional Testing)
Legal Advice and Protection
Documentation and Usability
Providing Hosting/Bandwidth
Marketing
Remember That You Are Being Watched
Don't Bash Competing Open Source Products
6. コミュニケーション
書いたことがすべて
構成や体裁
中身
口調
何が失礼にあたるのか
陥りがちな罠
目的のない投稿をしない
生産的なスレッドとそうでないスレッド
簡単な議題ほど長引く
宗教論争を回避する
"口やかましい少数派" について
扱いにくい人たち
扱いにくい人たちへの対応
実例
巨大化への対応
アーカイブを目に付きやすくする方法
全リソースをアーカイブと同様に扱う
しきたりの成文化
バグ追跡システムでは議論しない
宣伝・広報
セキュリティ脆弱性の告知
バグ報告を受ける
大至急それを修正する
CAN/CVE 番号
事前通知
修正を一般に公開する
7. パッケージの作成、リリース、日々の開発
リリースに番号を付ける
リリース番号の構成要素
単純なやり方
奇数/偶数 に意味を持たせるやり方
リリースブランチ
リリースブランチの使い方
リリースを安定させるプロセス
リリースオーナーによる独裁
リリースに含める変更を投票で決める
リリースを安定させるプロセスを管理する
リリースマネージャー
パッケージング
パッケージのフォーマット
パッケージ名とレイアウト
大文字にするか、小文字のままにするか
プレリリース版
コンパイルとインストール
バイナリパッケージ
テストとリリース
リリース候補
リリースを告知する
複数のリリースラインを管理する
セキュリティリリース
リリースと日々の開発
リリースの計画を立てる
8. ボランティアの管理
ボランティアを最大限に活用する
委任
作業依頼と担当者の決定を明確に区別する
委任したあとのフォロー
みんなの好みを知る
賞賛と批判
縄張り意識の回避
自動化の割合
自動テスト
すべてのユーザの協力を得るために
技術的な作業だけでなく管理作業もみんなで
パッチマネージャー
翻訳マネージャー
ドキュメントマネージャー
バグマネージャー
FAQ マネージャー
引き継ぎ
コミッター
コミッターの選びかた
コミット権の剥奪
部分的なコミット権
休眠状態のコミッター
秘密主義を避ける
クレジット
フォーク
フォークの処理
フォークの開始
9. Licenses, Copyrights, and Patents
Terminology
Aspects of Licenses
The GPL and License Compatibility
Choosing a License
The MIT / X Window System License
The GNU General Public License
Is the GPL free or not free?
What About The BSD License?
Copyright Assignment and Ownership
Doing Nothing
Contributor License Agreements
Transfer of Copyright
Dual Licensing Schemes
Patents
Further Resources
A. Free Version Control Systems
B. Free Bug Trackers
C. Why Should I Care What Color the Bikeshed Is?
D. Example Instructions for Reporting Bugs
E. Copyright