コードを再利用する場合、タイプが異なるソフトウェア・ライセンスでは一定の義務に従う必要があります。一般的なソフトウェア・ライセンスにはの5つのタイプがあります。
コードを作成する場合も、コード・スニペット、ライブラリ、関数、フレームワーク、およびアプリケーション全体を含めて、コードを再利用します。ソフトウェア・コードをコードベースに追加する場合、一定の権利と義務が伴います。フリー・オープン・ソース・ソフトウェア(FOSS)は無料ですが、制約がないわけではありません。スタック・オーバーフローからコピーしたライセンスされていないコード・スニペットにも再利用の義務があります。ただし、正式に開発されたコードには通常固有のソフトウェア・ライセンスが付属しています。
さまざまなタイプのソフトウェア・ライセンスがありますが、ライセンス非遵守には厳しい処罰があります。ライセンスの義務を遵守せずにコンポーネントを再利用した場合、ライセンサーから起訴される可能性があり、独自のソース・コードの公開を余儀なくされることがあります。コードと組織を守るために、ライブラリとフレームワークを含め、独自に作成していないコードを使用する前に、当該ソフトウェア・ライセンスを理解しておく必要があります。当社のトップ・オープンソース・ライセンスのリストおよびそれぞれの潜在的な法律上のリスクを参照してください。
5つのタイプの一般的なソフトウェア・ライセンス・モデルを理解しておく必要があります。4つのタイプはオープンソース・ライセンスの例で、コードをある程度再利用できますが、1つのタイプでは何であれ再利用できません。
パブリック・ドメイン。これは最も自由なタイプのソフトウェア・ライセンスです。ソフトウェアがパブリック・ドメインにある場合、だれでもソフトウェアを制限なく変更したり利用したりできます。ただし、独自のコードベースに追加する前に、常に安全性を確認する必要があります。警告:明示的なライセンスを持たないソフトウェアは、パブリック・ドメインに自動的には公開されません。インターネット上で見つかるスニペットもこれに含まれます。
パーミッシブ。パーミッシブ・ライセンスは“Apacheスタイル”または“BSDスタイル”としても知られています。ソフトウェアの変更または再頒布方法は最小要件に抑制されています。このタイプのソフトウェア・ライセンスが、多分、無料のオープン・ソース・ソフトウェアで利用される最も一般的なライセンスでしょう。ApacheライセンスとBSDライセンスの他に、もう1つMITライセンスが一般的です。
LGPL。GNU Lesser General Public Licenseを使用すると、ソフトウェア内でオープンソース・ライブラリにリンクすることができます。LGPLライセンスされたライブラリを独自のコードを使用してコンパイルまたはリンクするだけで、希望するライセンス(プロプライエタリィ・ライセンスでも)に基づき、アプリケーションをリリースできます。ただし、ライブラリを変更したり、一部をコードにコピーする場合は、LGPLと同様の条件でアプリケーションをリリースする必要があります。
コピーレフト。コピーレフト・ライセンスは、レシプロカル・ライセンスまたは制限付きライセンスとしても知られています。GPLは、コピーレフトまたはレシプロカル・ライセンスの例として最もよく知られています。このようなライセンスを使用すると、新しい作品や改作を同じソフトウェア・ライセンスに基づいて頒布する限りにおいて、ライセンスされたコードを変更してコードに基づく新しい派生物を頒布することができます。例えば、作品は個人的利用のみを目的に自由に使用および頒布できることをコンポーネントのライセンスに記載できます。これにより、作成する派生物もすべて個人的利用のみに制限されます。(派生物は開発した新しいソフトウェアでコンポーネントも含まれます。)
これにはソフトウェアのユーザーにもコードを変更する権利を有するという難点があります。そのため、独自のソースコードを利用可能にする必要があります。無論、ソースコードを公開することを最優先事項にすることはありません。
プロプライエタリィ。すべてのタイプのソフトウェア・ライセンスの中で、このタイプが最も制限があります。背後にはすべての権利は保留されるという考え方があります。一般に、著作物の変更または再頒布が禁止されているプロプライエタリィ・ソフトウェアに使用されます。
コードベース内の再利用コードに適用されるライセンスを特定する前に、ソフトウェア部品表、またはコード内の全コンポーネントのリストを作成する必要があります。ソフトウェア・コンポジション解析ツールを使用すると、このリストを最短時間で作成できます。優れたSCAツールは、すべてのコンポーネントのみならずコード・スニペットを見つけることができ、各コードに適用されるライセンス、また使用ライセンスが競合する可能性があるかどうかを教えてくれます。
この投稿は2016年10月7日に発表され、2020年4月7日に更新されました。