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

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

コミット

このコミットは、Go言語プロジェクトの貢献者リストに「Jonathan Gold」氏を追加するものです。具体的には、プロジェクトのAUTHORSファイルとCONTRIBUTORSファイルに彼の名前とメールアドレスが追記されています。これは、彼がGoプロジェクトへの貢献を開始するにあたり、個人のContributor License Agreement (CLA) に署名したことを示しています。

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

https://github.com/golang/go/commit/910959084d01bddc07f1f976d7ba9ad138a64077

元コミット内容

A+C: Jonathan Gold (individual CLA)

This is my last one for today, I hope!

R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/6339052

変更の背景

この変更の背景には、オープンソースプロジェクト、特にGo言語のような大規模なプロジェクトにおける貢献者管理の仕組みがあります。新しい貢献者がプロジェクトにコードを提出する際、プロジェクト側は知的財産権の明確化とプロジェクトの法的保護のために、Contributor License Agreement (CLA) への署名を求めることが一般的です。CLAに署名することで、貢献者は自身の貢献がプロジェクトのライセンスの下で利用されることに同意し、プロジェクト側はその貢献を安心して受け入れることができます。

このコミットは、Jonathan Gold氏が個人のCLAに署名したことを受け、彼を正式な貢献者としてプロジェクトの記録に追加するために行われました。コミットメッセージの「This is my last one for today, I hope!」という記述から、コミット作成者(Russ Cox氏)がその日に複数の同様のCLA関連コミットを行っていたことが伺え、これはGoプロジェクトにおける通常の貢献者追加プロセスの一部であることが示唆されます。

前提知識の解説

Contributor License Agreement (CLA)

CLAは、個人または企業がオープンソースプロジェクトに貢献する際に、その貢献の著作権をプロジェクトの所有者(または特定の財団など)に譲渡するか、またはプロジェクトのライセンスの下で利用することを許可する契約です。これにより、プロジェクトの法的リスクが軽減され、将来的なライセンス変更や訴訟などが発生した場合でも、プロジェクトが安定して運営される基盤が築かれます。Go言語プロジェクトでは、Googleがプロジェクトの法的側面を管理しており、貢献者にはCLAへの署名が求められます。

AUTHORSファイルと CONTRIBUTORSファイル

多くのオープンソースプロジェクトでは、プロジェクトに貢献した人々を記録するためにAUTHORSCONTRIBUTORSといったファイルが使用されます。

  • AUTHORSファイル: 主にプロジェクトの主要な作者や、著作権を持つ個人をリストアップするために使われます。
  • CONTRIBUTORSファイル: コードの作成者だけでなく、ドキュメントの執筆、バグ報告、テスト、デザイン、コミュニティサポートなど、より広範な貢献を行った人々をリストアップするために使われます。

Go言語プロジェクトでは、コードを直接貢献する個人は通常、両方のファイルに記載されます。これは、貢献に対する適切な帰属表示と、プロジェクトの歴史的な記録としての役割を果たします。

GerritとGoプロジェクトのコードレビュープロセス

コミットメッセージにあるhttps://golang.org/cl/6339052は、Goプロジェクトがコードレビューに利用しているGerritというシステムへのリンクです。Gerritは、Gitリポジトリと連携して動作するWebベースのコードレビューツールで、変更がリポジトリにマージされる前に、複数の開発者によるレビューと承認を必要とします。

  • R= (Reviewers): コードレビューを担当するレビュアーを指定します。この場合、golang-dev(Go開発者メーリングリスト)とbradfitz(著名なGo開発者)がレビュアーとして指定されています。
  • CC= (Carbon Copy): レビュープロセスに関する通知を受け取る追加の受信者を指定します。ここでもgolang-devが指定されており、関連する開発者全員が変更を認識できるようにしています。
  • CL (Change-ID): Gerritにおける各変更セット(コミット)に割り当てられる一意の識別子です。

このプロセスにより、Goプロジェクトは高品質なコードベースを維持し、変更がマージされる前に潜在的な問題が特定・修正されることを保証しています。

技術的詳細

このコミットは、Gitの差分(diff)として非常にシンプルです。AUTHORSCONTRIBUTORSという2つのテキストファイルに対して、それぞれ1行ずつ新しいエントリが追加されています。

Gitの差分表示では、--- a/ファイル名が変更前のファイル、+++ b/ファイル名が変更後のファイルを示します。行頭の+は追加された行を示します。

AUTHORSファイルでは、既存のJohn Asmuth <jasmuth@gmail.com>の次の行にJonathan Gold <jgold.bg@gmail.com>が追加されています。 CONTRIBUTORSファイルでも同様に、既存のJonathan Allie <jonallie@google.com>の次の行にJonathan Gold <jgold.bg@gmail.com>が追加されています。

この変更は、Goプロジェクトのビルドシステムやランタイムの動作には直接的な影響を与えませんが、プロジェクトのメタデータとして非常に重要です。これらのファイルは、プロジェクトの歴史、貢献者の認識、そして法的な帰属表示の基盤となります。

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

diff --git a/AUTHORS b/AUTHORS
index 71432b57b1..7f7ebf2469 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -117,6 +117,7 @@ Jeremy Jackins <jeremyjackins@gmail.com>
 Jim McGrath <jimmc2@gmail.com>
 Joe Poirier <jdpoirier@gmail.com>
 John Asmuth <jasmuth@gmail.com>
+Jonathan Gold <jgold.bg@gmail.com>
 Jonathan Mark <jhmark@xenops.com>
 Jonathan Wills <runningwild@gmail.com>
 Jongmin Kim <atomaths@gmail.com>
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index fef2faefe0..4febd1483c 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -177,6 +177,7 @@ John Asmuth <jasmuth@google.com>
 John Beisley <huin@google.com>
 John DeNero <denero@google.com>
 Jonathan Allie <jonallie@google.com>
+Jonathan Gold <jgold.bg@gmail.com>
 Jonathan Mark <jhmark@xenops.com> <jhmark000@gmail.com>
 Jonathan Pittman <jmpittman@google.com> <jonathan.mark.pittman@gmail.com>
 Jonathan Wills <runningwild@gmail.com>

コアとなるコードの解説

このコミットの「コアとなるコード」は、GoプロジェクトのAUTHORSファイルとCONTRIBUTORSファイルへの以下の1行の追加です。

  • AUTHORSファイルに追加された行: Jonathan Gold <jgold.bg@gmail.com>
  • CONTRIBUTORSファイルに追加された行: Jonathan Gold <jgold.bg@gmail.com>

これらの行は、Jonathan Gold氏の名前と彼のメールアドレスを、Goプロジェクトの公式な貢献者リストに登録するものです。この追加は、彼がGoプロジェクトのContributor License Agreement (CLA) に署名し、プロジェクトへの貢献を開始する準備が整ったことを意味します。

これらのファイルは、プロジェクトの透明性と適切な帰属表示を保証するために重要です。将来的にGoプロジェクトのコードベースを分析したり、貢献者の統計を作成したりする際に、これらのファイルが参照されることがあります。また、法的な観点からも、誰がどの部分に貢献したかを明確にする上で不可欠な情報となります。

関連リンク

参考にした情報源リンク

  • Go言語プロジェクトの公式ドキュメントおよび貢献ガイドライン (一般的なCLA、AUTHORS/CONTRIBUTORSファイル、Gerritの使用に関する知識)
  • Gitの差分表示に関する一般的な知識
  • オープンソースプロジェクトにおけるCLAの役割に関する一般的な知識