OSSライセンスの両立性をうまくコントロールできなかったのでOSS公開ができなかった話

こんにちは。てぃろです。

今回はOSS公開をするにあたってOSSライセンスとどのように付き合っていけばよいかを考えたので、自戒を込めて記事にします。

話としては、こちらの記事で紹介していた乗り合いバスのシステムをOSSとして公開しようかと計画していたけれどもそれを断念したという内容です。

ただしこれは決してOR toolsが何か悪かったとかいう話ではありません。OR toolsを使っている部分以外にも様々な開発をしていますので、開発したソフトウェア全体としての結果こうなった、という話であることをご承知おきください。

問題:GPL v2とGPL v3の両立性がない

今回遭遇した大きな問題は、OSSライセンスの両立性です。

OSSはそのライセンスによって、使用者にやっていいこととその条件を規定しています。それらは当然ライセンスごとに異なります。

実際にソフトウェアを作るときには複数のOSSを組み合わせるわけですから、複数の異なるライセンスの許可や条件の中でもそれらの共通項によって制限を受けるということになります。

そんなOSSライセンスの中でもGPL v2やGPL v3といったGPLと名前のついたライセンスはその伝播性(ざっくりいうと、GPLライセンスのついたソフトウェアを使ったらGPLライセンスにしなければいけない)に代表されるように条件が厳しいです。

そのため、他ライセンスとの両立性に問題がある場合が多くあります。GPLライセンスの両立性は公式にも解説されているのでそちらも参考にしてください。

そこで今回問題となってしまったのが、GPL v2とGPL v3の両立性がないことでした。

名前は似ていますが、これらは公式に両立しないことが認められています。今回の開発物には使用した別のOSSで別々にGPL v2とGPL v3が入っていたために問題として顕在化したのでした。

結論:OSSライセンスチェックは最初から継続的に

このような問題が起きないようにするにはどうするかと言えば、ライセンスに常に気を配ることが必要だという事以外にありません。

その観点は、次の2点に尽きます。

  • 利用しているライブラリのライセンス同士で矛盾しないか
  • 利用しているライブラリのライセンスと自分が公開するときにつけたいライセンスで矛盾しないか

この中ではどちらかというと前者のほうが大事です。

今回はいきあたりばったりでOSS公開という方針ができたというのもあってOSSライセンスの両立性など意識せずに作っていましたし、OSS公開の計画を立てた段階では後者だけ気にすればいいのかな、くらいの認識だったのですがそれが甘かったということです…。

まずは前者の観点を持つために、常日頃からライセンスチェックを欠かさないことが一番の対処法だということです。

現在の開発現場を見れば、ソフトウェアが大規模になればなるほど、複数のOSSが入ることが必然です。採用するOSSが今使っているOSSのライセンスと矛盾しないか?を毎回チェックしなくてはなりません。

もしライセンスが矛盾して採用できない場合、当該機能を新たに自分たちで開発する必要があり、莫大なコスト増になってしまうというリスクが伴います。

そんなリスクを最小化するために開発初期段階からFOSSAなどのOSSライセンスチェックツールがありますので、それでOSSライセンスを継続的かつ詳細にチェックしていくことがオススメです。

ここ最近においては「Open Chain 2.1」の国際規格の承認やトヨタ自動車のその国際規格への適合認証の発表があったなど、今後OSSライセンスへの準拠や権利保護はより強化されていく流れもあるようです。

これは先ほど挙げたような開発コスト増のリスクだけでなく、チェックせずに使った結果の訴訟リスクも上がっていることを意味します。

OSS公開をする人や企業だけでなく、OSSを利用するすべての人や企業が利用するOSSのライセンスにもっと注意を払い、敬意を払って使っていくことが求められる時代が来ようとしているのです。

開発現場においても、OSSライセンスを最初からチェックしておくというのが当たり前になる世界が近い気がしてきています。ほんとは今でもそうするべきなんでしょうけど、できてないのが現状だと思います…。

最後に:OSSコミッターをリスペクト

OSS側の権利保護が進むとしても、利用側にとっては依然としてライセンスの両立性という問題はつきまといます。

そこで、こういったライセンスの扱いについては、一般財団法人 ソフトウェア情報センターのQA集k経済産業省の調査文書で整理されてもいるので、これでより深く学ぶことができます。もはやOSSコミッターでないOSSを利用するだけのエンジニアにとっても必要な知識なのではないでしょうか。

ただ、ここまで私も勉強してきたのですが、残念ながら本当にちゃんとOSSライセンスの構造や中身を理解できている自信がありません。それはOSSライセンスというのが本質的には著作権に関わる法律的な話だからなのか、体系的にまとまった教本などがないからなのか、それすらちょっとよくわからないです。

ただ一つ言えることは、今のこの世界はOSSで成り立っていて、今後もOSSで発展していくことは間違いないので、OSSについて理解しOSSコミッターのみなさんを心から尊敬して応援していくためにも、きちんと彼らの権利や利益を尊重した開発活動をしていくことが、ソフトウェアエンジニアとしてできることなのかな、と思っています。

あと、ちょこちょこ寄付もしていこうと思います。

OSSコミッターのみなさん本当にリスペクトしてます。