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

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

このコミットは、Go言語の標準ライブラリ内の複数の「手動生成された」ファイルに対して、著作権表示を追加または修正することを目的としています。具体的には、src/pkg以下の様々なパッケージ(crypto/ocsp, encoding/gob, exp/gotype, exp/norm, go/build, old/regexp, patch, regexp, runtime, syscall, time)に存在するファイルに、Go Authorsによる著作権表示とBSDスタイルのライセンス条項への言及を追加しています。

コミット

commit e5c1f3870b1f0c23b851eaa0a9ffc38e8d8cac6b
Author: Olivier Duperray <duperray.olivier@gmail.com>
Date:   Thu Jan 19 10:14:56 2012 -0800

    pkg: Add & fix Copyright of "hand generated" files
    
    R=golang-dev, r
    CC=golang-dev
    https://golang.org/cl/5554064

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

https://github.com/golang/go/commit/e5c1f3870b1f0c23b851eaa0a9ffc38e8d8cac6b

元コミット内容

pkg: Add & fix Copyright of "hand generated" files

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/5554064

変更の背景

このコミットの背景には、オープンソースプロジェクトにおける著作権表示の重要性と、Go言語プロジェクトのコードベース全体でのライセンスの一貫性確保があります。特に「手動生成されたファイル」と明記されていることから、これらのファイルが自動生成ツールによって生成されたものではなく、手作業で作成されたため、初期の段階で著作権表示が漏れていたり、不正確であったりした可能性が考えられます。

オープンソースプロジェクトでは、コードの利用条件を明確にするために、各ファイルに適切な著作権表示とライセンス情報を記載することが一般的です。これにより、プロジェクトの知的財産権が保護され、他の開発者や企業がそのコードを安心して利用できるようになります。Go言語プロジェクトはBSDライセンスを採用しており、そのライセンス条項に従って、各ソースファイルに著作権表示とライセンスへの言及を含めることが求められます。

このコミットは、コードベースの健全性を保ち、法的な側面での明確性を確保するためのメンテナンス作業の一環として行われたと推測されます。

前提知識の解説

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

BSDライセンス (Berkeley Software Distribution License)

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

  • 自由な利用、改変、再配布: ソースコードの利用、改変、再配布が非常に自由に認められています。
  • 商用利用の許可: 商用製品に組み込むことも可能です。
  • 帰属表示の義務: 再配布する際に、元の著作権表示とライセンス条項を含めることが義務付けられています。これが、Go言語のソースファイルに著作権表示とBSDライセンスへの言及が含まれる理由です。
  • 無保証: ソフトウェアは現状有姿で提供され、いかなる保証もありません。

Go言語は、このBSDライセンス(具体的には3-Clause BSD LicenseまたはNew BSD Licenseと呼ばれるバージョン)を採用しており、そのコードを利用するすべての開発者はこのライセンスに従う必要があります。

手動生成されたファイル (Hand Generated Files)

ソフトウェア開発において、コードは手動で記述されるものと、ツールによって自動生成されるものがあります。自動生成されたファイルには、通常、生成元のツールやテンプレートに応じた著作権表示が自動的に付与されます。しかし、手動で作成されたファイルの場合、開発者が明示的に著作権表示を追加しない限り、それが欠落する可能性があります。このコミットは、そうした手動生成されたファイルにおける著作権表示の漏れや不正確さを修正するものです。

技術的詳細

このコミットは、Go言語のソースコード管理におけるベストプラクティスと、オープンソースプロジェクトにおけるライセンスコンプライアンスの重要性を示しています。

Go言語のソースファイルには、慣例としてファイルの冒頭に以下の形式の著作権ヘッダーが含まれています。

