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

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

このコミットは、GoプロジェクトのAUTHORSファイルとCONTRIBUTORSファイルに、新しい貢献者であるDenis Brandolini氏の情報を追加するものです。これは、Goプロジェクトへの貢献者が増えるたびに定期的に行われる、プロジェクトの管理上重要な更新の一つです。

コミット

commit 76c9182523c26f371ef80436bb230692337064cd
Author: Brad Fitzpatrick <bradfitz@golang.org>
Date:   Wed Feb 5 07:32:16 2014 -0800

    A+C: Denis Brandolini (individual CLA)
    
    Generated by addca.
    
    TBR=iant
    R=gobot
    CC=golang-codereviews
    https://golang.org/cl/52350044

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

https://github.com/golang/go/commit/76c9182523c26f371ef80436bb230692337064cd

元コミット内容

このコミットは、GoプロジェクトのAUTHORSファイルとCONTRIBUTORSファイルに、Denis Brandolini氏の名前とメールアドレスを追加しています。

具体的には、以下の行が追加されました。

  • AUTHORSファイルに Denis Brandolini <denis.brandolini@gmail.com>
  • CONTRIBUTORSファイルに Denis Brandolini <denis.brandolini@gmail.com>

コミットメッセージには「A+C: Denis Brandolini (individual CLA)」とあり、これはDenis Brandolini氏が個人としてのContributor License Agreement (CLA) に署名したことを示唆しています。また、「Generated by addca.」という記述から、addcaというツールによって自動生成されたコミットであることがわかります。TBR=iantR=gobotCC=golang-codereviewsは、コードレビューのプロセスにおける関係者やメーリングリストを示しています。https://golang.org/cl/52350044は、この変更に対応するGerritのチェンジリストへのリンクです。

変更の背景

この変更の背景には、オープンソースプロジェクトにおける貢献者の管理と、法的な側面があります。

  1. 貢献者の認識と記録: オープンソースプロジェクトでは、多くの開発者がコード、ドキュメント、バグ報告、テストなど様々な形で貢献します。これらの貢献者を公式に認識し、記録することは、プロジェクトの透明性を高め、コミュニティの健全性を維持するために重要です。AUTHORSファイルとCONTRIBUTORSファイルは、そのための一般的な手段です。
  2. Contributor License Agreement (CLA): 多くの大規模なオープンソースプロジェクト、特に企業が主導するプロジェクトでは、貢献者に対してCLAへの署名を求めることがあります。CLAは、貢献されたコードの著作権がプロジェクトの所有者(この場合はGoogle)に適切にライセンスされることを保証するための法的な合意です。これにより、プロジェクトのコードベースが将来的にライセンス上の問題に直面するリスクを軽減し、プロジェクトの配布や利用に関する法的明確性を確保します。Denis Brandolini氏が「individual CLA」に署名したという記述は、このプロセスが完了したことを示しています。
  3. 自動化されたプロセス: 「Generated by addca.」という記述は、貢献者の追加プロセスが自動化されていることを示しています。これは、手作業によるミスを防ぎ、効率的に貢献者リストを更新するための一般的なプラクティスです。CLAの署名が確認されると、自動化されたツールがこれらのファイルを更新するコミットを生成する仕組みになっていると考えられます。

前提知識の解説

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

  • AUTHORSファイル: 通常、プロジェクトの主要な作者や、プロジェクトの初期段階から深く関わっている人々をリストアップするために使用されます。著作権表示の目的で利用されることもあります。
  • CONTRIBUTORSファイル: プロジェクトに何らかの形で貢献したすべての人々をリストアップするために使用されます。これには、コードの寄稿者だけでなく、ドキュメントの作成者、バグ報告者、テスター、翻訳者なども含まれることがあります。このファイルは、コミュニティの努力を称え、感謝を示す役割も果たします。

これらのファイルは、プロジェクトの規模やポリシーによってその使われ方が異なりますが、Goプロジェクトでは両方のファイルで貢献者を管理していることがわかります。

Contributor License Agreement (CLA)

CLAは、個人または企業がオープンソースプロジェクトに貢献する際に署名する法的な文書です。主な目的は以下の通りです。

  • 著作権の明確化: 貢献されたコードの著作権が、プロジェクトの所有者(または指定された団体)に適切にライセンスされることを保証します。これにより、プロジェクトのコードベース全体が単一のライセンスの下で配布されることが可能になります。
  • 法的リスクの軽減: 貢献されたコードが、第三者の著作権を侵害していないことを貢献者が保証することで、プロジェクトが将来的に著作権侵害の訴訟に巻き込まれるリスクを軽減します。
  • ライセンスの変更の柔軟性: プロジェクトの所有者が、将来的にプロジェクトのライセンスを変更する際に、すべての貢献されたコードに対してその変更を適用できる法的権利を確保します。

