オープンソース コミュニティへの参加

オープンソースは、技術系産業だけではなく、広く業界にまたがって、ソフトウェアを作成、構築するための事実上の標準方法となっています。また、企業が商用の製品とサービスを提供するためにオープンソース コードを活用することが広がり、企業はオープンソース プロジェクトにコントリビューションすることに戦略的価値を見出すようになってきました。

しかし、オープンソース プロジェクト、コミュニティ、そしてそれらがどのように運営されているかを理解もせずに参加すると、オープンソース コミュニティだけでなく、参加した企業も失望することになるでしょう。戦略なしでオープンソースへのコントリビューションを試みると、オープンソース コミュニティにおいてその企業の評判が損なわれ、法的リスクが発生することもあります。

このガイドでは、組織としてオープンソースにコントリビューションすることはどのような意味をもつのか、どのようにすれば良き企業市民になることができるかについての指針を提示します。すなわち、どのようにオープンソース プロジェクトが構成されているのか、コントリビューションはどのように行うのか、社内開発リソースを投入することがなぜ重要か、そして、オープンソースに参加し、管理するための戦略の策定がなぜ重要なのかについて学びます。

内容

  1. なぜオープンソースにコントリビューションするのか
  2. どのようにしてオープンソース プロジェクトは管理されているのか
  3. コントリビューションの仕組み
  4. どのように組織がコントリビューションするのか
  5. 良き企業市民になるために
  6. どのようにしてコントリビューション戦略を構築するか
  7. 結論

ガイド一覧 » GitHub上で貢献する »

このガイドの貢献者

Stormy Peters Senior Manager, Community Leads Red Hat

Nithya Ruff Senior Director, Open Source Practice Comcast

セクション 1

なぜオープンソースにコントリビューションするのか

今日、オープンソース ソフトウェアからどのような利益も得ない組織を見つけるのは不可能でしょう。Intel社、IBM社、Samsung社のように、いくつかの企業は、オープンソース コミュニティにコントリビューションするために、一貫したオープンソース プログラムを持っています。他の企業では、たまたまオープンソース ソフトウェアがシステム管理者や開発者によって導入され、それを契機としてオープンソースのユーザーになっています。

多くの企業のビジネスがオープンソース ソフトウェアに依存していて、オープンソースは企業の成功のために非常に重要なものになっています。そのために、オープンソース ソフトウェア プロジェクトにコントリビューションすることは、必要かつ有益なものになっています。2005年以来、1,300社以上の13,500人を超える開発者がLinuxカーネルにコントリビューションしていますが、なんとそれは単一のプロジェクトなのです。

「多くの大規模プロジェクトでは、ほとんどのコントリビューターはCephやGlusterのようなプロジェクトを使用する企業で働くようになります。私たちの顧客はオープンソース ソフトウェアを使用しているため、そのソフトウェアにコントリビューションしていることがよくあります。私たちは、個人としての参加も企業としての参加も、ともにサクセス ストーリーとして考えています。」

Stormy Peters – Senior Manager, Community Leads at Red Hat

各カーネル リリースに貢献しているLinuxカーネル開発者。 出典:The Linux FoundationのLinuxカーネル レポート 2016年版

これらのコントリビューションの一部は、単にコミュニティにお返しをしたいと考える組織から来ているのかもしれません。しかし、組織で使用されているオープンソース ソフトウェア プロジェクトにコントリビューションする強固なビジネス上の理由はたくさんあります。コントリビューションのメリットの一部を以下に紹介します。

しかし、あなたのコントリビューションに対する誤解やその他の問題を避けるために、コミュニティにどのように関わるかについては慎重に考えてください。すべてのオープンソース プロジェクトには、少しずつ異なった行動規範、期待される振る舞い、プロセスがあり、あなたの組織がコントリビューションを始める前にそれらを完全に理解する必要があります。これは、誰かがコミュニティに参加し、暫くの間コミュニティを観察することで達成できます。または、すでにコミュニティに参加した実績のある人を雇うこともできます。

セクション 2

どのようにしてオープンソース プロジェクトは管理されているのか

