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

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

このコミットは、Goプロジェクトの貢献者リストに新しいエントリを追加するものです。具体的には、AUTHORSファイルとCONTRIBUTORSファイルに、新しい個人貢献者であるNicolas Antonius Ernst Leopold Maria Kaiser氏の名前とメールアドレスを追加しています。これは、彼がGoプロジェクトへの貢献を開始するにあたり、個人のContributor License Agreement (CLA) を締結したことを示しています。

コミット

commit 6801c0147f89ba3784c9ae6bac11abcac333e3b3
Author: Andrew Gerrand <adg@golang.org>
Date:   Wed Dec 18 15:48:05 2013 +1100

    A+C: Nicolas Antonius Ernst Leopold Maria Kaiser (individual CLA)
    
    Generated by addca.
    
    R=gobot, nikai
    CC=golang-dev
    https://golang.org/cl/43620043

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

https://github.com/golang/go/commit/6801c0147f89ba3784c9ae6bac11abcac333e3b3

元コミット内容

A+C: Nicolas Antonius Ernst Leopold Maria Kaiser (individual CLA)

Generated by addca.

R=gobot, nikai
CC=golang-dev
https://golang.org/cl/43620043

変更の背景

このコミットの背景には、オープンソースプロジェクトにおける貢献者の管理と、知的財産権の明確化という重要な側面があります。Goプロジェクトのような大規模なオープンソースプロジェクトでは、多数の個人や企業がコードベースに貢献します。これらの貢献がプロジェクトのライセンスの下で適切に利用されることを保証するため、多くのプロジェクトではContributor License Agreement (CLA) の締結を求めています。

Nicolas Antonius Ernst Leopold Maria Kaiser氏がGoプロジェクトに貢献するにあたり、個人のCLAを締結したため、その事実をプロジェクトの公式な貢献者リストに反映させる必要がありました。このコミットは、その管理プロセスの一環として、自動化されたツール(addca)によって生成されたものです。これにより、将来の貢献が法的に保護され、プロジェクトの健全な発展が保証されます。

前提知識の解説

AUTHORSファイルとCONTRIBUTORSファイル

多くのオープンソースプロジェクト、特に大規模なものや歴史のあるプロジェクトでは、AUTHORSCONTRIBUTORSといったファイルがプロジェクトのルートディレクトリに存在します。これらのファイルは、プロジェクトに貢献した個人や組織のリストを保持する役割を担っています。

  • AUTHORSファイル: 主にプロジェクトの主要な作者や、初期からの貢献者、あるいは著作権を保持する個人や団体をリストアップするために使用されます。
  • CONTRIBUTORSファイル: プロジェクトに何らかの形で貢献したすべての個人や組織をリストアップするために使用されます。これには、コードの寄稿者だけでなく、ドキュメントの作成者、バグ報告者、テスター、翻訳者なども含まれる場合があります。

これらのファイルは、プロジェクトの透明性を高め、貢献者への適切なクレジットを付与し、コミュニティの認識を促進する上で重要な役割を果たします。また、法的な観点からも、プロジェクトの著作権帰属を明確にする一助となることがあります。

Contributor License Agreement (CLA)

CLA(Contributor License Agreement)は、オープンソースプロジェクトにおいて、貢献者がその貢献物(コード、ドキュメントなど)の著作権をプロジェクトの所有者(または特定の財団など)に譲渡するか、あるいは特定のライセンスの下で利用することを許可する契約です。

CLAを導入する主な目的は以下の通りです。

  1. 知的財産権の明確化: 貢献されたコードの著作権が誰に帰属するのか、あるいはどのような条件で利用が許可されるのかを明確にします。これにより、将来的なライセンスに関する紛争や不明確さを避けることができます。
  2. ライセンスの統一性: プロジェクト全体で一貫したライセンスを適用することを可能にします。貢献者がそれぞれ異なるライセンスでコードを提供した場合、プロジェクト全体のライセンス管理が複雑になる可能性があります。CLAは、すべての貢献がプロジェクトの主要なライセンスの下で再ライセンスされることを保証します。
  3. プロジェクトの保護: 悪意のある貢献や、著作権侵害のコードがプロジェクトに混入するリスクを軽減します。CLAは、貢献者が自身の貢献がオリジナルであり、第三者の権利を侵害していないことを保証する条項を含むことが一般的です。
  4. 再ライセンスの柔軟性: プロジェクトの所有者が将来的にライセンスを変更する必要が生じた場合、CLAによってその変更が容易になります。貢献者から著作権の譲渡を受けている場合、個々の貢献者から再同意を得る必要がなくなります。

Goプロジェクトでは、Googleがプロジェクトの所有者であり、貢献者は個人のCLA(Individual CLA)または企業としてのCLA(Corporate CLA)を締結することが求められます。これにより、Goプロジェクトのコードベース全体の知的財産権が適切に管理され、プロジェクトの長期的な持続可能性が確保されています。

addcaツール

コミットメッセージに「Generated by addca.」とあることから、この変更がaddcaというツールによって自動生成されたものであることがわかります。これは、新しいCLAが締結された際に、関連するファイル(この場合はAUTHORSCONTRIBUTORS)を自動的に更新するための内部ツールであると推測されます。このような自動化は、大規模プロジェクトにおける管理作業の効率化に貢献します。

技術的詳細

このコミットは、Goプロジェクトのソースコードリポジトリ内の2つのテキストファイル、AUTHORSCONTRIBUTORSに対して行われた非常にシンプルな変更です。具体的には、両ファイルに新しい行が1行ずつ追加されています。

