MySQL лицензирование и GPL
Насколько я знаю, когда я создаю настольное / серверное приложение, используя любой код GPL, такой как MySQL, мне придется выпустить исходный код моего программного обеспечения под лицензией GPL.
Если я хочу разработать веб-приложение с использованием MySQL, мой код будет связан с библиотеками MySQL. Должен ли я в этом случае опубликовать исходный код моего веб-приложения в соответствии с GPL?
10 ответов
При условии, что вы оставляете его только для сервера (и, следовательно, "частным"), вам не нужно выпускать его как GPL. Но как только он достигает общедоступных рабочих столов, он больше не может считаться внутренней сборкой, и поэтому необходим исходный код.
Так что вы можете:
- Отпустите ваш код как GPL
- Купить коммерческую версию MySQL
- Держите это только для сервера.
Вы должны либо выпустить исходный код (под GPL), либо заплатить за частную лицензию на MySQL, чтобы получить право распространять двоичные файлы MySQL по лицензии, более доступной для той, которую используют проприетарные продукты. Лучше всего ответить на этот вопрос своему адвокату.
ETA: Просто чтобы немного уточнить; если вы напишите свою собственную библиотеку, которая общается с MySQL, используя проводной протокол, то вы всегда будете на 100% в чистом виде. Аналогично, если вы используете библиотеку, которая сделала именно это, но имеет лицензию BSD (в качестве примера), то вы также будете в курсе, потому что вы общаетесь с MySQL только через сокетное соединение, а не вызываете в код GPL. Я не сразу осведомлен о каких-либо лицензированных интерфейсах BSD к протоколу MySQL, но, безусловно, возможно, что где-то есть такой.
Вам не обязательно ссылаться на библиотеки MySQL, чтобы использовать MySQL в вашем приложении. Все, что вам нужно сделать, это "поговорить" с сервером MySQL, используя протокол MySQL; в этом случае вы подключаетесь к серверу MySQL как клиент, то есть как пользователь, и тогда вам не нужно выпускать программное обеспечение под лицензией GNU GPL.
Вопрос в том, как ваша программа может говорить по протоколу MySQL? Одна возможность - использовать официальную клиентскую библиотеку MySQL (соединитель), которая является GPL'd. Если вы делаете это, вы статически связываете свою программу с библиотекой GPL, и, следовательно, вам необходимо выпустить свое программное обеспечение под лицензией GPL.
Кроме того, вы можете создать ссылку на стороннюю клиентскую библиотеку с другой лицензией. Например, вы можете использовать клиентскую библиотеку MariaDB, которая поддерживается LGPL (и, следовательно, совместима с проприетарным программным обеспечением) и предоставляет тот же API, что и исходная клиентская библиотека MySQL. См. FAQ по лицензированию MariaDB, который также относится к MySQL, для получения дополнительной информации и рекомендаций.
Может быть сложно распространять сервер MySQL вместе с вашим программным обеспечением: вы можете просто потребовать от своих клиентов загрузить и установить MySQL самостоятельно или разработать простой загрузчик, который будет распространяться вместе с вашим программным обеспечением.
Если вы сами запускаете веб-приложение и не распространяете его как приложение, вам не нужно выпускать исходный код. Предоставление доступа к веб-приложению не считается распространением.
Редактировать: если вы заинтересованы, вы можете посмотреть на Общедоступную лицензию Affero, которая требует, чтобы источник был доступен для сетевых пользователей программного обеспечения AGPL (например, это применимо к веб-приложениям).
Если вы не производите и / или не распространяете программное обеспечение GPL, вы должны быть в безопасности.
Связывание с клиентской библиотекой MySQL не является ни производной работой, ни распространением.
ОБНОВЛЕНИЕ: если подумать, то, как вы будете связывать (динамические или статические) с библиотеками, будет иметь значение. Статическое связывание является распространением, но если вы связываетесь динамически, и ваши клиенты загружают сами соединители, это не распространение, и вы должны быть в безопасности.
Ох, и IANAL.
Если я хочу разработать веб-приложение с использованием MySQL, мой код будет связан с библиотеками MySQL. Должен ли я опубликовать исходный код моего веб-приложения в этой ситуации, чтобы соответствовать GPL?
Как уже говорили другие, если вы не распространяете приложение среди других, это не проблема.
Обычно вы разрабатываете со стандартным API базы данных и позволяете пользователю решать, какую базу данных подключить к приложению. В этом случае нет проблем. "Ваш код" не будет ссылаться на libmysqlclient, но потенциально может быть объединен с модулем доступа к базе данных, который ссылается на libmysqlclient.
Если вы хотите распространять установщик, который настраивает ваше приложение и libmysqlclient вместе, это, вероятно, не будет считаться "простой агрегацией", поэтому вам потребуется распространять ваше приложение по лицензии с открытым исходным кодом. Это, однако, не обязательно должно быть GPL - см. Исключение лицензии MySQL FOSS.
Если вы хотите распространять установщик, который настраивает ваше приложение и сам сервер MySQL, исключение не применяется, поэтому вы ограничены только GPL.
Естественно, IANAL, и, безусловно, все еще существует некоторая неопределенность в отношении того, что считается деривацией, особенно в отношении динамического связывания. Однако вышеизложенное является моим пониманием традиционной позиции MySQL AB в отношении лицензирования, и я не слышал о каких-либо изменениях после поглощения Sun.
К сожалению, это далеко не так точно: GPL запрещает распространение без указания источника каждого "производного продукта". Распространение юридически определяется как акт переноса источника с одного компьютера на один или несколько компьютеров для официального использования.
К сожалению, это также может включать в себя использование на кластерах серверов, блоках QA, блоках dev и т. Д. В современном магазине разработчика просто выпуск кода для нескольких блоков frontend/backend - это техническая дистрибуция (с точки зрения закона).
Неважно, что думает Фонд свободного программного обеспечения, важно, что думают несколько судей, когда кто-то / корпорация предъявляет иск за именно это.
Это еще одна причина, по которой основными клиентами GPL в настоящее время являются корпорации, которые хотят, чтобы конкуренты не раздували свой код. Всем остальным следует рассмотреть возможность использования гораздо менее обременяющих лицензий, таких как лицензии MIT или Creative Commons Attribution.
MySQL использует двойное лицензирование. Как они говорят - если вы свободны, мы свободны.
Так что, если вы используете, насколько мне известно, только MySQL JDBC Connector - вы должны иметь лицензию или GPL свой код.
Во-первых, я не юрист. Поговорите с одним, прежде чем принимать какие-либо советы здесь.
Кроме того, если вы не распространяете свое веб-приложение, вам, скорее всего, не нужно выпускать свои изменения. Вы по-прежнему можете сделать ваше веб-приложение доступным для использования другими, если вы размещаете веб-приложение.
Если ваш дистрибутив включает в себя и устанавливает MySql в том же пакете, он требует коммерческой лицензии.
Но если вы распространяете свой код только с уведомлением "требует MySql" и установочным скриптом (для создания / заполнения таблиц), проблем не должно быть, AFAIK.
IANAL, конечно.