Илья Шилов
Меню
EN
Главная/Статьи/Статья

Статьи / Программы и права на разработки

GPLv3 в устройствах: исходный код, обновления и гарантии

Что нужно дать пользователям, какие изменения они смогут установить и за что вы готовы отвечать перед компанией, которая продаёт ваши устройства.

Представим, что ваша команда готовит обновление прошивки для центра управления умным домом. Прошивка управляет устройством, и в ней есть код под двумя открытыми лицензиями: GPLv3 и Apache 2.0. Такие лицензии разрешают использовать, менять и распространять код при соблюдении своих условий. Разработчики спрашивают, можно ли объединить этот код. Компания, которая продаёт ваши устройства, просит оплачивать расходы по любым претензиям покупателей. Даже если покупатели сами изменили прошивку.

Код под Apache 2.0 можно включить в проект под GPLv3. Но это ещё не означает, что вы готовы выпускать устройство и давать любые гарантии. Нужно проверить, какой исходный код и какие инструкции должны получить пользователи. Исходным кодом называют текст программы, с которым работают разработчики. Отдельно нужно договориться с этим партнёром по продажам о том, кто и за что отвечает.

Начните с программы, которую действительно передаёте

Совместимость зависит от направления
Можно включить

Это подтверждает Apache Software Foundation.

Как правило, нельзя

GPLv3 не позволяет распространять такую объединённую программу только на условиях Apache 2.0.

Несовместимы

Проверьте формулировку: условие GPLv2-or-later позволяет выбрать более позднюю версию GPL.

Apache Software Foundation: совместимость с GPL.

На одном устройстве могут находиться несколько самостоятельных программ. Если они независимы и их просто передают вместе, это может быть сборник, который раздел 5 GPLv3 называет aggregate. Само по себе нахождение на одном устройстве не делает их единой программой. Требования Apache тоже нужно соблюдать: приложить лицензию, отметить изменённые файлы и сохранить относящиеся к коду уведомления о правах и авторстве. В том числе нужно сохранить сведения из файла NOTICE, если такой файл есть и сведения относятся к вашей программе. GPLv3, раздел 5; Apache License 2.0, раздел 4.

Я попрошу разработчиков указать версию прошивки, перечислить использованный в ней код и лицензии, а также объяснить, как части программы работают вместе. Проверять нужно именно ту версию, которую получит пользователь.

Проверьте комплект исходного кода и его передачу

Если вы передаёте программу под GPLv3 не в виде исходного текста, а, например, как готовые файлы для установки, лицензия называет это объектным кодом. В таком случае нужно предоставить Corresponding Source одним из разрешённых способов. Это исходный код и служебные файлы, которые нужны, чтобы собрать, установить, запустить и изменить программу, кроме предусмотренных лицензией исключений. Комплект должен соответствовать переданной версии: ссылки на самый свежий код разработчиков может быть недостаточно. GPLv3, разделы 1 и 6.

Три способа из раздела 6 и их условия
6(b) Письменное предложение
Прилагается к устройству и действует не менее трёх лет и всё время, пока вы предлагаете запчасти или поддержку для этой модели.
6(c) Чужое предложение
Его можно передать дальше лишь изредка, не в коммерческих целях и только если программа пришла к вам вместе с ним.
6(d) Скачивание программы
Исходный код нужно предложить там же и так же, без доплаты. Он может лежать на другом сервере, в том числе чужом, если рядом с прошивкой есть понятное указание, где его найти. Вы отвечаете за то, чтобы код оставался доступным столько, сколько требует лицензия.

Раздел 6 допускает и другие способы, например исходный код на физическом носителе вместе с устройством (6(a)). GPLv3, раздел 6.

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

