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