Successfully reported this slideshow.
Your SlideShare is downloading. ×

OSSライセンス入門

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 49 Ad
Advertisement

More Related Content

Slideshows for you (17)

Advertisement

Recently uploaded (20)

OSSライセンス入門

  1. 1. OSSライセンス入門 KageShiron in Returns 2019
  2. 2. WARN ⚠ この発表は私の解釈に基づくものです 自己の責任で取り扱いをお願いします まさかり歓迎
  3. 3. DO YOU KNOW OSS?
  4. 4. DO YOU KNOW OSS License?
  5. 5. OSS オープンソースソフトウェア • OSSの定義を満たしたライセンスで提供されるソフトウェア • OSI(Open Source Initiative)が決めている • フリーソフトウェア(自由ソフトウェア) • FSF(フリーソフトウェア財団)が提唱している同様の仕組み • Xビール飲み放題(free beer) O言論の自由(free speech) • 実用的にはOSSとほぼ同等。政治的、哲学的な考え方の違い。 • 単に「ソースを公開しているソフト」をオープンソースと表現 しているメディアも存在するので注意
  6. 6. OSSの定義 • 再頒布の自由 • ソースコードの公開 • 派生ソフトウェアの自由 • 作者のソースコードの完全性 (パッチのみの提供) • 個人やグループに対する差別の 禁止 • 利用する分野に対する差別の禁 止 • ライセンスの分配 (公平な分配) • 特定製品でのみ有効なライセ ンスの禁止 • 他のソフトウェアを制限する ライセンスの禁止 • ライセンスは技術中立的でな ければならない 参考: https://opensource.jp/osd/osd-japanese.html
  7. 7. OSSへのよくある勘違い 無料である? NO! 無料のことが多いが、有料で配布することは明確に許可さ れている。ただし、勝手に再配布できるので単純に売る商売はま ず成り立たない。 外部からの貢献(Contribute)を受け付けている? NO! パッチの提供やバグ報告を歓迎していることがほとんどだ が、OSSかどうかには無関係。メンテナンスを終了してたり、社 内で作ったものを公開しているだけという場合もありえる。
  8. 8. プロプライエタリなソフト OSSでないソフトのこと(Windows, macOS, Photoshop, Office...) ソースが非公開 不利益な機能 (バックドア等) 寡占により料金が高額に 会社 :ソフトを売る商売がやりやすい 利用者:有料でもソフトがあると嬉しい 手厚いサポートを受けやすい 懸 念 利 点 用途の制限
  9. 9. OSSの流派 パーミッシブとコピーレフト
  10. 10. パーミッシブライセンス • BSD風、非コピーレフトとも • ソースをほとんど制限なく使用できる • 「著作者を表示する」、「著作者は責任を負わない」程度のルール • Clang、Goコンパイラ、VSCode、libpngなどなど • OSSへのタダ乗りが課題 OSSを改造したソフトを売って企業は儲けても、 作者やコミュニティにはなにも還元されない MIT License(パーミッシブ) のソフト ソース 非公開 GPLで 公開 ちょっと機能を追加して販売! ソースは非公開だ! MIT License で公開
  11. 11. コピーレフト(GPLなどのライセンス) • 派生したプログラムを公開する際に、同じライセンスで公開が 求められる • LinuxやGNUのソフトウェア、WordPress、Wikipediaなどなど • OSSにタダ乗りするのを防ぐ(成果物を強制的に還元させる) • 良いOSSが流行れば独占も防げる! • 一方で「感染性」「GPL汚染」などと 言われることも GPL(コピーレフト) のソフト ソース 非公開 GPLで 公開 MIT License で公開 必要な機能を追加 GPLで公開しないと コミュニティ も嬉しい!
  12. 12. どっちがいいのか 一長一短 •Linuxやgccはコピーレフト •コンピュータ界隈に与えた影響は大きい •最近はパーミッシブライセンスが増えている ように感じる •企業が中心となるOSSはパーミッシブが人気
  13. 13. 著作権とライセンスの関係 個別のライセンスの話をする前に
  14. 14. 第一節 通則 (目的) 第一条 この法律は、著作物並びに実演、レコード、放送及び有線放送に関し著作者の権利及びこれに隣接する権利 を定め、これらの文化的所産の公正な利用に留意しつつ、著作者等の権利の保護を図り、もつて文化の発展に寄与す ることを目的とする。 (昭六一法六四・一部改正) (定義) 第二条 この法律において、次の各号に掲げる用語の意義は、当該各号に定めるところによる。 1.一 著作物 思想又は感情を創作的に表現したものであつて、文芸、学術、美術又は音楽の範囲に属するものをいう。 2.二 著作者 著作物を創作する者をいう。 3.三 実演 著作物を、演劇的に演じ、舞い、演奏し、歌い、口演し、朗詠し、又はその他の方法により演ずること (これらに類する行為で、著作物を演じないが芸能的な性質を有するものを含む。)をいう。 4.四 実演家 俳優、舞踊家、演奏家、歌手その他実演を行う者及び実演を指揮し、又は演出する者をいう。 5.五 レコード 蓄音機用音盤、録音テープその他の物に音を固定したもの(音を専ら影像とともに再生することを目 的とするものを除く。)をいう。 6.六 レコード製作者 レコードに固定されている音を最初に固定した者をいう。 7.七 商業用レコード 市販の目的をもつて製作されるレコードの複製物をいう。 8.七の二 公衆送信 公衆によつて直接受信されることを目的として無線通信又は有線電気通信の送信(電気通信設 備で、その一の部分の設置の場所が他の部分の設置の場所と同一の構内(その構内が二以上の者の占有に属している 場合には、同一の者の占有に属する区域内)にあるものによる送信(プログラムの著作物の送信を除く。)を除 く。)を行うことをいう。 9.八 放送 公衆送信のうち、公衆によつて同一の内容の送信が同時に受信されることを目的として行う無線通信の送 信をいう。 10.九 放送事業者 放送を業として行う者をいう。 DO YOU KNOW 著作権?
  15. 15. 著作権とは • 著作物を独占的に使う権利 • 音楽や動画が無料で配布されると売れなくなる →作る人がいなくなる →文化の発展を妨げる • 財産権と人格権に分けられる • ついこの前保護期間が70年に 【著作権法の目的より】 文化的所産の公正な利用に留意しつつ、著作者等の権利の保護 を図り、もつて文化の発展に寄与することを目的とする。
  16. 16. ライセンスとは ライセンス【license】 (大辞林第3版より) ① 許可。免許。また、それを証明する文書。 「 -を取る」 ② 他企業のもつ商標や製造技術の特許権の使用許可。 OSSライセンスは主に著作権に対する使用許可 ※著作権を放棄 しているわけではない ✓複製権 ✓公衆送信権 ✓頒布権 ✓譲渡権 ✓翻訳権 …
  17. 17. ライセンスと著作権 OSSライセンスは主に著作権に対する使用許可 著作権法 > ライセンス ライセンス以前に著作権法を理解しておく必要がある • 著作物で無いものはライセンスと無関係に使用できる • 著作権法で自由に使用できる場合がある
  18. 18. 著作物の構成要件 • 思想又は感情を創作的に表現したものであつて、文芸、学術、 美術又は音楽の範囲に属するもの • プログラム 電子計算機を機能させて一の結果を得ることができるよう にこれに対する指令を組み合わせたものとして表現したものをいう。 満たさないものは著作物ではない (著作物でなければライセンスは基本無関係) *特許、商標、契約などは著作権とはまた別に存在する
  19. 19. 著作物ではないもの int triangle(int a, int b) { return (a + b) / 2; } 公式など誰が書いても同じになる → 創造的ではない 関数名のような短いものも → 著作物ではない OOをキャッシュして 高速化しよう アイデアは表現ではない "a":97, "b":98, "c":99, ただのデータは 思想・感情がない
  20. 20. 著作物を自由に使って良い場合 • 引用 • 私的複製 • ただし、著作権法第113条の規定なども要確認 • プログラムの著作物の複製物の所有者による複製等 • 自らコンピュータで実行するために必要 • 電子計算機における著作物の利用に付随する利用等 • キャッシュや修理時のバックアップなど などなど
  21. 21. ライセンスと著作権 (再掲) OSSライセンスは主に著作権に対する使用許可 著作権法 > ライセンス • 著作物で無いものはライセンスと無関係に使用できる • 著作権法で自由に使用できる場合がある • 著作物かどうかの判断や引用の条件は結構難しいのでそこは注意 • マナーとかはまた別 (人によって意見はかなり異なるので、マナー違反と指摘する前によく考えて)
  22. 22. 代表的なライセンス
  23. 23. 種々のライセンス • 様々な独自ライセンスが発生した • Artistic License、PHP License、Vim License... • 多くが現在まで引き継がれている • 曖昧性があったり、それぞれのライセンスを読まねばならない など不便なため最近は有力なライセンスが絞り込まれてきた • 近年では独自ライセンスを採用しないことがほとんど • ライセンスを変更するプロジェクトも多い
  24. 24. Public Domain(著作権放棄) • Creative Commons 0(CC0) • Unlicense • NYSL (OSI未承認) • WTFPL (OSI未承認) 採用例: SQLite、vital.vim、MinGW runtimeなど • 著作者の表記などは一切不要 • コードサンプルやCSSなど、著作権を主張するほどでも無いも のにおすすめ • CC0がイチオシ • FSFやFedora Projectが法律的な徹底度を評価してる
  25. 25. 2条項BSD系 • 2条項BSD(2-Clause BSD) • 3条項BSD(修正BSD)、4条項BSD(旧BSD)から制限を削ったもの • ISCライセンス ・MITライセンス • ソースコードに著作者とライセンスを記述する • バイナリ配布時ドキュメントに著作者とライセンスを記述する 2条項BSDに特許許諾を加えたもの。特許を持ってないとあんまり 意味がないかも。 採用例: FreeBSD、Ruby、.NET Core、BINDなどなど 採用例: Ghidra、OpenSSL、 Apache系のOSSなどApache License 2.0
  26. 26. GPL(GNU General Public License) • コピーレフト • 「GPLのOSSの派生物はGPLを適用する」が最も重要な条項 • その他、コピーや実行を許可するための条項もある • 特許やDRMに抵抗する目的でGPLv3が発行された • 英文でGPLv2は18KB、GPLv3は35KBほどの容量 • IPAがGPLv3の逐条解説を無料公開している(258p) 採用例 GPLv2 Linuxカーネル、BusyBox、Gitなど GPLv2 or Later gcc 4.2.1以前、WordPress、VLCなど GPLv3 gcc 4.2.2以降、Samba、Emacsなど
  27. 27. LGPL(GNU Lesser General Public License) • GPLとパーミッシブライセンスの中間 • LGPL部分に関する変更の公開義務 • 動的にリンクする場合にソフト全体をLGPLにする必要は無い • リバースエンジニアリングの許可などの条項が存在 ソフト全体 =ソース非公開 DLL =LGPL 動的リンク採用例: 7-ZIP、Radare2、Qtなど AGPL(Affero General Public License) 採用例: Mastodon、MongoDB(2018年まで)、NextCloudなど • GPL+サーバ側で改造したバイナリを動かす際にソース公開義務
  28. 28. • 主にソースコード以外の著作物(画像、文章など)に適用する • ソースコード向けの複雑な条項がカットされている • バージョン4.0では日本含め国ごとの法律への対応度が高い • 以下を組み合わせてライセンスを決める 略語 日本語 説明 BY 表示 利用時に著作者の名前を表示 SA 継承 コピーレフト(同じライセンスで提供) NC 非営利 お金とっちゃだめ(OSSではない) ND 改変禁止 全く同じ状態なら再配布OK(OSSではない) 採用例: Wikipedia(CC BY-SA)、素材サイトなど
  29. 29. OSSの使い方
  30. 30. ライセンスを確認しよう • ライセンスファイルを確認 • LICENSE、LICENSE.txt、LICENSE.md、COPYINGなど • GitHubなら自動認識して左上に出してくれたり • ルートディレクトリにない場合はhelpやdocsのディレクトリも • それぞれのファイルの頭にライセンスが書いてないか • READMEや公式サイトに記述がある場合も • ググってみるのも良い
  31. 31. ライセンスを確認しよう • ライセンス不明は結構多い • 作者に聞いて許可を取るしか無い • ライセンス文を追加してもらうのが一番望ましい • GitHubではForkに関しては全員に認められている そのソースはOSSではない ライセンスがない場合
  32. 32. ライセンス表示をしよう Public Domainを除く、多くのライセンスで「著作者の表示」「ライ センス文の表示」を求めている。 権利の維持だけではなく、 OSS開発者の名誉や実績につながる 【MIT Licenseより抜粋】 上記の著作権表示および本許諾表示を、 ソフトウェアのすべての複製または重要 な部分に記載するものとします。 スマホゲームや有名 なソフトでもどこか に記載があるはず
  33. 33. ソースを公開する場合 • 既存の権利や著作者の情報は消さない • ライセンスが明確なようにすべてのファイルの先頭にライセン スを明記しておくのが良い • ファイルを変更した場合、それがわかるようにする Linus Torvaldsが著作権を持っている。 GPLv2で提供されており、詳細は LICENSEというファイルを参照せよ。 Aさん Bさん Aがすべて書いたように 誤解されないように配慮が必要
  34. 34. ソース以外を公開する場合 • アプリ内やドキュメントに明記 • ライセンス全文を乗せるのが望ましい • 直接使っているライブラリの名前とURLのみ記載の場合も多い • 依存関係すべてを記載すると大変な事になってしまう・・・ • 例: Next.jsを入れるだけで600件も依存関係が入ってくる • 全ライセンスを一覧表示してくれるOSSもある • github/licensed https://github.com/github/licensed • license-checker https://www.npmjs.com/package/license-checker 表示方法は既存アプリなどを真似するのが無難
  35. 35. ソース以外を公開する場合(GPL) GPL(コピーレフト)のソース公開義務を守る • ソースコードを添付するか、合理的に入手できる方法を提供する • 義務を無視することがないように • アクアプラスのゲームにGPLのライブラリの使用が発覚し、後にゲームの ソースを公開 • BusyBoxを使っていながらソースを公開していないデバイスが 訴訟に発展 GPL非互換のライセンスに注意する • GPLの派生物にはGPLを適用する義務があるので、混入注意 • 例えば、GDB pedaはCC BY-NC-SAなのでGPLと混ぜられない • 著作物として分離していれば問題は生じない
  36. 36. GPLの互換性 • Apache License 2.0と GPLv2は非互換 • GPLv2とGPLv3は非互換 • GPLv2またはそれ以降は GPLv3を選択できるので 互換性がある • LinuxやGitのソースの 大部分はGPLv2のみ ↓ Apache Licenseや GPLv3非互換 later version の指定
  37. 37. OSSへの貢献 Contribution
  38. 38. OSSへの貢献 • 寄付や作者のモチベが上がるようなことをする • 感謝の気持ちを伝えるとか、ウガンダの子供に寄付するとか • バグや機能追加の提案を行う • 危険な脆弱性ならメールなどの非公開の手段で行うこと! • コードを書いてパッチを送る • GitHubならPullRequestを投げる • ドキュメントはたいてい手が回ってないので、リンク修正とかだけで も喜ばれるかも
  39. 39. ガイドラインを読もう • GitHubではCONTRIBUTINGやCODE_OF_CONDUCTというファイルにコミュ ニティ参加や貢献時のルールが書いてある • プロジェクトによっては著作権移譲の署名を求められることも • プロジェクトの公式サイトやバグトラッカーにガイドラインが 書いてある場合もある • リポジトリコントリビューターのためのガイドラインを定める - GitHub ヘルプ https://help.github.com/ja/articles/setting-guidelines-for-repository-contributors • プロジェクトへの行動規範の追加 - GitHub ヘルプhttps://help.github.com/ja/articles/adding-a-code-of-conduct-to- your-project
  40. 40. わからなければ聞いてみよう • 不明点があったり、CONTRIBUTIONファイルがなければ一言聞いて みるのも良いかもしれない • OSS活動の方針やライセンスに関しては本人もよくわかっていな いパターンも多い • みんなで協力してOSSを作り上げていこう
  41. 41. 自分がOSSを公開するとき
  42. 42. ライセンスを適切に運用する 必ずライセンスを明記する • ライセンスが無いとOSSではない • 著作権は非常に強い権利なので、他の人が使うのはかなり困難となってしまう 独自のライセンスを作り出さない • 曖昧性が含まれたり、法的な解釈(特にGPLとの互換性判断)が難しい • 現状は迷ったらシンプルなMITライセンスを選ぶことを個人的には推奨 GitHubの機能を活用する • LICENSE.mdやCONTRIBUTION.mdの他にもOSS活動をサポートする機能が多数ある
  43. 43. ライセンスを適切に運用する 自分の著作物以外に勝手にライセンスを適用しない • ライセンスは自分の著作物に関する許諾であることを忘れない • 仕事や共同研究で作ったプログラムは著作権が本人になかったり、 秘密保持契約書によって公開できない可能性がある • 他人の著作物を含む場合(例:イラスト屋さんを使ったスライド) 一度出したライセンスは撤回できない • 商売を検討してるなら特によく考えること • 途中から変更はできるが過去にダウンロードした人が使用したり、再配布し たりフォークすることを制限することはできない よってこのスライド 全体としてはOSSで は無いぞ!
  44. 44. ライセンスの変更に備える • ライセンスを変更したい状況はしばしば発生 • もっと優れたなライセンスが出現 • 商用に移行するため、ソースを非公開にしたくなるかも • 自分が著作権を持っていれば自由にライセンスを決定できる • 過去に公開した分を変更することはできない ↓ 他人からの貢献が含まれていると問題が生じる 受け入れ時に必ず著作権委譲か、ライセンス変更の許可をもらう CONTIRUBTION.mdなどに書いておくと良い
  45. 45. ライセンスを変更したOSS Ruby Ruby License+GPL→Ruby License+2条項BSD Ruby Licenseやパッチの規定から問題は生じなかった jQuery GPLとMITのデュアルライセンス→MITのみ 同意が不要な範囲の変更 OpenSSL OpenSSL LicenseとSSLeay License→Apache License 2.0 貢献者に片っ端から同意を求める スタンプラリー 変更を拒否された部分は再実装 VLC Player GPL→LGPL (一部) スタンプラリー同意を集めてライセンス変更 サクラエディタ ライセンス不明→zlib/libpngライセンス 同意を求めるが、未だに一部ライセンス不明 Tween GPLv3→ソース非公開 貢献者の同意を受けて変更、GPLを継続するOpenTweenにFork
  46. 46. 知っておいてほしいこと • OSSは確実に広まり、重要度を増している • Linuxを目の敵にしていたMicrosoftも今やLinuxのスポンサーに • 就活などでもGitHubを見る企業が増加 • OSSを過剰に恐れない • (趣味なら)間違えたら訂正すればよい • 業務で使うなら法務担当者に相談しよう(特にGPL系) • OSS業界は一枚岩ではない • 人によってライセンスの解釈や主張、意見は結構異なる • OSSの中でもMongoDBやzfsのように揉め事は発生してたり • 自分の意見を持ちつつ、相互理解が大事
  47. 47. まとめ •OSSの精神とルールを知って楽しくOSS活動を •恐れるよりまず挑戦! •法律やライセンスの解釈は私見です •間違いの指摘など歓迎
  48. 48. 参考になるサイト Choose an open source license https://choosealicense.com/ ライセンスの選び方についてまとまっているサイト GitHubのヘルプ https://help.github.com/ LICENSEファイルの書き方など、円滑なOSS活動に役立つ内容 OSDN https://ja.osdn.net/projects/opensource/wiki/TitleIndex ライセンスやOSSの定義などの日本語訳 OSSライセンス関連情報:IPA https://www.ipa.go.jp/osc/osslegal.html 日本から見たOSSに関する分析や検討のPDFが公開されている。より真面目にライセンス り組むなら目を通しておきたい。

Editor's Notes

  • ただし、法律の任意規定は契約でオーバーライドできるので注意
  • FSFやFedora Projectは法的に徹底度が高いCC-0を推奨している
    日本で放棄することができない著作者隣接権も行使しないことを明示

×