26
ソフトウェアライセンス Hiroaki Kono

Software license

Embed Size (px)

DESCRIPTION

勉強のため作ったものです。自分で調べた限りの知識でまとめたので内容に誤りがあるかもしれません。

Citation preview

Page 1: Software license

ソフトウェアライセンス

Hiroaki Kono

Page 2: Software license

Copyright

Copyright = 著作権

著作権とは 著作権(ちょさくけん)とは、言語、音楽、絵画、建築、

図形、映画、写真、コンピュータプログラムなどの表現形式によって自らの思想・感情を創作的に表現した者に認められる、それらの創作物の利用を支配することを目的とする権利をいう。-wikipedia引用

著作権は著作者に対して付不される財産権の一種であり、著作者に対して、著作権の対象である著作物を排他的に利用する権利を認めるものである。-wikipedia引用

著作権者は、他人に対し、その著作物の利用を許諾することができる。-著作権法第63条1項

Page 3: Software license

License

ライセンスとは ライセンス(米: license、英: licence)は、それが存在

しなければ違法となる行為をすることを許可すること、あるいはその許可を称する書面のことをいう。–wikipedia引用

運転免許証 → 持ってなければ車運転しちゃダメ

医師免許証 → 持ってなければ医業しちゃダメ

etc...

Page 4: Software license

Software License

ソフトウェアライセンスとは ソフトウェアライセンス (software license) は、コン

ピュータのソフトウェアについて、ソフトウェア利用者が遵守すべき事項を記載した文書である。-wikipedia引用

要するにソフトウェアの利用上やっていいこととダメなことを書いたもの

ソースコードを公開している場合はソースコードのライセンスも含まれる オープンソースライセンスが有名である

Page 5: Software license

Open Source License

GPL (2系,3系) - Linux Kernel (GPL2.0)

LGPL (2系,3系) - OpenOffice.org (LGPL3.0)

New BSD License - FreeBSD, PostgreSQL

Apache License - Apache HTTP Server

MIT License - X11, jQuery

etc....

Page 6: Software license

Open Source Software(OSS)

書いたソースを公開するだけで「オープンソース」というわけではない

オープンソースとはOSDに準拠していることを意味する

すなわちオープンソースソフトウェアとはOSDに準拠したライセンスの下で公開されているソフトウェアのこと

OSD準拠のライセンス*1はOSI認定マークによって証明できる→

*1 http://opensource.org/licenses/alphabetical

Open Source Initiative

Page 7: Software license

Open Source Definition(OSD) 1. 再頒布を許可すること

2. ソースコードの再頒布も許可すること 意図的にわかりづらくしたコードとかはダメ

3. 派生ソフトを同じライセンスでの頒布を許可すること

4. 派生ソフトの再頒布はパッチ形式を義務付けても良い派生ソフトを別の名前で再頒布することを義務付けても良い

5. 個人(団体)への差別禁止

6. 利用分野への差別禁止 兵器利用は丌可とか制限できない

7. 再頒布時に別のライセンスの付加を求めてはいけない

8. 特定ソフトにおいてのみ有効なライセンスとしてはいけない それが何かの一部であるとき、全体と一緒のときだけOSSとかはダメ

9. 共に頒布するソフトを制限してはいけない こんなソフトと一緒に頒布したらダメ、とかいう制限はできない

10. 特定技術に依存したライセンスであってはならない windows上で動かす場合のみOSSとかはダメ http://opensource.org/osd

http://www.opensource.jp/osd/osd-japanese.html

Page 8: Software license

Redistributions

再頒布とは?

OSSですよ

SourceCode

BinaryCode

(Modified)SourceCode

OSSですよ

便利だ!

(Modified)BinaryCode

更に改良できるぞ

再頒布

この人から見て

Page 9: Software license

Redistributions

再頒布とは?

OSSですよ

SourceCode

BinaryCode

プロプライエタリですよ

便利だ!

(Modified)BinaryCode

再頒布

この人から見て頒布→丌特定の人に配ること配布→特定の人に配ること

Page 10: Software license

Free Software?

フリーソフトウェアの定義*1

0. いかなる目的に対しても、プログラムを実行する自由

1. プログラムがどのように動作しているか研究し、必要に応じて改造する自由

2. 身近な人を助けられるよう、コピーを再配布する自由

3. 改変した版を他に配布する自由

OSDとの違いは? 思想がずれているようです*2

“Open source is a development methodology;free software is a social movement.”*3

*1 http://www.gnu.org/philosophy/free-sw.html*2 http://www.gnu.org/philosophy/open-source-misses-the-point.html

*3http://www.gnu.org/philosophy/free-software-for-freedom.html

Proprietary Software

フリーソフトウェアではないもの

Page 11: Software license

Copy Left

FSF*1が提唱した著作権に対する考え方

コピーレフトの定義 著作物の利用、コピー、再配布、翻案を制限しない

改変したもの(二次的著作物)の再配布を制限しない

二次的著作物の利用、コピー、再配布、翻案を制限してはならない

コピー、再配布の際には、その後の利用と翻案に制限が無いよう、全ての情報を含める必要がある(ソフトウェアではソースコード含む)

翻案が制限されない反面、原著作物の二次的著作物にも同一のコピーレフトのライセンスを適用し、これを明記しなければならない

-wikipedia引用

*1 Free Software Foundation

Page 12: Software license

OSS Licenses

