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

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

このコミットは、Go言語プロジェクトの貢献者リストに新しい個人、James P. Cooper氏を追加するものです。具体的には、AUTHORSファイルとCONTRIBUTORSファイルにJames P. Cooper氏の名前とメールアドレスが追記されています。これは、Goプロジェクトへの貢献を開始するにあたり、個人貢献者ライセンス契約(Individual CLA)が締結されたことを示す管理上の変更です。

コミット

commit eb1227737ef62cf3e84aea4f3c67ccc5f0221190
Author: Brad Fitzpatrick <bradfitz@golang.org>
Date:   Wed Jan 25 17:34:02 2012 -0800

    A+C: Add James P. Cooper (Individual CLA)
    
    R=golang-dev, adg
    CC=golang-dev
    https://golang.org/cl/5573071

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

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

元コミット内容

A+C: Add James P. Cooper (Individual CLA)

R=golang-dev, adg
CC=golang-dev
https://golang.org/cl/5573071

変更の背景

このコミットの背景には、オープンソースプロジェクト、特に大規模なプロジェクトにおける貢献者管理の慣行があります。Go言語のような主要なオープンソースプロジェクトでは、プロジェクトの知的財産権を保護し、将来的なライセンス変更や法的問題に備えるために、貢献者ライセンス契約(Contributor License Agreement, CLA)の締結を求めることが一般的です。

James P. Cooper氏がGoプロジェクトにコードやドキュメントなどの貢献を行うにあたり、Goプロジェクトの管理側は、彼がその貢献に対する適切な権利を有していることを確認し、プロジェクトのライセンスの下でその貢献を配布する許可を得る必要があります。このプロセスの一環として、James P. Cooper氏がIndividual CLAを締結したため、その事実をプロジェクトの公式な貢献者リストであるAUTHORSおよびCONTRIBUTORSファイルに反映させる必要が生じました。

この種のコミットは、コードベースそのものに機能的な変更を加えるものではなく、プロジェクトの管理とガバナンスに関連するものです。新しい貢献者が加わるたびに、同様のコミットが行われることが予想されます。

前提知識の解説

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

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

  1. 知的財産権の明確化: 貢献されたコードやコンテンツの著作権が誰に帰属するかを明確にします。多くの場合、貢献者はプロジェクト所有者に著作権を譲渡するか、またはプロジェクト所有者が貢献されたコンテンツを自由に利用、変更、再配布できる広範なライセンスを付与します。これにより、プロジェクト所有者は将来的にプロジェクトのライセンスを変更したり、法的紛争が発生した場合に貢献されたコードの出所を証明したりすることが容易になります。
  2. ライセンスの統一性: プロジェクト全体で一貫したライセンスモデルを維持するために役立ちます。個々の貢献者が異なるライセンスでコードを提供することを防ぎ、プロジェクトのライセンスが常に適用されることを保証します。
  3. 法的保護: プロジェクト所有者が、貢献されたコードに関する著作権侵害の申し立てやその他の法的問題から保護されることを支援します。

Go言語プロジェクトは、Googleが管理するプロジェクトであるため、GoogleのCLAポリシーに従っています。

AUTHORSファイルとCONTRIBUTORSファイル

多くのオープンソースプロジェクトでは、プロジェクトに貢献した人々をリストアップするために特定のファイルを使用します。

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

Goプロジェクトの場合、これらのファイルは単純なテキストファイルであり、新しい貢献者がCLAを締結するたびに手動で更新されます。

技術的詳細

このコミットは、Go言語のソースコードリポジトリ内の2つのプレーンテキストファイル、AUTHORSCONTRIBUTORSに対する変更です。技術的には、これは非常に単純なファイル操作であり、既存のファイルに新しい行を追加するものです。

  • ファイル形式: 両ファイルとも、各行に貢献者の名前とメールアドレスが記述されたシンプルなテキスト形式です。特定の構造化されたデータ形式(例: JSON, YAML)やデータベースを使用しているわけではありません。
  • 変更の性質: 変更は、ファイルの末尾に新しいエントリを追加する「追記」操作です。既存の行の変更や削除は行われていません。
  • Gitの差分: Gitの差分(diff)を見ると、AUTHORSファイルとCONTRIBUTORSファイルの両方で、それぞれ1行が追加されていることが明確に示されています。index effbcb1522..6ffa22e8f9 100644index a792747315..b982c71a5a 100644といった行は、Gitがファイルの変更前後のハッシュ(インデックス)とファイルモード(100644は通常のファイルを示す)を記録していることを示しています。

この種のコミットは、ソフトウェア開発における「コード」の変更とは異なり、プロジェクトのメタデータや管理情報に対する変更と見なされます。しかし、オープンソースプロジェクトのガバナンスと透明性においては重要な役割を果たします。

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

このコミットで変更された「コード」は、Go言語のソースコードではなく、プロジェクトの管理ファイルです。

AUTHORSファイルへの変更

--- a/AUTHORS
+++ b/AUTHORS
@@ -82,6 +82,7 @@ Icarus Sparry <golang@icarus.freeuk.com>
 Isaac Wagner <ibw@isaacwagner.me>
 James Fysh <james.fysh@gmail.com>
 James Meneghello <rawrz0r@gmail.com>
+James P. Cooper <jamespcooper@gmail.com>
 James Toy <nil@opensesame.st>
 James Whitehead <jnwhiteh@gmail.com>
 Jan H. Hosang <jan.hosang@gmail.com>

CONTRIBUTORSファイルへの変更

--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -129,6 +129,7 @@ Jacob Baskin <jbaskin@google.com>
 James Aguilar <jaguilar@google.com>
 James Fysh <james.fysh@gmail.com>
 James Meneghello <rawrz0r@gmail.com>
+James P. Cooper <jamespcooper@gmail.com>
 James Toy <nil@opensesame.st>
 James Whitehead <jnwhiteh@gmail.com>
 Jamie Gennis <jgennis@google.com>

コアとなるコードの解説

上記の変更箇所は、それぞれAUTHORSファイルとCONTRIBUTORSファイルに新しい行が追加されたことを示しています。

  • +James P. Cooper <jamespcooper@gmail.com>: この行が追加された内容です。James P. Cooper氏の名前と彼のメールアドレスが記載されています。

この変更は、既存のリストに新しいエントリを単純に追加するものであり、複雑なロジックやアルゴリズムは含まれていません。これは、新しい貢献者がプロジェクトに正式に加わったことを記録するための、直接的かつ明確な方法です。

関連リンク

参考にした情報源リンク