Обязанности партнёра по продажам зависят от того, что он делает, в какой стране работает и на каком основании копирует или распространяет программу. Если устройство уже продали на соответствующем рынке с согласия владельцев авторских прав, для его перепродажи обычно не нужно новое разрешение. Это правило называют исчерпанием права на распространение; нужно проверить, действует ли оно в вашей ситуации. Импорт устройств, установка или обновление прошивки и возможность скачать её требуют отдельной проверки. Директива ЕС о правовой охране компьютерных программ, статьи 4 и 5; UK IPO: исчерпание прав и параллельная торговля.

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

Проверьте установку изменений на устройстве

В GPLv3 есть особая категория User Product: потребительские товары и изделия, предназначенные или продаваемые для установки в жилом помещении. Устройство может относиться к ней, даже если его покупает компания. Если вы передаёте объектный код программы под GPLv3 внутри такого устройства, вместе с ним или специально для него, проверьте условия сделки. Когда она даёт получателю право владеть и пользоваться устройством постоянно или определённое время, раздел 6 требует передать вместе с исходным кодом инструкции и другие сведения, необходимые для установки и запуска изменённой программы. Лицензия называет их Installation Information. У этого правила есть исключение, о котором ниже. GPLv3, раздел 6.

Если нужны сведения для установки

Попросите разработчиков показать все шаги для изменённой версии на серийном устройстве.

  1. Разблокировать или подписать

    Если это требуется, какой ключ или инструкции получит владелец?

  2. Установить

    Как записать изменённую версию?

  3. Запустить

    Как устройство её выполняет?

Опубликованный исходный код ещё не показывает, что этот путь работает.

Исключение действует, если ни вы, ни кто-либо другой не может установить изменённую программу: например, код записан в постоянную память ROM без возможности перезаписи. Если вы можете установить изменённый код через беспроводное обновление, исключение не работает. Инструкции и другие сведения для установки должны также позволять изменённой программе продолжать работу: устройство не должно мешать ей только потому, что код изменили. Но это не гарантия того, что любые изменения будут работать правильно. GPLv3, раздел 6.

Устройство может проверять цифровую подпись, прежде чем разрешить установку и запуск программы. Важно разобраться, как работает эта проверка. Если для этого нужен ключ подписи и рабочего способа обойтись без него нет, ключ должен входить в сведения для установки. Организация Free Software Foundation, которая разработала GPL, поясняет: необходимый ключ нужно дать владельцу устройства по запросу, но публиковать его для всех не требуется. Если у каждого устройства свой ключ, достаточно дать ключ этого устройства. Обязанность раскрыть общий ключ всей линейки автоматически не возникает. FSF: ключи подписи.

Определите, что входит в поддержку

Сам по себе раздел 6 не обязывает вас поддерживать, обновлять или обслуживать по гарантии программу, которую изменил пользователь, либо устройство, которого коснулись эти изменения. Free Software Foundation (FSF) также поясняет, что гарантию можно ограничить неизменённой программой. Доступ к сети можно закрыть, если изменения серьёзно мешают её работе или нарушают правила обмена данными. Речь именно о технических правилах работы сети, а не о любых условиях, которые решит установить владелец сервиса. GPLv3, раздел 6; FSF: условия гарантии; FSF: правила работы сети.

Облачные функции тоже нужно проверить. FSF различает помощь при неполадках и интернет-сервисы, без которых устройство не работает. По её позиции, такие сервисы в общем случае должны оставаться доступными и после изменения программы, кроме описанных выше случаев нарушения работы сети. Некоторые устройства проходят удалённую проверку: сервер определяет, какая программа на них запущена. Это называют remote attestation. FSF считает, что сведения для установки должны позволять изменённой программе пройти такую проверку как допустимой. Уточните у разработчиков, не мешают ли облачные функции установке и работе изменённой программы. FSF: сервисы поддержки; FSF: удалённая проверка программы.

Затем проверьте ваши собственные обещания. Если вы дали партнёру по продажам гарантию без исключений, вам может потребоваться выполнять обязанности, к которым команда не готова и которые не учла в цене. Например, производственный дефект, не связанный с действиями покупателя, и поломка из-за прошивки, в которой покупатель отключил защиту, требуют разного подхода.

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

