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

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

このコミットは、GoプロジェクトのAUTHORSファイルとCONTRIBUTORSファイルに、新たな貢献者であるLuke Curley氏を追加するものです。これは、オープンソースプロジェクトにおける一般的な運用の一部であり、貢献者がプロジェクトにコードを提出する際に、その貢献がプロジェクトのライセンスと互換性があることを保証するために行われます。

コミット

commit a75875fc0841b64a122b3769e0fe33908573fb8a
Author: Adam Langley <agl@golang.org>
Date:   Fri Jan 17 11:01:03 2014 -0500

    A+C: Luke Curley (individual CLA)
    
    Generated by addca.
    
    R=gobot
    CC=golang-codereviews
    https://golang.org/cl/53710043

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

https://github.com/golang/go/commit/a75875fc0841b64a122b3769e0fe33908573fb8a

元コミット内容

このコミットの元々の内容は、Luke Curley氏をGoプロジェクトのAUTHORSファイルとCONTRIBUTORSファイルに追加することです。コミットメッセージには「A+C: Luke Curley (individual CLA)」とあり、これは「Add and Commit」の略で、Luke Curley氏が個人貢献者ライセンス契約(Individual Contributor License Agreement, ICLA)を締結したことを示しています。また、「Generated by addca.」という記述から、addcaというツールによってこの変更が自動生成されたことがわかります。

変更の背景

オープンソースプロジェクト、特にGoogleが主導するような大規模プロジェクトでは、知的財産権の管理が非常に重要です。プロジェクトにコードを貢献する開発者は、そのコードがプロジェクトのライセンスの下で適切に利用されることを保証するために、貢献者ライセンス契約(CLA)に署名することが一般的です。CLAは、貢献者が自身のコードに対する著作権を保持しつつ、プロジェクトに対してそのコードを自由に利用、変更、配布する権利を付与する法的な合意です。

このコミットは、Luke Curley氏がGoプロジェクトに貢献を開始するにあたり、必要なCLAを締結したことを反映しています。CLAの締結後、その貢献者の名前がAUTHORSおよびCONTRIBUTORSファイルに追加されることで、プロジェクトへの正式な参加が記録されます。これにより、将来的にその貢献者のコードがプロジェクトにマージされる際の法的な障壁が取り除かれます。

前提知識の解説

貢献者ライセンス契約 (CLA)

CLAは、個人または企業がオープンソースプロジェクトに貢献する際に、プロジェクトの所有者(この場合はGoogle/Goプロジェクト)と締結する法的な契約です。主な目的は以下の通りです。

  1. 知的財産権の明確化: 貢献されたコードの著作権が誰に帰属し、プロジェクトがそのコードをどのように利用できるかを明確にします。多くの場合、貢献者は著作権を保持しつつ、プロジェクトに永続的で取り消し不能なライセンスを付与します。
  2. ライセンスの保証: 貢献されたコードが、プロジェクトのライセンス(例: BSDライセンス)と互換性があることを保証します。これにより、プロジェクト全体が単一のライセンスの下で配布され続けることが可能になります。
  3. 訴訟リスクの軽減: 貢献されたコードに関する将来的な著作権侵害や特許侵害の訴訟リスクを軽減します。

Goプロジェクトでは、Googleが管理する他の多くのオープンソースプロジェクトと同様に、貢献者にはCLAの締結が求められます。

AUTHORSファイルとCONTRIBUTORSファイル

多くのオープンソースプロジェクトには、プロジェクトに貢献した人々の名前をリストアップするファイルが存在します。

  • AUTHORSファイル: 通常、プロジェクトの主要な作者や、特に大きな貢献をした人々をリストアップします。このファイルは、プロジェクトの歴史的な記録としての意味合いが強いです。
  • CONTRIBUTORSファイル: プロジェクトに何らかの形で貢献したすべての人々(コードの提出者、バグ報告者、ドキュメントの改善者など)をより包括的にリストアップします。

これらのファイルは、プロジェクトへの貢献を認識し、コミュニティの努力を可視化する役割を果たします。

addcaツール

コミットメッセージにある「Generated by addca.」は、この変更がaddcaというツールによって自動生成されたことを示唆しています。addcaは「Add Contributor Agreement」の略であると推測され、Goプロジェクトの内部ツールとして、CLAが締結された際に自動的にAUTHORSおよびCONTRIBUTORSファイルを更新するために使用されていると考えられます。このような自動化ツールは、大規模なプロジェクトにおいて、手作業によるエラーを防ぎ、運用効率を高めるために不可欠です。

技術的詳細

このコミット自体は、Goランタイムのコードベースに直接的な機能変更を加えるものではありません。その代わりに、プロジェクトのメタデータ、具体的には貢献者リストを更新するものです。