一見すると、オープンソース プロジェクトは無秩序に見えるかもしれません。オープンソース ソフトウェアに初めて接する人は、「雑然とした人々」で構成されるグループがともにコードを投稿して、それがどのようにして結果的に何百万人もの人々が使用する安定した製品になるのか、とても不思議に思うでしょう。そのような見方がオープンソース ソフトウェアの開発方法ではないことに気づくのに多くの時間は必要としないでしょう。ほぼすべてのオープンソース プロジェクトは「体制」が整っており、優れたプロジェクトはその「体制とプロジェクト ガバナンス」をプロジェクトのWebサイトやドキュメンテーションで明確に記述しています。(コントリビューターのためのGitHubのガイド、overview of project anatomyは優れたプロジェクトの組織概要を提供してくれています。)

ガバナンス モデルはプロジェクトによって異なりますが、いくつかの共通点があります。

コミュニティは、オープンソース プロジェクトを作ることも壊すこともでき、強力で活気に満ちて、多様な人たちで構成されたオープンソース コミュニティを持つことは、プロジェクトの成功にとって重要です。上に挙げた役割を果たしている人々は、ドキュメンテーション、マーケティング、ユーザー サポートなど、プロジェクトの他の重要な役割を果たしている人たちとともにコミュニティを構成しています。

セクション 3

コントリビューションの仕組み

コントリビューションのプロセスは、各オープンソース プロジェクトによって異なります。例えば:

これらは、コントリビューション スタイルの違いが存在するほんの少しの事例ですので、コントリビューション方法についてのドキュメントを読むことから始めましょう。多くのプロジェクトでは、このドキュメントがCONTRIBUTINGまたはREADMEファイルとしてコード リポジトリのホーム ディレクトリに含まれますが、そうでない場合は、ドキュメントを見つけるためにWebサイトのドキュメントまたはコミュニティのセクションを探さなければなりません。特定のプロジェクトでどのような行動が期待されているかを正確に理解するためには、その他のドキュメント、コミュニティ ガイドライン、行動規範をお読みください。

プロジェクトに初めてコントリビューションする時には、最初の数件のコントリビューションについては、それをレビューし、フィードバックを与えてくれるメンターや経験豊富なプロジェクト メンバーを見つけることを考えるべきでしょう。

ドキュメントに記載されているプロセスに沿って、コントリビューションをサブミットした後、それに対するフィードバックに返信する必要があります。一般的なフィードバックには、どのようそれが機能するのか、特定のアプローチを選択した理由などの質問や、改善の提案、変更要求などが含まれます。このフィードバックは時として厳しいものです。フィードバックはあなたのコントリビューションをより良いものしてくれるものという考え方で対応しましょう。自己防衛的な対応は避けるべきです。あなたのコードが承認される前に、数回の再提出や追加のフィードバックへの対応を行う必要があるかもしれませんし、場合によっては却下されることもあります。何かが受け入れられない理由はいろいろあります。あなたのコードが拒否された場合、それを個人への攻撃ととらえないようにしてください。できることなら、あなたのコントリビューションが受け入れられなかった理由についてもっと学びましょう。それはあなたの次回のコントリビューションが受け入れられる可能性を高めるのに役立ちます。

あなたのコントリビューションが受け入れられれば、あなたがそれを長期にわたって保守することを期待されるだろうということに留意してください。特に、大きなコントリビューション、新機能、またはハードウェアの特定のドライバーのような独立性の高いコードの場合は、これが当てはまります。小規模なコントリビューションやバグ修正に対しては、長期的な保守を期待されることはないでしょう。

セクション 4

どのように組織がコントリビューションするのか

いくつかのオープンソース プロジェクトと、それらのプロジェクトを使用したり、プロジェクトにコントリビューションしたりしている企業、組織との間の関係で、長年にわたり問題を抱えているものがあります。多くの組織は、通常、オープンソース プロジェクトでは機能しない手法を用いてビジネス関係を形成することに慣れてしまっているために、いくつかの組織では、生産性の高いコントリビューション方法を理解するのに苦労しています。もう1つの課題は、組織のニーズがオープンソース プロジェクトのニーズに合致していない場合で、コミュニティから見て、組織が利己的で、やっかいな存在にみえる場合です。そのような時、オープンソース コミュニティが組織のコントリビューションの背後にある動機を疑う可能性があります。過去に、プロジェクトの目標に沿っていない大規模なコントリビューションをしようとした組織がいくつもありましたが、ある特定のプロジェクトでは、この歴史のためにコミュニティが組織を信頼することを難しくしています。