Есть и права покупателей, которые нельзя отменить договором. В Великобритании раздел 31 Consumer Rights Act 2015 запрещает снимать с себя или ограничивать некоторые виды ответственности перед потребителями. Это относится и к ответственности по разделу 16 за программу или другой цифровой контент в составе товара. Consumer Rights Act 2015, разделы 16 и 31.

В ЕС при продаже товаров с цифровыми элементами продавец должен обеспечить необходимые обновления, в том числе для безопасности, и сообщить о них покупателю. Срок зависит от ситуации. Если программу или цифровую услугу предоставляют разово, учитывают, на какой срок обновлений покупатель может разумно рассчитывать. Если их предоставляют непрерывно, директива связывает этот срок со сроком ответственности продавца. Закон конкретной страны может позволять продавцу потребовать возмещения потерь от того, кто передал ему товар и отвечает за проблему, либо от другого ответственного участника цепочки. Поэтому в договоре с партнёром нужно определить, кто готовит обновления, как долго, кто сообщает о них покупателям и кто оплачивает расходы. Директива 2019/771, статьи 7(3), 10 и 18.

Что согласовать с партнёром по продажам

Когда понятно, как работает устройство и что команда может обеспечить, я проверю пять вопросов в договоре:

Требования партнёра по продажам: что уточнить, прежде чем соглашаться.
Что просит партнёрЧто уточнить до согласования
Гарантию на каждое устройство независимо от измененийНа какие дефекты и версии программы действует гарантия, как долго, как вы устраняете проблемы и когда вправе отказать с учётом причины поломки.
Возмещение расходов по любой претензии покупателяКакие расходы вы оплачиваете, кто проверяет причину проблемы, общается с покупателем и отвечает на претензию. Отдельно договоритесь о срочных действиях, например о ремонте или возврате денег, если этого требует закон, и о мерах безопасности.
Исключительные права на всю прошивку и будущие разработкиКакие права принадлежат вам и могут быть переданы, какой код используется по чужой лицензии и что вы разрабатываете специально для партнёра. Права, которые пользователи уже получили по GPL, сохраняются: раздел 10 запрещает дополнительные ограничения на их использование.
Неограниченную ответственность за любое нарушение open-source лицензииЧто именно может пойти не так, как это исправить и за что разумно отвечать каждой стороне. Отдельно проверьте, какую ответственность нельзя ограничить по закону.
Обновления на весь срок службы продуктаКакие обновления вы выпускаете и как долго, как о них узнают партнёр и покупатели и кто оплачивает расходы.

Даже если вы передали партнёру авторские права на собственный код, пользователи сохраняют права, которые уже получили по GPL. Ограничение вашей ответственности в договоре тоже не решает всё: оно не исправляет нарушение лицензии и не снимает претензию владельца чужого кода. GPLv3, разделы 2 и 10.

Отдельно проверьте изменения радиосвязи

Если обновление меняет работу радиосвязи, уточните у разработчиков, что именно изменилось. Проверьте, действуют ли для новой версии имеющиеся результаты испытаний и документы о соответствии требованиям. В частности, важны частоты, мощность, страны использования и настройки, доступные пользователю.

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

Что нужно перед выпуском

Запись перед выпуском

  • Версия прошивки и использованный код
  • Требования лицензий
  • Передача исходного кода и проверенный способ установки изменений, если он нужен
  • Нерешённые вопросы о требованиях к устройству
  • Договор с партнёром: поддержка и способы решения проблем, которые вы действительно можете обеспечить

Разработчики и отдел продаж должны понимать, что готово к выпуску, что ещё нужно решить и кто этим занимается.

О проверке договора в целом читайте в статье об open source и обещаниях клиентам. Помогаю компаниям разобраться в правах на программу и обещаниях клиентам в рамках проверки прав на код.