Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

[インデックス 16770] ファイルの概要

このコミットは、GoプロジェクトのCONTRIBUTORSファイルに対する変更です。CONTRIBUTORSファイルは、オープンソースプロジェクトにおいて、そのプロジェクトに貢献した個人や組織を記録するための重要なドキュメントです。特にGoのような大規模なプロジェクトでは、貢献者のリストを明確にすることで、プロジェクトの透明性を高め、貢献者への適切なクレジットを付与する役割を果たします。このファイルは通常、プロジェクトのルートディレクトリに配置され、プロジェクトの歴史とコミュニティの成長を示す証となります。

コミット

commit 4e3051c6e63def826d4f53ecf9cfe7b3e95779ca
Author: Russ Cox <rsc@golang.org>
Date:   Mon Jul 15 18:40:47 2013 -0400

    CONTRIBUTORS: add David Presotto (Google CLA)
    
    R=golang-dev, r
    CC=golang-dev
    https://golang.org/cl/11299043
---
 CONTRIBUTORS | 1 +
 1 file changed, 1 insertion(+)

diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 3b80e050b7..f858fa475d 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -147,6 +147,7 @@ David Forsythe <dforsythe@gmail.com>
 David G. Andersen <dave.andersen@gmail.com>
 David Jakob Fritz <david.jakob.fritz@gmail.com>
 David McLeish <davemc@google.com>
+David Presotto <presotto@gmail.com>
 David Symonds <dsymonds@golang.org>
 David Titarenco <david.titarenco@gmail.com>
 Dean Prichard <dean.prichard@gmail.com>

GitHub上でのコミットページへのリンク

https://github.com/golang/go/commit/4e3051c6e63def826d4f53ecf9cfe7b3e95779ca

元コミット内容

このコミットは、GoプロジェクトのCONTRIBUTORSファイルにDavid Presotto <presotto@gmail.com>というエントリを追加するものです。コミットメッセージには「Google CLA」と明記されており、David Presotto氏がGoogleのContributor License Agreement (CLA) に署名済みであることが示唆されています。これは、彼がGoプロジェクトに貢献する準備が整ったことを意味します。

変更の背景

オープンソースプロジェクト、特にGoogleが主導するGoのような大規模なプロジェクトでは、コードの著作権とライセンスの明確化が非常に重要です。貢献者がコードを提出する際、プロジェクトのライセンス(Goの場合はBSDライセンス)の下でそのコードが利用可能であることを保証する必要があります。この保証は、通常、Contributor License Agreement (CLA) を通じて行われます。

David Presotto氏がCONTRIBUTORSファイルに追加された背景には、彼がGoプロジェクトに対して何らかの貢献(コード、ドキュメント、バグ報告など)を行う意向があり、その前提としてGoogle CLAに署名したという事実があります。CLAへの署名は、プロジェクトが貢献されたコードを安心して利用し、再配布できる法的基盤を提供します。これにより、将来的な著作権紛争のリスクを軽減し、プロジェクトの持続可能性を確保します。

前提知識の解説

オープンソースプロジェクトにおけるCONTRIBUTORSファイル

CONTRIBUTORSファイルは、オープンソースプロジェクトにおいて、そのプロジェクトの発展に寄与したすべての個人や組織を公式に認識し、感謝するためのテキストファイルです。このファイルは、単なるクレジットリスト以上の意味を持ちます。

  • 透明性とクレジット: プロジェクトの成果が誰の努力によって成り立っているかを明確にし、貢献者に対して正当なクレジットを与えます。
  • コミュニティの形成: 貢献者間の連帯感を醸成し、新たな貢献者を歓迎する文化を促進します。
  • 法的側面: 特にCLAと連携して、プロジェクトのライセンス遵守状況を間接的に示す役割を果たすことがあります。貢献者がCLAに署名した後にこのリストに追加されることで、プロジェクトが法的要件を満たしていることを示唆します。

Contributor License Agreement (CLA)

Contributor License Agreement (CLA) は、オープンソースプロジェクトにコードやその他の著作物を貢献する個人または組織と、プロジェクトの所有者(または管理団体)との間で締結される法的文書です。CLAの主な目的は以下の通りです。

  • 著作権の明確化: 貢献されたコードの著作権が誰に帰属するか、そしてプロジェクトがそのコードをどのように利用できるかを明確にします。多くのCLAでは、貢献者は自身の著作権を保持しつつ、プロジェクトに対してそのコードをプロジェクトのライセンス(例:MIT, Apache, BSD)の下で利用、変更、配布する永続的で取り消し不能な権利を付与します。一部のCLAでは、著作権をプロジェクトの所有者(例:Google)に譲渡する場合もあります。
  • ライセンスの統一性: プロジェクト全体のコードベースが単一のライセンスの下で配布されることを保証します。これにより、ユーザーはプロジェクトのコードを利用する際のライセンス条件を容易に理解できます。
  • 法的保護: プロジェクトの所有者やユーザーが、貢献されたコードに起因する著作権侵害の訴訟から保護されることを助けます。CLAは、貢献者が提出したコードが彼ら自身のオリジナルであり、第三者の著作権を侵害していないことを保証する条項を含むことが一般的です。

