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

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

このコミットは、Goプロジェクトの貢献者リストに新しいエントリを追加するものです。具体的には、AUTHORS ファイルと CONTRIBUTORS ファイルに Michael Fraenkel 氏の情報を追加しています。これは、同氏がGoプロジェクトへの貢献を開始するにあたり、必要なContributor License Agreement (CLA) を締結したことを示しています。

コミット

commit 8cc5a33fd95cbd63e663c040d67d008f5f58f37c
Author: Ian Lance Taylor <iant@golang.org>
Date:   Wed Apr 30 09:59:33 2014 -0700

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

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

https://github.com/golang/go/commit/8cc5a33fd95cbd63e663c040d67d008f5f58f37c

元コミット内容

このコミットのメッセージは非常に簡潔で、以下の情報を伝えています。

  • A+C: Michael Fraenkel (individual CLA): AUTHORS および CONTRIBUTORS ファイルに Michael Fraenkel 氏を追加したことを示します。括弧内の individual CLA は、同氏が個人としてのContributor License Agreement (CLA) を締結したことを意味します。
  • Generated by addca.: この変更が addca と呼ばれるツールによって自動生成されたものであることを示唆しています。
  • R=gobot: コードレビューの承認者が gobot であることを示します。gobot はGoプロジェクトにおける自動化されたシステムやボットを指すことが多いです。
  • CC=golang-codereviews: コードレビューの通知が golang-codereviews メーリングリストに送られたことを示します。
  • https://golang.org/cl/90950044: このコミットに対応するGerritのチェンジリスト(Change-ID)へのリンクです。Goプロジェクトでは、コードレビューにGerritを使用しています。

変更の背景

オープンソースプロジェクト、特にGoogleが主導するGoのような大規模プロジェクトでは、貢献されたコードの著作権とライセンスに関する明確な取り決めが不可欠です。このコミットは、新しい貢献者であるMichael Fraenkel氏がGoプロジェクトにコードを貢献するための準備の一環として行われました。

変更の主な背景は以下の通りです。

  1. Contributor License Agreement (CLA) の締結: Goプロジェクトにコードを貢献する際、貢献者はGoogleのCLAに署名する必要があります。これは、貢献されたコードの著作権をGoogleが適切に管理し、プロジェクトのライセンス(Goの場合はBSDライセンス)の下で配布できるようにするための法的な取り決めです。Michael Fraenkel氏が個人CLAを締結したことで、同氏の貢献が法的に保護され、プロジェクトに組み込むことが可能になりました。
  2. 貢献者情報の管理: AUTHORS および CONTRIBUTORS ファイルは、プロジェクトに貢献した人々の記録を保持するために存在します。新しい貢献者がCLAを締結し、貢献の準備が整った際に、これらのファイルにその情報を追加することは、プロジェクトの透明性と貢献者への適切な帰属表示のために重要です。
  3. 自動化されたプロセス: コミットメッセージにある Generated by addca. は、この貢献者情報の追加が手動ではなく、addca と呼ばれる内部ツールによって自動化されたプロセスであることを示しています。これにより、貢献者管理の効率化とヒューマンエラーの削減が図られています。

前提知識の解説

1. Contributor License Agreement (CLA)

CLAは、個人または企業がオープンソースプロジェクトに貢献する際に、プロジェクトの所有者(この場合はGoogle)に対して、その貢献物を使用、複製、変更、配布、サブライセンスする権利を付与する法的な文書です。これにより、プロジェクトの所有者は、貢献されたコードをプロジェクトのライセンスの下で安心して利用・配布できるようになります。

GoプロジェクトにおけるCLAの主な特徴は以下の通りです。

  • 目的: 貢献されたコードの著作権をGoogleが適切に管理し、プロジェクトのライセンスの下で配布できるようにすること。貢献者は自身のコードの所有権を保持します。
  • 種類:
    • 個人CLA: 貢献者が自身の著作権を持つ場合に締結します。
    • 企業CLA: 貢献が企業によって行われ、企業が著作権を持つ場合に締結します。
  • 一度限りの要件: Goプロジェクトを含むGoogleのオープンソースプロジェクトでは、CLAは一度署名すれば、その後のすべての貢献に適用されます。
  • プロセス: Googleアカウントを使用してCLAに署名し、GoのコードレビューシステムであるGerritに登録するなどの手順が必要です。

CLAは、オープンソースコミュニティ内で議論の対象となることもあります。一部では、CLAがプロジェクトのメンテナー(多くの場合企業)に貢献されたコードに対する過度な権限を与え、将来的にプロプライエタリなライセンスで再ライセンスされる可能性を懸念する声もあります。しかし、多くの大規模プロジェクトでは、法的な明確性とプロジェクトの持続可能性のためにCLAを採用しています。

2. AUTHORS ファイルと CONTRIBUTORS ファイル

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

  • AUTHORS: 通常、プロジェクトの主要な作者や初期の貢献者、または著作権を保持する個人や団体をリストアップするために使用されます。
  • CONTRIBUTORS: より広範な意味で、コード、ドキュメント、バグ報告、テストなど、何らかの形でプロジェクトに貢献したすべての個人や団体をリストアップするために使用されます。

