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

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

このコミットは、Goプロジェクトの貢献者リストに新しい個人、Jay Weisskopf氏を追加するものです。具体的には、AUTHORSファイルとCONTRIBUTORSファイルに彼の名前と連絡先情報が追記されています。これは、彼がGoプロジェクトへの貢献を始めるにあたり、必要なContributor License Agreement (CLA)を締結したことを示す管理上のコミットです。

コミット

commit febda8f98b85d7f12f95e5f2cd84d7a06b54ecf0
Author: Russ Cox <rsc@golang.org>
Date:   Fri Feb 21 15:28:44 2014 -0500

    A+C: Jay Weisskopf (individual CLA)
    
    Generated by addca.
    
    R=gobot
    CC=golang-codereviews
    https://golang.org/cl/67010044

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

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

元コミット内容

このコミットの元々の内容は、Goプロジェクトの主要な貢献者の一人であるRuss Cox氏によって行われたもので、Jay Weisskopf氏が個人のContributor License Agreement (CLA)を締結したことを記録しています。コミットメッセージのA+C: Jay Weisskopf (individual CLA)は、「AUTHORSファイルとCONTRIBUTORSファイルにJay Weisskopf氏を個人のCLAに基づいて追加した」という意味です。

Generated by addca.という行は、この変更がaddcaというツールによって自動生成されたものであることを示しています。addcaは「Add Contributor Agreement」の略であると推測され、GoプロジェクトがCLAの管理を自動化するために使用している内部ツールである可能性が高いです。

R=gobotは、この変更がgobotによってレビューされたことを示唆しています。gobotはGoプロジェクトにおける自動化されたボットであり、通常はCLAの確認や基本的なコードスタイルのチェックなど、定型的なタスクを処理します。

CC=golang-codereviewsは、このコミットがgolang-codereviewsというメーリングリストまたはレビューグループに通知されたことを意味します。これは、Goプロジェクトの変更がコミュニティや関係者に広く知らされるための標準的なプロセスの一部です。

https://golang.org/cl/67010044は、このコミットに対応するGerrit Code Reviewのチェンジリスト(CL)へのリンクです。GoプロジェクトはGitHubだけでなく、内部的なコードレビューシステムとしてGerritを使用しており、すべての変更はGerritを通じてレビューされます。

変更の背景

オープンソースプロジェクト、特にGoogleが主導するGoのような大規模なプロジェクトでは、知的財産権の管理が非常に重要です。プロジェクトにコードを貢献する開発者は、その貢献がプロジェクトのライセンスと互換性があり、将来的な法的な問題を引き起こさないことを保証する必要があります。この目的のために、多くの大規模なオープンソースプロジェクトでは、Contributor License Agreement (CLA)の締結を義務付けています。

CLAは、貢献者が自身の貢献に対する著作権をプロジェクトの所有者(この場合はGoogle)に譲渡するか、またはプロジェクトのライセンスに基づいて使用、配布、変更する権利をプロジェクトに付与することを法的に約束するものです。これにより、プロジェクトの所有者は、貢献されたコードを安心してプロジェクトに組み込み、再配布することができます。

このコミットは、Jay Weisskopf氏がGoプロジェクトに貢献する準備が整い、必要なCLAを締結したことを示すものです。CLAが締結されると、その貢献者の名前がAUTHORSファイルとCONTRIBUTORSファイルに追加され、公式にプロジェクトの貢献者として認識されます。これは、プロジェクトの透明性と法的な健全性を保つための標準的な運用手順です。

前提知識の解説

AUTHORSファイルとCONTRIBUTORSファイル

多くのオープンソースプロジェクトには、プロジェクトに貢献した人々の名前をリストアップするファイルが含まれています。Goプロジェクトでは、主に以下の2つのファイルがこの目的で使用されます。

  • AUTHORSファイル: このファイルは、プロジェクトの主要な作者や、特に重要な貢献をした人々の名前をリストアップします。通常、著作権表示に関連する情報が含まれることがあります。
  • CONTRIBUTORSファイル: このファイルは、プロジェクトに何らかの形で貢献したすべての個人の名前をリストアップします。これには、コードの貢献者だけでなく、ドキュメントの作成者、バグ報告者、テスターなども含まれる場合があります。このファイルは、プロジェクトのコミュニティと貢献を認識するための重要な手段です。

これらのファイルは、プロジェクトの歴史と貢献者の努力を記録する役割を果たします。

Contributor License Agreement (CLA)

Contributor License Agreement (CLA)は、オープンソースプロジェクトにコードやその他のコンテンツを貢献する個人または組織と、プロジェクトの所有者(またはプロジェクトをホストする財団)との間で締結される法的文書です。CLAの主な目的は以下の通りです。

  1. 知的財産権の明確化: 貢献されたコードの著作権が誰に帰属するか、またはプロジェクトがそのコードをどのように使用できるかを明確にします。これにより、将来的な著作権侵害の訴訟リスクを軽減します。
  2. ライセンスの互換性: 貢献されたコードがプロジェクトの既存のライセンス(例: Apache License, MIT License)と互換性があることを保証します。
  3. プロジェクトの柔軟性: プロジェクトの所有者が、将来的にプロジェクトのライセンスを変更したり、コードを別のプロジェクトに統合したりする際に、法的な障害がないようにします。

CLAには、個人が署名する「Individual CLA」と、企業や組織が署名する「Corporate CLA」の2種類があります。Goプロジェクトでは、Googleがプロジェクトの所有者であるため、貢献者はGoogleとの間でCLAを締結します。

Gerrit Code Review

