ビジネスの短期的・長期的目標を計画するなかで、ソフトウェア業界全般が対処するべきオープンソースコンプライアンスの課題が4つあります。すなわちスケール、正確性、コストそしてスピードです。
企業の規模、オープンソースポリシー、製品タイプなどに応じて課題の解決策は異なるかもしれませんが、いずれにせよ課題は互いに関連していることが多く、表れ方は似ているものです。
コンプライアンスおよびセキュリティに関わる製品およびサービスを提供する企業として、私たちは毎日のように現在のコンプライアンスの課題に遭遇し、改善策を考え続けています。以下は、そんな私たちの知見です。
スケール
小規模なスタートアップ企業であれば、もっと大規模で歴史も長い企業ほどには、この課題に遭遇しないかもしれません。私たちは何万人もの開発者がいるFortune100企業とお付き合いがありますが、そのような企業では、開発者たちは日々次の2つの作業に勤しんでいます。
- 新しいソフトウェアを開発する
- オープンソースソフトウェアを再利用し、自社の製品およびサービスに取り込む。この再利用には2つの形態があります。オープンソースコンポーネント全体の再利用と、コードスニペットという形での部分的な再利用(オープンソースコンポーネントからさまざまな大きさのコードをコピーして別のコンポーネントで再利用する)です。
何千人もの開発者がこれら2つのタスクを活発に行っているとき、スケールの問題は切実です。
- 大量のオープンソースソフトウェアの流入を管理できるよう、プロセスをスケーリングできるか?
- オープンソースソフトウェアのコントリビューションに関わる側面を管理できるよう、プロセスをスケーリングできるか?
- 採用されたツールはオープンソースアクティビティのレベルを処理できるか?
- オープンソースソフトウェアをもっと自由に扱えるように最適化、あるいは根本的に排除すべき不要なチェックポイントはないか?
- コンプライアンスツールはビルドシステムと統合し、ソースの識別をもっとシームレスで透明性のあるものにできるような機能を備えているか?
- 利用しているコンプライアンスツールはプログラミング言語に依存しないか?
オープンソースコンプライアンス業務を最適化し、オープンソースソフトウェアの利用(またはオープンソースソフトウェアへのコントリビューション)に応じてスケールアップまたはスケールダウンできるようにしたいなら、上記のような疑問はすべて企業が当然のように自問すべきものです。
正確性
オープンソースコンプライアンスの専門家であれば、ソースコードの出所とライセンスを識別する際の正確性は主要な関心事の1つでしょう。根本的に、オープンソースコンプライアンス作業の第一の目的は、コードの出所とライセンスを識別し、それに従ってライセンス義務を満たす計画を立てることです。しかし、以下の理由から、常に正確性の問題があります。
- 一部のツールはいわゆる「ナレッジベース」(すべての既知のオープンソースコードのデータベース)を持っていません。このようなツールは、コードをスキャンして検出されたライセンスおよびコピーライト情報を提示するだけです。
- その他のツール(ナレッジベースを持つツール)には、ペースの速いオープンソース開発に合わせてナレッジベースをアップデートし続けるという課題があります。しかし、多くのツールは数か月ごとにしかナレッジベースをアップデートしておらず、オープンソースソフトウェアのすばやい採用に対応するには遅すぎます。
- 多くのツールプロバイダーはスニペット検索機能をサポートしておらず、そのまま使用されているオープンソースコンポーネントしか検出できません。一般的に言って、このようなツールは1つのオープンソースコンポーネントから別のオープンソースコンポーネント、または自社のライセンスの下で許諾されるコンポーネントにコピーされたコードスニペットをまったく検出できません。
- どのコードとの一致が正しいものなのか?この問題は、コードをスキャンし、該当コードと一致する候補が何十、何百も検出されるという経験をしているコンプライアンスの専門家にとってはおなじみのものです。たとえば、zlibを例にとってみましょう。zlibは非常に一般的なデータ圧縮ライブラリであり、他の何千というオープンソースコンポーネントでコードが再利用されています。zlibから派生したコンポーネントをスキャンすると、現在市場にあるたいていのツールでは、コードの出所とライセンスを識別するのは難題です。ライセンスの異なる何百という候補が提示されるのが通常です(zlibは寛大なライセンスを採用しており、zlibからコピーされたコードはコピー先コンポーネントのライセンスの下で再ライセンスされることが多いため)。必ずしも開発者とは限らないコンプライアンスの専門家が、スキャン対象のコンポーネントに精通し、この問題を解決できるでしょうか?これはツールのプロバイダーが対処すべき課題です。
コスト
オープンソースコンプライアンスは補助的業務とみなされることが多く、エンジニアリングの上級管理職は、オープンソースコンプライアンスにかける経費を抑制するいっぽうで、適用されるオープンソースライセンスへのコンプライアンスを確実にしたいと考えています。しかし、どうすればコンプライアンスを確実にするコストを比較的低く保つことができるでしょうか?考慮すべきコストは、以下のように多岐にわたります。
- ツールのライセンス料金のコスト
- 組織のインフラへの統合や特別なカスタマイズのコスト
- ツールを実行するのに必要なサーバーハードウェアの初期コストおよびサーバーの継続的保守コスト
- コンプライアンスを確実にするために必要なリソースのコスト。たとえば誤検出を確認して除去するスタッフなど
コンプライアンスの確保には多大なコストが必要になる場合があり、業界全体としていかにコストを抑えてゆくかは今後の課題の1つです。
スピード
不動産業界ではよく「1に立地、2に立地、3に立地」と言われるように、オープンソースコンプライアンスの世界では、どこでも「1にスピード、2にスピード、3にスピード」が課題です。どうすれば開発作業に遅れず、同じペースでコンプライアンス作業を行うことができるでしょうか?何千、ときには何万という開発者がいて、独自のコードを作成したり、オープンソースコードを再利用したりしている場合、膨大な量のコードをスキャンし、識別し、追跡しなければなりませんが、どうやってコンプライアンスを確保すればよいのでしょうか?
(この記事は、FOSSID Blog 「4 Open Source Compliance Challenges for the Software Industry」2019年12月10日 Fredrik Ehrenstrale 投稿記事をFOSSID社の許可を得て翻訳したものです。)