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

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

このコミットは、Go言語のランタイムパッケージ内の複数のファイルに不足していた著作権表示を追加するものです。具体的には、src/pkg/runtime/arch_386.hsrc/pkg/runtime/arch_amd64.hsrc/pkg/runtime/arch_arm.hsrc/pkg/runtime/os_freebsd.csrc/pkg/runtime/os_freebsd.hsrc/pkg/runtime/os_netbsd.csrc/pkg/runtime/os_openbsd.csrc/pkg/runtime/signals_plan9.hsrc/pkg/runtime/string_test.goといったファイルに、Goプロジェクトが採用しているBSDスタイルのライセンスに関する著作権ヘッダーが追加されています。これにより、プロジェクト全体のライセンスの一貫性と法的遵守が強化されます。

コミット

commit 4aeb0fc0a4dc800c57ed9f9d457de74d1158700a
Author: Mikio Hara <mikioh.mikioh@gmail.com>
Date:   Wed Mar 20 02:40:29 2013 +0900

    runtime: add missing copyright
    
    R=golang-dev, rsc
    CC=golang-dev
    https://golang.org/cl/7884045

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

https://github.com/golang/go/commit/4aeb0fc0a4dc800c57ed9f9f457de74d1158700a

元コミット内容

runtime: add missing copyright

変更の背景

オープンソースプロジェクトにおいて、ソースコードのライセンス表示は非常に重要です。これは、ソフトウェアの利用、配布、改変に関する法的条件を明確にするために不可欠です。Go言語のような大規模なオープンソースプロジェクトでは、すべてのソースファイルに適切な著作権表示とライセンス情報を含めることが標準的な慣行であり、法的義務でもあります。

このコミットが行われた背景には、Goランタイムの一部ファイルに、プロジェクト全体で採用されているBSDスタイルのライセンスに関する著作権ヘッダーが欠落していたという状況があります。このような欠落は、将来的なライセンスの解釈の曖昧さや、プロジェクトの法的健全性に対する潜在的なリスクにつながる可能性があります。そのため、プロジェクトの整合性を保ち、法的遵守を徹底するために、不足している著作権表示を追加する必要がありました。

前提知識の解説

著作権とは、文芸、学術、美術、音楽などの創作物(著作物)を創作した著作者に与えられる権利です。ソフトウェアにおいては、ソースコードが著作物とみなされ、著作者はコードの複製、配布、改変などを独占的に行う権利を持ちます。オープンソースソフトウェアの場合、著作者は特定のライセンス(例:BSDライセンス、MITライセンス、GPLなど)を通じて、これらの権利の一部を他者に許諾します。

オープンソースライセンス

オープンソースライセンスは、ソフトウェアの利用、改変、配布に関する条件を定めたものです。これにより、開発者は自身のコードを自由に共有し、他者がそれを利用・改善することを許可しつつ、自身の権利を保護することができます。Go言語はBSDスタイルのライセンスを採用しており、これは非常に寛容なライセンスとして知られています。

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

BSDライセンスは、オープンソースライセンスの中でも特に自由度が高い「パーミッシブライセンス」に分類されます。主な特徴は以下の通りです。

  • 再配布の自由: ソースコード形式でもバイナリ形式でも、自由に再配布できます。
  • 改変の自由: コードを自由に改変し、派生作品を作成できます。
  • 商用利用の自由: 商用目的で利用したり、プロプライエタリソフトウェアに組み込んだりすることも可能です。
  • 帰属表示の義務: 再配布や改変を行う際に、元の著作権表示とライセンス条項を含める必要があります。ただし、GPLのような「コピーレフト」条項(派生作品も同じライセンスで公開する義務)はありません。

Go言語がBSDライセンスを採用していることは、そのコードが非常に柔軟に利用できることを意味し、多くの企業や開発者がGoを採用する理由の一つとなっています。

技術的詳細

このコミットの技術的な詳細は、主にソースコードファイルへのコメント形式での著作権ヘッダーの追加に集約されます。Go言語のソースコードは通常、C言語のヘッダーファイル(.h)やC言語のソースファイル(.c)、Go言語のソースファイル(.go)で構成されています。それぞれのファイルタイプに応じて、適切なコメント形式で著作権表示が追加されています。

追加された著作権ヘッダーは以下の形式です。

// Copyright 2011 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.

このヘッダーは、以下の情報を伝えています。

  1. Copyright 2011 The Go Authors. All rights reserved.
    • 著作権の所有者(The Go Authors)と、著作権が確立された年(2011年)を示しています。
    • "All rights reserved." は、著作権法上のすべての権利が留保されていることを示唆しますが、オープンソースライセンスと組み合わせることで、その権利の一部がライセンスの条件に基づいて許諾されることを意味します。
  2. Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
    • このソースコードがBSDスタイルのライセンスによって管理されていることを明示しています。
    • ライセンスの全文がプロジェクトのルートディレクトリにあるLICENSEファイルに記載されていることを示しています。これにより、利用者は詳細なライセンス条項を容易に確認できます。

