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

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

このコミットは、Go言語プロジェクトのソースコードリポジトリにおける、AUTHORS および CONTRIBUTORS ファイルへの変更を記録しています。具体的には、新しい貢献者である Patrick Mylund Nielsen 氏の名前とメールアドレスがこれらのファイルに追加されています。これは、同氏がGoプロジェクトへの貢献を開始するにあたり、個人としての貢献者ライセンス契約(CLA: Contributor License Agreement)を締結したことを示しています。

コミット

commit f2d2b38c92f65c738c0c6cda4c34c7db34026a3e
Author: David Symonds <dsymonds@golang.org>
Date:   Mon Feb 6 17:54:56 2012 +1100

    A+C: Patrick Mylund Nielsen (individual CLA)
    
    R=golang-dev
    TBR=adg
    CC=golang-dev, patrick
    https://golang.org/cl/5616070

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

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

元コミット内容

diff --git a/AUTHORS b/AUTHORS
index d9a2d28bf9..a0cc69432b 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -141,6 +141,7 @@ Padraig Kitterick <padraigkitterick@gmail.com>
 Paolo Giarrusso <p.giarrusso@gmail.com>
 Pascal S. de Kloe <pascal@quies.net>
 Patrick Gavlin <pgavlin@gmail.com>
+Patrick Mylund Nielsen <patrick@patrickmn.com>
 Paul Lalonde <paul.a.lalonde@gmail.com>
 Paul Sbarra <Sbarra.Paul@gmail.com>
 Petar Maymounkov <petarm@gmail.com>
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index d96b213d00..ebf2309183 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -210,6 +210,7 @@ Padraig Kitterick <padraigkitterick@gmail.com>
 Paolo Giarrusso <p.giarrusso@gmail.com>
 Pascal S. de Kloe <pascal@quies.net>
 Patrick Gavlin <pgavlin@gmail.com>
+Patrick Mylund Nielsen <patrick@patrickmn.com>
 Paul Borman <borman@google.com>
 Paul Lalonde <paul.a.lalonde@gmail.com>
 Paul Sbarra <Sbarra.Paul@gmail.com>

変更の背景

このコミットの背景には、Go言語プロジェクトがオープンソースプロジェクトとして、貢献者からのコード受け入れに関する法的な枠組みを整備しているという事実があります。GoプロジェクトはGoogleによって開始され、その開発プロセスにおいて、貢献者が自身のコードをプロジェクトに提供する際に、そのコードの著作権やライセンスに関する明確な合意を必要とします。

Patrick Mylund Nielsen氏がGoプロジェクトに貢献を開始するにあたり、個人としての貢献者ライセンス契約(Individual Contributor License Agreement, ICLA)を締結しました。この契約は、貢献者が提供するコードがプロジェクトのライセンス(通常はBSDライセンスなど)の下で利用可能であることを保証し、プロジェクトの所有者(この場合はGoogle)がそのコードを自由に利用、配布、変更できる権利を持つことを明確にします。

CLAの締結後、その貢献者の名前をプロジェクトの公式な貢献者リストであるAUTHORSファイルとCONTRIBUTORSファイルに追加することが慣例となっています。これにより、プロジェクトの歴史と貢献者の功績が記録され、透明性が保たれます。

前提知識の解説

1. オープンソースプロジェクトにおけるAUTHORSCONTRIBUTORSファイル

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

  • AUTHORS: 主にプロジェクトの主要な作者や、著作権を持つ個人・団体をリストアップするために使用されます。法的な意味合いが強い場合があります。
  • CONTRIBUTORS: プロジェクトに何らかの形で貢献したすべての個人をリストアップするために使用されます。コードの寄稿者だけでなく、ドキュメントの作成者、バグ報告者、テスター、翻訳者なども含まれることがあります。

これらのファイルは、プロジェクトの透明性を高め、貢献者への感謝を示す役割を果たします。

2. 貢献者ライセンス契約 (CLA: Contributor License Agreement)

CLAは、オープンソースプロジェクトにおいて、貢献者が自身の著作物をプロジェクトに提供する際に、プロジェクトの所有者(または管理団体)との間で締結する法的な契約です。主な目的は以下の通りです。

  • ライセンスの明確化: 貢献されたコードがプロジェクトのライセンス(例: Apache License, MIT License, BSD License)の下で利用可能であることを明確にします。これにより、プロジェクトの利用者は、貢献されたコードが適切なライセンスの下で提供されていることを安心して利用できます。
  • 著作権の移転または許諾: プロジェクトによっては、貢献されたコードの著作権をプロジェクトの所有者(例: Google, Apache Software Foundation)に移転するか、または永続的かつ取り消し不能なライセンスを許諾することをCLAで求める場合があります。これにより、プロジェクトの所有者は、将来的なライセンス変更や、ライセンスに関する紛争が発生した場合に、プロジェクト全体の一貫性を保ちやすくなります。
  • 法的リスクの軽減: 貢献されたコードが第三者の著作権を侵害していないことを貢献者が保証する条項が含まれることが多く、これによりプロジェクトが法的な問題に巻き込まれるリスクを軽減します。

CLAは、特に企業が主導する大規模なオープンソースプロジェクト(例: GoogleのGo、Apache Software Foundationのプロジェクト)でよく採用されています。

3. Goプロジェクトのコードレビュープロセスにおける表記

