Сторонние библиотеки и свободные лицензии

Никита Narmo Дёнин avatar | 19
FavoriteLoading В закладки

Любой начинающий (да и не только начинающий) программист в процессе создания собственных приложений в определённый момент приходит к решению использовать стороннюю библиотеку в своём проекте. Так как существует множество вариантов лицензирования исходного кода (да и у Apple есть собственное лицензионное соглашение в отношении AppStore), нужно знать, какую библиотеку разработчик может использовать без зазрения совести, а с какой могут возникнуть юридические проблемы. Чтобы с новым приложением не случилась история, подобная шумихе вокруг VLC, надо быть осторожным в выборе сторонних библиотек и разбираться в способах их лицензирования.

Примечание: в тексте я буду использовать жаргонизм «линковка», так как он уже является устоявшимся, хотя у него есть нормальный перевод на русский язык — «связывание».

GNU GPL v2 / v3 (GNU General Public License)

При использовании исходного кода, распространяемого под лицензией GPL, продукт, который использует этот код, также должен распространяться под этой лицензией. GPL даёт право использовать, распространять, модифицировать исходный код при условии, что модификации будут опубликованы под этой же лицензией. GPL запрещает ограничивать перечисленные в ней свободы, что приводит к конфликту с лицензионным соглашением Apple. Как раз из-за этого и разгорелся весь сыр-бор с VLC. Одним из ограничений, прямо противоречащих GPL, является «ограничение в пять устройств», известное всем пользователям гаджетов от Apple. Здесь можно прочитать комментарии по поводу VLC, GPL и AppStore от одного из юристов FSF (Free Software Foundation) и подробнее узнать, почему GPL и публикация в AppStore несовместимы.

В конечном итоге мы пришли к тому, что использовать в своих проектах сторонние библиотеки, распространяемые под лицензиями GPL v2 и GPL v3, мы не можем.

New BSD License

Эта лицензия — просто подарок для разработчика. Единственное, что от нас требуется при её использовании, это указать автора библиотеки, которую мы включили в свой проект, и включить в уведомление отказ от гарантий. Отказ от гарантий — это предупреждение о том, что программа распространяется «как есть» (по-английски это звучит как «as is»), и её создатель не несёт ответственности за различные убытки, понесённые в результате её использования.

Говоря простыми словами, мы включаем библиотеку в свой проект, добавляем в программу окошко «О программе» и пишем в нём полный текст Новой Лицензии BSD с указанием использованной библиотеки и её автора. Использовать код, распространяемый под лицензией BSD, можно в коммерческих и проприетарных продуктах.

Кстати говоря, тексты как старой, так и новой лицензий BSD можно посмотреть на любом устройстве под управлением iOS. Откройте настройки, перейдите в пункт ОсновныеОб устройствеКопирайт и поищите слова BSD Kernel (здесь будет текст оригинальной лицензии BSD) и json-framework (здесь будет текст новой лицензии BSD).

Модификации исходного кода, распространяемого под новой лицензией BSD, публиковать необязательно (в отличие от GPL).

MIT License

Данная лицензия почти идентична новой лицензии BSD за единственным исключением: в ней отсутствует пункт, запрещающий «использование доброго имени держателя авторских прав в рекламе». В остальном она аналогична новой лицензии BSD.

Вывод — исходный код, распространяемый под данной лицензией, можно спокойно использовать в своих проектах, но нужно указывать в окошке «О программе» автора (или авторов) этого кода.

Модификации исходного кода, распространяемого под лицензией MIT, публиковать необязательно (в отличие от GPL).

LGPL (GNU Lesser General Public License)

Данная лицензия была разработана как нечто среднее между жёсткой GPL и мягкими лицензиями BSD и MIT. Она позволяет линковать объекты, созданные при компиляции кода, распространяемого под лицензией LGPL, с несвободными программами. В приложениях для iOS возможна только статическая линковка.

В отношении iOS ограничение этой лицензии состоит в том, что разработчик должен собрать статическую библиотеку и только затем включить её в свой проект. При этом все файлы, необходимые для связывания библиотеки с приложением, должны быть предоставлены в свободный доступ. Обязательным является указание автора (или авторов) такого кода и уведомление о том, что библиотека, используемая в приложении, распространяется на условиях лицензии LGPL.

Лицензия LGPL довольно запутана, поэтому не совсем понятно, можно ли использовать такой код в коммерческих и проприетарных продуктах. Автор библиотеки libsnd в вопросе о её использовании в iOS как раз ссылался на пункт о необходимых для связывания файлах. Авторы библиотеки ios-ftp-server в описании к проекту прямо указывают на возможность использования своего продукта в приложениях для iOS без необходимости распространения конечной программы под лицензией LGPL.

Если вы решите использовать код под лицензией LGPL в своём продукте, лучше предварительно проконсультироваться с юристом.

Общественное достояние (Public Domain)

Лучшая лицензия (точнее, отсутствие таковой). С кодом, распространяемым под этими условиями, можно делать что угодно. Примером может служить проект CocoaAsyncSocket.

Код, который отдан в общественное достояние, можно использовать в проектах любого типа, при этом не обязательно указывать его оригинальных авторов.


