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

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

このコミットは、Goプロジェクトのコントリビューターリストに新しい個人を追加するものです。具体的には、AUTHORSファイルとCONTRIBUTORSファイルにGwenael Treguier氏の名前とメールアドレスが追加されています。これは、新しいコントリビューターがプロジェクトに貢献を開始する際に通常行われる手続きの一部であり、彼がIndividual CLA(Contributor License Agreement)を提出したことを示唆しています。

コミット

commit 3492f32b83fbb568ed60a1fb3b3dcc41f0de63b6
Author: Brad Fitzpatrick <bradfitz@golang.org>
Date:   Sat Mar 10 14:48:00 2012 -0800

    A+C: Add Gwenael Treguier (Individual CLA)
    
    R=golang-dev, wcn
    CC=golang-dev
    https://golang.org/cl/5777052

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

https://github.com/golang/go/commit/3492f32b83fbb568ed60a1fb3b3dcc41f0de63b6

元コミット内容

A+C: Add Gwenael Treguier (Individual CLA)

R=golang-dev, wcn
CC=golang-dev
https://golang.org/cl/5777052

変更の背景

このコミットの背景には、オープンソースプロジェクト、特にGoogleが管理するGoのような大規模プロジェクトにおける貢献者管理のプロセスがあります。新しい貢献者がコードベースに貢献する際、プロジェクトは通常、その貢献者が特定のライセンス契約(Contributor License Agreement, CLA)に同意することを求めます。CLAは、貢献されたコードがプロジェクトのライセンスの下で配布されることを保証し、将来的な法的な問題を回避するために重要です。

A+C: Add Gwenael Treguier (Individual CLA)というコミットメッセージは、Gwenael Treguier氏がGoプロジェクトへの貢献を開始するにあたり、個人としてのCLAを提出し、それが承認されたことを示しています。Brad Fitzpatrick氏(Goチームの主要メンバー)がこのコミットを行ったのは、CLAの管理と貢献者リストの更新がプロジェクトのメンテナーの役割であるためです。これにより、Gwenael Treguier氏の将来の貢献が正式に認められ、プロジェクトの歴史に記録されることになります。

前提知識の解説

Contributor License Agreement (CLA)

CLAは、個人または企業がオープンソースプロジェクトに貢献する際に、その貢献物の著作権をプロジェクトの所有者(または指定された団体)に譲渡するか、またはプロジェクトのライセンスの下で利用することを許可する法的な合意書です。Goプロジェクトの場合、Googleがプロジェクトを管理しているため、貢献者はGoogleに対してCLAを提出します。

CLAの主な目的は以下の通りです。

  1. 著作権の明確化: 貢献されたコードの著作権が誰に帰属するかを明確にし、将来的な著作権侵害の訴訟リスクを低減します。
  2. ライセンスの統一性: プロジェクト全体のコードベースが単一のライセンス(Goの場合はBSDライセンス)の下で配布されることを保証します。これにより、ユーザーはプロジェクトのコードを安心して利用できます。
  3. 再ライセンスの可能性: プロジェクトの所有者が将来的にライセンスを変更する必要が生じた場合、CLAによってその権利が確保されます。

CLAには「Individual CLA」と「Corporate CLA」の2種類があります。

  • Individual CLA: 個人が自身の名義で貢献する場合に署名します。
  • Corporate CLA: 企業が従業員の貢献を代表して行う場合に署名します。これにより、従業員が行った貢献が企業の承認の下で行われたことが保証されます。

AUTHORS および CONTRIBUTORS ファイル

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

  • AUTHORSファイルは、プロジェクトの主要な作者や初期の貢献者をリストアップすることが多いです。
  • CONTRIBUTORSファイルは、より広範な貢献者、例えばバグ修正、ドキュメントの改善、機能追加などを行ったすべての人々をリストアップします。

これらのファイルは、貢献者への感謝を示すとともに、プロジェクトの歴史とコミュニティの成長を可視化する役割を果たします。また、法的な観点からも、誰がどの部分に貢献したかを追跡するのに役立つ場合があります。

Gerrit (Goプロジェクトのコードレビューシステム)

コミットメッセージにあるhttps://golang.org/cl/5777052は、Goプロジェクトが使用しているコードレビューシステムであるGerritへのリンクです。GoプロジェクトはGitHubをミラーとして使用していますが、実際の開発ワークフローではGerritが中心的な役割を果たします。

Gerritは以下の機能を提供します。

  • 変更リスト (Change List, CL): 各コミットはGerrit上で「変更リスト」として管理されます。開発者は変更をGerritにアップロードし、レビューを依頼します。
  • コードレビュー: メンテナーや他の開発者が変更リストに対してコメントを残し、承認(R=CC=で示されるレビュー担当者)を行います。
  • 自動テスト: 変更リストが提出されると、自動的にテストが実行され、品質が保証されます。

このコミットメッセージのR=golang-dev, wcnは、golang-devメーリングリストとwcn(おそらく別のメンテナーのイニシャル)がレビュー担当者であることを示し、CC=golang-devgolang-devメーリングリストがCCに含まれていることを示しています。

技術的詳細

