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

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

コミット

commit 0da89b3964d7b9f44d5180b147791c57312ddd0f
Author: Olivier Duperray <duperray.olivier@gmail.com>
Date:   Tue Jan 24 14:48:15 2012 -0500

    test: Add the usual Copyright notice.
    
    Fixes #2759.
    
    R=golang-dev, rsc
    CC=golang-dev
    https://golang.org/cl/5570053

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

https://github.com/golang/go/commit/0da89b3964d7b9f44d5180b147791c57312ddd0f

元コミット内容

このコミットは、Goプロジェクト内の複数のテストファイルに対して、標準的な著作権表示を追加するものです。コミットメッセージには「test: Add the usual Copyright notice.」とあり、テスト関連ファイルに焦点を当てていることが示唆されています。また、「Fixes #2759」とあり、GoプロジェクトのIssue 2759を修正する目的があることが明記されています。

変更の背景

このコミットの背景には、Goプロジェクトにおける著作権表示の統一と徹底があります。参照されているIssue #2759「all: missing copyright notices」は、Goリポジトリ内の多くのファイルに標準の著作権表示が欠けていることを指摘しています。オープンソースプロジェクトにおいて、コードの著作権表示は非常に重要です。これは、プロジェクトのライセンス(この場合はBSDスタイルライセンス)を明確にし、コードの利用条件を法的に保護するために不可欠です。

Goプロジェクトでは、コードの利用がBSDスタイルライセンスの下で行われることを明示しており、各ソースファイルにその旨を記載することが慣例となっています。しかし、時間の経過とともに、一部のファイル、特にテストファイルなどでは、この慣例が徹底されていないケースが発生していました。このコミットは、そうした欠落を修正し、プロジェクト全体の法的整合性と透明性を高めることを目的としています。

前提知識の解説

著作権表示は、作品の著作権が誰に帰属するか、そしてその作品がいつ作成されたかを示す法的な通知です。一般的には「Copyright [年] [著作権者名]. All rights reserved.」のような形式で記述されます。オープンソースソフトウェアにおいては、これに加えて、そのソフトウェアがどのオープンソースライセンスの下で配布されているかを明記することが一般的です。

BSDスタイルライセンス (BSD-style License)

BSDライセンスは、非常に寛容なオープンソースライセンスの一つです。主な特徴は以下の通りです。

  • 再配布の自由: ソースコード形式でもバイナリ形式でも、変更の有無にかかわらず再配布が可能です。
  • 商用利用の自由: 商用製品に組み込むことも可能です。
  • 改変の自由: コードを自由に改変し、派生作品を作成できます。
  • 帰属表示の義務: 再配布時には、元の著作権表示とライセンス条項を含める必要があります。
  • 無保証: ソフトウェアは現状有姿で提供され、いかなる保証もありません。

Go言語のプロジェクトは、このBSDスタイルライセンスを採用しており、そのために各ファイルに「Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.」という文言を含めることが求められます。これにより、コードを利用する開発者は、そのコードがどのような条件で利用できるかを容易に理解できます。

Go言語のテストファイル

Go言語では、テストコードは通常、テスト対象のGoファイルと同じディレクトリに _test.go というサフィックスを持つファイルとして配置されます。これらのファイルは、go test コマンドによって自動的に検出され、実行されます。テストファイルもまた、Goプロジェクトの一部であるため、他のソースコードと同様に適切な著作権表示が求められます。

Issue Tracking System (GitHub Issues)

GitHub Issuesは、ソフトウェアプロジェクトにおけるバグ報告、機能要望、タスク管理などに使用されるツールです。各Issueには一意の番号が割り当てられ、開発者はコミットメッセージに「Fixes #IssueNumber」と記述することで、そのコミットがどのIssueを解決したかを示すことができます。これにより、コードの変更とプロジェクトの課題が紐付けられ、追跡が容易になります。

Go Change List (CL)

Goプロジェクトでは、コードの変更は「Change List (CL)」として管理されます。これは、Gitのコミットとは異なる、Go独自のコードレビューシステム(Gerritベース)における変更単位です。golang.org/cl/5570053 は、このコミットに対応するGoのCLのURLを示しており、より詳細なレビュー履歴や議論を確認することができます。

技術的詳細

このコミットの技術的詳細は、主に既存のGoソースファイル、特にテストファイルの先頭に、標準的なコメント形式で著作権表示を追加するという点に集約されます。

