本日、私たちは CommunityBridge を構成するサービスのひとつである EasyCLAのオープンソース ベータをリリースします。
EasyCLA はオープンソース プロジェクトの保守ワークフローを効率化し、CLA (Contributor License Agreements、コントリビューター ライセンス契約) 管理やコントリビューターの認証に関する作業を軽減します。
Linux Foundation がホストする本サービス (Software as a Service) は、マニュアルな手順の多くを自動化することにより、開発者が CLA に基づく認証を取得する際に生じる遅延を軽減します。
オープンソース プロジェクトに関わる企業は、自社のどの開発者が署名済みの企業向け CLA に基づいてプロジェクトにコントリビュートできるかについて、直接的なコントロールならびに可視性を獲得できます。
Linux Foundation では、すでに1万を超える署名済み CLA を管理しています。この経験が EasyCLA を最大級のオープンソース プロジェクトに合わせて拡張可能な形で構築することに役立っており、またオープンソースにコントリビュートする開発者・管理者・企業などの作業時間を数千時間単位で短縮することを可能にしています。
CLA とは?
CLA は Contributor License Agreement (コントリビューター ライセンス契約) の頭文字であり、オープンソース プロジェクトの主体と、コードを提供する個人開発者あるいは企業との間で締結される契約を意味します。
一般的に、CLA は個人向け CLA と企業向け CLA に分類されます。
個人開発者は個人向け CLA に署名することにより、コードを提供する権利を有すること、ならびにそれを CLA の条項に基づいて行うことに合意します。個人開発者が個人向けCLAに署名する際、個人開発者は同契約の条項に基づき、自らの貢献を該当プロジェクトに紐づけることになります。
一方、プロジェクトが企業向け CLA を要する場合、その複雑さは大幅に跳ね上がります。
オープンソース ライセンスにおいては、従業員がコントリビュートする際に、企業が従業員にその権限 (特に特許利用権の付与などの付与行為に係る明確な権限) を直接的に付与することができるように、企業向け CLA が採用されることが一般的です。
企業向け CLA の用途は他にも想定されますが、CLA を採用するかどうかはプロジェクト主体の判断になります。一例として、一部のプロジェクトでは、貢献者やユーザー コミュニティにおけるコミュニティ参加に関する懸念に対応するためにCLA が活用されています。そのような懸念が想定されていないプロジェクトでは、CLA の存在そのものが参加への障壁となったり「ちょっと顔を出してコントリビュートする」といった行為の妨げになる場合があります。
CLA が採用されているプロジェクトにおいては、コントリビューターが企業の従業員である場合、該当企業が指定した署名者によって署名された企業向け CLA が必要になります。企業向け CLA に署名し、同 CLA に基づいてコードをコントリビュートすることができる開発者を明示することで、同企業はどの従業員が該当プロジェクトの CLA およびライセンス契約に基づいてコントリビュートすることができるかについての曖昧さを払拭することができます。
Linux Foundation では一般的に、各コミットに対して承認者を表す「Signed-off-by」文が記載される DCO (Developer Certificate of Origin、開発者出自証明) を伴う「ライセンス・イン」==「ライセンス・アウト」モデルを推奨しています。これは、プロジェクトに貢献する権利について開発者自身が自らを認証することを意味します。プロジェクト主体は、Gerrit、GitHub1、GitLab などのコード レビュー ツールにおいて、このDCO「Signed-off-by」文を簡単に必須事項と指定することができます。
一部のプロジェクトでは、DCO に加えて CLA が必要となる要因を含むものがあります。
CLA に含まれる条項の例としては、プロジェクトへのコントリビューションに付随するライセンスの期間・企業が従業員に対して、条項に基づいてコントリビューションを行う許可を与えた旨の明記・コントリビューターが実際にコードを書いたという確認、などが挙げられます。一部のプロジェクト コミュニティでは、このような明記・明言が、プロジェクトに提供される権利に関するより高い確実性につながると考えています。
この場合、プロジェクト管理者が CLA ならびに認証されたコントリビューターのリストを管理する負担を抱えることになります。当然、コントリビューターが増えるにつれて負担は大きくなります。
しかし、EasyCLAでCLA業務を自動化することで、管理者の負担を解消することができます。
EasyCLA によって解決される課題
CLA が活用されるプロジェクトにおける最大の課題のひとつは、CLA プロセスそのものがプロジェクト管理者にとって大きな負担となることです。
一般的な CLA プロセスは書類管理・内部署名者とのフォローアップ・承認された開発者からのコミットの確認などの業務を伴い、大きな管理上の悩みのタネとなります。
一部の具体的な例としては、以下のものがあげられます:
- 複数のメールやスプレッドシートにまたがり、時間がかかる上にミスが生じやすい CLA 書類のトラッキング
- オープンソース プロジェクトへの貢献が承認されている企業のリストを最新の状態に保つためには、時間のかかる繊細な手作業を要する
- 開発者の署名を集め、管理者が手作業で CLA を処理するプロセスが、貢献の遅延につながることがある
- プロジェクトならびにその管理者は、すべての貢献が CLA に基づいていることの確認を求める
EasyCLA の機能
EasyCLA は、以下の機能によってこれらの手作業の多くを解消します:
- CLA における署名および承認のワークフローを自動化
- CLA への署名が必要な開発者、あるいは GitHub もしくはGerrit 内から企業向け CLA に基づいた承認が必要な開発者への通知
- 署名済み CLA で承認されていない開発者のブロック
- プロジェクト間での CLA の再利用をサポート
- 企業向け CLA に署名している企業による、同 CLA における承認済み貢献者リストの管理
- プロジェクトの CLA のオプションとして、Apache Software Foundation の CLA をベースに編集した CLA テンプレートを用意
EasyCLA の仕組み
EasyCLA の活用プロセスは、該当する個人向け・企業向けCLAを選定する役割を担うプロジェクトの管理者であるプロジェクト マネージャーから始まります。
従来は、コントリビューターがコードをプロジェクトに提供する承認を得ているかについて、プロジェクト マネージャーが確認する必要がありましたが、企業向け CLA においてはこの確認作業や各企業の承認済み開発者リストのアップデートが特に煩雑でした。
しかしEasyCLA を活用することで、プロジェクト マネージャーは CLA を EasyCLA に取り込むだけで残りの認証プロセスを自動化することができます。
個人開発者向けのプロセスはとても単純です。開発者がプロジェクトの CLA に署名していない場合はコントリビューションがブロックされ、CLA へのリンクが提供されます。電子署名で CLA に同意した場合、それ以降のコントリビューションがすべて許可されます。
企業内の開発者の場合、プロセスはもう少し複雑になります。以下に、自動化された CLA ワークフローにおける三つの主要な役割を挙げます:
- コントリビューター:プロジェクトにコードを提供したいすべての開発者
- CLAマネージャー :企業向け CLA に基づいてコントリビュートできる開発者の管理を任された人物
- CLA 署名者:プロジェクトの CLA に署名する権限を付与された人物
EasyCLA を利用できるのは?
GitHub あるいは Gerrit を採用している Linux Foundation がホストする全てのプロジェクトにおいて EasyCLA が利用できます。
コントリビューター・プロジェクト管理者・企業のそれぞれが、以下の恩恵を受けることができます:
- コントリビューターがコードを提供する際の CLA に関する書類処理の負担が軽減される
- プロジェクト管理者は、承認されたプルリクエストが署名済み CLA に該当するか悩む必要がなくなり、書影済み CLA の管理からも解放される
- 企業は、企業向け CLA への署名権限の付与を適切に行うワークフローから安心感を得ることができる
もしあなたのプロジェクトが Linux Foundation のプロジェクトではない場合、ここから登録することで、プロジェクトに EasyCLA を採用したい旨の意向を示すことができます。Linux Foundation 外のプロジェクトに対するサポートに関しては、個別案件ごとの検討となります。
EasyCLAを始めてみる
プロジェクト管理者向け
すでに EasyCLA を採用しているプロジェクトの管理者は、ここから LF ID でログインすることでCLAの管理を行うことができます。
企業向け
EasyCLA を採用している Linux Foundation のプロジェクトにコントリビュートしている開発者を擁する企業の CLA マネージャーは、ここでサインインおよび LF ID の新規作成を行うことができます。
そこから、CLA を該当する署名者に送信することができます。CLA への署名が完了したら、開発者の承認を開始することができます。
EasyCLAへのコードの提供
EasyCLA のコードはオープンソースとなっています。
コードはオープンですが、いくつかのコードには、各企業の自社インフラでの運用を困難にする依存項目が残っています。
しかし、あなたやあなたのプロジェクト、あなたの企業にとって EasyCLA をより使いやすくなるための機能を追加したい場合は、ぜひイシューの作成やプル リクエストの提出をお願いします。
—
注釈 : 1. https://github.com/apps/dco
- Dent Introduces Industry’s First End-to-End Networking Stack Designed for the Modern Distributed Enterprise Edge and Powered by Linux - 2020-12-17
- Open Mainframe Project Welcomes New Project Tessia, HCL Technologies and Red Hat to its Ecosystem - 2020-12-17
- New Open Source Contributor Report from Linux Foundation and Harvard Identifies Motivations and Opportunities for Improving Software Security - 2020-12-08