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

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

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

コミット

commit 01bdeda880b18e87f98aae48a151f6f2c5fb4a74
Author: Rob Pike <r@golang.org>
Date:   Sun Jul 14 12:54:45 2013 +1000

    A+C: Joseph Holsten (individual CLA)
    
    Generated by addca.
    
    R=gobot
    CC=golang-dev
    https://golang.org/cl/11245043
---
 AUTHORS      | 1 +
 CONTRIBUTORS | 1 +
 2 files changed, 2 insertions(+)

diff --git a/AUTHORS b/AUTHORS
index 99135886cc..2e4a37b980 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -171,6 +171,7 @@ Jonathan Rudenberg <jonathan@titanous.com>
 Jonathan Wills <runningwild@gmail.com>
 Jongmin Kim <atomaths@gmail.com>
 Jose Luis Vázquez González <josvazg@gmail.com>
+Joseph Holsten <joseph@josephholsten.com>
 Josh Goebel <dreamer3@gmail.com>
 Josh Holland <jrh@joshh.co.uk>
 Jukka-Pekka Kekkonen <karatepekka@gmail.com>
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index f436fcbbd9..1325680217 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -253,6 +253,7 @@ Jongmin Kim <atomaths@gmail.com>
 Jos Visser <josv@google.com>
 Jose Luis Vázquez González <josvazg@gmail.com>
 Joseph Bonneau <jcb@google.com>
+Joseph Holsten <joseph@josephholsten.com>
 Josh Goebel <dreamer3@google.com>
 Josh Hoak <jhoak@google.com>
 Josh Holland <jrh@joshh.co.uk>

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

https://github.com/golang/go/commit/01bdeda880b18e87f98aae48a151f6f2c5fb4a74

元コミット内容

A+C: Joseph Holsten (individual CLA)

Generated by addca.

R=gobot
CC=golang-dev
https://golang.org/cl/11245043

変更の背景

このコミットの背景には、オープンソースプロジェクト、特にGoogleが主導するGoプロジェクトにおける貢献の管理と知的財産権の明確化という重要な側面があります。

Goプロジェクトのような大規模なオープンソースプロジェクトでは、世界中の多数の開発者がコードベースに貢献します。これらの貢献がプロジェクトのライセンス(Goの場合はBSDライセンス)の下で適切に利用されることを保証するためには、貢献者が自身の貢献に対する権利をプロジェクトに付与する必要があります。このプロセスを正式に行うのが「Contributor License Agreement (CLA)」です。

Joseph Holsten氏がGoプロジェクトに貢献するにあたり、個人のCLAに署名したため、その事実をプロジェクトの公式な貢献者リストに反映させる必要がありました。このコミットは、その反映作業の一環として、AUTHORSファイルとCONTRIBUTORSファイルにJoseph Holsten氏の名前を追加したものです。

コミットメッセージにある「Generated by addca.」は、この変更がaddcaというツールによって自動生成されたことを示唆しています。これは、CLAの署名プロセスが完了した際に、関連するファイルを自動的に更新する仕組みが存在することを示しており、プロジェクトの運用効率化に貢献しています。

前提知識の解説

Contributor License Agreement (CLA)

CLA(Contributor License Agreement)は、オープンソースプロジェクトにおいて、貢献者が自身のコードやドキュメントなどの貢献物に対する著作権をプロジェクトの所有者(または指定された団体)に譲渡、あるいは特定のライセンスの下での利用を許可することを明示する法的な合意書です。

CLAの主な目的と重要性:

  1. 知的財産権の明確化: プロジェクトに貢献されたコードの著作権が誰に帰属するのか、どのように利用されるのかを明確にします。これにより、将来的な著作権に関する紛争や訴訟のリスクを軽減します。
  2. ライセンスの遵守と再ライセンス: プロジェクトが採用しているオープンソースライセンス(例: Apache License, MIT License, BSD Licenseなど)の下で、すべての貢献が適切に配布・利用されることを保証します。また、プロジェクトのライセンスを変更する際に、すべての貢献者からの同意を得る必要なく、プロジェクト側で柔軟に対応できるようになる場合があります。
  3. 企業からの貢献: 企業が従業員を通じてオープンソースプロジェクトに貢献する場合、企業がその貢献に対する権利を放棄し、プロジェクトに譲渡することを明確にするために、企業版CLA(Corporate CLA)が用いられることもあります。
  4. プロジェクトの健全性: CLAは、プロジェクトの法的な健全性を保ち、長期的な持続可能性を確保するために多くの大規模オープンソースプロジェクト(例: Apache Software Foundation, Googleが主導するプロジェクトなど)で採用されています。

Goプロジェクトの場合、Googleがプロジェクトを主導しており、貢献者には個人のCLA(Individual CLA)または企業版CLA(Corporate CLA)への署名が求められます。これにより、Go言語のコードベース全体がGoogleによって管理され、BSDライセンスの下で配布されることが保証されます。

