MyEnigma

とあるエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

ロボットエンジニアのためのOSSライセンス入門

目次

はじめに

現代において、

ソフトウェア開発にOSSは欠かせません。

 

OSSを正しく利用するためには、

自ずと、OSSのライセンスに関する知識も重要になります。

今回、冒頭の本を読んだことを皮切りに、

OSSのライセンスについて、

ロボットへ応用することを念頭において色々調べてみたので、

共有したいと思います。

 

OSSのライセンスを学ぶ上で、まず読むべき資料

OSSのライセンスをちゃんと学ぼうと思ったきっかけは、

下記の書籍を読んだからです。

 

法律に関しては、全く素人な自分でも非常にわかりやすい書籍で、

OSSのライセンスの概要を知りたいエンジニアにはおすすめです。

 

また、下記のIPAの資料も基本的なOSSのライセンスの比較や、

実際にOSSのライセンス関係で発生した問題を学ぶことができてよかったです。

 

OSSのライセンスで初めに心に止めておくべきこと

前述の書籍を読んで、

OSSのライセンスを学ぶ上で一番初めに心に止めて置くべきだと思ったことをメモしておきます。

 

OSSのライセンスが付加されたソフトウェアには、

  • 1. そのソフトウェアには 改変をする自由 がある。

  • 2. そのソフトウェアには 頒布する自由 がある。

  • 3. 上記の2つの自由を得るには、 著作権者が提示する条件を満たす 必要がある。

  • 4. 上記の2つの自由を得るために、 いちいち著作権者に連絡し著作権者から許諾を得る必要はない。

  • 5. 上記の2つの自由を得るために、 著作権者に対して対価を支払う必要はない。

という5つのルールがあります。

 

OSSは使うのならば正々堂々と公明正大に使うべきです。それができないのならば、OSSは使うべきではありません

 

サーバサイドのソフトウェアに比べて、

組み込みのソフトウェアは、ソフトウェアの頒布をする可能性が高く、

より一層OSSのライセンスに注意が必要となる。

 

フリーライダーはコミュニティとその成果物であるOSSにおけるガン細胞 です。

 

各OSSライセンスの比較表

有名なOSSのライセンスの違いを確認したい場合は、

下記リンク先のライセンスの比較表が

非常にわかりやすいです。

docs.google.com

OSSライセンスの詳細は別途確認が必要ですが、

OSSライセンスを全体を俯瞰して見たい場合は便利だと思います。

 

OSSは基本的に、

下記のような大きな3つの分類で分類されることが多いようです。

    1. コピーレフト型ライセンス: GPL, APLなど
    1. 準コピーレフト型ライセンス: MPL, EPL, LGPLなど
    1. 非コピーレフト型ライセンス: MIT, BSD, Apache License

それぞれのライセンス分類の比較は下記の記事を参照ください。

 

代表的なOSSのライセンスで共通していること

前述のライセンスの比較表を見ると分かる通り、

多くのOSSが使用している代表的なライセンスには、

いくつか異なる部分もありますが、

すべて共通する部分があることがわかります。

それらをまとめておきます。

商用利用可能

特別なライセンス条項を追加していない場合、

基本的なOSSライセンスではほとんど商用利用可能としているようです。

個人利用可能

個人的にOSSを利用する場合は、特に制限をもうけていないことがわかります。

作者にOSSに関する責任を追わせること

OSSを使って、なにか損害を与えられた場合でも、

その責任はOSSの作者は負わないことが明確化されています。

ロボット関連でよく使われそうなOSS

続いて、ロボット関連でよく使われそうなOSSのライセンスをまとめておきます。

一覧表

OSS License 参考URL
ROS BSD-3-Clause ROS.org | Is ROS For Me?
Eigen Mozilla Public License Version 2.0 Eigen
tensorflow Apache License 2.0 tensorflow/LICENSE at master · tensorflow/tensorflow

下記で、それぞれのOSSを自分のソフトに内包して頒布する際の注意点をまとめておきます。

ROS

ROSは、3条項BSDライセンスです。

基本的には、著作権表示やライセンスの表示が必要ですが、注意点としては、

  • 3.このソフトウェアのコントリビューター(貢献者)の名前は、特定の書面による事前の許可なしに、このソフトウェアから派生した製品の保証または販売促進のために使用してはいけない。

があります。

これは例えば、ROSを作っている人たちの名前を使って、

自分のシステムの保証や販売促進などをしてはいけないということです。