このコミット自体は、コードの機能的な変更を伴うものではなく、プロジェクトのメタデータ(貢献者情報)の更新です。技術的な観点からは、以下の点が重要です。

  1. テキストファイルの更新: AUTHORSCONTRIBUTORSはプレーンテキストファイルであり、新しい行を追加することで更新されます。これは、Gitの差分(diff)で明確に示されています。
  2. Gitの追跡: これらのファイルはGitによってバージョン管理されており、変更履歴が完全に追跡されます。これにより、いつ、誰が、どのような貢献者情報を追加したかが明確に記録されます。
  3. コミットメッセージの慣習: Goプロジェクトでは、コミットメッセージに特定の慣習があります。
    • A+C:: これは「AUTHORS and CONTRIBUTORS」の略であり、このコミットが両方のファイルを更新することを示す非公式なプレフィックスです。
    • Individual CLA: 貢献者が個人CLAを提出したことを明示します。
    • R=, CC=: Gerritのレビュープロセスに関連する情報です。
    • https://golang.org/cl/...: Gerritの変更リストへのリンクです。

これらの慣習は、プロジェクトの履歴を読みやすくし、開発者が変更の意図と背景を素早く理解できるようにするために重要です。

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

このコミットでは、以下の2つのファイルが変更されています。

  1. /home/orange/Project/comemo/AUTHORS
  2. /home/orange/Project/comemo/CONTRIBUTORS

それぞれのファイルに、Gwenael Treguier <gwenn.kahz@gmail.com>という行が追加されています。

diffの抜粋:

diff --git a/AUTHORS b/AUTHORS
index 403ed76d46..e5ca363066 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -84,6 +84,7 @@ Google Inc.
 Graham Miller <graham.miller@gmail.com>
 Gustav Paul <gustav.paul@gmail.com>
 Gustavo Niemeyer <gustavo@niemeyer.net>
+Gwenael Treguier <gwenn.kahz@gmail.com>
 Harley Laue <losinggeneration@gmail.com>
 Hector Chu <hectorchu@gmail.com>
 Hong Ruiqi <hongruiqi@gmail.com>
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 7c5ea0a33f..738426c0d3 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -127,6 +127,7 @@ Giles Lean <giles.lean@pobox.com>\n Graham Miller <graham.miller@gmail.com>\n Gustav Paul <gustav.paul@gmail.com>\n Gustavo Niemeyer <gustavo@niemeyer.net> <n13m3y3r@gmail.com>\n+Gwenael Treguier <gwenn.kahz@gmail.com>\n Harley Laue <losinggeneration@gmail.com>\n Hector Chu <hectorchu@gmail.com>\n Hong Ruiqi <hongruiqi@gmail.com>\n```

## コアとなるコードの解説

このコミットには「コード」というよりは「データ」の変更が含まれています。`AUTHORS`と`CONTRIBUTORS`ファイルは、プロジェクトのメタデータの一部として機能します。

変更の核心は、新しい貢献者であるGwenael Treguier氏の名前とメールアドレスを、既存のリストの適切な位置に挿入することです。通常、これらのリストはアルファベット順にソートされており、新しいエントリもその規則に従って追加されます。これにより、リストの可読性と管理のしやすさが保たれます。

この変更は、Goプロジェクトのガバナンスと貢献者管理のプロセスが適切に機能していることを示すものです。新しい貢献者が正式にプロジェクトコミュニティの一員として認められ、その貢献が記録されるための重要なステップとなります。

## 関連リンク

*   **Goプロジェクトの公式サイト**: [https://golang.org/](https://golang.org/)
*   **Goプロジェクトの貢献ガイドライン**: Goプロジェクトへの貢献方法に関する公式ドキュメント。CLAの提出方法なども含まれることが多いです。具体的なURLは時期によって変動する可能性がありますが、通常は公式サイトの「Contribute」セクションにリンクがあります。
*   **Gerritコードレビューシステム**: [https://go-review.googlesource.com/](https://go-review.googlesource.com/) (GoプロジェクトのGerritインスタンス)

## 参考にした情報源リンク

*   **Contributor License Agreement (CLA) の一般的な情報**:
    *   Wikipedia: [https://en.wikipedia.org/wiki/Contributor_License_Agreement](https://en.wikipedia.org/wiki/Contributor_License_Agreement)
    *   各種オープンソースプロジェクトの貢献ガイドライン(例: Apache Software FoundationのCLAに関する説明など)
*   **Gitのdiffコマンドに関する情報**:
    *   Git公式ドキュメント: [https://git-scm.com/docs/git-diff](https://git-scm.com/docs/git-diff)
*   **Goプロジェクトのコミットメッセージの慣習に関する情報**:
    *   Goプロジェクトの貢献ガイドラインや、既存のコミット履歴から推測。
*   **Gerritに関する情報**:
    *   Gerrit公式サイト: [https://www.gerritcodereview.com/](https://www.gerritcodereview.com/)
    *   GoプロジェクトのGerritインスタンスの利用方法に関するドキュメント。
*   **GoプロジェクトのAUTHORS/CONTRIBUTORSファイル**:
    *   GoプロジェクトのGitHubリポジトリ内の該当ファイル。
        *   `https://github.com/golang/go/blob/master/AUTHORS`
        *   `https://github.com/golang/go/blob/master/CONTRIBUTORS`
        (注: `master`ブランチは現在`main`ブランチに名称変更されている可能性があります。)