Goプロジェクトでは、Gerritというコードレビューシステムを使用しており、コミットメッセージには特定の慣例的な表記が含まれることがあります。

  • R= (Reviewer): コードレビューを依頼するレビュアーを指定します。golang-devはGo開発者メーリングリストを指し、通常はメーリングリストのメンバーがレビューを担当します。
  • TBR= (To Be Reviewed by): 特定の個人にレビューを依頼する場合に指定します。このコミットではadg(Andrew Gerrand氏のイニシャル)が指定されています。
  • CC= (Carbon Copy): コミットに関する通知を受け取る追加の個人やグループを指定します。このコミットではgolang-devpatrick(Patrick Mylund Nielsen氏)が指定されています。
  • https://golang.org/cl/5616070: Gerritにおける変更リスト(Change-List)のURLです。このURLにアクセスすると、このコミットに対応するコードレビューの詳細(変更内容、コメント、レビューの履歴など)を確認できます。

これらの表記は、Goプロジェクトの効率的な開発ワークフローを支える重要な要素です。

技術的詳細

このコミット自体は、Go言語のソースコードに対する機能的な変更やバグ修正ではなく、プロジェクトのメタデータ管理に関するものです。技術的な詳細としては、Gitの差分(diff)形式と、テキストファイルの編集操作に集約されます。

  • Git Diff形式: 提示されたコミット内容は、Gitの差分形式で表示されています。

    • --- a/AUTHORS+++ b/AUTHORS: それぞれ変更前のAUTHORSファイルと変更後のAUTHORSファイルを示します。
    • index d9a2d28bf9..a0cc69432b 100644: ファイルのGitオブジェクトハッシュ(変更前と変更後)とファイルモードを示します。100644は通常のファイル(実行可能ではない)を意味します。
    • @@ -141,6 +141,7 @@: これは「hunk header」と呼ばれ、変更が適用されたファイルの行番号情報を示します。-141,6は変更前のファイルで141行目から6行が対象であることを意味し、+141,7は変更後のファイルで141行目から7行が対象であることを意味します。つまり、この位置に1行が追加されたことを示唆しています。
    • +Patrick Mylund Nielsen <patrick@patrickmn.com>: 行の先頭に+が付いている行は、追加された行を示します。
  • テキストファイルの編集: 実際に行われた変更は、AUTHORSファイルとCONTRIBUTORSファイルに、新しい行Patrick Mylund Nielsen <patrick@patrickmn.com>を挿入するという単純なテキスト編集です。これは、一般的なテキストエディタやスクリプトで容易に行える操作です。

このコミットは、Goプロジェクトのガバナンスと法務に関する側面がコードベースに反映された一例であり、大規模なオープンソースプロジェクトにおける貢献者管理の重要性を示しています。

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

このコミットにおける「コアとなるコード」は、Go言語の機能的なコードではなく、プロジェクトのメタデータファイルであるAUTHORSCONTRIBUTORSです。

  • AUTHORSファイル:
    • 141行目のPatrick Gavlin <pgavlin@gmail.com>の直後に、Patrick Mylund Nielsen <patrick@patrickmn.com>という行が追加されました。
  • CONTRIBUTORSファイル:
    • 210行目のPatrick Gavlin <pgavlin@gmail.com>の直後に、Patrick Mylund Nielsen <patrick@patrickmn.com>という行が追加されました。

両ファイルともに、アルファベット順に名前が並べられているため、Patrick Gavlinの次にPatrick Mylund Nielsenが追加されています。

コアとなるコードの解説

このコミットで変更されたのは、Goプロジェクトの貢献者情報を記録するプレーンテキストファイルです。これらのファイルは、プロジェクトのビルドプロセスや実行には直接影響しませんが、プロジェクトの歴史、著作権情報、および貢献者の認識において重要な役割を果たします。

  • AUTHORS: このファイルは、Goプロジェクトの著作権表示に関連する主要な作者をリストアップしています。新しい貢献者がCLAを締結し、その貢献がプロジェクトの著作権体系に組み込まれる場合、このファイルに追加されることがあります。
  • CONTRIBUTORS: このファイルは、Goプロジェクトに貢献したすべての個人を網羅的にリストアップしています。コードの寄稿だけでなく、ドキュメント、テスト、レビューなど、あらゆる種類の貢献が対象となります。このファイルに追加されることは、その個人がGoプロジェクトの公式な貢献者として認められたことを意味します。

これらのファイルへの追加は、新しい貢献者がプロジェクトの法的な要件(CLAの締結)を満たし、その貢献が正式に受け入れられたことの証となります。

関連リンク

  • Go言語公式サイト: https://golang.org/
  • Goプロジェクトの貢献ガイドライン: Goプロジェクトへの貢献方法やCLAに関する情報が記載されている可能性があります。通常、公式サイトの「Contributing」セクションや、リポジトリ内のCONTRIBUTING.mdファイルなどで確認できます。
  • Gerrit Code Review: Goプロジェクトが使用しているコードレビューシステム。
  • Contributor License Agreement (CLA) について: CLAの一般的な情報や、GoogleのCLAに関する情報源。

参考にした情報源リンク

  • Git公式ドキュメント: Gitのdiff形式やコミットに関する基本的な情報。
  • オープンソースプロジェクトのCLAに関する一般的な情報: WikipediaやOSSライセンスに関する専門サイトなど。
  • GoプロジェクトのGitHubリポジトリ: 実際のAUTHORSおよびCONTRIBUTORSファイルの構造と内容。
  • Gerritのドキュメント: Goプロジェクトのコードレビュープロセスに関する詳細。
  • Goプロジェクトのメーリングリストアーカイブ: golang-devメーリングリストでの議論や、コミットメッセージの慣例に関する情報。