オープンソースソフトウェアの育て方
Free

オープンソースソフトウェアの育て方

By Karl Fogel
Free
Book Description

パーティの場で「フリーソフトウェアを書いているんです」と言っても、 以前のように怪しげな目を向けられることはなくなりました。 「あぁ、オープンソースね。Linuxみたいなものでしょ?」とみんなすぐにわかってくれます。 「そうそう! そうなんだ」。もはや完全な辺境でなくなったのは嬉しいことです。 次にくる質問は、ちょっと前までは「それで、どうやってお金を稼いでいるの?」に決まっていました。 答えとして、私はオープンソースの経済学について手短に述べたでしょう。 すなわち、あるソフトウェアが存在することで利益を得る組織があるのですが、 その組織はそのソフトウェアを販売する必要はなく、 ただそのソフトウェアが利用可能であり保守されているということを確かめたいのです、商品ではなく道具として。

しかし、最近は「オープンソースでどうやって儲けるの?」的な質問は少なくなってきました。 いまやオープンソースソフトウェア でお金を稼ぐことは不思議でも何でもなくなったのです。オープンソースを仕事にしている人たちがいるということを、 開発者以外でも多くの人が理解しています—あるいは少なくとも驚かないようになってきています。 最近は、こんな質問に変わってきました。「オープンソースって、いったいどういう仕組みになっているんですか?」

当時の私は、その質問にうまく答えることができませんでした。考えれば考えるほど、 その話題が複雑なものであるように思えてきたのです。 フリーソフトウェアのプロジェクトを運営するというのは普通の商売とはちょっと違います (たとえば、会ったこともないボランティアのグループを相手にして自社の製品についての交渉を毎日のように行うなんてことは普通はありませんよね?)。 また、ごく一般的な非営利組織を運営したり政府を運営したりというのとも少々異なります。   まぁそれぞれ似ている点もあるのですが、徐々にわかってきたのは、 フリーソフトウェアは独特 (sui generis) だということです。 比較対象となるものはいくらでもありますが、その中のどれとも違うのです。 実際のところ、フリーソフトウェアプロジェクトを「運営することができる」という仮定さえも確かではありません。 フリーソフトウェアプロジェクトを「始める」ことはできます。 また、さまざまな人たちがそのプロジェクトに影響を与えることができます。中には強烈に影響を及ぼす人もいるでしょう。 しかし、そのプロジェクト自体は特定の個人の所有物とすることはできません。 そのプロジェクトに興味を持つ人がどこかにひとりでもいる限り、一方的にそのプロジェクトを終了することもできません。 誰もが限りない力を持っています。と同時に、誰もが無力だという一面もあります。興味深い話です。

といったわけで、私は本書を執筆することになったのです。 フリーソフトウェアプロジェクトは独特の文化を発展させてきました。 ソフトウェアに思い通りの仕事をさせる自由が主要な信条となる気風です。それでなおその自由の結果、 個々人がばらばらにコードとともに我が道を行くのではなく、熱狂的な共同作業が行われているのです。 実際、協調性というのはフリーソフトウェア界で最も評価されるスキルのひとつです。 プロジェクトを運営していくということは、ある種の肥大化した共同作業に従事するということです。 そこでは他人と作業をする能力だけではなく、共同作業を進めるための新たな手法を創り出す能力により、 ソフトウェアに具体的な利益をもたらすことができるのです。 本書では、このようにプロジェクトをうまく進めていくための秘訣を説明します。 決して完璧なものではありませんが、初めの一歩としては十分だと思います。

よいフリーソフトウェアを作ることは、本質的に価値のある目標です。 その方法を模索している読者のみなさんが、本書で何かのヒントを得てくだされば幸いです。 またそれだけでなく、実際にオープンソース開発者たちのチームに参加して、 一緒に作業を進めていただけるようになることも望んでいます。 志の高いメンバーとともに作業を進め、ユーザーと直接対話するのは非常に楽しいことです。 うまく動いているフリーソフトウェアプロジェクトでの作業はほんとうに 「楽しい」 ものです。 そして結局のところ、その楽しさがあるからこそプロジェクトがうまく進むのです。