Page 13: Software license

New BSD License

BSDライセンスを修正したライセンス

頒布時にはソースコードやドキュメント等にCopyrightと本条件と無保証である旨の免責事項を含めること

派生ソフトの広告に貢献者や団体の名前を許可なく記述していい

以上の条件の下で改変の有無・形式を問わず頒布してOK

URL先を見ると早い http://opensource.org/licenses/BSD-3-Clause

Page 14: Software license

Original BSD License

修正される前のBSDライセンス

New BSD Licenseの

“派生ソフトの広告に貢献者や団体の名前を許可なく記述していい”

“派生ソフトの広告に貢献者や団体の名前を記述すること”

だった

広告が大量の貢献者の名前で埋め尽くされるのでこの条項を消した

Page 15: Software license

MIT License(X11 License)

MITで開発されたX11(X Window System)の配布に使われているライセンス

内容はNew BSD Licenseと同じ http://opensource.org/licenses/MIT

BSDライセンスはNewとOriginalを混同しやすいため、MITライセンスを用いる人は多い

Page 16: Software license

Apache License 2.0

Apache HTTP Serverの配布に使われているライセンス

内容はNew BSD Licenseとほぼ同じ

“無料の特許ライセンスを不えること”

“派生ソフト及びその広告にソフトの名前やトレードマークを勝手に使わないこと”

“変更箇所を変更したとわかるようにすること”

などが加えられている

Page 17: Software license

GPL 2.0

コピーレフトなライセンス

そのまま頒布する場合 著作権・本条件・免責事項を書く

派生ソフトを頒布する場合 変更点を明示する

同じライセンス(GPL2.0)で頒布する

プログラム実行時の対話的な部分で著作権・ライセンス条項を表示する

バイナリコードを再頒布する場合 ソースコード(又はその入手方法)を添付する

Page 18: Software license

GPL 3.0

技術等の進歩に伴ってライセンスも更新した

用語の選別、他ライセンスとの互換性、 Tivo化への対処、DRMへの対処、ライセンス違反時の対処法、などを修正した

Tivo化 GPLであるにも関わらずハードウェアの制限によって

ユーザの派生ソフトの作成を妨害するようなもの

Page 19: Software license

LGPL 2.1, 3.0

GPLに比べて自由を守る力が弱い(Lesser)ライセンス、限定的にコピーレフト

オープンソースなソフトウェアを利用して開発するとき、自分のコードには制約は課されない emacs, Eclipse等

しかしライブラリの場合は話は別、派生ソフトとみなされてしまう jQuery, FuelPHP等(どちらもGPL系ではないが)

そのライブラリの動的リンクを派生ソフトとみなさないのがLGPL lddコマンドで出るやつが動的リンクされてるもの

Page 20: Software license

Things Programmer needs to care

about OSS

Page 21: Software license

OSS Use

個人的に使う(再頒布(再配布)しない) 基本的に使用方法は問われない

AGPLの場合に限り例外あり

ライブラリとして利用して作ったものを頒布するor 修正して頒布するor リンクして利用するものを頒布する 基本的に派生ソフトと見做され、コピーレフトであれば

ソースコードの頒布も必要

○ 配布であれば、配布対象者へのコードの配布でOK

Page 22: Software license

License Compatibility

2つのソフトを組み合わせる時に、両者のライセンスに互換性があるかどうか

GPL互換性 特にGPLとの互換性があるかないかが重要*1

GPLコードの含まれるコードは全てGPLになる○ GPLが許していることを禁止しているライセンスとは

互換性がない

○ e.g. Apache License x GPL2.0は非互換(特許権停止について)

GPL互換性リスト http://www.gnu.org/licenses/license-list.html

*1 http://www.dwheeler.com/essays/gpl-compatible.html

Page 23: Software license

GPL汚染

GPL汚染とは? GPLは再頒布物にGPLを適用することを強制するため、

GPLのコードを1行でも含んでしまったソフトウェアはソースコードを全て公開する必要がある

現状では実質的にGPLのコードをビジネスに使うのは難しいということになっている

GPLのコードをビジネスに使っている例 RedHat*1

GPLのコードをこっそり使っちゃった例 ElecomルータGPL違反*2

*1 http://jp.redhat.com/*2 http://slashdot.jp/story/04/06/23/0624231/

Page 24: Software license

Multi Licensing (e.g. MySQL)

マルチライセンシングとは複数種類のライセンスで配布する手法

利用者はどのライセンスを適用するか選べる (1つだけ選べる)

MySQLのライセンス GPL

Commercial License

MySQLを内包したようなプログラムを配布するにはGPLとして公開するかコマーシャルライセンスを購入する必要がある

MySQLのライブラリを使用したソフトを配布する場合等は特に気にする必要無し*1

*1 http://www.mysql.gr.jp/

Page 25: Software license

Creating OSS

OSSとして公開する場合はOSI認定ライセンスの下で公開すると良い

ライセンスの記載方法はOSIサイトにテンプレがあるのでそれを使う

e.g. MITライセンスで公開する場合 1. http://opensource.org/licenses/MIT にアクセス

2. ライセンス記述用のテキストファイルやソースコードのヘッダ部分等にテンプレの必要個所を埋めて貼り付ける

3. ソースコードを添付してどこかしらにアップロードして公開する

○ githubやらbitbucketやら自分のサーバやら

Page 26: Software license

Have fun coding!