しかし、Linuxカーネルのように、組織が意味のある形でコントリビューションした成功事例も数多くあります。組織がオープンソース プロジェクトにコントリビューションするための最も一般的で、最も簡単な方法は、多くの時間をさいてオープンソース プロジェクトに参加している従業員に(正規の企業活動として)十分な処遇を与えることです。これを上手く進めるためには、従業員がそのプロジェクトのコントリビューションに関するプロセスと規範を理解し、そのコントリビューションがプロジェクトに受け入れられる機会を増やす必要があります。あなたの組織がプロジェクトに新規に参入したり、オープンソースに初めて参入したりする場合は、コントリビューションしたいオープンソース プロジェクト内で、すでにコントリビューションしている人や、そのプロジェクト内で良く知られた人を採用することを検討してください。そうすることで、彼らはそのプロジェクトでより成功する可能性の高いコントリビューション方法について、組織を指導することができます。経験豊かなコントリビューターは、あなたの従業員がオープンソースでキャリアパスを追求するのを助けるメンターの役割もしてくれるでしょう(「オープンソース開発者の採用」を参照)。

ほとんどのプロジェクトには、組織が参加するためのその他の方法(コードのコントリビューション以外の方法)がありますが、その方法はプロジェクトごとに異なっているでしょう。多くの場合、オープンソース プロジェクトとそれらをサポートするファウンデーションは、インフラ、運営資金、マーケティング、法務サービスなど、組織が提供することのできるリソースを必要としています。多くのプロジェクトでは、プロジェクトに助言できる資格(advisory role)の獲得や企業のビジビリティ向上と引き換えにオープンソース プロジェクトに資金や人的資源の形でのコントリビューションをすることによって、企業がよりフォーマルな形でプロジェクトのスポンサーになったり、参加したりすることができます。

たとえば、Node.js Foundation理事会の理事(Node.js Foundation Board of Directors)は、企業会員からの代表者、技術運営委員会の代表者、個人会員クラスで選出された代表者で構成されています。理事会の理事を構成することができる企業のメンバーは、5,000ドル(小規模組織の場合)から250,000ドルを支払います。スポンサーシップやメンバーシップに対するアプローチは、プロジェクトごとに多少異なりますが、オープンソース プロジェクトへの資金提供はプロジェクトの経費を支え、プロジェクトの成功に役立ちます。

多様な組織がCloud Native Computing FoundationのKubernetesプロジェクトにコントリビューションしています。

セクション 5

良き企業市民になるために

このガイドおよび一般的なオープンソースで基層をなすテーマがあるとすれば、すべてのプロジェクトは異なっているということです。したがって、あなたがあるオープンソース プロジェクトに参加するたびに、プロジェクトがどのように機能するかを学び、それにあなた自身を適応させていくための時間が必要になるでしょう。

オープンソース プロジェクトに参加する組織は、各従業員が参加するプロジェクトごとに学習プロセスを進める必要があります。コミュニティと良い関係でスタートするためのいくつかの施策を以下に示します。

あなたの組織は、最初の小さなコントリビューションでその方法を理解すると、さらに大きなコントリビューションを行い、プロジェクトにより大きな影響を与えるコントリビューションができるようになります。

けれども、長期的には、アップグレード サイクルごとにテスト、更新、再適用が必要な「素早くて、きたないパッチ」の保守は、ほとんどの場合、アップストリームで保守されるパッチより時間も労力も必要とします。他の人もあなたの修正から恩恵を受ける可能性があることを考慮すると、このような行動はコミュニティ内で、利己的であると認識され、組織のオープンソース コミュニティでの評判にも悪影響を与えることがあります。

コードをアップストリームにコントリビューションするためのベスト プラクティス

Ibrahim Haddad, PhD @IbrahimAtLinux

あなたの組織内部で推進すること

  1. 正当な理由づけによって、アップストリームにコントリビューションする決定を下すこと。
  2. アップストリームを念頭に置いてコードを設計し、実装すること。
  3. 「上流第一(upstream first)」ポリシーを採用し、まずパッチをアップストリームに提出し、自社製品ではダウンストリームのものを採用すること。
  4. たとえ大きな関与でなくても、あなたの開発者をオープンソース プロジェクトに関わり続けるようにすること。

