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

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

このコミットは、Goプロジェクトの貢献者リストに新しいエントリを追加するものです。具体的には、AUTHORSファイルとCONTRIBUTORSファイルにMichael Pearson氏の情報を追加しています。これは、addcaというツールによって自動生成されたものであり、Michael Pearson氏がGoプロジェクトへの貢献を始めるにあたり、個人としてのContributor License Agreement (CLA) に署名したことを示しています。

コミット

commit 02a9eb9f7a37433fee87f941e4b71e4e35a61fe5
Author: Andrew Gerrand <adg@golang.org>
Date:   Thu Feb 13 15:30:15 2014 +1100

    A+C: Michael Pearson (individual CLA)
    
    Generated by addca.
    
    R=gobot
    CC=golang-codereviews
    https://golang.org/cl/62880043

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

https://github.com/golang/go/commit/02a9eb9f7a37433fee87f941e4b71e4e35a61fe5

元コミット内容

A+C: Michael Pearson (individual CLA)

Generated by addca.

R=gobot
CC=golang-codereviews
https://golang.org/cl/62880043

変更の背景

オープンソースプロジェクト、特にGoogleが主導するような大規模なプロジェクトでは、知的財産権の管理が非常に重要です。貢献者がコードを提出する際には、そのコードがプロジェクトのライセンスの下で利用可能であることを保証するために、Contributor License Agreement (CLA) に署名することが一般的です。CLAは、貢献者が自身の貢献に対する著作権を保持しつつ、プロジェクトの運営者(この場合はGoogle)がその貢献をプロジェクトのライセンスの下で利用、配布、変更する権利を持つことを明確にする法的な合意です。

このコミットは、Michael Pearson氏がGoプロジェクトへの貢献を開始するにあたり、個人としてのCLAに署名したことを反映しています。AUTHORSファイルとCONTRIBUTORSファイルは、プロジェクトに貢献した人々を記録するためのものであり、CLAの署名が完了した後にこれらのファイルに名前が追加されるのが一般的なワークフローです。addcaというツールは、このCLA署名プロセスと貢献者リストの更新を自動化するために使用されたと考えられます。

前提知識の解説

Contributor License Agreement (CLA)

CLAは、オープンソースプロジェクトにおいて、貢献者とプロジェクトの所有者(または管理団体)との間で交わされる法的な契約です。主な目的は以下の通りです。

  1. 知的財産権の明確化: 貢献されたコードの著作権が誰に帰属し、プロジェクトがそのコードをどのように利用できるかを明確にします。これにより、将来的なライセンス問題や著作権侵害のリスクを軽減します。
  2. ライセンスの一貫性: プロジェクト全体で一貫したライセンスモデルを維持するために、すべての貢献がプロジェクトのライセンス条件に準拠していることを保証します。
  3. プロジェクトの持続可能性: プロジェクトの所有者が、貢献されたコードを自由に利用、配布、変更できる権利を持つことで、プロジェクトの長期的なメンテナンスと発展を保証します。

CLAには、個人が署名する「Individual CLA」と、企業が署名する「Corporate CLA」の2種類があります。このコミットでは「individual CLA」と明記されており、Michael Pearson氏が個人として署名したことを示しています。

AUTHORSファイルとCONTRIBUTORSファイル

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

  • AUTHORS: 主にプロジェクトの主要な作者や、初期からの貢献者、あるいは特に大きな影響を与えた人々がリストされることが多いです。
  • CONTRIBUTORS: より広範な貢献者、例えばバグ修正、ドキュメントの改善、新機能の追加など、様々な形でプロジェクトに寄与した人々がリストされます。

これらのファイルは、貢献者への感謝を示すとともに、プロジェクトの歴史とコミュニティの成長を記録する役割も果たします。

addcaツール

コミットメッセージに「Generated by addca.」とあることから、addcaはGoプロジェクト内で使用されている内部ツールであると推測されます。その名前から「Add Contributor Agreement」のような意味合いを持ち、CLAの署名が完了した貢献者の情報を自動的にAUTHORSCONTRIBUTORSファイルに追加するスクリプトまたはプログラムであると考えられます。このような自動化ツールは、大規模なプロジェクトにおいて、手作業によるエラーを防ぎ、ワークフローを効率化するために不可欠です。

Gerrit Code Review (golang.org/cl)