Table of Contents
  • オープンソースソフトウェアの育て方
    • 日本語版に寄せて
    • 序文
      • この本を書いた理由は?
      • どんな人たちに読んでほしい?
      • 情報源
      • 謝辞
      • 免責
      • 日本語版について
    • 1. 導入
      • 歴史
        • 独占的なソフトウェアとフリーソフトウェア
          • 意識的な抵抗
          • 無意識な抵抗
        • 「フリー」と「オープンソース」の違い
      • 現状
    • 2. さあ始めましょう
      • 手持ちのもので始めよう
        • 名前の決定
        • 明確な目標を掲げる
        • フリーであることを宣言する
        • 機能一覧・要件一覧
        • 開発の進捗状況
        • ダウンロード
        • バージョン管理システムやバグ追跡システムへのアクセス
        • 連絡手段
        • 開発者向けのガイドライン
        • ドキュメント
          • ドキュメントの公開方法
          • 開発者向けドキュメント
        • 使用例とスクリーンショット
        • 公開場所
      • ライセンスの選択と適用
        • 「何でもできる」ライセンス
        • GPL
        • ライセンスを適用する方法
      • うまく引っ張っていく
        • 個人的な議論を避ける
        • 炎上を阻止する
        • きちんとしたコードレビューの習慣
        • もともと非公開だったプロジェクトをオープンにするときには、 変化の大きさに気をつけよう
      • 広報
    • 3. 技術的な問題
      • プロジェクトに必要なもの
      • メーリングリスト
        • スパム対策
          • 投稿のフィルタリング
          • アーカイブでのメールアドレスの処理
        • 識別しやすいヘッダ
        • Reply-to はどうすべきか
          • 私のふたつの夢
        • アーカイブ
        • ソフトウェア
      • バージョン管理
        • バージョン管理に関する用語集
        • バージョン管理システムの選択
        • バージョン管理システムの使用法
          • すべてをバージョン管理する
          • ウェブで閲覧できるようにする
          • コミットメール
          • ブランチの活用
          • 情報の一元管理
          • 承認
      • バグ追跡システム
        • 議論の場としてメーリングリストを使う
        • バグ追跡システムをあらかじめフィルタする
      • IRC / リアルタイムに行なわれるチャットシステム
        • ボット
        • IRCの会話を保存する
      • RSS フィード
      • Wiki
      • ウェブサイト
        • ツールが一通り揃ったホスティングサイト
          • ホスティングサイトを選ぶ
          • 匿名性とプロジェクト参加
      • Social Networking Services
    • 4. プロジェクトの政治構造と社会構造
      • 優しい独裁者
        • 誰がよき「優しい独裁者」になれるか?
      • 合意に基づく民主主義
        • バージョン管理を行なうと堅くならずに済む
        • 合意に至らなければ投票する
        • いつ投票を行なうべきか?
        • 誰が投票するのか?
        • 世論調査 v.s 投票
        • 拒否権
      • 全てを記録しておく
      • Joining or Creating a Non-Profit Organization
    • 5. カネに関する問題
      • Crowdfunding: Kickstarter, etc
      • プロジェクトへの関わり方
      • 開発者を長期に渡って雇用する
      • 企業の人間としてではなく、個人として振る舞う
      • 動機を隠し立てしない
      • カネで愛は買えない
      • 契約する
        • レビューを行い、変更をソースコードに取り入れる
          • ケーススタディ: CVS パスワード認証プロトコルの場合
      • プログラミング以外の活動を支援する
        • 品質保証 (テストの専門家など)
        • 法律上の助言、権利の保護
        • ドキュメントやユーザビリティの改善
        • ホスティングサイトや接続回線を提供する
      • マーケティング
        • 見られていることを意識する
        • 競合するオープンソースプロジェクトを攻撃しない
      • Hiring Open Source Developers
      • Bounties
    • 6. コミュニケーション
      • 書いたことがすべて
        • 構成や体裁
        • 中身
        • 口調
        • 何が失礼にあたるのか
      • 陥りがちな罠
        • 目的のない投稿をしない
        • 生産的なスレッドとそうでないスレッド
        • 簡単な議題ほど長引く
        • 宗教論争を回避する
        • "口やかましい少数派" について
      • 扱いにくい人たち
        • 扱いにくい人たちへの対応
        • 実例
      • 巨大化への対応
        • アーカイブを目に付きやすくする方法
          • 全リソースをアーカイブと同様に扱う
        • しきたりの成文化
      • バグ追跡システムでは議論しない
      • 宣伝・広報
        • セキュリティ脆弱性の告知
          • バグ報告を受ける
          • 大至急それを修正する
          • CAN/CVE 番号
          • 事前通知
          • 修正を一般に公開する
    • 7. パッケージの作成、リリース、日々の開発
      • リリースに番号を付ける
        • リリース番号の構成要素
        • 単純なやり方
        • 奇数/偶数 に意味を持たせるやり方
      • リリースブランチ
        • リリースブランチの使い方
      • リリースを安定させるプロセス
        • リリースオーナーによる独裁
        • リリースに含める変更を投票で決める
          • リリースを安定させるプロセスを管理する
          • リリースマネージャー
      • パッケージング
        • パッケージのフォーマット
        • パッケージ名とレイアウト
          • 大文字にするか、小文字のままにするか
          • プレリリース版
        • コンパイルとインストール
        • バイナリパッケージ
      • テストとリリース
        • リリース候補
        • リリースを告知する
      • 複数のリリースラインを管理する
        • セキュリティリリース
      • リリースと日々の開発
        • リリースの計画を立てる
    • 8. ボランティアの管理
      • ボランティアを最大限に活用する
        • 委任
          • 作業依頼と担当者の決定を明確に区別する
          • 委任したあとのフォロー
          • みんなの好みを知る
        • 賞賛と批判
        • 縄張り意識の回避
        • 自動化の割合
          • 自動テスト
        • すべてのユーザーの協力を得るために
        • Meeting In Person (Conferences, Hackfests, Code-a-Thons, Code Sprints, Retreats)
      • 技術的な作業だけでなく管理作業もみんなで
        • パッチマネージャー
        • 翻訳マネージャー
        • ドキュメントマネージャー
        • バグマネージャー
        • FAQ マネージャー
      • 引き継ぎ
      • コミッター
        • コミッターの選びかた
        • コミット権の剥奪
        • 部分的なコミット権
        • 休眠状態のコミッター
        • 秘密主義を避ける
      • クレジット
      • プロジェクトの分裂
        • 分裂の動きをうまく処理する
        • 新しいプロジェクトを立ち上げる
    • 9. Governments and Open Source
      • Be Open Source From Day One, Not Day N
      • Review Your RFI, RFP and Contract Language
      • Get the Lawyers Involved Very Early or Very Late
      • Dispel Myths Within Your Organization
      • Foster Pools of Expertise in Multiple Places
      • Decouple Publicity Events from Project Progress
      • Establish Contact Early with Relevant External Communities
      • Have a Plan to Handle Negative Reactions
        • The Open Government / Open Data Community
    • 10. ライセンス、著作権、特許
      • 使用する用語
      • ライセンスの特徴
      • GPL とライセンスの互換性
      • ライセンスを選ぶ
        • MIT/X Window System ライセンス
        • GPL
          • GPL はフリーなライセンスなのか?
        • BSDライセンス はどうなの?
      • 著作権の保有と譲渡
        • 何も対処しない
        • 貢献者ライセンス同意書(CLA)
        • 著作権の譲渡
      • デュアルライセンスの仕組み
      • 特許
      • さらなる情報源
    • A. Canned Hosting Sites
    • B. フリーなバージョン管理システム
    • C. フリーなバグ追跡システム
    • D. なんで自転車置場の色まで気にしなきゃならないの?
    • E. バグ報告のやり方を説明した例
    • F. 訳者あとがき
    • G. 著作権表示
    No review for this book yet, be the first to review.
      No comment for this book yet, be the first to comment
      You May Also Like
      Mastering Bitcoin
      Free
      Mastering Bitcoin
      By Andreas M. Antonopoulos
      Pro Git
      Free
      Pro Git
      By Scott Chacon
      Also Available On
      App store smallGoogle play small
      Categories
      Curated Lists
      • Pattern Recognition and Machine Learning (Information Science and Statistics)
        by Christopher M. Bishop
        Data mining
        by I. H. Witten
        The Elements of Statistical Learning: Data Mining, Inference, and Prediction
        by Various
        See more...
      • CK-12 Chemistry
        by Various
        Concept Development Studies in Chemistry
        by John Hutchinson
        An Introduction to Chemistry - Atoms First
        by Mark Bishop
        See more...
      • Microsoft Word - How to Use Advanced Algebra II.doc
        by Jonathan Emmons
        Advanced Algebra II: Activities and Homework
        by Kenny Felder
        de2de
        by
        See more...
      • The Sun Who Lost His Way
        by
        Tania is a Detective
        by Kanika G
        Firenze_s-Light
        by
        See more...
      • Java 3D Programming
        by Daniel Selman
        The Java EE 6 Tutorial
        by Oracle Corporation
        JavaKid811
        by
        See more...