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

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

このコミットは、GoプロジェクトのAUTHORSファイルとCONTRIBUTORSファイルに、新しい貢献者であるAulus Egnatius Varialus氏の情報を追加するものです。これは、彼がGoプロジェクトへの貢献を開始するにあたり、個人貢献者ライセンス契約(Individual Contributor License Agreement, ICLA)を締結したことを記録するための定型的な更新です。

コミット

commit dd3e522094cff3ccce7f6f5cd76b31598f5a3734
Author: Ian Lance Taylor <iant@golang.org>
Date:   Wed Sep 4 15:17:42 2013 -0700

    A+C: Aulus Egnatius Varialus (individual CLA)
    
    Generated by addca.
    
    R=gobot
    CC=golang-dev
    https://golang.org/cl/13336045

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

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

元コミット内容

このコミットの元の内容は、AUTHORSファイルとCONTRIBUTORSファイルに以下の行を追加することです。

  • AUTHORSファイルへの追加:
    +Aulus Egnatius Varialus <varialus@gmail.com>
    
  • CONTRIBUTORSファイルへの追加:
    +Aulus Egnatius Varialus <varialus@gmail.com>
    

コミットメッセージには「A+C: Aulus Egnatius Varialus (individual CLA)」とあり、これは「Authors and Contributors: Aulus Egnatius Varialus (個人CLA)」を意味します。また、「Generated by addca.」とあり、これはaddcaというツールによって生成されたコミットであることを示しています。

変更の背景

この変更の背景には、オープンソースプロジェクト、特にGoogleが関与するプロジェクトにおける「貢献者ライセンス契約(Contributor License Agreement, CLA)」の要件があります。GoプロジェクトはGoogleによって開始され、その開発プロセスにおいて、外部からのコード貢献を受け入れる際にCLAの締結を義務付けています。

CLAは、貢献者が自身のコードに対する著作権をプロジェクトの所有者(この場合はGoogle)に譲渡するか、または広範な利用を許可することを保証するための法的な文書です。これにより、プロジェクトの所有者は、将来的なライセンス変更や、貢献されたコードに関する著作権侵害の申し立てなどが発生した場合に、プロジェクトの法的健全性を維持することができます。

Aulus Egnatius Varialus氏がGoプロジェクトにコードを貢献する準備ができたため、彼は個人CLAを締結しました。このコミットは、そのCLA締結を公式に記録し、彼をプロジェクトの貢献者リストに追加するためのものです。

前提知識の解説

貢献者ライセンス契約 (Contributor License Agreement, CLA)

CLAは、オープンソースプロジェクトにおいて、外部の貢献者からコードを受け入れる際に用いられる法的な契約です。主な目的は以下の通りです。

  1. 著作権の明確化: 貢献されたコードの著作権が誰に帰属するかを明確にします。多くの場合、貢献者は自身の著作権をプロジェクトの所有者(企業や財団など)に譲渡するか、またはプロジェクトのライセンスと互換性のある形で利用することを許可します。
  2. 法的リスクの軽減: プロジェクトの所有者は、貢献されたコードが第三者の著作権を侵害していないことを保証し、将来的な訴訟リスクからプロジェクトを保護します。
  3. ライセンスの柔軟性: プロジェクトの所有者が将来的にプロジェクトのライセンスを変更する際に、すべての貢献されたコードに対してその変更を適用できる法的権利を確保します。これにより、プロジェクトの長期的な持続可能性と発展が保証されます。

Goプロジェクトの場合、Googleがプロジェクトの所有者であり、貢献者はGoogleに対してCLAを締結します。

AUTHORSファイルとCONTRIBUTORSファイル

多くのオープンソースプロジェクトでは、プロジェクトに貢献した人々を記録するためのテキストファイルが存在します。

  • AUTHORS: 通常、プロジェクトの主要な作者や、プロジェクトの初期段階から深く関わっている人々をリストアップします。
  • CONTRIBUTORS: プロジェクトに何らかの形で貢献したすべての人々(コード、ドキュメント、バグ報告、テストなど)をより広範にリストアップします。

Goプロジェクトでは、CLAを締結した個人がこれらのファイルに追加されるのが一般的です。

addca ツール

コミットメッセージにある「Generated by addca.」は、このコミットがaddcaというツールによって自動生成されたことを示唆しています。addcaは「add Contributor Agreement」の略であると推測され、Google内部で使用される、CLAの締結状況を管理し、関連するファイルを自動的に更新するためのスクリプトまたはツールであると考えられます。

