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

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

本解説は、Go言語プロジェクトにおけるコミット d531ea85b1a7957f77e6ca1f について詳細に分析したものです。このコミットは、新しい貢献者である David du Colombier 氏をプロジェクトの AUTHORS および CONTRIBUTORS ファイルに追加するものです。

コミット

  • コミットハッシュ: d531ea85b1a7957fcc3a56ac9704475f77e6ca1f
  • Author: Russ Cox rsc@golang.org
  • Date: Wed Feb 15 14:36:12 2012 -0500
  • コミットメッセージ:
    A+C: David du Colombier (individual CLA)
    
    R=golang-dev, gri
    CC=golang-dev
    https://golang.org/cl/5672055
    

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

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

元コミット内容

diff --git a/AUTHORS b/AUTHORS
index f82461467b..3bb8372b52 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -55,6 +55,7 @@ Daniel Krech <eikeon@eikeon.com>
 Daniel Theophanes <kardianos@gmail.com>
 Darren Elwood <darren@textnode.com>
 Dave Cheney <dave@cheney.net>
+David du Colombier <0intro@gmail.com>
 David Forsythe <dforsythe@gmail.com>
 David G. Andersen <dave.andersen@gmail.com>
 David Jakob Fritz <david.jakob.fritz@gmail.com>
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 9689846037..fe7e16331a 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -95,6 +95,7 @@ Dave Cheney <dave@cheney.net>
 Dave Grijalva <dgrijalva@ngmoco.com>
 David Anderson <danderson@google.com>
 David Crawshaw <david.crawshaw@zentus.com> <crawshaw@google.com>
+David du Colombier <0intro@gmail.com>
 David Forsythe <dforsythe@gmail.com>
 David G. Andersen <dave.andersen@gmail.com>
 David Jakob Fritz <david.jakob.fritz@gmail.com>

変更の背景

このコミットの主な背景は、Go言語プロジェクトに新たな貢献者である David du Colombier 氏を正式に登録することです。オープンソースプロジェクトでは、コードの著作権やライセンスに関する明確な取り決めが重要であり、特に大規模なプロジェクトでは、貢献者が Contributor License Agreement (CLA) に署名することが求められる場合があります。コミットメッセージにある「(individual CLA)」という記述は、David du Colombier 氏が個人のCLAに署名したことを示唆しており、これにより彼の貢献がプロジェクトのライセンス要件に合致することが保証されます。

AUTHORS ファイルと CONTRIBUTORS ファイルは、プロジェクトに貢献した人々を記録するための一般的な慣習です。これにより、プロジェクトの歴史と貢献者の努力が可視化され、コミュニティの透明性が高まります。

前提知識の解説

AUTHORS ファイルと CONTRIBUTORS ファイル

オープンソースプロジェクトにおいて、AUTHORS および CONTRIBUTORS ファイルは、プロジェクトの歴史と貢献者を記録するために使用されるテキストファイルです。

  • AUTHORS ファイル: 通常、プロジェクトの主要な作者や初期の貢献者、または著作権を保持する個人や団体がリストされます。このファイルは、プロジェクトの著作権表示と密接に関連していることが多いです。
  • CONTRIBUTORS ファイル: プロジェクトに何らかの形で貢献したすべての個人がリストされます。これには、コードの寄稿者だけでなく、ドキュメントの作成者、バグ報告者、テスター、翻訳者など、幅広い貢献が含まれることがあります。

これらのファイルは、プロジェクトの透明性を高め、貢献者の努力を認識し、法的な側面(特にライセンスと著作権)を明確にする上で重要な役割を果たします。

Contributor License Agreement (CLA)

CLA(貢献者ライセンス同意書)は、オープンソースプロジェクトにおいて、貢献者がその貢献物に対する著作権をプロジェクトの所有者(または特定の財団)に譲渡するか、または特定のライセンスの下で利用することを許可することに同意する法的な文書です。

CLAの主な目的は以下の通りです。

  1. ライセンスの明確化: 貢献されたコードがプロジェクトのライセンスと互換性があることを保証し、将来的なライセンス変更や再ライセンスの際に問題が発生しないようにします。
  2. 著作権の管理: プロジェクトの所有者が、貢献されたコードの著作権を管理し、プロジェクト全体のライセンスを統一的に適用できるようにします。これにより、プロジェクトの法的な健全性が保たれます。
  3. 訴訟リスクの軽減: 貢献されたコードに関する著作権侵害の申し立てがあった場合に、プロジェクトが法的に保護される基盤を提供します。

Go言語のような大規模なオープンソースプロジェクトでは、Googleなどの企業がプロジェクトをホストしている場合が多く、CLAの署名は一般的な要件となっています。これにより、プロジェクトの長期的な持続可能性と法的な安定性が確保されます。

技術的詳細

このコミットは、Gitの基本的な機能であるファイルの変更(追加行の挿入)によって実現されています。具体的には、AUTHORSCONTRIBUTORS という2つのテキストファイルに対して、新しい行が追加されています。

