Правильный протокол для редактирования чужого модуля
Что такое правильный программный этикет для редактирования чужого модуля с открытым исходным кодом? Я совершенно новичок в мире программирования с открытым исходным кодом, и я не уверен в лучших практиках редактирования небольших проектов, не относящихся к сообществу. Я хотел бы сделать это правильно, пока я еще новичок в игре, поэтому я развиваю хорошие привычки.
Модуль, который я хочу использовать, представляет собой 36-строчный модуль, размещенный в коде Google, с лицензией GPLv3. Этот модуль делает что-то очень похожее на то, что мне нужно, но не то, что мне нужно. То, как я это вижу, я могу сделать несколько вещей:
A. Загрузите модуль и отредактируйте его, чтобы сделать то, что мне нужно (этот способ сохранит все заслуги автора)
Б. Скопируйте модуль прямо в мою программу и заставьте его делать то, что мне нужно. (этот способ не сохранил бы кредит автору)
C. создайте новый модуль, который будет делать именно то, что мне нужно, и загрузите его в код Google (это будет выглядеть так, как будто я сделал всю работу, когда отредактировал только несколько строк)
D. напишите автору проекта по электронной почте, показывая ему функцию, которую я хочу добавить, и предлагайте ему его в качестве патча
3 ответа
Вы начинаете с варианта A, а затем D. Загрузите модуль. Код вашего патча. Попробуй это. Используйте это на некоторое время. Затем отправьте патч автору в формате "diff diff" или "unified diff".
Автор может не захотеть ваш патч, и в этом случае ваш вариант - форк. Создайте свой собственный проект и укажите источник. Вам нужно будет прочитать условия лицензии, но разветвление, скорее всего, совместимо.
Если модуль GPLv3, лицензия GPL требует, чтобы ваш код также был включен в лицензию GPLv3, как только вы распространяете или передаете его. Короче говоря, вы не можете продавать проприетарную двоичную программу с использованием модуля GPLv3 без предоставления исходного кода, лицензированного по GPLv3. Если у вас есть сомнения, обратитесь к юристу: я не юрист
Однако свободное программное обеспечение - это сообщество и социальный феномен. Моим практическим предложением было бы вежливо отправить по электронной почте в список рассылки, используемый проектом, патч, содержащий ваши улучшения с объяснением.
Хорошее социальное правило - показывать и делиться (и обсуждать) как можно больше и как можно раньше своими собственными улучшениями для сообщества. Не делай вещи тайно!
D и A. Отправьте патч первым. Если автор отклоняет его или не реагирует в разумные сроки, раскройте проект и внесите в него изменения. Вы должны уважать лицензию, конечно.