Eigen

EigenはMozilla Public License 2.0のライセンスです。

 

MPL2.0では、もしEigenの中身を変更して

自分のシステムに組み込んだ場合、

その変更したEigenのコードを公開する必要があります。

(GPLのようにすべてのコードを公開する必要はありません)

しかし、このような場合GPLのようにすべてのソースコードを公開する必要はなく、

このEigenの部分(MPL2.0ライセンスのコード)のみを公開すれば良いようです。

 

MPL2.0の特徴としては、商標の利用不可となっており、

例えば、自分のソフトウェアにEigenのロゴなどを入れて、

"Powered by Eigen!!"みたいなことはしてはいけないことになっています。

 

 

tensorflow

tensorflowのライセンスはApache License 2.0です。

 

Apache License2.0は商用利用可能ですし、

改変してもソースコードの公開の義務が無いライセンスです。

 

またOSSを作っている人が特許を持っており、

その特許をOSSが利用している場合、

OSSのユーザにも特許の利用権を与えることができるなど、

難しい技術が使われているライブラリにはよく使用されている気がします。

 

Apache License 2.0の特徴としては、

このライセンスのOSSを変更した場合、

その変更した箇所を明記しないといけないという条件があります。

 

また、Apache License2.0では、商標の利用不可となっており、

例えば、自分のソフトウェアにTensorflowのロゴなどを入れて、

"Powered by Tensorflow!!"みたいなことはしてはいけないことになっています。

 

OSSに関する素朴な疑問

下記は、以前から自分が持っていた

OSSのライセンスに関する素朴な疑問を調べたものです。

Q1: OSSを配布し、中のスクリプトなどで他のOSSをネットから直接インストールしてもらう場合もライセンスを気にする必要はあるのか?

自分のOSSに内包し、頒布しているわけでないため、

ライセンスは問題にならないようです。

 

しかし、インストール先のリポジトリが無くなっていたりするため

注意が必要です。

 

Q2: 自分のOSSにライセンスを正しく設定するにはどうすればいいのか?

GitHubの場合は、リポジトリを作成するときに、

ライセンスを選ぶだけで基本的にOKです。

 

一から作成する場合は、下記のようにします。

  1. 自分の使いたいライセンスファイルを持ってくる。

  2. ライセンスファイルの著作者の名前と年を入力する。

  3. リポジトリ内に入れて、READMEにも使用するライセンス名を書く

 

他のOSSを組み込む場合は、また別の作業が必要ですが、

自分が作成したソフトウェアのみで構成されるOSSの場合は

この方法でOKなはずです。

 

Q.3 他のOSSを利用する時の、ライセンスと著作権の表示はどうすればいいのか?

基本的には、利用するOSSのライセンスファイルを、

下記のリポジトリのように一つディレクトリにまとめたり、

LICENSEファイル一つにまとめる方法もあります。

こちらのように、HPでまとめて公開する方法もあります。

 

またちゃんとしたOSSでは使用している外部OSSと

そのそのライセンスのリストを表示していることが多いようです。

 

Q.4. MPLは特許に関して、どのような規定をしているのか?

前述のIPAの資料によると、

2つ規定があるようです。

 

1つ目は、

"OSSの開発者はOSSが含む特許をユーザに無償でライセンス付与しなくてはならない"

ということで、ユーザは特許をあまり気にすることなくOSSを使うことができます。

2つ目は逆に、

"ユーザがOSSの開発者を特許侵害で訴えた場合、ユーザは開発者から与えられた権利を失効する。"

ということで、逆に開発者の方も特許をあまり気にしないような条件になっていると思われます。

 

この条項を見ると、開発者もユーザも互いに特許で揉めるのを

防ぐようなルールになっている気がします。

 

Q.5 GPLで公開すべきこものはなにか?

GPLで公開すべきものは、ソースコードだけでなく、

ビルドするためのスクリプトや、

改変した場合は、その事実と日付を記入したドキュメントも必要です。

(LGPLでもこのドキュメントは必要です)

 

最後に

OSSのライセンスに関しては、

その国々でベースとなる法律が異なるため、

最終的には専門家のアドバイスが必要です。

 

この記事の内容も間違っていることがあると思うので、

もし何かあればコメント等で教えて頂けると嬉しいです。

 

参考資料

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

MyEnigma Supporters

もしこの記事が参考になり、

ブログをサポートしたいと思われた方は、

こちらからよろしくお願いします。

myenigma.hatenablog.com