GitLab ライセンスと互換性
GitLab Community Edition (CE) はMIT Licenseの下でライセンスされています。GitLab EnterpriseEdition(EE) は“The GitLab Enterprise Edition(EE) license“に基づいてライセンスされ、より多くの制限があります。
自動テスト
私たちが使用するライブラリのライセンス条項を遵守するために、新しいgemが追加されるたびに、互換性のあるライセンスかどうかを確認する必要があります。このプロセスを自動化するために、Pivotal社のLicense Findergemを使用しています。これは新しいコミットがプッシュされるたびに実行され、バンドル内のすべてのgemとノードモジュールがGitLab Community EditionまたはGitLab Enterprise Editionのライセンスと競合しないライセンスを使用しているかどうかを確認します。
しかし、自動テストにはいくつかの制限があります。CSS、JavaScript、Rubyのライブラリのうち、Bundler、npm、Yarnによって含まれていないもの(例えば、vendor
ディレクトリのソースツリーに手動でコピーしたもの)は、手動で独自に検証する必要があります。自動テストでは問題のあるライセンスは検出されないので、そのようなライブラリが使われる場合は常に注意してください。
gem の中にはgemspec
ファイルにライセンス情報が含まれていないものがあり、ノードモジュールの中にはpackage.json
ファイルにライセンス情報が含まれていないものがあります。これらは License Finder では検出されず、手動で確認する必要があります。
License Finderのコマンド
ライセンス検出を管理するために必要な、License Finder の基本コマンドがいくつかあります。
チェックがパスしていることを確認したり、チェックが失敗する原因となっている依存関係を確認したりします:
bundle exec license_finder
新しいライセンスを許可するには
license_finder permitted_licenses add MIT
新しいライセンスを拒否するには
license_finder restricted_licenses add Unlicense
依存関係のライセンスが自動検出されない場合、License Finder にそのライセンスを通知します:
license_finder licenses add my_unknown_dependency MIT
上記のすべてについて、decisions.yml
ファイルが依存関係をいつ、なぜ、誰が承認したかを追跡できるように、--why "Reason"
と--who "My Name"
をインクルードしてください。
gemとそのコマンドがどのように動作するかについての詳細情報は、License Finder READMEにあります。
未知またはリードライセンスのソフトウェアの承認者取得
Blue Oak Councilのライセンスリストに含まれていない、あるいはLead-Ratedと表示されているサードパーティ製ソフトウェアを使用する必要がある場合があります。このような場合、ソフトウェアをインストールする前に、ユースケースを法的に承認する必要があります。これに関する詳細はハンドブックに記載されています。
法的承認を得るには、以下の手順に従ってください:
- 新しい法的イシューを作成します。可能な限り詳細を記載してください:
- そのソフトウェアが使用しているライセンスは何ですか?
- どこでどのように使用されますか?
- ベンダリングされるのか、フォークされるのか、それともアップストリームプロジェクトを使うのか?
- 関連リンク
- 使い方が法的に承認されたら、GitLabプロジェクトでソフトウェアを許可してください。上記のLicense Finder コマンドを参照してください。
- ソフトウェアがOmnibusでも認識されていることを確認してください。
omnibus-gitlab
プロジェクトに対して新しい MR を作成します。どのような変更が必要かの例として、このMRを参照してください。以下のファイルを編集する必要があります:lib/gitlab/license/analyzer.rb
support/dependency_decisions.yml
暗号化キー
ライセンスがカスタマーズ ポータルまたはライセンス アプリのローカル開発環境またはステージング環境で作成された場合、正しい復号化キーを使用するには、GITLAB_LICENSE_MODE
という環境変数に値test
を設定する必要があります。
これらのプロジェクトでは、デフォルトでテスト ライセンス暗号化キーが使用されるように設定されています。
追加情報
ライセンスの詳細については、オープンソースのページを参照してください。