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

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

このコミットは、GoプロジェクトのAUTHORSファイルとCONTRIBUTORSファイルに、新たな貢献者であるYissakhar Z. Beck氏を追加するものです。これは、彼がIndividual CLA(個人貢献者ライセンス合意)を締結したことに伴う変更であり、Goプロジェクトへの貢献が正式に認められたことを示しています。

コミット

commit 9aff05e3627d607150d0dbf07901c786d11721cd
Author: Brad Fitzpatrick <bradfitz@golang.org>
Date:   Tue Feb 28 07:40:44 2012 +1100

    A+C: add Yissakhar Z. Beck (Individual CLA)
    
    R=golang-dev, gri
    CC=golang-dev
    https://golang.org/cl/5698079

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

https://github.com/golang/go/commit/9aff05e3627d607150d0dbf07901c786d11721cd

元コミット内容

このコミットは、AUTHORSファイルとCONTRIBUTORSファイルにそれぞれ1行ずつ、Yissakhar Z. Beck氏の名前とメールアドレスを追加しています。

diff --git a/AUTHORS b/AUTHORS
index 3bb8372b52..64d5535696 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -192,6 +192,7 @@ Volker Dobler <dr.volker.dobler@gmail.com>
 Wei Guangjing <vcc.163@gmail.com>
 William Josephson <wjosephson@gmail.com>
 Yasuhiro Matsumoto <mattn.jp@gmail.com>
+Yissakhar Z. Beck <yissakhar.beck@gmail.com>
 Yongjian Xu <i3dmaster@gmail.com>
 Yoshiyuki Kanno <nekotaroh@gmail.com> <yoshiyuki.kanno@stoic.co.jp>
 Yuusei Kuwana <kuwana@kumama.org>
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index fe7e16331a..a222d01873 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -278,6 +278,7 @@ Wei Guangjing <vcc.163@gmail.com>
 William Chan <willchan@chromium.org>
 William Josephson <wjosephson@gmail.com>
 Yasuhiro Matsumoto <mattn.jp@gmail.com>
+Yissakhar Z. Beck <yissakhar.beck@gmail.com>
 Yongjian Xu <i3dmaster@gmail.com>
 Yoshiyuki Kanno <nekotaroh@gmail.com> <yoshiyuki.kanno@stoic.co.jp>
 Yuusei Kuwana <kuwana@kumama.org>

変更の背景

この変更の背景には、オープンソースプロジェクト、特にGoogleが主導するGoのような大規模プロジェクトにおける貢献者管理の仕組みがあります。

  1. 貢献者ライセンス合意 (CLA) の要件: 多くの大規模オープンソースプロジェクト、特に企業が主導するものは、貢献者に対してCLAの締結を求めています。これは、貢献されたコードの知的財産権に関する明確な取り決めを行うためです。CLAを締結することで、プロジェクトは貢献されたコードを安心して利用・配布できるようになり、将来的な法的な問題を回避できます。
  2. 貢献者の可視化: AUTHORSおよびCONTRIBUTORSファイルは、プロジェクトに貢献した人々を公式に記録し、その功績を称えるためのものです。新しい貢献者がCLAを締結し、コードベースに貢献する準備ができた際に、これらのファイルに名前が追加されます。
  3. Goプロジェクトの慣習: Goプロジェクトでは、新しい貢献者が最初のコードレビューを通過し、CLAを締結すると、その名前がこれらのファイルに追加されるのが一般的なプロセスです。このコミットは、Yissakhar Z. Beck氏がこのプロセスを完了したことを示しています。
  4. コードレビューシステムとの連携: コミットメッセージにあるhttps://golang.org/cl/5698079は、Goプロジェクトが利用しているコードレビューシステム(Gerritベース)の変更リスト(Change-list)へのリンクです。これは、この変更自体も通常のコード変更と同様にレビュープロセスを経ていることを示しています。

前提知識の解説

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

  • AUTHORSファイル: 主にプロジェクトの主要な作者や、プロジェクトの初期段階から深く関わっている人々をリストアップするために使用されます。著作権表示の目的で利用されることもあります。
  • CONTRIBUTORSファイル: プロジェクトに何らかの形で貢献したすべての人々(コードのコミット、バグ報告、ドキュメントの改善、翻訳など)をリストアップするために使用されます。これは、コミュニティの努力を認識し、感謝を示すための一般的な方法です。

これらのファイルは、プロジェクトの歴史とコミュニティの成長を示す重要なドキュメントです。

2. 貢献者ライセンス合意 (Contributor License Agreement, CLA)

