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

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

このコミットは、Goプロジェクトのコントリビューターリストに新たな貢献者「Alexei Sholik」を追加するものです。具体的には、AUTHORSファイルとCONTRIBUTORSファイルに彼の名前とメールアドレスが追記されています。これは、彼がGoプロジェクトへの貢献を開始するにあたり、個人貢献者ライセンス契約(Individual CLA)を締結したことを示しています。

コミット

commit 02fa4a7e3eb3c74166ab4a886331786449c2933b
Author: Robert Griesemer <gri@golang.org>
Date:   Wed Apr 3 16:41:53 2013 -0700

    A+C: added Alexei Sholik (individual CLA)
    
    R=golang-dev, bradfitz
    CC=golang-dev
    https://golang.org/cl/8351043

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

https://github.com/golang/go/commit/02fa4a7e3eb3c74166ab4a886331786449c2933b

元コミット内容

A+C: added Alexei Sholik (individual CLA)

R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/8351043

このコミットメッセージは、Alexei Sholikが個人貢献者ライセンス契約(Individual CLA)を締結した上で、Goプロジェクトの貢献者リストに追加されたことを簡潔に示しています。「A+C」はAUTHORSCONTRIBUTORSファイルへの追加を意味していると考えられます。R=CC=はレビュー担当者とCCリストを示し、https://golang.org/cl/8351043はGoプロジェクトのコードレビューシステム(Gerritベース)における変更リスト(Change-ID)へのリンクです。

変更の背景

オープンソースプロジェクト、特にGoogleのような大企業が主導するプロジェクトでは、知的財産権の管理が非常に重要です。貢献者がコードを提出する際、そのコードの著作権がプロジェクトに適切に帰属するか、あるいはプロジェクトがそのコードを自由に利用・配布できる権利を持つことを保証する必要があります。このために導入されるのが「貢献者ライセンス契約(Contributor License Agreement, CLA)」です。

このコミットの背景には、Alexei Sholik氏がGoプロジェクトにコードを貢献する意思があり、そのために必要な法的手続きである個人CLAの締結が完了したという事実があります。CLAの締結は、プロジェクト側が貢献されたコードを安心して利用し、将来的なライセンス変更や再配布の際に法的な問題が発生しないようにするための重要なステップです。このコミットは、その法的手続きが完了したことをプロジェクトの公式記録(AUTHORSおよびCONTRIBUTORSファイル)に反映させるためのものです。

前提知識の解説

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

CLAは、オープンソースプロジェクトにコードやドキュメントなどの貢献を行う個人または法人と、プロジェクトの管理者(またはその背後にある組織)との間で締結される法的な合意です。主な目的は以下の通りです。

  1. 著作権の明確化: 貢献されたコードの著作権が誰に帰属するかを明確にします。多くの場合、貢献者は自身の著作権を保持しつつ、プロジェクトに対してそのコードを特定のライセンス(例: Apache License, MIT Licenseなど)の下で利用、配布、変更、サブライセンスする永続的、非独占的、全世界的、ロイヤリティフリーの権利を付与します。一部のCLAでは、著作権をプロジェクトの管理組織に譲渡する場合もあります(例: GoogleのCLA)。
  2. ライセンスの統一性: プロジェクト全体でコードのライセンスが統一され、将来的なライセンス変更や再配布が容易になります。これにより、プロジェクトの持続可能性と法的健全性が保たれます。
  3. 法的リスクの軽減: 貢献されたコードが第三者の著作権を侵害していないこと、または貢献者がそのコードを貢献する権利を持っていることを保証することで、プロジェクトが将来的に著作権侵害訴訟などの法的リスクに晒されるのを防ぎます。

Googleが主導する多くのオープンソースプロジェクト(Go、Android、Kubernetesなど)では、貢献者にCLAの締結を義務付けています。これは、Googleがプロジェクトの法的健全性を確保し、貢献されたコードをGoogleの製品やサービスに組み込む際の法的障壁を取り除くための重要なメカニズムです。