Gerrit Code Reviewは、Webベースのコードレビューシステムであり、Gitリポジトリと連携して動作します。多くのオープンソースプロジェクト、特にGoogleが関与するプロジェクト(Android、Chromium、Goなど)で広く使用されています。Gerritの主な特徴は以下の通りです。

  • 変更の単位: Gerritでは、コミットではなく「チェンジリスト(Change-IDまたはCL)」という単位で変更を管理します。各CLは一意のIDを持ち、複数のコミットを含むことができます。
  • レビュープロセス: 開発者は変更をGerritにプッシュし、レビュー担当者がWebインターフェースを通じてコードをレビューし、コメントや承認を行います。
  • 自動化との連携: GerritはCI/CDシステムと密接に連携し、変更がプッシュされると自動的にテストを実行したり、静的解析を行ったりすることができます。
  • 履歴の管理: すべてのレビューコメントと変更履歴がGerrit上に記録され、透明性の高い開発プロセスを促進します。

Goプロジェクトでは、GitHubはミラーリポジトリとして機能し、実際のコードレビューとマージはGerritを通じて行われます。コミットメッセージに含まれるhttps://golang.org/cl/67010044のようなリンクは、Gerrit上のチェンジリストを指します。

技術的詳細

このコミットは、Goプロジェクトの貢献者管理プロセスの一部として行われたものです。

  1. CLAの締結: Jay Weisskopf氏がGoプロジェクトへの貢献を開始する前に、Googleとの間で個人のContributor License Agreement (CLA)を締結しました。このプロセスは通常、オンラインフォームを通じて行われます。
  2. addcaツールの実行: CLAが正常に締結されると、Goプロジェクトの内部ツールであるaddca(Add Contributor Agreement)が実行されます。このツールは、CLAデータベースと連携し、新しくCLAを締結した貢献者の情報を取得します。
  3. ファイルへの追記: addcaツールは、取得した情報に基づいて、Goリポジトリ内のAUTHORSファイルとCONTRIBUTORSファイルに該当する貢献者の名前とメールアドレスを自動的に追記します。このコミットでは、Jay Weisskopf <jay@jayschwa.net>という行が追加されています。
  4. コミットの生成: addcaツールは、これらの変更を含むコミットを自動的に生成します。コミットメッセージには、誰が追加されたか、CLAの種類(individual CLA)、そしてGenerated by addca.という情報が含まれます。
  5. レビューとマージ: 生成されたコミットは、Gerritを通じてレビュープロセスにかけられます。この種のコミットは通常、gobotのような自動化されたシステムによってレビューされ、迅速に承認されます。R=gobotはその証拠です。また、CC=golang-codereviewsによって、関連するメーリングリストに通知されます。
  6. GitHubへの同期: Gerritでマージされたコミットは、その後GitHubのミラーリポジトリに同期されます。

このプロセスは、手作業によるエラーを防ぎ、CLAの管理と貢献者リストの更新を効率化するために自動化されています。

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

diff --git a/AUTHORS b/AUTHORS
index a25529d759..84431da218 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -185,6 +185,7 @@ Jan Ziak <0xe2.0x9a.0x9b@gmail.com>
 Jani Monoses <jani.monoses@ubuntu.com>
 Jaroslavas Počepko <jp@webmaster.ms>
 Jason Travis <infomaniac7@gmail.com>
+Jay Weisskopf <jay@jayschwa.net>
 Jeff Hodges <jeff@somethingsimilar.com>
 Jeff R. Allen <jra@nella.org>
 Jeff Sickel <jas@corpus-callosum.com>
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 8f1f605872..4339fd1fcb 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -262,6 +262,7 @@ Jan Ziak <0xe2.0x9a.0x9b@gmail.com>
 Jani Monoses <jani.monoses@ubuntu.com> <jani.monoses@gmail.com>
 Jaroslavas Počepko <jp@webmaster.ms>
 Jason Travis <infomaniac7@gmail.com>
+Jay Weisskopf <jay@jayschwa.net>
 Jean-Marc Eurin <jmeurin@google.com>
 Jeff Hodges <jeff@somethingsimilar.com>
 Jeff R. Allen <jra@nella.org> <jeff.allen@gmail.com>

コアとなるコードの解説

このコミットによるコードの変更は非常にシンプルで、以下の2つのファイルに1行ずつ追加が行われています。

  1. AUTHORSファイルへの追加:

    +Jay Weisskopf <jay@jayschwa.net>
    

    AUTHORSファイルにJay Weisskopf <jay@jayschwa.net>という行が追加されています。これは、Jay Weisskopf氏がGoプロジェクトの公式な作者の一人として認識されたことを意味します。彼の名前とメールアドレスが記録されています。

  2. CONTRIBUTORSファイルへの追加:

    +Jay Weisskopf <jay@jayschwa.net>
    

    同様に、CONTRIBUTORSファイルにもJay Weisskopf <jay@jayschwa.net>という行が追加されています。これは、彼がGoプロジェクトに貢献する資格を得た、または既に貢献を開始したことを示します。

これらの変更は、既存のリストのアルファベット順に挿入されており、ファイルの整合性が保たれています。この種の変更は、プロジェクトの管理と法的な要件を満たすために不可欠であり、コードベースの機能には直接影響を与えません。

関連リンク

参考にした情報源リンク

  • GoプロジェクトのGitHubリポジトリ: https://github.com/golang/go
  • コミットハッシュ: febda8f98b85d7f12f95e5f2cd84d7a06b54ecf0
  • 一般的なオープンソースプロジェクトにおけるCLAの概念に関する知識
  • Gerrit Code Reviewの一般的な運用に関する知識
  • AUTHORSおよびCONTRIBUTORSファイルの一般的な役割に関する知識
  • Goプロジェクトの貢献プロセスに関する一般的な知識