AUTHORSCONTRIBUTORS ファイル

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

  • AUTHORS: 主にプロジェクトの主要な作者や、初期の貢献者、あるいは特に大きな影響を与えた人々をリストアップするために使われることがあります。
  • CONTRIBUTORS: プロジェクトに何らかの形で貢献したすべての個人や団体をリストアップするために使われることが多いです。これには、コードのコミットだけでなく、ドキュメントの改善、バグ報告、テストの作成、翻訳など、幅広い貢献が含まれる場合があります。

これらのファイルは、貢献者への感謝を示すとともに、プロジェクトの歴史とコミュニティの成長を記録する役割も果たします。CLAに署名した貢献者がこれらのファイルに追加されるのは、彼らがプロジェクトの正式な貢献者として認識されたことを意味します。

技術的詳細

このコミット自体は、Go言語のランタイムやコンパイラといったコアな部分のコード変更ではなく、プロジェクトのメタデータファイルに対する変更です。

コミットメッセージにある「Generated by addca.」は、この変更がaddcaという内部ツールによって自動的に行われたことを示しています。addcaは「Add Contributor Agreement」の略であると推測され、CLAの署名が完了した際に、Goプロジェクトの貢献者リストを自動的に更新するスクリプトまたはツールであると考えられます。

具体的なaddcaツールの動作としては、以下のステップが考えられます。

  1. CLA署名の確認: 新しい貢献者がCLAに署名し、その情報がGoプロジェクトのCLA管理システムに登録される。
  2. 情報の取得: 署名されたCLAから、貢献者の氏名とメールアドレスなどの必要な情報を取得する。
  3. ファイル更新: AUTHORSファイルとCONTRIBUTORSファイルを読み込み、取得した貢献者情報を適切な形式で追記する。この際、既存のエントリとの重複を避け、アルファベット順などの規則に従って挿入されることが一般的です。
  4. コミットの生成: 更新されたファイルをGitリポジトリにコミットし、コミットメッセージを自動生成する。このコミットメッセージには、誰が追加されたのか、そしてCLAに関連する変更であることが明記されます。

この自動化されたプロセスにより、手作業によるミスを防ぎ、貢献者リストの整合性を保ちながら、プロジェクトの管理を効率的に行うことができます。

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

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

diff --git a/AUTHORS b/AUTHORS
index 99135886cc..2e4a37b980 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -171,6 +171,7 @@ Jonathan Rudenberg <jonathan@titanous.com>
 Jonathan Wills <runningwild@gmail.com>
 Jongmin Kim <atomaths@gmail.com>
 Jose Luis Vázquez González <josvazg@gmail.com>
+Joseph Holsten <joseph@josephholsten.com>
 Josh Goebel <dreamer3@gmail.com>
 Josh Holland <jrh@joshh.co.uk>
 Jukka-Pekka Kekkonen <karatepekka@gmail.com>
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index f436fcbbd9..1325680217 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -253,6 +253,7 @@ Jongmin Kim <atomaths@gmail.com>
 Jos Visser <josv@google.com>
 Jose Luis Vázquez González <josvazg@gmail.com>
 Joseph Bonneau <jcb@google.com>
+Joseph Holsten <joseph@josephholsten.com>
 Josh Goebel <dreamer3@google.com>
 Josh Hoak <jhoak@google.com>
 Josh Holland <jrh@joshh.co.uk>

上記のdiffが示すように、AUTHORSファイルとCONTRIBUTORSファイルの両方に、Joseph Holsten <joseph@josephholsten.com>という行が追加されています。

コアとなるコードの解説

このコミットで変更されたAUTHORSCONTRIBUTORSファイルは、Goプロジェクトのコードベースの一部ではありますが、Go言語の機能やランタイムの動作に直接影響を与えるものではありません。これらは、プロジェクトの管理と法的な側面に関連するメタデータファイルです。

  • AUTHORSファイル: このファイルは、Goプロジェクトの主要な作者や、歴史的に重要な貢献をした人々をリストアップしています。Joseph Holsten氏がこのファイルに追加されたことは、彼がGoプロジェクトに対して重要な貢献を行うことが期待されている、あるいは既に行ったことを示唆しています。
  • CONTRIBUTORSファイル: このファイルは、Goプロジェクトに貢献したすべての個人をリストアップしています。コードのコミットだけでなく、バグ報告、ドキュメントの改善、テストの作成など、様々な形でプロジェクトに貢献した人々が含まれます。このファイルに名前が追加されることは、その人物がGoプロジェクトの公式な貢献者として認識されたことを意味します。

これらのファイルは、プロジェクトの透明性を高め、貢献者への適切なクレジットを付与するために維持されています。また、CLAの署名と連動して更新されることで、プロジェクトの法的な基盤を強化する役割も担っています。

関連リンク

  • Go Contribution Guidelines: Goプロジェクトへの貢献方法に関する公式ガイドライン。CLAに関する情報も含まれています。
  • Go Contributor License Agreement (CLA) FAQ: GoプロジェクトのCLAに関するよくある質問とその回答。
  • Google Open Source - CLA: GoogleのオープンソースプロジェクトにおけるCLAの一般的な説明。

参考にした情報源リンク