追加された行は以下の通りです。

Nicolas Kaiser <nikai@nikai.net>

この行は、新しい貢献者の名前と、彼がGoプロジェクトで関連付けられているメールアドレスを示しています。ファイル内の既存のエントリのアルファベット順に従って、適切な位置に挿入されています。

ファイルの変更は、Gitの差分(diff)形式で示されており、--- a/AUTHORS+++ b/AUTHORS--- a/CONTRIBUTORS+++ b/CONTRIBUTORSは、それぞれ変更前のファイルと変更後のファイルを示しています。行頭の+記号は、その行が新しく追加されたことを意味します。

この変更は、コードの機能には一切影響を与えません。純粋にプロジェクトのメタデータ、特に貢献者に関する情報を更新するためのものです。

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

diff --git a/AUTHORS b/AUTHORS
index 223f30966f..745ef7580a 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -254,6 +254,7 @@ Nicholas Presta <nick@nickpresta.ca> <nick1presta@gmail.com>
 Nicholas Sullivan <nicholas.sullivan@gmail.com>
 Nicholas Waples <nwaples@gmail.com>
 Nick Craig-Wood <nick@craig-wood.com> <nickcw@gmail.com>
+Nicolas Kaiser <nikai@nikai.net>
 Nicolas Owens <mischief@offblast.org>
 Nigel Kerr <nigel.kerr@gmail.com>
 Nigel Tao <nigeltao@golang.org>
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 7d0f7ad58f..291272592b 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -368,6 +368,7 @@ Nicholas Presta <nick@nickpresta.ca> <nick1presta@gmail.com>
 Nicholas Sullivan <nicholas.sullivan@gmail.com>
 Nicholas Waples <nwaples@gmail.com>
 Nick Craig-Wood <nick@craig-wood.com> <nickcw@gmail.com>
+Nicolas Kaiser <nikai@nikai.net>
 Nicolas Owens <mischief@offblast.org>
 Nigel Kerr <nigel.kerr@gmail.com>
 Nigel Tao <nigeltao@golang.org>

コアとなるコードの解説

上記の差分は、AUTHORSファイルとCONTRIBUTORSファイルに対する変更を示しています。

  • diff --git a/AUTHORS b/AUTHORS および diff --git a/CONTRIBUTORS b/CONTRIBUTORS: これらの行は、それぞれAUTHORSファイルとCONTRIBUTORSファイルに対する変更の開始を示しています。a/は変更前のファイル、b/は変更後のファイルを表します。

  • index 223f30966f..745ef7580a 100644 および index 7d0f7ad58f..291272592b 100644: これらはGitの内部的な情報で、ファイルのハッシュ値(BLOB ID)とファイルモードを示しています。変更前と変更後のファイルのハッシュ値が異なることで、ファイルの内容が変更されたことがわかります。100644は、通常のファイル(実行可能ではない)であることを示します。

  • --- a/AUTHORS および +++ b/AUTHORS (同様に CONTRIBUTORS): これらは、どのファイルが変更されたかを示す標準的なdiffヘッダーです。

  • @@ -254,6 +254,7 @@ (AUTHORSファイルの場合): これは「hunk header」と呼ばれ、変更がファイルのどこで行われたかを示します。

    • -254,6: 変更前のファイルでは、254行目から6行が表示されていることを意味します。
    • +254,7: 変更後のファイルでは、254行目から7行が表示されていることを意味します。 つまり、この位置で1行が追加されたことを示唆しています。
  • Nicholas Presta <nick@nickpresta.ca> <nick1presta@gmail.com>

  • Nicholas Sullivan <nicholas.sullivan@gmail.com>

  • Nicholas Waples <nwaples@gmail.com>

  • Nick Craig-Wood <nick@craig-wood.com> <nickcw@gmail.com> これらの行は、変更前と変更後で共通のコンテキスト行であり、変更は加えられていません。行頭にスペースがあることで、変更がないことを示します。

  • +Nicolas Kaiser <nikai@nikai.net>: この行が、AUTHORSファイルとCONTRIBUTORSファイルの両方に追加された新しいエントリです。行頭の+記号は、この行が新しく追加されたことを明確に示しています。これにより、Nicolas Kaiser氏がGoプロジェクトの貢献者リストに正式に加わったことが記録されます。

  • Nicolas Owens <mischief@offblast.org>

  • Nigel Kerr <nigel.kerr@gmail.com>

  • Nigel Tao <nigeltao@golang.org> これらの行も、変更前と変更後で共通のコンテキスト行です。

このコミットは、Goプロジェクトの管理プロセスの一部であり、新しい貢献者がプロジェクトに加わる際の標準的な手順を反映しています。

関連リンク

参考にした情報源リンク

  • GoプロジェクトのGitHubリポジトリ: https://github.com/golang/go
  • Gitのdiff形式に関する一般的な情報 (例: git diff のマニュアルページなど)
  • Contributor License Agreement (CLA) に関する一般的な情報 (例: Wikipedia, Linux Foundationなど)
  • Goプロジェクトの貢献に関する公式ドキュメント
  • コミットメッセージ内のCL番号: https://golang.org/cl/43620043 (これはGoのGerritコードレビューシステムへのリンクです。現在はgo.dev/cl/にリダイレクトされます。)
  • addcaツールに関する情報(Goプロジェクトの内部ツールであるため、公開されているドキュメントは少ない可能性がありますが、コミットメッセージからその目的を推測しました。)