一部のファイルでは、既存の不完全なライセンス表示が修正されています。例えば、src/pkg/runtime/os_freebsd.cなどでは、// Use of this source file is governed by a BSD-style\n// license that can be found in the LICENSE file.という記述が、より標準的な著作権表示に置き換えられています。これは、単にライセンスへの言及だけでなく、著作権者と著作権年を明確にすることで、法的により強固な表示とする意図があります。

このような著作権ヘッダーの追加は、コードの機能には直接影響しませんが、プロジェクトの法的基盤を強化し、オープンソースコミュニティにおける信頼性を高める上で不可欠な作業です。

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

このコミットでは、以下のファイルに著作権ヘッダーが追加または修正されました。

  • src/pkg/runtime/arch_386.h
  • src/pkg/runtime/arch_amd64.h
  • src/pkg/runtime/arch_arm.h
  • src/pkg/runtime/os_freebsd.c
  • src/pkg/runtime/os_freebsd.h
  • src/pkg/runtime/os_netbsd.c
  • src/pkg/runtime/os_openbsd.c
  • src/pkg/runtime/signals_plan9.h
  • src/pkg/runtime/string_test.go

各ファイルの変更は、ファイルの先頭に以下の4行のコメントを追加する形式が主です。

--- a/src/pkg/runtime/arch_386.h
+++ b/src/pkg/runtime/arch_386.h
@@ -1,3 +1,7 @@
+// Copyright 2011 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.
+
 enum {
  	thechar = '8',
  	BigEndian = 0,

src/pkg/runtime/os_freebsd.csrc/pkg/runtime/os_netbsd.csrc/pkg/runtime/os_openbsd.cでは、既存のライセンスに関するコメントが、より詳細な著作権表示に置き換えられています。

--- a/src/pkg/runtime/os_freebsd.c
+++ b/src/pkg/runtime/os_freebsd.c
@@ -1,5 +1,6 @@
-// Use of this source file is governed by a BSD-style
-// license that can be found in the LICENSE file.`
+// Copyright 2011 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.
 
 #include "runtime.h"
 #include "defs_GOOS_GOARCH.h"

コアとなるコードの解説

このコミットにおける「コアとなるコードの変更」は、Go言語のソースコードファイルに著作権とライセンスに関するコメントを追加することです。これは、Go言語のランタイム(runtime)パッケージ内の様々なアーキテクチャ固有のヘッダーファイル(arch_386.h, arch_amd64.h, arch_arm.h)、オペレーティングシステム固有のC言語ファイル(os_freebsd.c, os_netbsd.c, os_openbsd.c)、およびテストファイル(string_test.go)に適用されています。

追加されたコメントは、Goプロジェクトの標準的な著作権表示であり、以下の要素を含んでいます。

  • // Copyright 2011 The Go Authors. All rights reserved.:
    • これは、当該ファイルの著作権が「The Go Authors」に帰属し、2011年に著作権が確立されたことを示しています。Goプロジェクトでは、個々の貢献者ではなく「The Go Authors」として著作権を管理することが一般的です。
    • 「All rights reserved.」は、著作権法上のすべての権利が留保されていることを示しますが、これは後続のライセンス条項によって、特定の条件下での利用が許諾されることを意味します。
  • // Use of this source code is governed by a BSD-style:
    • この行は、このソースコードがBSDスタイルのライセンスによって管理されていることを明確に示しています。これにより、コードの利用者がどのような条件でこのコードを使用できるかを一目で理解できます。
  • // license that can be found in the LICENSE file.:
    • この行は、完全なライセンス条項がプロジェクトのルートディレクトリにあるLICENSEという名前のファイルに記載されていることを示しています。これにより、利用者は詳細な法的条件を確認するために、どこを参照すればよいかを正確に知ることができます。

これらのコメントは、コードの実行には影響を与えませんが、プロジェクトの法的透明性とコンプライアンスを確保するために不可欠です。特にオープンソースプロジェクトでは、ライセンス情報が明確であることは、他の開発者や企業が安心してコードを利用・貢献するための基盤となります。

関連リンク

  • Go言語の公式ウェブサイト: https://golang.org/
  • Go言語のライセンス情報 (通常はプロジェクトのルートにあるLICENSEファイル): https://golang.org/LICENSE (これは一般的なGoプロジェクトのLICENSEファイルの例であり、このコミットが直接参照しているものではありませんが、Goのライセンスポリシーを理解する上で参考になります。)

参考にした情報源リンク