git commit -s -m "Description of the commit"
2023年10月31日 Stian Thorgersen 著
すべてのオープンソースプロジェクトにおいて、貢献されたコードがプロジェクトに法的に貢献できるものであること、そして、プロジェクトがそのライセンスの下でそれを配布する権利を持つことも重要です。これを実現するための方法は数多くありますが、一般的な2つのアプローチは、Developer Certificate of Origin (DCO) と Contributor License Agreement (CLA) です。
Developer Certificate of Origin (DCO) は最も軽量なアプローチであり、貢献の一部である個々のコミットに対して、コントリビューターが署名することを要求します。これは、コミットを作成する際に --signoff
(-s
) オプションを使用することで簡単に行えます。例:
git commit -s -m "Description of the commit"
これにより、コミットの最後に Signed-off-by
ステートメントが追加され、コントリビューターは Developer Certificate of Origin (DCO) に定められた合意に従っていることを証明します。
一方、Contributor License Agreement (CLA) は、より複雑なアプローチです。CLA の一部として、すべてのコントリビューターは、貢献を行う前にプロジェクトとの事前合意に署名する必要があります。これは、コントリビューターにとってより高い障壁となり、オープンソースプロジェクトにとっても、承認されたコントリビューターのリストと、対応する合意書のアーカイブを維持する必要があるため、より高いコストとなります。
Keycloak では、DCO を採用することにしました。なぜなら、DCO はコントリビューターとメンテナーの両方にとって、はるかにシンプルであると考えているからです。
CLA と DCO の違いについてもっと知りたい場合は、opensource.com にこのテーマに関する優れた記事があります。