コミットメッセージの最後にhttps://golang.org/cl/62880043というリンクがあります。これは、GoプロジェクトがコードレビューにGerritを使用していることを示しています。Gerritは、Gitリポジトリと連携して動作するWebベースのコードレビューシステムです。

  • CL: Change-Listの略で、Gerritにおける変更の単位を指します。各CLは、一つ以上のコミットから構成されることがあります。
  • レビュープロセス: 貢献者はコード変更をGerritにアップロードし、レビュアー(この場合はgobotgolang-codereviews)がその変更をレビューします。レビューが承認されると、変更はメインリポジトリにマージされます。

このコミット自体は、CLA署名後の自動化された変更であるため、通常のコード変更とは異なり、レビューは形式的なもの(gobotによる自動チェックなど)であった可能性が高いです。

技術的詳細

このコミットの技術的詳細は、主にファイルの変更内容に集約されます。

AUTHORSファイルの変更

AUTHORSファイルは、プロジェクトの主要な貢献者をアルファベット順にリストしています。このコミットでは、Michael Pearson <mipearson@gmail.com>という行が、既存のMichael LewisMichael Stapelbergの間に挿入されています。これは、アルファベット順の規則に従って新しいエントリが追加されたことを示しています。

CONTRIBUTORSファイルの変更

CONTRIBUTORSファイルも同様に、プロジェクトに貢献した人々をアルファベット順にリストしています。このコミットでは、Michael Pearson <mipearson@gmail.com>という行が、既存のMichael MatloobMichael Piatekの間に挿入されています。ここでも、アルファベット順の規則が守られています。

addcaの役割

addcaツールは、CLA署名が確認された後、これらのファイルを自動的に更新する役割を担っています。これにより、手動での編集ミスを防ぎ、貢献者リストの正確性と一貫性を保つことができます。このようなツールは、通常、以下のような処理を行います。

  1. CLA署名データベースの確認。
  2. 新しい署名者の情報を取得。
  3. AUTHORSおよびCONTRIBUTORSファイルの内容を読み込み。
  4. 適切な位置に新しいエントリを挿入(通常はアルファベット順)。
  5. 更新された内容でファイルを書き戻し。
  6. 変更をコミットし、Gerritにプッシュ。

このコミットは、addcaが正常に機能し、Goプロジェクトの貢献者管理ワークフローの一部として自動化されたプロセスが実行されたことを示しています。

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

このコミットによるコードの変更は、以下の2つのファイルに対するものです。

  1. AUTHORSファイルへの1行の追加
  2. CONTRIBUTORSファイルへの1行の追加
diff --git a/AUTHORS b/AUTHORS
index 3c12fcec3a..defe270847 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -256,6 +256,7 @@ Michael Elkins <michael.elkins@gmail.com>
 Michael Gehring <mg@ebfe.org> <gnirheg.leahcim@gmail.com>
 Michael Hoisie <hoisie@gmail.com>
 Michael Lewis <mikelikespie@gmail.com>
+Michael Pearson <mipearson@gmail.com>
 Michael Stapelberg <michael@stapelberg.de>
 Michael Teichgräber <mteichgraeber@gmx.com>
 Michał Derkacz <ziutek@lnet.pl>
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index c9aee3c284..1874597fdb 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -368,6 +368,7 @@ Michael Hudson-Doyle <michael.hudson@linaro.org>
 Michael Kelly <mjk@google.com>
 Michael Lewis <mikelikespie@gmail.com>
 Michael Matloob <matloob@google.com>
+Michael Pearson <mipearson@gmail.com>
 Michael Piatek <piatek@google.com>
 Michael Shields <mshields@google.com>
 Michael Stapelberg <michael@stapelberg.de> <mstplbrg@googlemail.com>

コアとなるコードの解説

上記の差分が示すように、変更は非常にシンプルです。

  • AUTHORSファイルでは、256行目の後に新しい行が追加されています。追加された内容は+Michael Pearson <mipearson@gmail.com>です。
  • CONTRIBUTORSファイルでは、368行目の後に新しい行が追加されています。追加された内容は+Michael Pearson <mipearson@gmail.com>です。

これらの変更は、Michael Pearson氏がGoプロジェクトの正式な貢献者として認識され、その名前とメールアドレスがプロジェクトの公式な貢献者リストに記録されたことを意味します。これは、彼が今後Goプロジェクトにコードやその他の形で貢献する準備が整ったことを示唆しています。

関連リンク

参考にした情報源リンク

  • コミットメッセージの内容
  • GoプロジェクトのGitHubリポジトリの構造(AUTHORSCONTRIBUTORSファイルの存在)
  • 一般的なオープンソースプロジェクトにおけるCLAの概念と運用
  • Gerrit Code Reviewシステムの基本的な知識
  • addcaというツールの命名規則からの推測