Gitの差分(diff)表示を見ると、以下の情報が読み取れます。

  • diff --git a/AUTHORS b/AUTHORS: AUTHORS ファイルに対する変更を示します。a/ は変更前のファイル、b/ は変更後のファイルを表します。
  • index f82461467b..3bb8372b52 100644: ファイルのGitオブジェクトハッシュの変更と、ファイルモード(ここでは 100644 で通常のファイルであることを示す)を示します。
  • --- a/AUTHORS+++ b/AUTHORS: 変更前と変更後のファイルパスを示します。
  • @@ -55,6 +55,7 @@: これは「hunk header」と呼ばれ、変更がファイルのどの部分で行われたかを示します。-55,6 は変更前のファイルで55行目から6行が対象であることを意味し、+55,7 は変更後のファイルで55行目から7行が対象であることを意味します。つまり、この範囲で1行が追加されたことを示唆しています。
  • +David du Colombier <0intro@gmail.com>: これは追加された行を示します。行頭の + は、その行が新しく追加されたことを意味します。

同様の変更が CONTRIBUTORS ファイルにも適用されています。

このようなファイルの変更は、通常、以下の手順で行われます。

  1. ローカルリポジトリで対象のファイル(AUTHORSCONTRIBUTORS)をテキストエディタで開きます。
  2. 適切な位置に新しい貢献者の情報を追加します。この場合、既存のリストのアルファベット順に従って挿入されている可能性があります。
  3. 変更をステージングエリアに追加します (git add AUTHORS CONTRIBUTORS)。
  4. 変更をコミットします (git commit -m "A+C: David du Colombier (individual CLA)")。
  5. リモートリポジトリにプッシュします (git push)。

このコミットは、Goプロジェクトの貢献プロセスの一部として、レビューと承認を経てマージされたものと考えられます。コミットメッセージにある R=golang-dev, griCC=golang-dev は、コードレビュー担当者(R)とカーボンコピー(CC)のリストを示しており、Goプロジェクトが Gerrit を使用したコードレビュープロセスを採用していることを示唆しています。https://golang.org/cl/5672055 は、Gerrit 上の変更リスト(Change-List)へのリンクです。

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

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

具体的には、以下の2つのファイルにそれぞれ1行ずつ追加されています。

  1. AUTHORS ファイル:

    --- a/AUTHORS
    +++ b/AUTHORS
    @@ -55,6 +55,7 @@ Daniel Krech <eikeon@eikeon.com>
     Daniel Theophanes <kardianos@gmail.com>
     Darren Elwood <darren@textnode.com>
     Dave Cheney <dave@cheney.net>
    +David du Colombier <0intro@gmail.com>
     David Forsythe <dforsythe@gmail.com>
     David G. Andersen <dave.andersen@gmail.com>
     David Jakob Fritz <david.jakob.fritz@gmail.com>
    

    Dave Cheney <dave@cheney.net> の行の直後に、David du Colombier <0intro@gmail.com> が追加されています。

  2. CONTRIBUTORS ファイル:

    --- a/CONTRIBUTORS
    +++ b/CONTRIBUTORS
    @@ -95,6 +95,7 @@ Dave Cheney <dave@cheney.net>
     Dave Grijalva <dgrijalva@ngmoco.com>
     David Anderson <danderson@google.com>
     David Crawshaw <david.crawshaw@zentus.com> <crawshaw@google.com>
    +David du Colombier <0intro@gmail.com>
     David Forsythe <dforsythe@gmail.com>
     David G. Andersen <dave.andersen@gmail.com>
     David Jakob Fritz <david.jakob.fritz@gmail.com>
    

    David Crawshaw <david.crawshaw@zentus.com> <crawshaw@google.com> の行の直後に、David du Colombier <0intro@gmail.com> が追加されています。

コアとなるコードの解説

追加された行は、新しい貢献者の氏名とメールアドレスを標準的な形式で記述したものです。

  • David du Colombier: 貢献者の氏名。
  • <0intro@gmail.com>: 貢献者のメールアドレス。

これらの情報は、プロジェクトの貢献者リストに David du Colombier 氏を正式に含めるために必要です。Goプロジェクトでは、貢献者の情報をアルファベット順に整理していることが、既存のリストへの挿入位置から推測できます。これにより、リストの可読性と管理のしやすさが保たれます。

この変更自体は、Go言語の機能や振る舞いに直接的な影響を与えるものではありませんが、プロジェクトのガバナンス、透明性、および法的な側面において重要な意味を持ちます。新しい貢献者が追加されるたびに、同様のコミットが行われることが予想されます。

関連リンク

参考にした情報源リンク

  • Go言語の公式ドキュメント(貢献ガイドラインなど、一般的なGoプロジェクトの貢献プロセスに関する情報)
  • オープンソースプロジェクトにおける AUTHORS および CONTRIBUTORS ファイルの一般的な慣習
  • Contributor License Agreement (CLA) に関する一般的な情報