// Copyright YYYY 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 YYYY The Go Authors. All rights reserved.:これは著作権表示であり、Go言語プロジェクトの著作権が「The Go Authors」に帰属し、その著作権が保護されていることを示します。YYYYは著作権が最初に発生した年を示します。
  • // Use of this source code is governed by a BSD-style:この行は、このソースコードがBSDスタイルのライセンスの下で利用されることを示唆しています。
  • // license that can be found in the LICENSE file.:この行は、具体的なライセンス条項がプロジェクトのルートディレクトリにあるLICENSEファイルに記載されていることを示します。これにより、コードを利用する開発者は、詳細なライセンス情報を容易に参照できます。

このコミットでは、既存のファイルにこれらの行を追加することで、以下の目的を達成しています。

  1. 著作権の明確化: 各ファイルの著作権帰属を明確にし、法的な保護を強化します。
  2. ライセンスの一貫性: プロジェクト全体でライセンス表示の一貫性を保ち、コードの利用条件に関する混乱を防ぎます。
  3. コンプライアンスの確保: BSDライセンスの「帰属表示の義務」を満たし、ライセンスコンプライアンスを確保します。

特に、src/pkg/old/regexp/regexp.gosrc/pkg/regexp/regexp.go のように、既存のコメント行の間に著作権表示が挿入されているケースもあります。これは、既存のファイルに既にコメントが存在していたが、著作権表示が欠落していた場合に、そのコメント構造を尊重しつつ必要な情報を追加したことを示唆しています。

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

このコミットは、Go言語の標準ライブラリ内の多数のファイルにわたって、ファイルの冒頭に著作権表示のコメント行を追加しています。変更されたファイルは以下の通りです。

  • src/pkg/crypto/ocsp/ocsp_test.go
  • src/pkg/encoding/gob/debug.go
  • src/pkg/encoding/gob/dump.go
  • src/pkg/exp/gotype/testdata/test1.go
  • src/pkg/exp/norm/trie_test.go
  • src/pkg/go/build/pkgtest/sqrt_test.go
  • src/pkg/go/build/pkgtest/xsqrt_test.go
  • src/pkg/old/regexp/regexp.go
  • src/pkg/patch/textdiff.go
  • src/pkg/regexp/exec.go
  • src/pkg/regexp/regexp.go
  • src/pkg/regexp/syntax/compile.go
  • src/pkg/regexp/syntax/prog.go
  • src/pkg/regexp/syntax/prog_test.go
  • src/pkg/runtime/gc_test.go
  • src/pkg/syscall/zsysnum_linux_arm.go
  • src/pkg/time/format.go

各ファイルにおいて、以下の4行のコメントが追加されています(一部のファイルでは既存のコメント行の間に挿入されています)。

--- a/src/pkg/crypto/ocsp/ocsp_test.go
+++ b/src/pkg/crypto/ocsp/ocsp_test.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 ocsp

コアとなるコードの解説

変更は非常にシンプルで、各ファイルの先頭(または既存のコメントの直後)に、Go言語のコメント構文である//を用いて著作権とライセンスに関する情報が追加されています。

例として、src/pkg/crypto/ocsp/ocsp_test.go の変更を見てみましょう。

変更前:

package ocsp

import (

変更後:

// 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 ocsp

import (

この変更は、コードの機能には一切影響を与えません。純粋にメタデータとしての著作権およびライセンス情報を追加するものです。これにより、これらのファイルがGoプロジェクトの一部であり、BSDライセンスの下で利用可能であることが明示されます。

各ファイルの著作権年(例: Copyright 2010Copyright 2009Copyright 2011)は、そのファイルが最初に作成された、または大幅に貢献された年を示していると考えられます。これは、著作権法における著作権の発生時期と関連しています。

関連リンク

参考にした情報源リンク

  • Go言語のソースコード規約や慣例に関する情報 (Goの公式ドキュメントやブログ記事など)
  • オープンソースライセンスに関する一般的な情報源 (OSI, SPDXなど)
  • Gitのコミットと差分表示に関する情報
  • 著作権法に関する一般的な情報