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

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

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

コミット

commit 8f37e419631113dcb52421ee9223910cd056059a
Author: Adam Langley <agl@golang.org>
Date:   Wed May 22 17:08:59 2013 -0400

    A+C: Nan Deng (individual CLA)
    
    Generated by addca.
    
    R=gobot
    CC=golang-dev
    https://golang.org/cl/9678043

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

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

元コミット内容

A+C: Nan Deng (individual CLA)

Generated by addca.

R=gobot
CC=golang-dev
https://golang.org/cl/9678043

変更の背景

このコミットの背景には、オープンソースプロジェクト、特にGoogleが主導するGoのような大規模プロジェクトにおける「Contributor License Agreement (CLA)」の重要性があります。CLAは、貢献者がその貢献物に対する著作権をプロジェクトの所有者(この場合はGoogle)に譲渡するか、または特定のライセンスの下で使用することを許可する法的な合意書です。

Nan Deng氏がGoプロジェクトに貢献するにあたり、個人のCLAに署名したため、その事実をプロジェクトの公式な記録であるAUTHORSおよびCONTRIBUTORSファイルに反映させる必要がありました。これにより、プロジェクトは将来的に貢献されたコードのライセンスに関する法的問題を回避し、コードベース全体のライセンスの一貫性を保つことができます。コミットメッセージにある「Generated by addca.」という記述は、この変更がaddcaというツールによって自動生成されたものであることを示唆しており、GoプロジェクトがCLAの管理とコントリビューターリストの更新プロセスを自動化していることを示しています。

前提知識の解説

Contributor License Agreement (CLA)

CLA(Contributor License Agreement)は、オープンソースプロジェクトにおいて、貢献者(コントリビューター)が自身のコードやドキュメントなどの貢献物に対して、プロジェクトの所有者や管理団体に特定の権利を付与するための法的な契約です。主な目的は以下の通りです。

  1. 著作権の明確化: 貢献されたコードの著作権が誰に帰属するかを明確にします。これにより、プロジェクトの所有者は、貢献されたコードをプロジェクトのライセンス(例: Apache License, MIT License)の下で再配布したり、将来的にライセンスを変更したりする際の法的リスクを低減できます。
  2. 法的保護: プロジェクトが第三者からの著作権侵害訴訟に巻き込まれた場合、CLAはプロジェクトを保護する盾となります。貢献者が自身のコードがオリジナルであり、第三者の著作権を侵害していないことを保証するため、プロジェクトは安心してコードを使用できます。
  3. ライセンスの一貫性: 大規模なプロジェクトでは、多数の貢献者からのコードが集まります。CLAがない場合、各貢献物のライセンスが異なると、プロジェクト全体のライセンス管理が複雑になり、法的な問題を引き起こす可能性があります。CLAは、すべての貢献物がプロジェクトの指定するライセンスの下で利用可能であることを保証し、ライセンスの一貫性を保ちます。

GoプロジェクトのようなGoogleが主導するプロジェクトでは、通常、個人の貢献者にはIndividual CLA (ICLA) が、企業からの貢献者にはCorporate CLA (CCLA) が求められます。

AUTHORSファイルとCONTRIBUTORSファイル

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

  • AUTHORSファイル: このファイルは通常、プロジェクトの主要な作者や、著作権を保持する個人または団体をリストアップします。法的な著作権表示の目的で利用されることが多いです。
  • CONTRIBUTORSファイル: このファイルは、プロジェクトに何らかの形で貢献したすべての個人をリストアップします。コードのコミットだけでなく、バグ報告、ドキュメントの改善、テストの作成、コミュニティサポートなど、幅広い貢献が含まれることがあります。

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

技術的詳細

このコミットは、GoプロジェクトのCLA管理プロセスの一部として行われました。コミットメッセージにある「Generated by addca.」は、addcaという内部ツールがこの変更を生成したことを示しています。これは、GoプロジェクトがCLAの署名状況を追跡し、新しい署名者が現れた際に自動的にAUTHORSおよびCONTRIBUTORSファイルを更新する自動化されたワークフローを持っていることを示唆しています。

addcaツールは、おそらくCLAデータベースと連携し、新しいCLA署名者の情報を取得し、既存のAUTHORSおよびCONTRIBUTORSファイルに追記するスクリプトであると推測されます。これにより、手動でのファイル編集によるヒューマンエラーを防ぎ、プロセスを効率化しています。

変更自体は非常にシンプルで、既存のファイルに新しい行を追加するだけです。これは、Gitの差分(diff)を見ても明らかです。

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

diff --git a/AUTHORS b/AUTHORS
index b9589f6336..0c955dc45d 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -207,6 +207,7 @@ Mikkel Krautz <mikkel@krautz.dk>
 Miquel Sabaté Solà <mikisabate@gmail.com>
 Moriyoshi Koizumi <mozo@mozo.jp>
 Môshe van der Sterre <moshevds@gmail.com>
+Nan Deng <monnand@gmail.com>
 ngmoco, LLC
 Nicholas Presta <nick@nickpresta.ca> <nick1presta@gmail.com>
 Nicholas Waples <nwaples@gmail.com>
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index e951a334d6..30ece18d69 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -308,6 +308,7 @@ Mikkel Krautz <mikkel@krautz.dk> <krautz@gmail.com>
 Miquel Sabaté Solà <mikisabate@gmail.com>
 Moriyoshi Koizumi <mozo@mozo.jp>
 Môshe van der Sterre <moshevds@gmail.com>
+Nan Deng <monnand@gmail.com>
 Nicholas Presta <nick@nickpresta.ca> <nick1presta@gmail.com>
 Nicholas Waples <nwaples@gmail.com>
 Nick Craig-Wood <nick@craig-wood.com> <nickcw@gmail.com>

コアとなるコードの解説

上記の差分が示すように、このコミットは以下の2つのファイルに1行ずつ追加を行っています。

  1. AUTHORSファイル:
    • +Nan Deng <monnand@gmail.com> という行が追加されています。これは、Nan Deng氏がGoプロジェクトの正式な作者の一人として認識されたことを示します。
  2. CONTRIBUTORSファイル:
    • 同様に、+Nan Deng <monnand@gmail.com> という行が追加されています。これは、Nan Deng氏がGoプロジェクトに貢献した人物の一人として記録されたことを示します。

両ファイルへの追加は、既存のリストのアルファベット順に挿入されており、ファイルの整合性が保たれています。この変更は、Goプロジェクトのガバナンスと法務部門が、新しい貢献者の参加を正式に承認し、その記録をプロジェクトのリポジトリに反映させた結果です。

関連リンク

  • GoプロジェクトのCLAに関する情報: https://golang.org/cl/9678043 (このリンクはGoのGerritレビューシステムへのリンクであり、CLA署名プロセスに関連する変更リストを示している可能性があります。)

参考にした情報源リンク