CLAは、オープンソースプロジェクトにコードやその他のコンテンツを貢献する個人または法人と、プロジェクトの所有者(または管理団体)との間で締結される法的な合意です。

  • 目的:

    • 知的財産権の明確化: 貢献されたコードの著作権が誰に帰属し、プロジェクトがそのコードをどのように利用できるかを明確にします。これにより、プロジェクトは貢献されたコードを安心して再ライセンスしたり、他のライセンスの下で配布したりできるようになります。
    • 法的リスクの軽減: 貢献されたコードに起因する将来的な著作権侵害や特許侵害の訴訟からプロジェクトを保護します。CLAは、貢献者が貢献するコードの所有者であり、そのコードが第三者の権利を侵害していないことを保証するものです。
    • プロジェクトの持続可能性: プロジェクトがライセンスモデルを変更したり、コードを商業的に利用したりする際に、すべての貢献者から個別に許可を得る必要がなくなります。
  • 種類:

    • Individual CLA (ICLA): 個人がプロジェクトに貢献する際に締結します。
    • Corporate CLA (CCLA): 企業が従業員を通じてプロジェクトに貢献する際に締結します。企業は、従業員が貢献するコードの権利をプロジェクトに付与することを許可します。

GoプロジェクトのようなGoogleが主導するプロジェクトでは、Googleがプロジェクトの知的財産権を管理するためにCLAを必須としています。

3. golang.org/cl/ と Gerrit

golang.org/cl/ は、Goプロジェクトがコードレビューに利用しているシステムへのURLプレフィックスです。Goプロジェクトは、Googleが開発したオープンソースのコードレビューシステムであるGerritをベースにしたシステムを使用しています。

  • Gerrit: Gitリポジトリと連携し、変更がメインのコードベースにマージされる前に、その変更をレビューするためのウェブベースのツールです。各変更は「変更リスト (Change-list)」としてGerritにアップロードされ、レビュー担当者がコメントを付けたり、承認したりできます。
  • 変更リスト (Change-list): Gitのコミットに似ていますが、Gerrit上でのレビュー単位です。開発者は変更をGerritにプッシュし、レビューを経て承認されると、それが最終的にGitリポジトリにコミットされます。コミットメッセージのhttps://golang.org/cl/5698079は、このコミットがGerrit上でレビューされた際の変更リストのIDを示しています。

技術的詳細

このコミット自体は、既存のテキストファイルであるAUTHORSCONTRIBUTORSに新しい行を追加するという、非常に単純なファイル操作です。しかし、その背後には、オープンソースプロジェクトのガバナンス、知的財産管理、そして貢献者コミュニティの構築という重要な側面が隠されています。

  • テキストファイルの管理: AUTHORSCONTRIBUTORSは、通常、プレーンテキストファイルとして管理されます。これにより、Gitのようなバージョン管理システムで簡単に追跡でき、変更履歴も明確になります。
  • 差分 (Diff) の意味: コミットの差分を見ると、両ファイルに+Yissakhar Z. Beck <yissakhar.beck@gmail.com>という行が追加されていることがわかります。これは、Gitがファイルの変更をどのように記録するかを示す典型的な例です。
  • コミットメタデータ: コミットメッセージには、R=golang-dev, griCC=golang-devという情報が含まれています。
    • R= (Reviewers): この変更をレビューした人々やグループを示します。golang-devはGo開発者メーリングリスト、griはGoチームの主要なメンバーの一人であるRuss Cox氏(または他のGoチームメンバー)を指す可能性があります。
    • CC= (Carbon Copy): この変更に関する通知を受け取る人々やグループを示します。 これらのメタデータは、コードレビュープロセスの一部であり、誰が変更を承認し、誰がその変更について知らされたかを示すものです。
  • ファイルインデックスとパーミッション: index 3bb8372b52..64d5535696 100644のような行は、Gitの内部的なファイル管理情報です。
    • 3bb8372b5264d5535696は、変更前後のファイルのGitオブジェクトハッシュ(またはインデックスエントリのハッシュ)です。
    • 100644は、ファイルのパーミッションモードを示し、これは通常のテキストファイル(読み取り/書き込み可能)であることを意味します。

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

このコミットにおける「コード」の変更箇所は、AUTHORSファイルとCONTRIBUTORSファイルという2つのテキストファイルです。

  • /AUTHORS
  • /CONTRIBUTORS

それぞれのファイルの末尾付近に、Yissakhar Z. Beck <yissakhar.beck@gmail.com>という行が追加されています。

コアとなるコードの解説

この変更は、Goプロジェクトの公式な貢献者リストにYissakhar Z. Beck氏を追加するものです。これは、彼がGoプロジェクトへの貢献に必要な法的要件(Individual CLAの締結)を満たし、かつ実際に貢献を行った(または行う予定である)ことをプロジェクトが認識したことを意味します。

これらのファイルに名前が追加されることは、単なるリストの更新以上の意味を持ちます。それは、その人物がGoプロジェクトの公式な貢献者コミュニティの一員として認められたことの証であり、プロジェクトの知的財産権管理の枠組みの中で、その貢献が適切に扱われることを保証するものです。

関連リンク

参考にした情報源リンク