В проекте я нашел файл math.c
, с большим заголовком GPL и ...
//------------------------------------------------------------------------------
/// Returns the minimum value between two integers.
/// \param a First integer to compare.
/// \param b Second integer to compare.
//------------------------------------------------------------------------------
unsigned int min(unsigned int a, unsigned int b)
{
if (a < b) {
return a;
}
else {
return b;
}
}
ОК, круто, так что мне нужно получить минимальное значение и ... этот файл !? Поэтому мне нужно открыть весь проект из-за этого? Или мне нужно заново изобрести математику?
Я не верю, что это просто безумие, поэтому вопрос в том, когда мы можем просто удалить заголовок GPL?
Должен ли я быть чудаком и сделать это ?
unsigned int min( unsigned int
JEIOfuihFHIYEFHyigHUEFGEGEJEIOFJOIGHE,
unsigned int hyrthrtRERG ) { if
(JEIOfuihFHIYEFHyigHUEFGEGEJEIOFJOIGHE
< hyrthrtRERG ) { return JEIOfuihFHIYEFHyigHUEFGEGEJEIOFJOIGHE; }
else {return hyrthrtRERG ; } }
Серьезно, они хотят, чтобы я написал код, подобный приведенному выше?
the jury did find that one nine-line function that Google acknowledged copying was infringing
(от ArsTechnica ).min
не защищена авторским правом. Смотрите мой ответ для деталей.Ответы:
В отличие от многих пользователей здесь, я бы просто предложил: скопируйте его!
Убедитесь, что форматирование кода соответствует вашему стандарту кодирования, а также вам, вероятно, следует удалить или переписать комментарий. Никто никогда не узнает, что вы скопировали его - когда кусок кода такой простой, вы могли бы написать его с нуля. Если ваш стандарт кодирования как-то требует, чтобы функция выглядела точно так же, как и во фрагменте, пусть будет так - до тех пор, пока она выглядит так, как если бы вы написали ее с нуля.
Подумайте об этом, это едва ли (!) Первый раз, когда эта точная часть была написана - когда что-то тривиально, нет никаких причин не копировать это, если вам не хочется писать это самостоятельно.
Даже такое обсуждение кажется мне немного излишним - нам нужно быть прагматичными, если мы хотим сделать какую-то реальную работу!
источник
Let us then say that the programmer wrote his own version of MIN and it ended up looking exactly like the one from math.c - would it then be okay?
Да, если это был несчастный случай. "Какая разница, если он только что скопировал это?" Биты имеют цвет . ansuz.sooke.bc.ca/entry/23 Это не то, что большинство компьютерных ученых могут понять - это действительно сложная тема, но это то, что признано законом. Если вы сомневаетесь в том, является ли что-то законным или нет, вам лучше поговорить с адвокатом .Он не дает прямого ответа на ваш вопрос, но попробуйте это:
Настоящим я публикую этот великолепный, сложный макрос в открытом доступе. Хотя, возможно, мне придется опубликовать статью по этой технике.
Если вы макрофобны, попробуйте эту встроенную версию (на самом деле, если вы не программируете на SPARC, вы сэкономите много циклов ЦП, не оборачивая функцию столь же вездесущей, как
min
в коде входа / выхода):Вопрос лицензирования кода для тривиальных фрагментов на самом деле немного неприятен. Посоветуйтесь с юристом, но мне хочется предположить, что они не могут быть лицензированы и / или лицензирование не может быть реализовано на практике. То же самое, что вы не можете охранять авторское право или торговую марку словом «слово», тогда опирайтесь на людей, которые его используют. (Ой)
источник
min(a++,b++)
.min
.Отказ от ответственности : я не адвокат. Используйте мой совет на свой страх и риск.
Эта реализация
min
является не охраноспособной , так как есть только очень немногие разумные способы написания.В юридическом мире это известно как доктрина слияния (также известная как разрыв между выражением идеи). Говорят, что (не защищенная авторским правом) идея функции «слилась» с (потенциально защищенным авторским правом) выражением . Поэтому на код не распространяются авторские права - вы можете свободно его использовать.
Чтобы быть в безопасности, не копируйте это дословно . Используйте разные имена для переменных, примените собственное форматирование, не копируйте комментарии дословно. Точное буквальное представление этого кода может быть защищено авторским правом.
Имейте в виду, что это не гарантирует, что кто-то не будет судиться с вами, но по крайней мере у вас будет сильная защита.
Кроме того, имейте в виду, что даже если часть кода не защищена авторским правом, она все равно может быть защищена патентом на программное обеспечение (это не относится к вашей
min
функции).источник
Я выпускаю следующий код под лицензией BSD . Поскольку эта лицензия намного более разрешительна, вы не должны сталкиваться с проблемами авторского права, если используете мою реализацию.
источник
min
в программном обеспечении с закрытыми исходными кодами. Кроме того, @Sholy, теперь проблема Гордона в том, скопировал он это или нет.Я согласен, что это абсурдная ситуация, но в этом виноват только ты сам. Если вы пишете собственный код, вам не следует читать исходные файлы, лицензированные по лицензии GPL, точка. Удалите math.c из вашей файловой системы, сохраните документацию и не стесняйтесь повторно реализовать любую часть API, которая вам нужна. Если вы не читаете код, вам не нужно беспокоиться, если ваш собственный код окажется похожим.
Вы говорите, расточительно? GPL намеренно лишает вас возможности пользоваться бесплатным кодом без ущерба для экосистемы. Если вы не можете или не будете выполнять ее условия и не хотите внедрять еще одну математическую библиотеку, вы всегда можете купить ее или найти бесплатную, которая поставляется с лицензией, которую вы можете принять.
Программисты Microsoft не имеют права читать открытый исходный код, чтобы защитить компанию от юридических проблем. По чисто этическим причинам вы должны делать то же самое с любой программой, лицензию которой вы не собираетесь придерживаться.
Вы не имеете права использовать это
math.c
, но никто не пытается загнать рынок в угол реализацииmin
. Цель GPL - увеличить «свободу» программиста (и свободу конечного пользователя), а не ограничивать ее. Лицензия GNU, FSF и Движение за свободное программное обеспечение начались с Ричарда Столлмана, и Столлман начал с повторной реализации с нуля каждую новую версию Symbolics lisp по мере ее появления. FSF не будет (и не мог) искать кого-то для повторной реализации библиотеки GPL.источник
Ответ: только с явного разрешения автора.
Это защищенный авторским правом код. Вы не можете скопировать его без разрешения автора.
Вам нужно будет написать свою собственную версию
min
или скопировать вариантmin
с другой лицензией.Помните, что авторским правом защищен код, а не алгоритм. Закон об авторском праве исходит из текста. Даже если бы «math.c» был только комментариями и вообще не имел исполняемого кода, он все равно был бы защищен авторским правом.
источник
min
, вы владеете определенной последовательностью символов, которая может быть реализованаmin
.Это то, что Google предположительно сорвал. Это похоже на здравый смысл для массива.
источник
Я не буду использовать этот код в любом случае, потому что комментарий не совпадает с тем, что делает код. Комментарий говорит о том
integer
, что код используетunsigned int
. Кто знает, какие ошибки скрыты в недрах этой функции?Серьезно, это то, где «Не изобретай велосипед» становится смешным, и ты забыл взять его с крошкой соли. Просто напишите свою собственную версию с нуля, сравните ее с соглашением об именах и руководством по стилю вашего кода (например
math_min_uint(x, y)
), убедитесь, что он работает (модульное тестирование и т. Д.), И продолжайте жить без проблем с авторским правом.С ростом опыта эти тривиальные фрагменты, которые вам нужны снова и снова, просто находятся в вашем наборе инструментов, и вы будете переписывать их, не задумываясь, или просто получить их из своей собственной библиотеки.
источник
Кажется, что люди забывают, что закон об авторском праве, как по духу, так и по букве, означает, что сам процесс копирования запрещен, а не сам акт выражения той же мысли, даже если результат окажется подозрительно похожим.
Если вы берете код GPL, изменяете его, используете его таким образом, который противоречит лицензии, под которой вы его получили, и утверждаете, что это не производное произведение, то вы нарушаете закон. Даже если вы используете свою вторую версию - вы изменили имена всех переменных и изменили форматирование, но оно все равно получено из оригинала.
Однако, если вы пишете свою собственную версию
min
, и из-за тривиальности задачи, факта, что есть только очень много способов, которыми вы можете разумно написать такую вещь, и небольшое совпадение, ваша версия в конечном итоге будет полностью идентична в код GPL, то вы ничего не скопировали.Вопрос о том, пройдет ли история в суде, - это другой вопрос. Если более крупный или более сложный пример кода появляется где-то еще, с комментариями, форматированием и орфографическими ошибками, вам будет сложно убедить кого-либо в том, что вы написали его независимо, тем более, если будет показано, что вы знали оригинал источник (который, учитывая тот факт, что вы разместили его здесь, должен быть довольно тривиальным).
источник
Если код действительно тривиален в качестве примера «min», то существует очень высокая вероятность того, что кто-то другой уже реализовал те же функции под другой лицензией с открытым исходным кодом.
В зависимости от лицензии вам может быть разрешено включить код в ваше приложение с закрытым исходным кодом.
источник
Просто напишите это себе за 30 секунд. Вы можете использовать точно такой же алгоритм. Просто не копируйте / вставляйте.
Авторское право защищает только выражение идеи, а не саму идею. Вы можете использовать идею напрямую, если не копируете ее.
FWIW, я сомневаюсь, что копирование такого тривиального кода в любом случае может привести к неприятностям. Убытки будут равны нулю, и, вероятно, в большинстве юрисдикций это будет неоправданно. Но судебные дела - такая боль, что я не хотел бы рисковать.
источник
Поскольку это GPL-код, большой вопрос здесь заключается в том, планируете ли вы распространять свой код или продавать свое программное обеспечение.
Если вы просто используете его внутри, GPL дает вам полную свободу действий по своему усмотрению.
Если вы планируете распространять свой пакет, проще всего - использовать ваш GPL на тех же условиях, что и любой используемый вами источник GPL. Есть и другие способы, но это усложняется.
Если вы планируете продавать свое программное обеспечение, вы должны распространять исходный код для любого кода GPL, который вы использовали и / или исправили в соответствии с той же лицензией GPL, по которой вы его получили.
источник
Если вы используете C ++, а не C, обойдите эту проблему, используя стандартную библиотеку
std::min
илиstd::max
в<algorithm>
:http://www.cplusplus.com/reference/algorithm/min/
Это покупает вам универсальность, и она будет работать для любого сопоставимого типа. Кроме того: когда какой-либо d-bag пытается заявить, что он его изобрел и защищен патентами на программное обеспечение, они будут грохотать с комитетом ISO ... а не с вами.
В общем случае обратите внимание, кто опубликовал код. Корпорация или здравомыслящий человек? Если это здравомыслящий человек (как в случае с большим количеством открытого исходного кода), напишите им приятную заметку и получите разрешение. Сохраните их ответ, говоря, что все в порядке. Проблема решена.
источник
Для общего случая: более сложный код, который определенно может быть защищен авторским правом, в отличие от минимального и максимального (который может или не может быть защищен авторским правом).
Тогда лицензируйте свой код в соответствии с библиотекой, т.е. GPL! Однако обратите внимание, что есть библиотеки LGPL (и GPL с исключениями), которые позволяют вам использовать их реализации, предоставляя вашему коду любую лицензию, какую вы пожелаете.
источник