AUTHORSファイルとCONTRIBUTORSファイル

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

  • AUTHORSファイル: 主にプロジェクトの主要な作者や初期の貢献者、あるいは著作権表示の対象となる人々をリストアップするために使用されます。法的な意味合いが強い場合があります。
  • CONTRIBUTORSファイル: プロジェクトに何らかの形で貢献したすべての人々(コード、ドキュメント、バグ報告、テスト、翻訳など)をリストアップするために使用されます。より広範な意味での「貢献者」を網羅します。

これらのファイルは、プロジェクトの透明性を高め、貢献者への感謝を示す役割も果たします。新しい貢献者がCLAを締結し、実際にコードを貢献し始める際に、これらのファイルに追加されるのが一般的です。

技術的詳細

このコミット自体は、Go言語のコードベースに対する機能的な変更やバグ修正ではありません。これは、プロジェクトのメタデータ、具体的には貢献者リストを更新する「管理的なコミット」に分類されます。

Gitの観点から見ると、このコミットは以下の操作を行っています。

  1. AUTHORSファイルとCONTRIBUTORSファイルの2つの既存ファイルに対して変更を加えています。
  2. それぞれのファイルに1行ずつ新しいエントリ(+Alexei Sholik <alcosholik@gmail.com>)を追加しています。
  3. ファイルのインデックス(index 4217c998d0..917259533fなど)が更新されており、これはファイルの内容が変更されたことを示します。

この種のコミットは、プロジェクトのガバナンスと法務部門の要件を満たすために不可欠です。新しい貢献者がプロジェクトに加わるたびに、同様のコミットが行われることが期待されます。

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

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

diff --git a/AUTHORS b/AUTHORS
index 4217c998d0..917259533f 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -18,6 +18,7 @@ Alex Brainman <alex.brainman@gmail.com>
 Alexander Orlov <alexander.orlov@loxal.net>
 Alexander Reece <awreece@gmail.com>
 Alexander Surma <surma@surmair.de>
+Alexei Sholik <alcosholik@gmail.com>
 Alexey Borzenkov <snaury@gmail.com>
 Amir Mohammad Saied <amir@gluegadget.com>
 Amrut Joshi <amrut.joshi@gmail.com>
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 19bcaea520..d614b8daba 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -46,6 +46,7 @@ Alexander Orlov <alexander.orlov@loxal.net>
 Alexander Reece <awreece@gmail.com>
 Alexander Surma <surma@surmair.de>
 Alexandru Moșoi <brtzsnr@gmail.com>
+Alexei Sholik <alcosholik@gmail.com>
 Alexey Borzenkov <snaury@gmail.com>
 Amir Mohammad Saied <amir@gluegadget.com>
 Amrut Joshi <amrut.joshi@gmail.com>

コアとなるコードの解説

上記のdiffが示すように、変更は非常に単純です。

  • AUTHORSファイル: 既存のリストの18行目付近に、Alexei Sholik <alcosholik@gmail.com>という行が追加されています。これは、Alexei Sholik氏がGoプロジェクトの正式な作者/貢献者の一員として認識されたことを意味します。
  • CONTRIBUTORSファイル: 同様に、既存のリストの46行目付近に、Alexei Sholik <alcosholik@gmail.com>という行が追加されています。これは、彼がGoプロジェクトに貢献する資格を持つ人物としてリストアップされたことを示します。

これらの変更は、Goプロジェクトのソースコード管理システム(Git)を通じて、プロジェクトの公式な記録として永続化されます。これにより、将来的に誰がどのような貢献をしたかを追跡する上で重要な情報となります。

関連リンク

  • Goプロジェクトの公式ウェブサイト: https://golang.org/
  • GoプロジェクトのGitHubリポジトリ: https://github.com/golang/go
  • Goプロジェクトの貢献ガイドライン(CLAに関する情報が含まれる可能性が高い): 通常、プロジェクトのCONTRIBUTING.mdREADME.mdファイル、または公式ウェブサイトの「貢献」セクションに記載されています。

参考にした情報源リンク