Правильный протокол для редактирования чужого модуля

Что такое правильный программный этикет для редактирования чужого модуля с открытым исходным кодом? Я совершенно новичок в мире программирования с открытым исходным кодом, и я не уверен в лучших практиках редактирования небольших проектов, не относящихся к сообществу. Я хотел бы сделать это правильно, пока я еще новичок в игре, поэтому я развиваю хорошие привычки.

Модуль, который я хочу использовать, представляет собой 36-строчный модуль, размещенный в коде Google, с лицензией GPLv3. Этот модуль делает что-то очень похожее на то, что мне нужно, но не то, что мне нужно. То, как я это вижу, я могу сделать несколько вещей:

A. Загрузите модуль и отредактируйте его, чтобы сделать то, что мне нужно (этот способ сохранит все заслуги автора)

Б. Скопируйте модуль прямо в мою программу и заставьте его делать то, что мне нужно. (этот способ не сохранил бы кредит автору)

C. создайте новый модуль, который будет делать именно то, что мне нужно, и загрузите его в код Google (это будет выглядеть так, как будто я сделал всю работу, когда отредактировал только несколько строк)

D. напишите автору проекта по электронной почте, показывая ему функцию, которую я хочу добавить, и предлагайте ему его в качестве патча

3 ответа

Решение

Вы начинаете с варианта A, а затем D. Загрузите модуль. Код вашего патча. Попробуй это. Используйте это на некоторое время. Затем отправьте патч автору в формате "diff diff" или "unified diff".

Автор может не захотеть ваш патч, и в этом случае ваш вариант - форк. Создайте свой собственный проект и укажите источник. Вам нужно будет прочитать условия лицензии, но разветвление, скорее всего, совместимо.

Если модуль GPLv3, лицензия GPL требует, чтобы ваш код также был включен в лицензию GPLv3, как только вы распространяете или передаете его. Короче говоря, вы не можете продавать проприетарную двоичную программу с использованием модуля GPLv3 без предоставления исходного кода, лицензированного по GPLv3. Если у вас есть сомнения, обратитесь к юристу: я не юрист

Однако свободное программное обеспечение - это сообщество и социальный феномен. Моим практическим предложением было бы вежливо отправить по электронной почте в список рассылки, используемый проектом, патч, содержащий ваши улучшения с объяснением.

Хорошее социальное правило - показывать и делиться (и обсуждать) как можно больше и как можно раньше своими собственными улучшениями для сообщества. Не делай вещи тайно!

D и A. Отправьте патч первым. Если автор отклоняет его или не реагирует в разумные сроки, раскройте проект и внесите в него изменения. Вы должны уважать лицензию, конечно.

Другие вопросы по тегам