Go言語のソースファイルでは、ファイルの先頭にパッケージ宣言の前にコメントとして著作権表示を記述するのが慣例です。このコミットで追加された著作権表示は以下の形式です。

// Copyright [年] The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
  • // Copyright [年] The Go Authors. All rights reserved.: これは、Goプロジェクトのコードの著作権が「The Go Authors」に帰属し、そのコードが作成された年(ファイルによって2009年、2010年、2011年など異なる)を示すものです。
  • // Use of this source code is governed by a BSD-style: このコードがBSDスタイルライセンスの下で利用されることを明示しています。
  • // license that can be found in the LICENSE file.: 実際のライセンス条項は、プロジェクトのルートディレクトリにある LICENSE ファイルに記載されていることを示しています。これにより、各ファイルにライセンス全文を記述する手間を省きつつ、利用者にライセンスの場所を明確に伝えています。

この変更は、コードの機能には一切影響を与えません。純粋にメタデータとしてのコメントを追加するものであり、コンパイルや実行時の動作に変化はありません。しかし、法的な観点からは非常に重要な変更であり、プロジェクトの健全性を保つ上で不可欠です。

コミットログを見ると、misc/cgo/test/src/cmd/gofix/test/chan/test/fixedbugs/ など、Goプロジェクトの様々なサブディレクトリに存在するテストファイルが対象となっています。これは、プロジェクト全体で著作権表示の欠落があったことを示しており、このコミットがその広範な修正を試みたものであることを裏付けています。

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

このコミットでは、以下の17ファイルに対して変更が加えられています。すべてのファイルで、ファイルの先頭に4行の著作権表示が追加されています。

  • misc/cgo/test/align.go
  • misc/cgo/test/callback.go
  • src/cmd/gofix/netdial_test.go
  • src/cmd/gofix/reflect_test.go
  • test/chan/select4.go
  • test/fixedbugs/bug222.dir/chanbug.go
  • test/fixedbugs/bug222.dir/chanbug2.go
  • test/fixedbugs/bug248.dir/bug0.go
  • test/fixedbugs/bug248.dir/bug1.go
  • test/fixedbugs/bug248.dir/bug2.go
  • test/fixedbugs/bug248.dir/bug3.go
  • test/fixedbugs/bug260.go
  • test/fixedbugs/bug367.dir/main.go
  • test/fixedbugs/bug367.dir/p.go
  • test/fixedbugs/bug377.dir/one.go
  • test/fixedbugs/bug377.dir/two.go
  • test/fixedbugs/bug382.go

例として、misc/cgo/test/align.go の変更差分を以下に示します。

--- a/misc/cgo/test/align.go
+++ b/misc/cgo/test/align.go
@@ -1,3 +1,7 @@
+// Copyright 2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
 package cgotest
 
 /*

コアとなるコードの解説

上記の差分が示すように、各ファイルの変更は非常にシンプルです。既存のコードの先頭に、以下の4行のコメントが追加されています。

// Copyright 2010 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

このコメントブロックは、Go言語の単一行コメント // を使用して記述されています。

  1. // Copyright 2010 The Go Authors. All rights reserved.

    • Copyright: 著作権表示であることを示します。
    • 2010: このファイルが作成または大幅に更新された年を示します。ファイルによってこの年は異なります(例: chanbug.go は2009年、callback.go は2011年)。
    • The Go Authors: 著作権の所有者がGo言語の開発者コミュニティ全体であることを示します。
    • All rights reserved.: 著作権法上のすべての権利が留保されていることを示します。
  2. // Use of this source code is governed by a BSD-style

    • このソースコードの利用がBSDスタイルライセンスによって規定されていることを明示します。
  3. // license that can be found in the LICENSE file.

    • 具体的なライセンス条項は、Goプロジェクトのルートディレクトリにある LICENSE という名前のファイルに記載されていることを示します。これにより、コードの利用者はライセンスの詳細を確認するために LICENSE ファイルを参照すればよいことが明確になります。

これらの行は、Goコンパイラによって無視されるコメントであるため、プログラムの実行には影響を与えません。しかし、オープンソースプロジェクトにおける法的要件を満たし、コードの利用条件を明確にする上で不可欠なメタデータとなります。

関連リンク

参考にした情報源リンク