Отвечает эксперт сообщества Spring АйО – Михаил Поливаха.
–––
Друзья, с нового года Spring Framework перешел с политики контрибьюшенов CLA (Contributor License Agreement) на DCO (Developer Certificate of Origin).
Что это значит для Вас всех?
Несмотря на то, что напрямую эта новость касается тех людей, кто хотел когда-либо контрибьютить в Spring Framework, либо уже этим занимается - знать, что такое DCO, должны все. Это коснется Всех. Огромное количество Software проектов использют модель DCO (например, ядро ОС Linux).
Меня, как контрибьютора в Spring Data, это коснулось напрямую.
Что такое CLA (Contributor License Agreement)?
Видите ли, когда вы пишите любой код (не в рамках обязательств, например, по трудовому договору), права на этот код принадлежат только Вам. Вы написали какой-то код и решили законтрибьютить в Spring — молодцы, хвалю Вас!
Только вот есть проблема - код этот принадлежит Вам, и если его вносить в кодовую базу Spring Framework, то Вы, потенциально, в суде, можете претендовать на то, что Spring Framework по праву Ваша разработка - вот так! И подобные кейсы в Open Source были, читайте ниже.
CLA это такой документ, который Вы раньше подписали бы, говорящий о том, что Вы передаете свой патч согласно Open Source лицензии проекта, например:
1. MIT
2. Apache License
3. GPL и другие
Иными словами, с помощью CLA Spring Framework и другие проекты ранее прикрывали свое мягкое место. И это работало.
Но есть один нюанс...
Что такое DCO (Developer Certificate of Origin)?
Но тут есть проблема. Вы, конечно, готовы передать свой код в Spring Framework. Но представьте себе, что Вы создали свой коммит, при этом копировали решение из какого-то приватного API, который является проприетарным, т.е. который является чьей-то интеллектуальной собственностью, и который не разрешается публиковать в public.
И получается дилемма: вы как бы чью-то собственность без разрешения владельца (например, Вашего работодателя), выложили в публичный доступ. Если любой проект примет такое изменение (при этом это изменение не подписано с DCO), то Ваш работодатель имеет право претендовать на интеллектульную собственность этого Open Source проекта.
Из-за такой дилеммы когда-то был огромный судебный процесс по Linux, и с тех пор этой ситуации жутко боятся.
Таким образом, DCO представляет собой маленький атрибут в сообщении каждого коммита, например вот такой (в моем случае):
Author: mipo256 <email@gmail.com>
Date: EEE MMM dd HH:mm:ss yyyy Z
Added Sequence generation support
Signed-off-by: mipo256 <mail@gmail.com>
Подписывая каждый комит с DCO - вы говорите, что Вы не просто соглашаетесь с лицензией проекта, вы также:
- утверждаете, что тот, кто написан после тега Signed-off-by имеет полное право сабмитить этот патч.
- утверждаете, что готовы передать код в рамках лицензии проекта (о чем писали ранее)
По итогу Вы подтверждаете, что имеете право его вносить. Если потом возникнут вопросы, то обращаться будут уже не к проекту, а к Вам.
Вывод
Spring Framework и другие проекты в Open Source переходят на DCO. Если Вы все делаете и делали честно — вы просто добавляете фрагмент с подписью в сообщение каждого коммита и все.