このようなツールは、大規模なオープンソースプロジェクトにおいて、手作業によるエラーを防ぎ、貢献者の追加プロセスを効率化するために不可欠です。CLAが締結されると、このツールが実行され、AUTHORSCONTRIBUTORSファイルに新しいエントリが追加されるというワークフローが考えられます。

技術的詳細

このコミット自体は、Go言語のランタイムやコンパイラといったコア部分のコード変更ではなく、プロジェクトのメタデータに関する変更です。具体的には、以下の2つのテキストファイルが変更されています。

  1. AUTHORS: プロジェクトの主要な作者を列挙するファイル。
  2. CONTRIBUTORS: プロジェクトに貢献したすべての個人を列挙するファイル。

変更内容は、両ファイルにAulus Egnatius Varialus <varialus@gmail.com>という行を1行ずつ追加するだけです。これは、新しい貢献者がGoプロジェクトに正式に加わったことを示す記録的な変更であり、Goのビルドプロセスや実行時の動作には直接的な影響を与えません。

コミットメッセージのR=gobotは、Goプロジェクトでコードレビューを自動化するために使用されるボット(gobot)によるレビューが完了したことを示しています。CC=golang-devは、この変更がgolang-devメーリングリストに通知されたことを意味します。https://golang.org/cl/13336045は、この変更に対応するGerrit Code Reviewシステム上のチェンジリスト(Change List, CL)へのリンクです。Goプロジェクトでは、GitHubにプッシュされる前にGerritでコードレビューが行われるのが標準的なワークフローです。

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

このコミットにおける「コアとなるコード」は、Go言語のソースコードそのものではなく、プロジェクトの管理ファイルです。変更箇所は以下の通りです。

AUTHORSファイル

--- a/AUTHORS
+++ b/AUTHORS
@@ -46,6 +46,7 @@ Anthony Martin <ality@pbrane.org>
 Anthony Starks <ajstarks@gmail.com>
 Aron Nopanen <aron.nopanen@gmail.com>
 Arvindh Rajesh Tamilmani <art@a-30.net>
+Aulus Egnatius Varialus <varialus@gmail.com>
 Ben Olive <sionide21@gmail.com>
 Benjamin Black <b@b3k.us>
 Benny Siegert <bsiegert@gmail.com>

CONTRIBUTORSファイル

--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -78,6 +78,7 @@ Anthony Starks <ajstarks@gmail.com>
 Aron Nopanen <aron.nopanen@gmail.com>
 Arvindh Rajesh Tamilmani <art@a-30.net>
 Asim Shankar <asimshankar@gmail.com>
+Aulus Egnatius Varialus <varialus@gmail.com>
 Austin Clements <aclements@csail.mit.edu>
 Balazs Lecz <leczb@google.com>
 Ben Eitzen <eitzenb@golang.org>

コアとなるコードの解説

上記の差分が示すように、変更は非常に単純です。

  • AUTHORSファイルでは、Arvindh Rajesh Tamilmani <art@a-30.net>のエントリの直後に、新しい行Aulus Egnatius Varialus <varialus@gmail.com>が追加されています。
  • CONTRIBUTORSファイルでも同様に、Asim Shankar <asimshankar@gmail.com>のエントリの直後に、新しい行Aulus Egnatius Varialus <varialus@gmail.com>が追加されています。

これらの変更は、テキストファイルへの単純な行追加であり、プログラミング言語の構文やセマンティクスに関する複雑なロジックは含まれていません。これは、新しい貢献者がプロジェクトの公式な記録に追加されたことを示す、純粋なメタデータ更新です。

関連リンク

  • GoプロジェクトのCLAに関する情報: Goプロジェクトの公式ドキュメントや貢献ガイドラインには、CLAに関する詳細な情報が記載されています。

参考にした情報源リンク

  • GoプロジェクトのGitHubリポジトリ: https://github.com/golang/go
  • Gerrit Code Reviewシステム: https://go.googlesource.com/go/+/refs/heads/master (GoプロジェクトのGerritインスタンス)
  • 一般的なオープンソースプロジェクトにおけるCLAの概念に関する知識
  • コミットメッセージの慣習(R=, CC=, CL=など)に関する一般的な知識