外部との関わりで推進すること

  1. あなたのコントリビューションが他の人にも役立つことを確認すること。
  2. 適切なコーディング スタイルに従うこと。
  3. プロジェクトのコントリビューション提出プロセスに従って作業すること。
  4. あなたのコントリビューションについての説明やドキュメントを提供すること。
  5. フィードバックに耳を傾けて、それに対応すること。
  6. 辛抱強く、受け入れられるまでコードの改良、修正を続けること。

組織にとって最も重要な課題の1つは、オープンソース プロジェクトに影響力を与える方法を理解することです。重要な組織であっても、オープンソース コミュニティから尊敬されていなければ、重要な組織として扱われることを期待するべきではありません。影響力はプロジェクトへの参加から始まります。そして、オープンソース プロジェクトにコントリビューションする人の中で、信頼され、責任感が認められた一部の人が最終的に大きな影響力とリーダーシップを発揮する立場になります。

また、対立が起こることもあるでしょうが、それをプロフェッショナルに処理できる必要があります。決定、アプローチ、またはコントリビューション スタイルで同意が得られず、レビュー プロセスがかなり白熱したものになることもあります。フィードバックが個人攻撃的なものになるのではなく、コントリビューションに焦点を当てて、冷静でプロフェッショナルに対応することが重要です。オープンソース プロジェクトに参加する行為はすべてが公になっており、それがインターネット上に永遠に残っている可能性があることを忘れないでください。抑制の効かなくなった白熱した議論は、一組織や一個人が行った行為として後々あなたについて回ることもあります。参加行為がすべて公になることを考慮して、「扱いづらい人に対する対応方法」や「対立の解決方法」に関するトレーニングを従業員に提供するのも良案でしょう。

セクション 6

どのようにオープンソース コントリビューション戦略を構築するか

慎重に検討されたオープンソース コントリビューション戦略を持つことは、オープンソース プロジェクトに参加する際の従業員指導に役立つだけでなく、組織内の上級管理職に参加の正当性を示すのにも役立ちます。まず、組織の全体的なビジネス目標を見て、オープンソースの取り組みが組織の幅広い戦略にどのように適合しているかを把握することが重要です(Setting an Open Source Business Strategyを参照)。オープンソース コントリビューション戦略を組織の戦略的な取り組みと明確に結びつけることで、上級管理職に、なぜコントリビューションがその組織にとって重要なのかを示し、従業員がコントリビューションの与える影響力を理解できるようになります。

「経営幹部からのサポート、そしてオープンソースはビジネス戦略の重要な部分であるという認識が極めて重要です。企業の目標と、オープンソース戦略の中でそれらをどのように達成していくかについて十分に理解している必要があります。」

Nithya Ruff – Senior Director, Open Source Practice at Comcast

ビジネス目標に沿った目標や戦略を立てたら、その実施計画を立てる必要があります。以下の質問は、あなたの計画に取り入れるべきいくつかの項目を示唆するでしょう。

オープンソース コントリビューションを習得するための11項目の秘訣

組織内にオープンソース コントリビューションを推進するための健全な環境をどのようにして構築するか

  1. オープンソース コントリビューションのためのポリシーとプロセスを確立する
  2. すべてのオープンソース コントリビューションの承認を監督するチームを設置する
  3. あなたのテクノロジーが活かせる領域に焦点を当てる
  4. コントリビューターに必要なITインフラとツールを提供するs
  5. コントリビューションのためのベストプラクティスのトレーニングをスタッフに提供する
  6. コントリビューションをトラッキングし、効果を評価し、改善し、コミュニケーションをとる
  7. 経験の少ない開発者をトレーニングするための指導プログラムを確立する
  8. コントリビューション ガイドライン(どのようにすれば良いか、しても良いこと、してはいけないことなどを示す)を提供する
  9. 開発者がオープンソース関連で法務サポートを受けられるようにする
  10. あなたにとって最も価値のあるオープンソース コミュニティから雇用される
  11. 各プロジェクト コミュニティの持っている固有のプロセスやプラクティスに常に従う

Ibrahim Haddad, PhD @IbrahimAtLinux

セクション 7

結論

オープンソース プロジェクトは社会に浸透しており、ほとんどの組織で製品やサービスを顧客に提供するために使用され、重要な役割をはたしています。組織として、ビジネスの成功を促進させるオープンソース プロジェクトに影響を与えたいと考えるなら、オープンソース プロジェクトに参加する必要があります。組織の確固としたコントリビューション戦略と実施計画を持つことが、良きオープンソース企業市民になる道につながります。がんばりましょう。