Google CLA

Googleは、Goを含む多くのオープンソースプロジェクトにおいて、独自のCLAを使用しています。Google CLAは、貢献者が自身の著作権を保持しつつ、Googleに対して貢献されたコードをGoogleのオープンソースプロジェクトのライセンスの下で利用、変更、配布する広範な権利を付与する形式が一般的です。これにより、Googleはプロジェクトのコードベースを管理し、法的リスクなしに配布することができます。Goプロジェクトに貢献するためには、通常、このGoogle CLAに署名することが必須となります。

技術的詳細

このコミット自体は、Goのランタイムやコンパイラといったコアな技術要素に直接的な変更を加えるものではありません。しかし、その背後にある「Google CLA」という要素は、オープンソースプロジェクトのガバナンスと法的側面において非常に重要な技術的詳細を含んでいます。

CLAは、単なる同意書ではなく、プロジェクトの法的健全性を維持するためのメカニズムです。特に、企業が主導するオープンソースプロジェクトでは、知的財産権の管理が複雑になるため、CLAの存在が不可欠です。

  1. 著作権の移転またはライセンス付与: CLAには大きく分けて2つのタイプがあります。

    • 著作権移転型 (Copyright Assignment): 貢献者がコードの著作権をプロジェクトの所有者(この場合はGoogle)に完全に移転するタイプ。これにより、プロジェクト所有者はコードに対する完全な法的コントロールを得て、ライセンス変更や訴訟対応などを柔軟に行えます。
    • ライセンス付与型 (License Grant): 貢献者が著作権を保持しつつ、プロジェクト所有者に対して、そのコードをプロジェクトのライセンス(例:BSD)の下で利用、変更、配布する永続的で取り消し不能な広範なライセンスを付与するタイプ。GoプロジェクトのGoogle CLAは、このライセンス付与型に近い形式を採用していると考えられます。これにより、貢献者は自身の著作権を保持しつつ、プロジェクトに貢献できます。
  2. 保証と表明: CLAには、貢献されたコードが貢献者自身のオリジナルであり、第三者の知的財産権を侵害していないこと、および貢献者がそのコードをライセンスする権利を持っていることを保証する条項が含まれます。これは、プロジェクトが将来的に著作権侵害で訴えられるリスクを軽減するために不可欠です。

  3. プロジェクトの持続可能性: CLAは、プロジェクトが将来的にライセンスを変更する必要が生じた場合(例えば、より寛容なライセンスへの移行や、特定のユースケースに対応するためのデュアルライセンスなど)に、すべての貢献されたコードに対して統一的なライセンスを適用できる法的基盤を提供します。これは、個々の貢献者から改めて同意を得る手間を省き、プロジェクトの進化を容易にします。

このコミットは、David Presotto氏がGoプロジェクトに貢献するための法的要件を満たしたことを示すものであり、Goプロジェクトの健全なエコシステムと法的基盤が維持されていることを間接的に示しています。

コアとなるコードの変更箇所

diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 3b80e050b7..f858fa475d 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -147,6 +147,7 @@ David Forsythe <dforsythe@gmail.com>
 David G. Andersen <dave.andersen@gmail.com>
 David Jakob Fritz <david.jakob.fritz@gmail.com>
 David McLeish <davemc@google.com>
+David Presotto <presotto@gmail.com>
 David Symonds <dsymonds@golang.org>
 David Titarenco <david.titarenco@gmail.com>
 Dean Prichard <dean.prichard@gmail.com>

コアとなるコードの解説

このコミットにおける「コアとなるコードの変更」は、CONTRIBUTORSという単一のテキストファイルに対する非常にシンプルな変更です。具体的には、ファイルの147行目の後に新しい行が追加され、David Presotto <presotto@gmail.com>というエントリが挿入されています。

  • --- a/CONTRIBUTORS+++ b/CONTRIBUTORS は、それぞれ変更前のファイルと変更後のファイルを示しています。
  • @@ -147,6 +147,7 @@ は、変更がファイルの147行目から始まり、変更前は6行、変更後は7行になることを示しています。
  • +David Presotto <presotto@gmail.com> の行頭の+記号は、この行が新たに追加されたことを意味します。

この変更は、技術的には単なるテキストファイルの編集ですが、その意味するところは大きいです。この1行の追加は、David Presotto氏がGoプロジェクトの正式な貢献者として認められ、彼の貢献がプロジェクトの歴史に刻まれたことを示しています。また、コミットメッセージにある「Google CLA」の記述から、この追加がCLAへの署名という法的プロセスを経て行われたことが明確に示されており、プロジェクトのガバナンスと法的枠組みが適切に機能していることを裏付けています。

関連リンク

参考にした情報源リンク