オープンソースソフトウェアにおける ソフトウェアライセンス間の 包含関係 眞鍋雄貴,井上克郎 大阪大学大学院情報科学研究科 2013/1/11 SIGSS
ソフトウェアの再利用 既存のソフトウェアのライブラリ,ソースファイル,クラス,関数などを新たなソフトウェアの開発に利用すること. ソフトウェアの生産性や品質の向上を目的とする. ウェブ上に多数のライブラリやソースファイルが公開されている. 2013/1/11 SIGSS
ソフトウェアライセンス(ライセンス) 著作者が定めた,利用に関する許諾と許諾を得るための要求や義務 利用:複製,改変,再配布 (例)GNU General Public license version 3(GPLv3), BSD4項ライセンス(BSD4)など ライセンスによって要求や義務が異なるため,利用範囲が異なる. オープンソースソフトウェアの場合,指定されているライセンスに従えば利用することができる. ソフトウェアライセンス研究の重要性…SPDXとか研究グループの数とか,関連する国際会議とか… 2013/1/11 SIGSS
ライセンスの選択問題 ライセンスの異なる複数のライブラリやソースファイルを利用したとき,そのソフトウェアのライセンスは何にすべきか. 制約:各ライブラリやソースファイルのライセンスを満たさないといけない. ソフトウェア このソフトウェアの ライセンスは 何にすれば License A,B,C,Dを満たせるか. ライブラリ 自分で開発した ソースファイル 他プロジェクトから 再利用した License A License B License C License D リンク 再利用 2013/1/11 SIGSS
課題 開発者にとって,各ライセンスを理解し,それを満たせるライセンスを選択することは手間が大きい. ライセンスの種類が多いこと Open Source Initiativeが承認しているオープンソースライセンスは69種(2012/11/17現在) BlackDuck Knowledgebaseでは2200種以上としている. ライセンスが契約文書であること 開発者にとっては読みにくい. 2013/1/11 SIGSS
既存のソフトウェアの例 Scacchiら[5]によるGoogle Chromeの調査 27種の外部コンポーネント bsddiff, ffmpeg, HarfBuzz, hunspell, Skia… 14種類の異なるライセンス BSD Protection License, LGPL, MIT License, MPL 1.1 or GPL 2.0 or LGPL, Apache License 2.0… [5]W. Scacchi and T.A. Alspaugh, “Understanding the role of licenses and evolution in open architecture software ecosystems,” Journal of Systems and Software, vol.85, no.7, pp.1479–1494, 2012. 2013/1/11 SIGSS
ライセンスの不整合に関する既存研究 Alspaughら[9] ライセンスの各条項を<actor, modality, action, object, license>のタプルで表現し,権利や義務の衝突を計算する. Danielら[4] ライセンスの不整合が生じたときの対処をライセンス統合パターンとして整理した. 代替となるライセンスを見つけるのは難しい ⇒不整合が生じないライセンスを見つけられるようにしたい. [4]D.M. German and A.E. Hassan, “License integration patterns: Addressing license mismatches in component-based development,” Proceedings of 31st International Conference on Software Engineering, pp.188–198, 2009. [9]T.A. Alspaugh, H.U. Asuncion, and W. Scacchi, “Intellectual property rights requirements for heterogeneously licensed systems,” Proceedings of 17th IEEE International Requirements Engineering Conference, pp.24–33, Sept. 2009. 2013/1/11 SIGSS
ライセンス間の包含関係 あるライセンスで配布されている成果物を別のライセンスで配布できるとき,それらのライセンス間にある関係 License A の元で許可される範囲 License Cの下で許可される範囲 License A ⊇ License C 2013/1/11 SIGSS
包含関係のグラフ 包含関係をたどることで,矛盾の起きないライセンスを選択できる. (例)LicenseCの成果物はLicenseDで配布できる. LicenseA ノード:ライセンス 辺:包含関係 License A ⊇ License B License A ⊇ License C License C ⊇ License D LicenseB LicenseC LicenseD 2013/1/11 SIGSS
アプローチ 開発者によるライセンス選択を支援する オープンソースソフトウェアにおけるライセンス間の包含関係を調査する. 既存のオープンソフトウェアにおけるソースファイルとソースパッケージの関係に着目する. 2013/1/11 SIGSS
ソースパッケージと包含関係 管理され,インストール方法が提供されている,ソースファイル集合やパッケージ情報のドキュメント等を含むファイル. ソースパッケージにもライセンスが設定される. ソースファイルはソースパッケージとしてそのライセンスの下で配布されている ソースファイルの ライセンス ソースパッケージの ライセンス ⊇ 2013/1/11 SIGSS
Empirical Study 目的:オープンソースソフトウェアにおけるソフトウェアライセンス間の包含関係と,再利用への適用可能性を調べる リサーチクエスチョン RQ1:既存のソフトウェアから得られるライセンス間の包含関係はどの様なものであるか. RQ2:得られた包含関係から,ライセンス間の矛盾が起きうることを確認できるか 2013/1/11 SIGSS
実験対象 Fedora 17のソースパッケージ (.src.rpm)2132個 SPECファイルとソースファイル集合(tar.gz)から構成されている. SPECファイルの例(traceroute.spec) Summary: Traces the route taken by packets over an IPv4/IPv6 network Name: traceroute Epoch: 3 Version: 2.0.18 Release: 3%{?dist} Group: Applications/Internet License: GPLv2+ URL: http://traceroute.sourceforge.net : パッケージのライセンス 2013/1/11 SIGSS
包含関係の抽出手順 各ソース ファイルの ライセンス名 ソース ファイル パッケージ群 包含関係の作成 フィルタ リング ライセンスの特定 解凍 ライセンスの 包含関係 ライセンスの 包含関係 パッケージの ライセンス名 SPECファイル ライセンス名の対応表 2013/1/11 SIGSS
ライセンスの特定 ソースファイル Ninka[12]を用いてライセンスを特定する. パッケージ 各パッケージのSPECファイルを参照する. ライセンス名 #Package GPLv2+ 334 LibraryGPLv2+ 199 GPLv2 89 BSD3 65 MITX11noNotice 61 ライセンス名 #File EPLv1 39916 GPLv2+ 35097 GPLv3+ 29813 Apachev2 24549 LesserGPLv2.1+ 20677 [12]D. M. German et.al. A sentence-matching method for automatic license identification of source code files. In Proc. ASE 2010, 2010. 2013/1/11 SIGSS
Ninka ソースファイルのライセンスを自動的に特定する 112種類のライセンス 適合率: 96.6% BSDcondSource:Redistributions? of source code must retain the (above )?copyright notice, this list of conditions(,)? and the following disclaimer(, without modification)?: … BSD2:BSDPre, BSDcondSource, BSDcondBinary, BSDasIs, BSDWarr ソースファイル ライセンス 知識 ルールマッチ To identify a license of a source file automatically, we developed Ninka, an automatic license identification tool. This tool use source files as input and report a license name corresponding to the license of the source file. Ninka identify licenses of a source file from the comments of it using knowledge base. Ninka recognizes 112 licenses. For example, BSD3 license (BSD 3-caluse license), GPLv2 (GNU Public license Version2 or later) This tool has 96.6% precision. About the detail of Ninka, we will report on Friday in ASE 2010. ライセンス名 2013/1/11 SIGSS
包含関係の作成 ソースファイルのライセンス⊇ソースパッケージのライセンスとして包含関係を作成する. 包含関係を簡単にするため,どちらのライセンスについても一種類だけ特定されている場合だけ包含関係を作る. パッケージのライセンスはライセンス名の対応表を用いて,Ninkaでのライセンス名を使用する. 総計 包含関係 抽出に利用 パッケージ数 2132 932 ソースファイル数 458366 144297 2013/1/11 SIGSS
ライセンス名対応表 Ninkaのライセンス知識や,Fedoraでのライセンス名の規則[13]から作成した. パッケージでのライセンス名 ApacheSoftwareLicense Apachev2 ASLv2 BSDwithadvertising BSD4 BSD-compatible BSD3 LGPLv2 LibraryGPLv2 LGPLv2.1 LesserGPLv2.1 ISC BSD2 [13] T. ’spot’ Callaway, “Licensing:main - fedoraproject”. https://fedoraproject.org/wiki/Licensing:Main. 2013/1/11 SIGSS
包含関係のフィルタリング 10パッケージ以上に登場する包含関係のみを残す 利用できたパッケージの1% ライセンス特定の結果や,ライセンス名の対応に誤りがあった場合の影響を減らすため 2013/1/11 SIGSS
RQ1 リサーチクエスチョン RQ1:既存のソフトウェアから得られるライセンス間の包含関係はどの様なものであるか. アプローチ 抽出できた包含関係からグラフを作成し,その特徴を確認する. 2013/1/11 SIGSS
2013/1/11 SIGSS
RQ1 考察 実際のソースパッケージから包含関係を抽出できている. 包含関係間において,連結している部分が多い. ⇒既存のソフトウェアから得られた関係を用いて,再利用をした際のライセンス選択の支援が出来そう RQ1の結論 実際のソースパッケージから包含関係を抽出でき,再利用の際に利用できる可能性が高い. 2013/1/11 SIGSS
RQ2 リサーチクエスチョン 得られた包含関係から,ライセンス間の矛盾が起きうることを確認できるか アプローチ [14] S. Warshall, “A theorem on boolean matrices,” J. ACM, vol.9, no.1, pp.11–12, Jan. 1962. 2013/1/11 SIGSS
ライセンス間の到達可能性 a b c d e f g h i j k l m a. BSD2 b. BSD3 c. GPLv2 d. GPLv3 e. GPLv3+ f. LesserGPLv2+ g.LesserGPLv2.1 h. LesserGPLv2.1+ i. LesserGPLv3+ j. LibraryGPLv2 k. LibraryGPLv2+ l. MITX11noNotice m. publicDomain 2013/1/11 SIGSS
RQ2 考察 任意のライセンスから到達可能なライセンスは存在しなかった. ⇒使用したソースファイルやライブラリのライセンス次第ではどのライセンスを選んだとしても矛盾が生じる可能性がある. RQ2結論 調べた範囲においては,ライセンスの矛盾が生じうる. 2013/1/11 SIGSS
制限 実際のソースファイルの利用方法は考慮していない SPECファイルに記載されたソースパッケージのライセンスや,Ninkaの特定結果が誤っているかもしれない →実際には存在しない包含関係が現れるかもしれない. ソースパッケージに偏りがあるかもしれない →実際にはあるはずの包含関係が現れていない可能性がある. 2013/1/11 SIGSS
関連研究 Germanら[15] ソースパッケージにおけるライセンスの整合性について調査し,問題を指摘している パッケージのライセンスがソースファイルのライセンスよりも古い ソースファイルのライセンス変更が反映されていない 本研究では,パッケージのライセンスとソースファイルのライセンス間の関係から導出できる推移的な関係に着目している [15]D.M. German, M. Di Penta, and J. Davies, “Understanding and auditing the licensing of open source software distributions,” Proceedings of 18th IEEE International Conference on Program Comprehension, pp.84–93, Braga, Portugal, 2010. 2013/1/11 SIGSS
まとめと今後の課題 開発者のライセンス選択支援を目的に既存のソースパッケージから包含関係を抽出 様々なライセンスについて包含関係を抽出できた ライセンスが矛盾することを包含関係から見ることが出来た 今後の課題 ソースファイルの利用状況の考慮 各ライセンスの条項まで踏み込んだ包含関係の抽出 2013/1/11 SIGSS