Chrisと私が2007年の終わりにGitHubの作業を開始したとき、作業を2つの部分に分割しました。 ChrisはRailアプリケーションに携わり、私は歴史の中で最初のRuby用GitアダプターであるGritに携わりました。 開発の6か月後、Gritはサイトの公開開始時にGitHubにサービスを提供するのに十分なものになり、興味深い質問に直面しました。
Gritをオープンソースにするか、プロプライエタリのままにする必要がありますか?
専有のままにすると、Gitホスティングの競合に障害が生じ、有利になります。 オープンソースは、世界中の何千人もの人々がそれを使用して興味深いツールを開発し、さらに活気のあるGitエコシステムを作成できることを意味します。
少し議論した後、Gritソースを開くことにしました。 議論のすべての詳細を覚えているわけではありませんが、ほぼ4年前に下されたこの決定により、私たちの主な価値観の1つである(ほぼ)すべてのソースを公開することになりました。
なぜオープンソース(ほとんど)すべてがクールなのですか?
すべてを正しくすれば、オープンソースはあなたとあなたの会社にとって素晴らしい広告です。 GitHubでは、私たちが開発したライブラリとシステムを公開で議論し、それらはまだ閉鎖されていますが、公開される運命にあります。 このアプローチにはいくつかの利点があります。 これにより、何を開くか、これにどれだけ注意を払うべきかを正確に決定できます。 最近、私たちはチャットボットであるHubotのソースコードを公開しました。 数日で、彼はGitHubで500人のフォロワーを獲得し、Hacker Newsで409票を得ました。 これは、GitHubおよびこれまで以上に多くのファンの支持に表れています。
コードが非常に人気があり、サードパーティの貢献者を引き付ける場合、より多くの作業をより安く行うのに役立つ強化効果を作成します。 より多くのユーザーは、より多くの使用シナリオが研究されていることを意味し、これはより信頼性の高いコードを意味します。 私たちのresqueプロジェクトは、社外の115人の開発者と、resqueの機能を拡張するサードパーティのプラグインを提供する何百もの開発者によって強化されました。 プロジェクトで受け入れる各エラー修正は、時間の節約と回避された消費者の迷惑です。
賢い人は、他の賢い人と通信するのが好きです。 スマートな開発者は、スマートなコードを扱うことが大好きです。 有用なコードを公開すると、才能が集まります。 才能のある開発者がプロジェクトのオープンソースコードを見るたびに、あなたが勝ちます。 私はオープンソースについて技術会議で多くの素晴らしい会話をしました。 これらの会議のいくつかは、私のプロジェクトの問題に対するより良い解決策をもたらすアイデアにつながりました。 創造的で生産的な開発者が非常に多い業界では、コードを正しく見ることが重要な役割を果たします。
開発者を雇う場合、開発者はすでにオープンプロジェクトの1つで自分自身を証明しているため、技術的な面接で最高の面接を行う必要はありません。 このようにして技術的なスキルが提示されたら、残ることは、企業文化が一貫していることを確認し、この人があなたのために働くように説得することです。 彼らが書いたオープンソースコードに熱心であり、あなたがコードの品質を気にかけている(そして明らかにあなたが気にしている)会社に属しているなら、それは簡単なはずです! VicentMartíを雇ったのは、Cの別のライブラリにGit機能を抽出するために開始したプロジェクトであるlibgit2での彼の鮮やかな仕事を見た後です。技術面接は必要ありませんでした。
これらのクールな人々をすべて貢献して雇用したら、オープンソースをターゲットにすることは、 これらの才能を維持する驚くほど効果的な方法です。 クールな開発者が今すぐ仕事を選べることを見てみましょう。 同じ開発者はオープンソース開発の価値を知っており、友人や将来の雇用主と自慢できるプロジェクトのポートフォリオを収集したいと思うでしょう。 パラドックス! 開発者を幸せにするためには、開発者が他の雇用主にとってより魅力的になるよう支援する必要があります。 しかし、これらはあなたのために働きたい開発者なので、心配する必要はありません。 だからリラックスして、彼らにオープンソースプロジェクトで仕事をさせてください。さもなければ、彼らは許可された場所に行くでしょう。
私が新しいプロジェクトを始めるとき、私はそれが最終的にオープンになると仮定します(これがありそうもないとしても)。 このようなインストールは簡単にモジュール化につながります。 社外の人がどのようにコードを使用できるかを考えると、独自のコンポーネントや密結合インターフェースを使用する可能性は低くなります。 これにより、コードがよりクリーンで保守しやすくなります。 内部コードでさえ、開いているふりをする必要があります。
仕事のある場所で素晴らしいライブラリやツールを開発した後、このコードを書き直したり、不在のために不満になったりするために別の会社に参加することをやめたことがありますか? はい、それはうんざりです。 コードを公開すると、作業の重複が大幅に削減されます。 重複が少ないということは、より重要なことにもっと取り組む必要があるということです。
最後に、 これは正しいです。 今では、大量のオープンソースコードを直接実行せずに何もすることはほとんど不可能です。 インターネットを使用する場合は、オープンソースを使用します。 このコードは、公益のために費やされた数百万時間を表します。 私たちは皆この恩恵を享受しており、私たち全員がこのコミュニティを返済する道徳的に義務付けられていると信じています。 ソフトウェアが海の場合、オープンソースは船を座礁させる潮流です。
わかりましたが、何を開けてはいけませんか?
簡単です。 ビジネスの基盤となるものを開かないでください。
ここに、私たちがはがさないもののいくつかの例と、その理由を示します:
- メインのRailsアプリケーション(閉じられたときに販売する方が簡単です)
- Sinatraベースのタスク管理アプリケーション(特にgithub.comと密接に結びついています)
発見したものの例とその理由は次のとおりです。
- Grit(Git用の汎用アダプター、多くのツールの開発に役立つ)
- アーニー(BERT用の汎用RPCサーバー)
- Resque(汎用キュー)
- ジキル(汎用静的サイトジェネレーター)
- ゴラム(一般的なウィキ)
- Charlock_Holmes(一般的な文字エンコーディング決定要因)
- Albino(汎用構文強調表示)
- 言語学者(汎用ファイルタイプ識別子)。
閉鎖されたものはすべて、特定のビジネス上の価値を持っていることに注意してください。 私たちが発見したのは、さまざまな人や企業がさまざまなものを開発するために使用できる汎用ツールです。
唯一の真のライセンスとは何ですか?
私はMITを好み、GitHubで開くほとんどすべてのものがこのライセンスの下で配布されます。
私はいくつかの理由でこのライセンスが大好きです。
- 彼女は背が低い。 誰もがそれを読んで、それが何を意味するのかを正確に理解することができ、高オクタン価の弁護士との協議に莫大なお金を費やす必要はありません。
- 私のコードを使用しているときに何かがうまくいかなくても、私を訴えないように十分な保護を提供します。
- 誰もがその法的結果を理解しています。 WTFPLやBeerライセンスなどの奇妙なライセンスは「最も自由なライセンス」であると主張していますが、この目標を完全に達成することはできません。 これらのトリッキーなライセンスはあまりにも曖昧で施行できないため、一部の企業には適用できません。 一方、GPLは制限が強すぎて独断的であり、多くの場合に適していません。 私のコードがすべての人に役立つことを望んでいます。 みんなに。 これは、オープンが意味しなければならないことであり、これは自由が意味しなければならないことです。
どうすれば開始できますか?
簡単です。GitHubリポジトリのこのスイッチを「クローズ」から「パブリック」にスライドし、ブログ、Twitter、またはHacker Newsを使用して、地元のパブでビールを飲みながら、プロジェクトについて世界中に知らせてください。 それから、座ってリラックスして、あなたがより大きな何かの一部であるという事実を楽しんでください。
PS私自身から、読者のオープンプロジェクトの運命を特定するために、読者を調査に参加させたいと思います。