Довольно часто библиотеки с открытым исходным кодом имеют двойное лицензирование. В таком случае можно выбрать подходящую для себя систему лицензирования и следовать её условиям.

1 Звезд2 Звезды3 Звезды4 Звезды5 Звезд (2 голосов, общий рейтинг: 4.50 из 5)
undefined
iPhones.ru
Любой начинающий (да и не только начинающий) программист в процессе создания собственных приложений в определённый момент приходит к решению использовать стороннюю библиотеку в своём проекте. Так как существует множество вариантов лицензирования исходного кода (да и у Apple есть собственное лицензионное соглашение в отношении AppStore), нужно знать, какую библиотеку разработчик может использовать без зазрения совести, а...
Прокомментировать

🙈 Комментарии 19

  1. Mike avatar
    Mike5 апреля 2011
    0

    Что то я не пойму зачем здесь это написали…

    Никита Дёнин avatar
    Никита Дёнин5 апреля 2011
    0

    @Mike, Как уже когда-то говорили, «для 2% читателей iPhones.ru».

    Mike avatar
    Mike5 апреля 2011
    0

    @Никита Дёнин, Спасибо. Предлагаю тогда такие статьи так и начинать: Для 2% читателей iPhones.ru – Сторонние библиотеки и свободные лицензии. А то я открыл, загрузил… а тут..(

  2. THERAPYm3 avatar
    THERAPYm35 апреля 2011
    0

    ТАк а кто говорил что анлок вышел?

  3. ximan avatar
    ximan5 апреля 2011
    0

    Хороший пример информативной а главное полезной статьи. Спасибо.

  4. COBECTb avatar
    COBECTb5 апреля 2011
    0

    Автору спасибо за познавательную статью!

    Никита Дёнин avatar
    Никита Дёнин5 апреля 2011
    0

    @COBECTb, Надеюсь, она пригодится читателям.

    ximan avatar
    ximan5 апреля 2011
    0

    @Никита Дёнин, Да, да, даже очень.

  5. pasha.tunik avatar
    pasha.tunik5 апреля 2011
    0

    Отличная статья, спасибо

  6. finick95 avatar
    finick955 апреля 2011
    0

    То, что доктор прописал! Спасибо огромное!

  7. Garfeild avatar
    Garfeild5 апреля 2011
    0

    Есть еще фреймворки с лицензией Apache, например Three20.

    Никита Дёнин avatar
    Никита Дёнин5 апреля 2011
    0

    @Garfeild, Есть, но я уж не стал совсем заморачиваться.

    Spooky avatar
    Spooky5 апреля 2011
    0

    @Garfeild, и мне интересно

  8. ivansunset avatar
    ivansunset5 апреля 2011
    0

    @Никита Горяинов, было бы очень здорово, если бы на iphones сделали карму как на хабре и не было бы обсиралова залесского на целую страницу!

    iL0bster avatar
    iL0bster5 апреля 2011
    0

    @ivansunset, Появилась бы карма, появились бы и кармадрочеры. Да и минусование “все туда и я с ними” тоже немного поднадоели… Карму не надо, а вот рейтинг комментариев – шикарно было бы.

  9. artbasil avatar
    artbasil6 апреля 2011
    0

    Огромное спасибо автору! Молодец, так держать! :)
    Одного только не понял. При чем тут ограничение эппл в 5 устройств и GPL на VLC?
    На сколько я знаю есть ограничение в 5 компов с айтюнс на одном аккаунте. А разве есть ограничение на количество синхронизируемых айфонов, айподов и айпадов на один аккаунт пользователя?

    Никита Дёнин avatar
    Никита Дёнин6 апреля 2011
    0

    @artbasil, Там по ссылке подробно всё расписано, юрист FSF объяснял, в чём именно там проблема.

    iLokki avatar
    iLokki9 апреля 2011
    0

    @artbasil, +1
    Действительно не оч понятно.
    Пример: я открываю кабак в некой няшной стране и ору на весь мир, что, мол, “все бухло у меня ваще забесплатно!”. Но, например, виза в этот рай стоит нехреновых 1000 уе. Те кто внутри – пють и радаваются. Те кто снаружи – поднимают вой: “а как же так, а пачиму так дорага к вам заехать, да эта абман блин!!!111”
    Так что ли?
    И я одеваю воскресные красные штаны и иду к местным законотворцам качать права “а ннуна.. меняйте-ка все бырренька, шоб всем по визе дазатак!!!!”
    Смахивает на “в чужой монастырь, да со своим уставом”. С хрена ли монастырь Эппла должны заботить уставы чьих-то лицензий?

  10. Kessler avatar
    Kessler6 апреля 2011
    0

    Очень полезная статья! Огромное спасибо автору! Давно хотел в этом разобраться, но все руки не доходили до чтения полных документов, а здесь все сжато и понятно.

Вы должны авторизоваться или зарегистрироваться для комментирования.

Нашли орфографическую ошибку в новости?

Выделите ее мышью и нажмите Ctrl+Enter.

Как установить аватар в комментариях?

Ответ вот здесь