これらのファイルは、プロジェクトの歴史とコミュニティを可視化し、貢献者への感謝と適切な帰属表示を行う上で重要な役割を果たします。

3. Gerrit

Gerritは、Goプロジェクトがコードレビューに使用しているWebベースのコードレビューシステムです。Gitリポジトリと密接に連携しており、コミットがリポジトリにマージされる前に、変更をレビューし、承認するプロセスを管理します。コミットメッセージの https://golang.org/cl/90950044 は、このGerritシステム上のチェンジリストへのリンクです。

技術的詳細

このコミットにおける「技術的詳細」は、コードの機能的な変更ではなく、プロジェクトの管理プロセスと自動化に関するものです。

コミットメッセージの Generated by addca. は、addca というツールがこの変更を生成したことを示しています。addca は "Add Contributor Agreement" の略であると推測されます。これは、Goプロジェクトの内部で使用されるスクリプトまたはツールであり、新しい貢献者がCLAを締結した際に、自動的に AUTHORS および CONTRIBUTORS ファイルにその情報を追加する役割を担っていると考えられます。

このような自動化ツールは、以下のような利点をもたらします。

  • 効率性: 新しい貢献者が増えるたびに手動でファイルを編集する手間を省きます。
  • 正確性: 人為的なミス(タイポ、フォーマットの不一致など)を減らします。
  • 一貫性: 貢献者情報の追加フォーマットを統一し、プロジェクト全体で一貫性を保ちます。
  • ワークフローの統合: CLAの締結プロセスと貢献者リストの更新をシームレスに連携させます。

addca の具体的な実装やソースコードは公開されていませんが、その機能は、CLAのデータベースと連携し、CLAが締結されたことをトリガーとして、関連する貢献者情報を取得し、AUTHORS および CONTRIBUTORS ファイルに適切な形式で追記するものであると推測できます。

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

このコミットによるコードの変更は、以下の2つのファイルに対する単純な行の追加です。

diff --git a/AUTHORS b/AUTHORS
index 77742d278e..81f9d543e2 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -268,6 +268,7 @@ Maxim Khitrov <max@mxcrypt.com>
 Micah Stetson <micah.stetson@gmail.com>
 Michael Chaten <mchaten@gmail.com>
 Michael Elkins <michael.elkins@gmail.com>
+Michael Fraenkel <michael.fraenkel@gmail.com>
 Michael Gehring <mg@ebfe.org> <gnirheg.leahcim@gmail.com>
 Michael Hoisie <hoisie@gmail.com>
 Michael Lewis <mikelikespie@gmail.com>
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 46c76bd481..0cd641594a 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -382,6 +382,7 @@ Maxim Ushakov <ushakov@google.com>
 Micah Stetson <micah.stetson@gmail.com>
 Michael Chaten <mchaten@gmail.com>
 Michael Elkins <michael.elkins@gmail.com>
+Michael Fraenkel <michael.fraenkel@gmail.com>
 Michael Gehring <mg@ebfe.org> <gnirheg.leahcim@gmail.com>
 Michael Hoisie <hoisie@gmail.com>
 Michael Hudson-Doyle <michael.hudson@linaro.org>

コアとなるコードの解説

上記の差分が示すように、このコミットはGoプロジェクトのソースコード自体に機能的な変更を加えるものではありません。代わりに、プロジェクトのメタデータファイルである AUTHORSCONTRIBUTORS に新しい行を追加しています。

  • AUTHORS ファイルへの追加: +Michael Fraenkel <michael.fraenkel@gmail.com> この行は、AUTHORS ファイルの適切な位置に Michael Fraenkel 氏の名前とメールアドレスを追加しています。これにより、同氏がプロジェクトの正式な作者の一員として認識されるようになります。

  • CONTRIBUTORS ファイルへの追加: +Michael Fraenkel <michael.fraenkel@gmail.com> 同様に、CONTRIBUTORS ファイルにも同じ情報が追加されています。これは、同氏がGoプロジェクトに貢献した人物の一人として記録されることを意味します。

これらの変更は、プロジェクトの管理と貢献者への適切な帰属表示のために行われるものであり、Go言語のランタイムや標準ライブラリの動作に直接的な影響を与えるものではありません。

関連リンク

  • Goプロジェクトの貢献ガイドライン: Goプロジェクトへの貢献方法に関する公式ドキュメント。CLAの締結プロセスについても詳細が記載されています。
  • Google Developers Contributor License Agreements: GoogleのCLAに関する情報と、CLAの署名状況を確認できるポータル。
  • Gerrit Code Review: Goプロジェクトが使用しているコードレビューシステム。

参考にした情報源リンク

  • Goプロジェクトの公式ドキュメント (go.dev)
  • Google Open Source (opensource.google)
  • Stack Overflow (stackoverflow.com) - 一般的なGoのツールに関する情報
  • YouTube (youtube.com) - CLAに関する一般的な議論