CLAは、Apache Software Foundation (ASF) やGoogleなどの大規模なプロジェクトで広く採用されています。

Gerritとチェンジリスト (Change-list)

Goプロジェクトは、コードレビューにGerritを使用しています。Gerritは、Gitリポジトリ上で動作するWebベースのコードレビューシステムです。

  • チェンジリスト (Change-list): Gerritにおけるコード変更の単位です。開発者がコードを変更し、それをレビューのために提出すると、Gerrit上に新しいチェンジリストが作成されます。このチェンジリストには、変更されたファイル、コミットメッセージ、レビューコメントなどが含まれます。
  • golang.org/cl/: GoプロジェクトのGerritインスタンスへのショートリンクです。https://golang.org/cl/52350044は、このコミットに対応する特定のチェンジリストを指します。

技術的詳細

このコミット自体は、Go言語のランタイムやコンパイラといったコアな技術的側面には直接関係しません。これは、プロジェクトのメタデータ管理に関する変更です。

  • ファイル形式: AUTHORSCONTRIBUTORSファイルは、プレーンテキスト形式で、各行に貢献者の名前とメールアドレスが記述されています。これは、人間が読みやすく、かつスクリプトによる処理も容易な形式です。
  • addcaツール: コミットメッセージにあるGenerated by addca.は、この変更がaddcaというツールによって自動的に行われたことを示しています。このようなツールは、CLAの署名状況を監視し、署名が完了した貢献者の情報を自動的にこれらのファイルに追加する役割を担っていると考えられます。これにより、手動での更新に伴うヒューマンエラーを防ぎ、管理コストを削減できます。
  • Gitの差分: diff --git a/AUTHORS b/AUTHORSdiff --git a/CONTRIBUTORS b/CONTRIBUTORSは、Gitの差分表示を示しており、それぞれのファイルに新しい行が追加されたことを明確に示しています。index c8b5b1f00..89078f5bddのような行は、変更前後のファイルのGitオブジェクトのハッシュを示しています。

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

このコミットで変更された「コード」は、Go言語のソースコードではなく、プロジェクトのメタデータファイルです。

  • AUTHORSファイル:
    --- a/AUTHORS
    +++ b/AUTHORS
    @@ -107,6 +107,7 @@ David G. Andersen <dave.andersen@gmail.com>
     David Jakob Fritz <david.jakob.fritz@gmail.com>
     David Titarenco <david.titarenco@gmail.com>
     Dean Prichard <dean.prichard@gmail.com>
    +Denis Brandolini <denis.brandolini@gmail.com>
     Devon H. O'Dell <devon.odell@gmail.com>
     Dimitri Tcaciuc <dtcaciuc@gmail.com>
     Dmitri Shuralyov <shurcooL@gmail.com>
    
  • CONTRIBUTORSファイル:
    --- a/CONTRIBUTORS
    +++ b/CONTRIBUTORS
    @@ -168,6 +168,7 @@ David Presotto <presotto@gmail.com>
     David Symonds <dsymonds@golang.org>
     David Titarenco <david.titarenco@gmail.com>
     Dean Prichard <dean.prichard@gmail.com>
    +Denis Brandolini <denis.brandolini@gmail.com>
     Devon H. O'Dell <devon.odell@gmail.com>
     Dimitri Tcaciuc <dtcaciuc@gmail.com>
     Dmitri Shuralyov <shurcooL@gmail.com>
    

コアとなるコードの解説

このコミットは、既存のテキストファイルに新しい行を追加する単純な変更です。技術的な複雑性はありません。各ファイルはアルファベット順にソートされており、新しいエントリもその規則に従って適切な位置に挿入されています。これは、ファイルが自動生成される際に、ソート順が維持されるようにツールが設計されていることを示唆しています。

関連リンク

  • GoプロジェクトのGitHubリポジトリ: https://github.com/golang/go
  • GoプロジェクトのContributor License Agreement (CLA) に関する情報 (一般的なCLAの概念): https://cla.developers.google.com/ (Goプロジェクト固有のCLAページは、このコミットの時点ではgolang.org/cl/のリンクから辿れる可能性がありますが、一般的なGoogleのCLAページが参考になります。)
  • Gerrit Code Review: https://www.gerritcodereview.com/

参考にした情報源リンク

  • GoプロジェクトのGitHubリポジトリのコミット履歴
  • 一般的なオープンソースプロジェクトにおけるAUTHORSおよびCONTRIBUTORSファイルの慣習
  • Contributor License Agreement (CLA) の概念に関する一般的な情報
  • Gerritコードレビューシステムの一般的な情報