Поднасобиралось тут вопросов. Итак:
- Вы пишете патч, его используют, но автор, получается, не вы. Обидно? Например, в [1] опубликован патч, в ответ - тишина. Спустя почти 4 месяца без спасибо - баг исправлен. В [2] видно, что автор - главный программер проекта (который при этом ещё и один из самых первых и известных разработчиков ядра). А предложенное улучшение вообще проигнорировано.
- Есть диагонально противоположный случай. Например, если вы хотите комитнуть в какой-нибудь проект гугла, то необходимо «подписать» с ними соглашение. Т.е. даже если вы хотите исправить опечатку, гугл признаёт и заботится о вашем праве на авторство, но и хочет обезопасить себя. Есть и другие проекты, которые требуют подобного. А теперь представьте, вы находите проблему с безопасностью в одном из таких проектов, пишете патч и... устанавливаете на него лицензию, которая свободная, но конфликтует с каким-нибудь пунктом лицензии проекта, и этот патч не имеют право принять. Но! Этот патч исправляет очень острую проблему, которую нельзя вот так теперь оставить. С другой стороны, вы являетесь автором, и никто не имеет права взять ваш кусочек кода и сказать, что это «тривиальный» фикс (хотя его обнаружить было далеко не тривиально), и мы имеем право и так его закомитить.
- А есть и вариант между ними. Вы написали патч, но один к одному его не могут принять. Помимо варианта, когда вас будут доставать до тех пор, пока вы сами его не приведёте в идеальный вид, и его можно будет закомитить (но только когда никому не особо важно быстрее получить эти изменения), есть два других варианта. Первый: комитер берёт и сам меняет патч, ставит себя в авторы, а вас где-то в комит-комментарии, что, мол, основано на таком-то патче. Вариант второй: создаётся ветка, ваш патч комитится, а потом второй патч облагораживает его, ветку «атомарно» сливают куда надо (т.е. ваш «сырой» патч ничего не может испортить). В итоге - вы автор оригинально патча, а комитер - автор изменений. Всё ясно и понятно. Есть какие-то оправдания первого варианта? И как агитировать на применение исключительно второго варианта?
- Частенько в открытых проектах можно видеть образцы кода, примеры, которые тем не менее защищены GPL/LGPL,.. Эммм... Какая тут логика? Ведь это код, который будет в любом проекте, который будет использовать данную библиотеку. Одно дело защищать код библиотеки, но что за бред защищать такой код? И действительно вообще в данном случае лицензионное ограничение?
- Бывает, встречаю статьи о том, как сделать что-то нехитрое, использовать какую-то либу. И... автор указывает, что его примеры лизензируются под GPL. Ну, 100%, что точно такой же код существует в куче проектов, использующих эти либы. И лицензии там 100% самые разные. Кто прав? И если авторы подобных статей не правы, кого вообще в подобных случаях оповещать о нарушении? Вот если кто-то нарушает GPL, то куда писать все знают. А если кто-то не в праве в конкретном случае использовать GPL, то тогда куда?
- Патентование алгоритмов - это зло. А что если GPL наложена на код, который можно назвать вариантом псевдокода алгоритма, который совпадает с C? [3] Мне кажется, что такая практика - это тоже зло. И, похоже, со мной согласны: вот, например, проект [4] использовал одну из «GPL»-функций. А у проекта лицензия BSD [5]. Упс.
Ух, пока всё. Внимание, ПРОСЬБА: конструктивные ответы и критика по пунктам. Особенно интересен опыт пишущих патчи и использующих чужой код в реальных (внутрефирменных тоже) проектах.
[1] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=646629
[2] https://git.kernel.org/cgit/fs/ext2/e2fsprogs.git/commit/?id=4a4a44d7b14be190...
[3] http://www.strudel.org.uk/itoa/
[4] https://github.com/OculusVR/RakNet/blob/master/Source/Itoa.cpp