Я пишу приложение для iPhone, и я хотел бы использовать стороннюю библиотеку для части его функциональности. Я намерен продавать его через App Store, и мой код не будет открытым. Какие лицензии с открытым исходным кодом позволяют создавать производные работы и публиковать их на собственных условиях Apple?
Какие лицензии с открытым исходным кодом совместимы с iPhone от Apple и его официальным магазином приложений?
Ответы (10)
Вкратце/TL;DR:
LGPL и магазины приложений имеют несколько несовместимостей, что означает, что у вас нет прав на распространение кода LGPL в магазинах приложений с поддержкой DRM или на заблокированных устройствах.
Лучше всего искать альтернативные реализации библиотеки под другими более слабыми лицензиями, такими как лицензия Apache 2, общественная лицензия Microsoft или лицензия MIT X11.
Длиннее:
LGPL утверждает:
Может случиться так, что это требование противоречит лицензионным ограничениям других проприетарных библиотек, которые обычно не сопровождают операционную систему. Такое противоречие означает, что вы не можете использовать и их, и библиотеку вместе в исполняемом файле, который вы распространяете.
Права на статическую компоновку кода LGPL с проприетарным кодом вытекают из раздела 6 LGPL. В дополнение к предоставленным правам в этом разделе рассматриваются требования с вашей стороны по отношению к нижестоящим получателям вашего кода.
Вам следует внимательно прочитать этот раздел.
Конфликты между платой за разработку и LGPL
Магазины приложений, которые требуют, чтобы пользователи платили за вход в программу и получение сертификатов ключей, предоставление профилей и инструментов для развертывания на устройстве, прямо противоречат LGPL.
LGPL требует, чтобы конечный пользователь мог получить ваши объектные файлы, а также библиотеку с открытым исходным кодом (плюс инструменты, см. раздел ниже) и создать некоторый работающий код. Нет места тому, чтобы нижестоящий получатель заключал отдельное соглашение с Apple, Microsoft, Amazon или Google, чтобы иметь возможность развернуть рабочую версию кода на своем собственном оборудовании.
В частности, этот раздел актуален:
Вы не можете налагать какие-либо дополнительные ограничения на осуществление получателями прав, предоставленных в настоящем документе. Вы не несете ответственности за обеспечение соблюдения третьими лицами настоящей Лицензии.
Вам не нужно давать пользователям право повторно публиковать ваше приложение в AppStore, но вы должны предоставить пользователям право развертывать ваше приложение с измененной версией кода LGPL на своих устройствах, поэтому любая программа разработчика или устройство, требующее дополнительные платежи за развертывание противоречат LGPL.
Распространение объектных файлов
Вы должны убедиться, что условия полученного исполняемого файла позволяют получателю вносить изменения в код LGPL и создавать из него новые рабочие биты кода. На практике это означает, что вам необходимо распространять объектные файлы вашей программы, чтобы третья сторона могла повторно связать ваше приложение с модифицированной версией библиотеки, возможно, исправить ошибки, улучшить ее каким-либо образом или предоставить свои собственные функции.
Вы можете избежать этого, разместив объектные файлы на своем веб-сайте и предоставив проект, чтобы третьи лица могли повторно связать приложение. Невыполнение этого требования аннулирует вашу лицензию LGPL.
Права на обратный инжиниринг
Это еще одно требование из раздела 6.
Это может прямо противоречить условиям различных магазинов приложений, но вам необходимо проверить точные условия в магазине приложений, который вы используете (Apple, Amazon, Android или другие третьи стороны).
Уведомление и реклама
В рамках требований к коду LGPL приложение, отправляемое нижестоящему пользователю, должно поставляться с лицензией LGPL и указывать на эту лицензию во всех местах приложения, где отображаются какие-либо уведомления об авторских правах. Некоторые магазины приложений публикуют это на сайте магазина приложений, в то время как другие могут иметь информацию об авторских правах на самом исполняемом файле.
Распространение Модифицированного кода LGPL
Это очень легко соблюдать, вам просто нужно распространить копию кода LGPL на своем веб-сайте (в лицензии есть некоторые дополнительные сведения об этом, касающиеся периода времени, в течение которого вам необходимо сохранять код доступным).
Требования, которые вы не можете выполнить
Одной из основных проблем с LGPL и использованием статических библиотек в приложениях, распространяемых через магазины приложений, является требование распространения инструментов и сценариев, необходимых конечному пользователю для перестроения программного обеспечения.
Для некоторых сценариев встроенных систем вам потребуется, чтобы поставщик встроенных систем раскрывал свои инструменты разработчика и API-интерфейсы любым конечным пользователям, но это может оказаться невозможным. Неясно, можно ли свободно распространять что-то вроде iPhone или Windows SDK для выполнения обязательств в этом случае, возможно, вы захотите обсудить это со своими юристами и выяснить, насколько комфортно вы относитесь к раскрытию требований.
Что ты можешь сделать
Если вам абсолютно необходимо использовать некоторый код LGPL в магазине приложений или встроенной системе, вы всегда можете обратиться к первоначальным авторам кода и попросить их предоставить вам лицензию на код на других условиях.
В качестве альтернативы вы можете искать альтернативные реализации библиотеки под другими более слабыми лицензиями, такими как лицензия Apache 2, общедоступная лицензия Microsoft или лицензия MIT X11.
Что касается LGPL, я считаю, что St3fan неверен, но Луис Гербарг прав: можно использовать библиотеки LGPL в приложениях iPhone с закрытым исходным кодом, но с ограничениями.
Если вы посмотрите на http://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License, вы можно прочитать: «В качестве альтернативы разрешена статически подключаемая библиотека, если предоставлен либо исходный код, либо объектные файлы, на которые можно ссылаться».
Итак, как упомянул Луис Гербарг, если вы используете библиотеку LGPL, вам разрешено хранить приложение с закрытым исходным кодом до тех пор, пока вы предоставляете свободный доступ к объектным файлам (например, *.o), которые необходимы вашим клиентам, чтобы взять ваше приложение и свяжи это.
Я подробно изучаю тему Совместимость с iPhone и LGPL здесь.
Подробные требования к вашему приложению, предъявляемые лицензией LGPL библиотеки:
г) Выполните одно из следующих действий:
0) Передавать Минимальный Соответствующий исходный код в соответствии с условиями настоящей Лицензии и Соответствующий код приложения в форме, подходящей для пользователя, и на условиях, которые позволяют пользователю рекомбинировать или повторно связывать Приложение с измененной версией Связанной версии для создания измененная Комбинированная Работа способом, указанным в разделе 6 GNU GPL для передачи Соответствующего Исходного кода.
Apple App Store несовместим с идеей авторского лева FSF, которая присутствует во всех версиях как GPL, так и LGPL, а также GPL Affero. Apple App Store не позволяет пользователям брать бесплатное программное обеспечение, модифицировать его, а затем свободно запускать на своих устройствах. Они требуют, чтобы вы использовали DRM, платили 100 долларов в год, соглашались с их дополнительными условиями и т. д. Об этом довольно хорошо написано здесь: http://michelf.com/weblog/2011/gpl-ios-app-store/
Распространять программное обеспечение GPL/LGPL для iOS за пределами App Store совершенно законно, проблема заключается в Apple App Store. Поэтому я рекомендую лоббировать Apple, чтобы изменить их ограничения. Mac OS X и iOS даже в основном полагаются на программное обеспечение GPL/LGPL (например, gcc и многие другие), поэтому Apple наслаждается свободой, но отказывает своим пользователям в такой же свободе.
Что касается лицензий, с которыми совместим App Store, вам нужно будет использовать очень разрешающие лицензии, такие как BSD, MIT, Apache или общественное достояние.
Я не думаю, что LGPL будет работать для приложений iPhone.
Проблема в том, что среда выполнения iPhone не позволяет вам связывать общие библиотеки (или фреймворки) с вашим приложением. Допускаются только одиночные бинарные приложения. LGPL основан на предположении, что вы связываете общую библиотеку с приложением. Прямые ссылки по-прежнему запрещены.
Это не юридическая консультация, я не юрист, но похоже вам нужна библиотека с лицензией BSD или Apache. Это было бы так, если бы вы разрабатывали проприетарную настольную программу, в которой использовалась библиотека с открытым исходным кодом. Я не знаю, есть ли у Apple какие-либо дополнительные ограничения для приложений iPhone.
(Я не юрист.)
Связывание статических объектных файлов может решить вопрос о том, как разрешить доступ к приложению, использующему лицензионный код LGPL, без распространения частей его исходного кода, не принадлежащих LGPL.
Но похоже, что LGPL, как вариант GPL, налагает более крупную непреодолимую проблему для разработки приложений для iPhone, поскольку инструменты разработки, необходимые для создания и распространения любого приложения для iPhone, доступны только на условиях Apple, которые несовместимы с GPL. т.е. Существует плата в размере 100 долларов США в год, и существует множество условий использования этих инструментов, которые не являются частью лицензии GPL. Условия лицензии на инструменты Apple для разработчиков iPhone кажутся несовместимыми с духом, а возможно, и с буквой GPL.
Если вы не публикуете исходный код, вы не можете использовать строгую лицензию с авторским левом. Вы ни в коем случае не можете использовать какую-либо лицензию на основе GPLv3, так как дистрибутив iPhone противоречит пункту о запрете Tivoization.
Если вы используете LGPLv2, вам придется предоставить свою программу в формате, который можно связать, что может быть или не быть приемлемым (по крайней мере, это не исходный код), и это, вероятно, будет чем-то, с чем вы не захотите иметь дело. , если только библиотека не предлагает много преимуществ.
Если в библиотеке есть один правообладатель, вы всегда можете узнать, можете ли вы получить исключение из лицензии.
У вас не будет проблем с типичными лицензиями BSD/MIT/Boost/любыми разрешающими лицензиями. Существует множество лицензий с открытым исходным кодом/Свободного программного обеспечения, а остальные вам придется прочитать и посмотреть.
Когда я пытаюсь перенести Fuego на iPhone, я задаю аналогичный вопрос на < href="http://sourceforge.net/mailarchive/forum.php?forum_name=fuego-devel" rel="nofollow noreferrer">список рассылки fuego. Пока я понимаю, что «LGPL не совместима с AppStore». Предыдущий вопрос также получает ответ в виде: нет.
Хорошим примером является Wunderradio. Они используют ffmpeg и другие фреймворки под лицензией LGPLv2 и предоставляют файлы .o на своем веб-сайте.
Как ни странно, они также предоставляют полный исходный код для своего приложения.
http://wunderradio.com/code.html
Люди, которые утверждают, что условия обслуживания App Store проблематичны, в частности, ежегодная плата за программу Apple Dev в размере 100 долларов, ошибаются. Эти 100 долларов даже близко не являются шоу-стопом. Для разработчиков характерно то, что они тратят так много времени на беспокойство о таких вещах ;0) Юристы тысячи лет возятся с положениями контрактов, и вряд ли стоит из-за них терять сон.
Условие: предоставьте объектные файлы и базовый файл проекта из веб-сайта, доступного по ссылке в приложении.
Вариант 1, для ковбоев: джейлбрейк официально разрешен (и бесплатен). Уже одно это снимает любые опасения по поводу совместимости между LGPL и условиями App Store. Где в LPGL указывается конкретный канал распространения? Нигде. Вы хотите обновить статически связанную библиотеку в приложении, загруженном из магазина приложений? Смирись с этим, альфа-разработчик и сделай джейлбрейк своего телефона! Тот факт, что Apple является хулиганом на игровой площадке, не заставляет вас оставаться на их карусели. Таким образом, предприимчивые разработчики могут получить ценные права на хвастовство на следующей встрече. Кроме того, тот факт, что вы взломали свой телефон, чтобы обновить библиотеку LPGL, дает вам доступ к комнате с бочонками в подвале Ричарда Столлмана!
Вариант 2, чтобы обойти это законно и добросовестно: раздел 1 LGPL v2.1 (и раздел 4 GPL v3) позволяет разработчику взимать плату за физический акт копирования библиотеки. Это предоставляет разработчику механизм перераспределения этой платы в счет платы за подписку Apple Dev в размере 99 долларов.
Как насчет ограничения в 100 устройств? Конечные пользователи, желающие обновить свой двоичный файл, обновляют коммерческое приложение, поэтому в игру вступают собственные условия лицензии разработчика приложения. Добавить ограничение в 100 устройств в пользовательское лицензионное соглашение несложно. У скольких людей более 100 устройств iOS? Даже у Джобса не было столько! Вряд ли это необоснованный предел. Учитывая, что не требуется, чтобы конечный пользователь имел право выпускать собственную модифицированную версию оригинального коммерческого приложения в дикую природу, не будет никаких оснований для жалоб, когда оно не загружается на устройство 101-го друга модификатора.
LGPL не требует, чтобы у конечного пользователя был удобный, безопасный или даже очевидный выбор. У них просто должен быть выбор, и есть 2 совершенно хороших.