AUTHORSファイルとCONTRIBUTORSファイルは、プレーンテキストファイルであり、各行に貢献者の名前とメールアドレスが記述されています。このコミットでは、以下の行がそれぞれのファイルに追加されています。

  • AUTHORS: Luke Curley <qpingu@gmail.com>
  • CONTRIBUTORS: Luke Curley <qpingu@gmail.com>

ファイルの変更は、Gitの差分(diff)として表現されており、既存の行の間に新しい行が挿入されていることがわかります。index行は、Gitがファイルの変更を追跡するために使用するハッシュ値を示しています。

diff --git a/AUTHORS b/AUTHORS
index 39d93e1e5b..5cede291a0 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -218,6 +218,7 @@ Lorenzo Stoakes <lstoakes@gmail.com>
 Luca Greco <luca.greco@alcacoop.it>
 Lucio De Re <lucio.dere@gmail.com>
 Luit van Drongelen <luitvd@gmail.com>
+Luke Curley <qpingu@gmail.com>
 Marco Hennings <marco.hennings@freiheit.com>
 Marko Juhani Silokunnas <marko.silokunnas@gmail.com>
 Marko Tiikkaja <marko@joh.to>
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 8d1eae1c8e..f32d6975b3 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -317,6 +317,7 @@ Louis Kruger <louisk@google.com>
 Luca Greco <luca.greco@alcacoop.it>
 Lucio De Re <lucio.dere@gmail.com>
 Luit van Drongelen <luitvd@gmail.com>
+Luke Curley <qpingu@gmail.com>
 Luuk van Dijk <lvd@golang.org> <lvd@google.com>
 Manu Garg <manugarg@google.com>
 Marcel van Lohuizen <mpvl@golang.org>

この差分は、Gitがどのようにファイルの変更を記録するかを示す典型的な例です。--- a/AUTHORS+++ b/AUTHORSは、それぞれ変更前のファイルと変更後のファイルを示します。@@ -218,6 +218,7 @@は、変更がファイルの218行目から始まり、変更前は6行、変更後は7行であることを示しています。+記号は追加された行を示します。

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

このコミットにおける「コード」の変更箇所は、Goのランタイムやライブラリのソースコードではなく、プロジェクトのメタデータファイルであるAUTHORSCONTRIBUTORSです。

  • AUTHORSファイル:

    --- a/AUTHORS
    +++ b/AUTHORS
    @@ -218,6 +218,7 @@ Lorenzo Stoakes <lstoakes@gmail.com>
     Luca Greco <luca.greco@alcacoop.it>
     Lucio De Re <lucio.dere@gmail.com>
     Luit van Drongelen <luitvd@gmail.com>
    +Luke Curley <qpingu@gmail.com>
     Marco Hennings <marco.hennings@freiheit.com>
     Marko Juhani Silokunnas <marko.silokunnas@gmail.com>
     Marko Tiikkaja <marko@joh.to>
    
  • CONTRIBUTORSファイル:

    --- a/CONTRIBUTORS
    +++ b/CONTRIBUTORS
    @@ -317,6 +317,7 @@ Louis Kruger <louisk@google.com>
     Luca Greco <luca.greco@alcacoop.it>
     Lucio De Re <lucio.dere@gmail.com>
     Luit van Drongelen <luitvd@gmail.com>
    +Luke Curley <qpingu@gmail.com>
     Luuk van Dijk <lvd@golang.org> <lvd@google.com>
     Manu Garg <manugarg@google.com>
     Marcel van Lohuizen <mpvl@golang.org>
    

コアとなるコードの解説

このコミットの「コアとなるコード」は、前述の通り、AUTHORSCONTRIBUTORSというテキストファイルへの単純な行追加です。これらのファイルは、Go言語のコンパイラやランタイムの動作に直接影響を与えるものではありませんが、プロジェクトのガバナンスと法的な側面において重要な役割を果たします。

追加された行は、貢献者の氏名とメールアドレスを標準的な形式で記述したものです。これにより、Goプロジェクトの公式な貢献者リストにLuke Curley氏が追加され、彼の将来の貢献が法的に適切に扱われる基盤が整えられました。

この変更は、Goプロジェクトがオープンソースコミュニティからの貢献をどのように管理しているかを示す良い例です。CLAの締結と貢献者リストへの追加は、プロジェクトの健全性と持続可能性を維持するための重要なプロセスの一部です。

関連リンク

参考にした情報源リンク

  • GoプロジェクトのGitHubリポジトリ: https://github.com/golang/go
  • Gitの差分表示に関する一般的なドキュメント
  • オープンソースプロジェクトにおけるCLAの役割に関する一般的な情報源(例: Wikipedia, 各プロジェクトの貢献ガイドライン)