オープンソースコンプライアンスを適切に管理しつづけるための秘訣は何でしょうか?シンプルな答えは、「良いプラクティスを実践すること」です。この記事では、オープンソースコンプライアンスへの取り組みに直接的な影響を与える9つのベストプラクティスを紹介します。これらのプラクティスをすでに実践しているなら、おめでとうございます、とてもすばらしいです。まだ実践していなかったり、部分的にしか実践していないプラクティスがある場合は、足りないものを導入するようお勧めします。
前置きはこれくらいにして、さっそくオープンソースコンプライアンスのベストプラクティスを見ていきましょう(順は不同です)。
1) オープンソースソフトウェアコンプライアンスマネージャーを任命する
どのような組織編成でオープンソースコンプライアンスに取り組むかは、いろいろなやり方がありますが、どのような組織であれ、コンプライアンスプロセスを管理し、リリースされた製品またはサービスのオープンソースコンプライアンスに責任を持つ役割の人員が必要でしょう。この人員は専任の個人である必要はありませんが、大規模な組織では専任であることが多く、企業の規模や製品およびサービスで使用されているオープンソースのボリュームによっては、さらにその下に複数の人員が所属する場合もあります。
コンプライアンスマネージャーは何をするのでしょうか?簡単に言えば、次のようなオープンソースコンプライアンスアクティビティの推進を担当します。
- ソースコードスキャンおよび監査の調整と実施
- オープンソースライセンスに従ったソースコードパッケージのリリース
- 従業員向けオープンソースコンプライアンストレーニングの作成と提供
- オープンソースコンプライアンスプログラムの継続的改善
- (IT部門の支援や援助を受けた)オープンソースコンプライアンスの自動化を促進するツールの外注/開発および統合への関与
通常この人員は、さまざまな技術的スキル、オープンソースライセンスに関する十分な知識、プログラム管理に関する高いスキルを備えています。
2) コード内に存在するオープンソースを知る
オープンソースは、自社の開発者、社外の契約開発者、業務契約によってソフトウェアを納入する企業など、さまざまな経路を通じて入ってきます。そのため、適所にプロセスを配置し、入ってくるソースコード(パッケージ全体とスニペットの両方)および対応するライセンスをすべて確実に識別できるようにすることが重要です。
自組織が利用しているオープンソースコードを知ることで、適用されるすべてのオープンソースライセンスに対する適切なコンプライアンスを施行できます。
3) サプライヤーをコンプライアンスに関与させる
上で述べたように、オープンソースはソフトウェアサプライチェーンを通じて入ってくることがあります。そのため、サプライヤーにはライセンス義務を果たすとともに、納品物に含まれるオープンソースソフトウェア(パッケージ全体およびスニペット)を開示するよう要求することが重要です。
推奨される方法の1つは、サプライヤーにOpenChain Self Certification でひととおりチェックを行うよう依頼し、サプライヤーが良いオープンソースコンプライアンスプラクティスを実践しているかどうかを判断する材料にし、サプライヤー内部のコンプライアンスプラクティスをより信頼できるものにすることです。
4) オープンソースレビュー委員会を設立する
オープンソースソフトウェアへの依存が高い企業の多くには、いわゆる「オープンソースレビュー委員会」(OSRB)が設けられ、企業全体にわたるオープンソースの使用に関する情報センターとして機能しています。典型的なOSRBはオープンソースコンプライアンスマネージャーのほか、法務、エンジニアリング、生産チームの代表によって構成されます。OSRBのメンバーは、製品/サービスへのオープンソースコードの取り込みリクエストをすべてレビューし、リクエストを評価して技術的・法的検討に基づいて承認/却下を決定します。また、オープンソースプロジェクトへのコントリビューションに関しても同様にレビュー機能を果たします。
5) よく利用されるオープンソースライセンスの「プレーブック」を作成する
一部の組織は、法務コンサルタントへの問い合わせを少なくし、効率を改善するための取り組みの一環として、ライセンスプレーブックを作成するというアプローチを採用しています。ところで、ライセンスプレーブックとは何でしょうか?典型的なライセンスプレーブックは、どの組織でもよく使われるオープンソースライセンスを1ページのサマリーにまとめたもので、ライセンスの許可、制約、義務、特許の影響などに関するわかりやすい情報を提供します。基本的に、プレーブックは読みやすい要約形式のサマリーであり、数ページにわたる長いライセンステキストを読まずに特定のオープンソースライセンスについて知りたい従業員向けの文書です。
6) プロセスとポリシーを確立する
製品出荷やサービス開始の前にコンプライアンスを確認するのは、非常に賢明な考えだということには、異論はないでしょう。しかし、オープンソースコードを使った製品を多数出荷している組織は、どのように個々のコンプライアンスを管理すればよいのでしょうか?まずポリシー、プロセスを実装し、その後にツールを提供して運用を自動化するとよいでしょう。通常、オープンソースコンプライアンスポリシーはオープンソースソフトウェア(利用するケースとコントリビューションを行うケースの両方を含む)の管理を統制する一連のルールです。プロセスは、それらのルール(ポリシー)を日常的にどのように実践するかを定めた詳細な仕様です。コンプライアンスポリシーとプロセスは、オープンソースソフトウェアの利用、コントリビューション、監査、配布などのさまざまな面を統制します。
7) ビジネスプロセスおよび開発プロセスにコンプライアンスチェックポイントを追加する
オープンソースコンプライアンスの確立と維持は継続的な取り組みであり、規律と責任をもって既存のエンジニアリングプロセスおよびビジネスプロセスにコンプライアンス関連アクティビティを取り入れる必要があります。GitHubからコードをダウンロードするエンジニアに始まり、海外の委託企業へのソフトウェアのアウトソーシング、サプライチェーン契約、M&Aを含む企業取引などに至るまで、すべてのやりとりとプロセスにオープンソースコンプライアンスのプラクティスとマイルストーンが挿入されていなければなりません。
8) 自動化する
何百、何千というオープンソースソフトウェアパッケージ(中にはスニペットも含まれます)を利用している企業では、ビルドシステムと統合し、すべてのオープンソースコードパッケージ、スニペット、その出所と本当のライセンスを識別するのに役立つソースコードスキャナーを採用し、コンプライアンス検出を自動化することはほぼ必須です。
9)コンプライアンストレーニングを提供する
私たちはトレーニングの力を信じており、従業員向けにオープンソースおよびコンプライアンスに関するトレーニングを開発し、提供することを強く推奨しています。トレーニングを行うと、従業員が企業のオープンソースポリシー、プロセス、コンプライアンスプラクティスを十分に理解していることを保証できます。一部のケースでは、トレーニングは最もよく使われているオープンソースライセンスや商用コンテキストでオープンソースを使用する場合の懸念などについてもカバーします。さらに先へ進んで、オープンソースおよびコンプライアンスのトレーニングをソフトウェアプロジェクトの開発、マネージメント、アウトソーシングに携わるすべてのスタッフに義務付けている組織もあります。
(この記事は、FOSSID Blog 「Best Practices for Enterprise Open Source Compliance」2020年1月14日 Fredrik Ehrenstrale 投稿記事をFOSSID社の許可を得て翻訳したものです。)