Всем известно, что автомобильное программное обеспечение Tesla создано на базе open source проектов, а именно на операционной системе Linux под лицензией GPL. Эта лицензия требует у разработчиков производных программ обязательно публиковать свой исходный код. Иначе это превращается в улицу с односторонним движением, когда разрешено только брать, но не отдавать. Но именно так до недавнего времени поступала Tesla.

В мае 2018 года процесс сдвинулся с мёртвой точки: Tesla опубликовала значительную часть кода софтверного релиза Model S/X 2018.12. Это системный образ платформы Tesla Autopilot, системный код для аппаратного обеспечения и код информационно-развлекательной системы на базе Nvidia Tegra, которая работает в автомобиле.
Репозитории на Github:

https://github.com/teslamotors/buildroot
https://github.com/teslamotors/linux
Фонд Software Freedom Conservancy поздравил компанию с «первым публичным шагом на пути к выполнению условий GPL». Фонд отметил, что редко публично рассказывает о специфике текущих разбирательств с корпорациями, нарушающими условия лицензии. Обычно нарушители просят соблюдать конфиденциальность и не выносить вопрос на публику, чтобы не подвергаться общественному порицанию. Очень редко компания открыто и публично признаёт факты нарушений и публично начинает их исправлять. Так несколько лет назад поступила Samsung, а сейчас — Tesla.

Переговоры с Tesla велись с июня 2013 года, когда появились многочисленные сообщения о нарушении GPL в автомобиле Tesla Model S. Покупателям автомобиля была поставлены автомобили с компьютерной системой, которая работала на Linux и BusyBox. При этом покупатели не получили никаких исходников.

Кроме Tesla, одновременно велись переговоры с поставщиками программного обеспечения для Tesla — Nvidia и Parrot по раскрытию полных соответствующих исходников (complete, corresponding source, CCS) для всех бинарных файлов под GPL, найденных в Tesla Model S. В частности, компании Nvidia принадлежит найденный в автомобиле бинарник 2.15.50.img.bz2, а компании Parrot — бинарник firmware_2.12.126. Первый из них, вероятно, соответствует так называемой платформе Tesla Autopilot 2.

На протяжении этого времени Tesla предоставила Фонду несколько CCS-кандидатов, которые не были ни полными, ни соответствующими бинарникам. Соответственно, специалисты Software Freedom Conservancy помогали советами Tesla, как исправить ситуацию.

По условиям CCS, исходники должны соответствовать двум условиям:

  1. Из них можно скомпилировать бинарник, в точности совпадающий с бинарником в автомобиле.
  2. Пользователь должен иметь возможность заменить бинарник в автомобиле на свой.

Казалось бы, мелкие формальности, но очень важно их обязательно соблюдать.

Важно понимать, что этот этап — приведение исходников в полное соответствие — самый длительный. Может охватить ложная радость, что от отсутствия исходников мы перешли к наличию. Но нет, это ещё далеко не всё. Очень важно соблюдение всех требований GPL.

Однако в мае 2018 года Tesla решила выбрать неожиданный курс — и сама опубликовала на Github исходники, которые не полностью соответствуют CCS. Фонд Software Freedom Conservancy приветствует этот шаг как публичное признание своих нарушений, однако напоминает о необходимости привести всё-таки код в соответствующий вид. С этой целью создан публичный лист рассылки для обсуждения релиза от Tesla. Первое же сообщение в списке — анализ CCS-кандидата, который опубликован на Github и в реальности является седьмым по счёту CCS-кандидатом.

В отчёте говорится, что опубликованные исходники только частично содержат код от Nvidia (отсутствуют исходники файлов 88w8688_uap.ko и 88w8688_uap_mlan.ko из Tesla Model S), а код Parrot полностью отсутствует.

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

Комментарии (44)


  1. ildarz
    01.06.2018 16:22

    любой владелец машины Tesla сможет скачать, скомпилировать и установить на свою машину свежую версию автопилота или другого софта. Вот это будет полное соответствие условиям GPL.

    Надеюсь, при приведении в "соответствие условиям GPL" там все-таки поставят защиту, позволяющую пользователю "заменять" бинарник только на точно такой же.


    1. Free_ze
      01.06.2018 16:37

      Так «поставят защиту» или «предоставят возможность»?


    1. zedroid
      01.06.2018 16:57
      +1

      Это называется «Тивоизация» и запрещено по GPLv3.


      1. ildarz
        01.06.2018 17:35
        +1

        А тут надо смотреть не только на GPL, но и на законодательство, регулирующее сферу автомобилестроения (и безопасность движения). У меня есть сомнения, что предоставление любому пользователю права модифицировать критически важные для безопасности движения системы будет вполне соответствовать этим законам, и, если так, то не факт, что Теслу обяжут выполнять все требования GPL.


        1. Sabubu
          01.06.2018 22:00

          У пользователя и так есть возможность распилить карбюратор например. Раскрытие исходников != нарушение безопасности.


          1. ildarz
            01.06.2018 23:15
            +2

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


          1. panchmp
            02.06.2018 01:51

            Sabubu в Тесле нет карбюратора :)


        1. x86d0cent
          01.06.2018 23:10

          У меня есть сомнения, что предоставление любому пользователю права модифицировать критически важные для безопасности движения системы будет вполне соответствовать этим законам
          Тут надо разделять предоставление пользователю возможности модифицировать систему и предоставление права эксплуатировать на дорогах общего пользования автомобиль, модифицированный определенным образом. GPL — про первое. Возможно, после определенных модификаций авомобиль нельзя будет использовать на дорогах общего пользования (но можно будет использовать на закрытых треках). Но GPL тут уже ни при чем.


          1. ildarz
            01.06.2018 23:24

            GPL тут еще как причем, потому что именно она требует самой возможности модификации пользователем. И подвергаться риску встретить на дороге автомобиль с неизвестно кем и как модифицированным ПО управления чисто ради соблюдения формальностей GPL — это как-то явно чересчур. По-моему, тут явная правовая коллизия. Не знаю, как в США и других странах, но в России она разрешается путем установления явного приоритета законодательства над лиц. соглашениями — можно не соблюдать их в части, противоречащей закону.


            1. x86d0cent
              03.06.2018 23:11

              Вы, похоже, меня не поняли. Да, GPL требует технической возможности модификации пользователем. Но GPL ничего не говорит о том, что автомобиль после этой модификации должен быть допущен для участия в дорожном движении по дорогам общего пользования. Так что никакой правовой коллизии тут нет.
              Наличие запрета на эксплуатацию автомобилей с модифицированной прошивкой на дорогах общего пользования не будет противоречить GPL.
              Т.е., грубо говоря, производитель должен обеспечить возможность модификации, но если после этих модификаций законодательно пользователю будет разрешено ездить на машине только на закрытом треке — это уже проблемы пользователя.


              1. khim
                04.06.2018 00:35

                Т.е., грубо говоря, производитель должен обеспечить возможность модификации, но если после этих модификаций законодательно пользователю будет разрешено ездить на машине только на закрытом треке — это уже проблемы пользователя.
                Более того, чтобы не было сомнений в GPLv3 это этом сказано явно:The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network.

                Road networks — это тоже network, так что запрет выежать на неё с модифицированной Теслой — вполне нормальное явление.

                Можно сделать, как в Chromebook'ах старых (в новых от этого отказались, и, как мне кажется, зря): чтобы поставить модифицированную, неподписанную, прошивку — нужно открутить гайку. Если закрутить её обратно — система остановится нафиг. Так что рассказывать ГИБДДшнику про то, что у вас нормальная, стоковая, прошивка, когда на самом деле у вас кастом — не получится.


      1. BupycNet
        01.06.2018 18:18

        А если человек возьмет и внесет в автопилот изменения, которые будут например игнорировать велосипедистов, или изменения, которые будут делать более агрессивные маневры, которые могут повлечь за собой ДТП? Новость о таком ДТП с автопилотом обружит акции теслы, и всем будет потом наплевать, что пользователь сам себе автопилот перепрошил, или ему «улучшения» сделали в каком нибудь неофициальном сервисе.
        Как по мне — системы управления автомобилем должны проходить сертификацию и проверку на правильность работы — любые изменения автопилота должны быть подписаны ключем авторизирующего сервиса. Он должен со своей стороны проводить какие-нибудь автотесты на прохождение различных ситуаций с использованием текущего кода автопилота.
        Это важно т.к. баг в автопилоте, или какой нить хотпатч без достоверных тестов может повлечь за собой смерть людей.


        1. mickvav
          01.06.2018 19:57
          +2

          Я думаю, что для систем с автопилотом обязательным элементом техосмотра для страховки должна быть проверка контрольных сумм установленных бинарников/подписей авторизованных сервисов/whatever. На LADA Kalina тоже никто не мешает установить движок от ракеты, но если вы на такой ладе в кого прилетите — ответственность будет на вас, как на владельце. Так и тут — запрещать перепрошивку мозга машины техническими средствами — бессмысленно, все равно найдут, куда подпаяться, если уж очень захотят. А вот контролировать административными мерами — необходимо, чтобы понимать, на ком реальная ответственность.


          1. Andronas
            02.06.2018 12:29

            Скажу что давно уже прошивки в авто модифицируют в гаражных автосервисах, очень давно.


            1. mickvav
              04.06.2018 10:29

              Да я в курсе. И не считаю, что это — правильно. Другое дело, что интерфейс проверки прошивки должен быть (по идее) доступен не только инспектору на ТО но и водителю. Чтобы можно было легко удостовериться, что за прошивка на машине с пробегом или на арендной машине, например — стоковая или подписаная вменяемой конторой, а не залита умельцем-кул-хацкером. И что список железа, подключенного к шине, соответствует заявленному производителем прошивки.


        1. andrewdrone
          03.06.2018 10:11

          Тут как раз намедни наши киевские умельцы хвастались что научились ограничение по скорости автопилота обходить. Кто знает где теперь баг вылезет...


      1. the_turkale_cat
        02.06.2018 08:42

        Я думаю, сделают следующее или подобное:
        Бинарники прошивки будут подписаны ключами производителя, свои прошивки тоже можно будет заливать, но с ключами пользователя, которые будут отдавать при подписании документа о снятии всякой ответственности с компании-производителя при наличии внутри устройства прошивки, залитой с пользовательскими ключами.


    1. Alexus819
      01.06.2018 18:04

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


      1. Free_ze
        01.06.2018 18:35
        +1

        лишившись какой нить гарантии в авто с таким ценником, ради чего?

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



      1. panchmp
        02.06.2018 01:55

        Хотя слышал что пробег на одной зарядке ограничен у нее программно

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


        1. Free_ze
          02.06.2018 01:59

          Про полный разряд речи не идет. Эту опцию можно докупить постфактум и «по воздуху» прокачать своё авто.


          1. sevikl
            04.06.2018 13:02

            Вам пришло время актуализировать свои знания. model s 60 убрали из конфигураторов достаточно давно. а вот что с теми, кто купил эту комплектацию ранее — не знаю. вероятно разблокировали молча.


  1. 0xd34df00d
    01.06.2018 17:32
    +2

    Эта лицензия требует у разработчиков производных программ обязательно публиковать свой исходный код.

    Не совсем так. Она требует отдавать исходный код вместе со скомпилированными бинарями, что не совсем то же.


    1. Free_ze
      01.06.2018 17:58

      Если из исходного кода можно собрать необходимые бинари, то предоставлять их не нужно. Или вы про зависимости?


      1. 0xd34df00d
        01.06.2018 18:02
        +2

        Акцент на отдавать исходный код.

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

        И потом, конечно, никто не помешает уже вам их распространять открыто и публично под той же GPL.


        1. Free_ze
          01.06.2018 18:16
          -1

          Сейчас говорите про то, что придется открывать всё, что непосредственно касается GPLнутых компонентов. Только зачем вы вообще про бинарники упоминали до этого?


          1. 0xd34df00d
            01.06.2018 18:52
            +5

            Потому что открывать нужно только получателям бинарников.

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

            Аналогично, если вы работаете в компании и с использованием GPL-кода сделали какую-то утилиту для внутреннего использования, то вы снова ничего никому не должны открывать (технически, кроме пользователей этой утилиты в вашей компании).

            Аналогично, если вы с использованием GPL-кода сделали веб-сервис и пользователю отдаёте не бинарник с ним, а данные по условному HTTP, то вы снова ничего не должны никому открывать-отдавать.


        1. khim
          01.06.2018 19:36

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

          Вы смешали пункты 3a) и 3b).

          Пункт 3a предполагает одновременное распространение бинарников и исходников… ну там флешка в кармашке на двери Теслы или ещё как-нибудь. Если вы одновременно с бинарниками дали покупатели и исходники тоже — то всё, ваши обязательства исполнены, выкладывать их на web-сервер уже не нужно.

          А вот если вы этого не сделали — тогда всё, вариант 3a) для вас закрыт. После этого остаётся только вариант 3b) — written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code.

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

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


    1. khim
      01.06.2018 19:28

      Не ссорьтесь, горячие финские парни. Вы оба правы.

      На самом деле GPL даёт возможность выдавать одновременно и исходники и бинарники.

      Однако если этого не было сделано (а этого не было сделано, флешка с исходниками в комплекте Теслы отсуствует), то вот после этого уже остаётся только один вариант — опубликовать исходники и сделать их доступными для any third party, for a charge no more than your cost of physically performing source distribution.


      1. 0xd34df00d
        01.06.2018 19:33

        то вот после этого уже остаётся только один вариант — опубликовать исходники и сделать их доступными для any third party

        Это противоречит моей модели. Откуда следует необходимость сделать исходники доступными именно для всех?

        Я ради интереса открыл текст и сделал Ctrl+F по «any third party», и нашёл только одно упоминание, не совпадающее с вашим английским кусочком и вроде как имеющее немного другой смысл.


        1. khim
          01.06.2018 19:42

          Я ради интереса открыл текст и сделал Ctrl+F по «any third party», и нашёл только одно упоминание, не совпадающее с вашим английским кусочком и вроде как имеющее немного другой смысл.
          Вы открыли текст другой лицензии и там, действительно, другие требования.

          Это противоречит моей модели. Откуда следует необходимость сделать исходники доступными именно для всех?
          Из текста лицензии, однако. В обновлённой версии, действительно, речь идёт об anyone who possesses the object code. В старой версии — этого требования не было, речь шла об any third party. А ядро Linux распространяется только под GPLv2, третья версия к нему неприменима.


          1. 0xd34df00d
            01.06.2018 19:44

            А, я думал, GPL-3 является строгим надмножеством GPL-2 по части свободы кода, и чинила всякие баги вроде тивоизации и тому подобного. Да, вы правы.


            1. khim
              01.06.2018 19:50

              Это тоже было сочтено багом, который стоит пофиксить. Потому что с GPLv2 получается что есть я дал бинарник своему соседу дяде Васе, то всё — весь Китай может требовать от меня исходники. Да у меня CD-ROM сгорит столько болванок нарезать!

              Но этот багфикс, как и другие, были отвергнуты Linux-сообществом (я здесь о разработчиках ядра), так что у Теслы нет выбора…


  1. Slippy
    01.06.2018 18:04
    +1

    Если водитель машинки сможет сам «пропатчить» код и залить его в машину, то потом точно будет хай «Tesla снова стала причиной аварии!!». И пофиг что водитель сам изменил прошивку, об этом скромненько напишут уже после экспертизы, а хай за это время будет только набирать обороты. Печально все это(


    1. Free_ze
      01.06.2018 18:22
      +1

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


      1. Andy_Big
        01.06.2018 20:36

        Собственно, широко распространенный чип-тюнинг именно это и делает :)


  1. xztau
    01.06.2018 19:16

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

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


  1. Sergey_datex
    01.06.2018 22:45

    Я не знаток GPL, но предположу, что залить в теслу, да и в более-менее любую ответственную железку произвольную прошивку без валидной цифровой подписи нельзя. Поэтому публикация исходников, даже если это CCS — позволит откомпилировать код, но не подписать его. Так по GPL можно?


    1. khim
      01.06.2018 22:53

      GPLv3 как раз была призвана закрыть эту лазейку. Не знаю — есть ли у Теслы GPLv3 компоненты.


    1. Free_ze
      02.06.2018 01:55

      Исходники валидатора так же будут в свободном доступе ?\_(?)_/?


  1. Goodkat
    02.06.2018 00:18

    Эта лицензия требует у разработчиков производных программ обязательно публиковать свой исходный код.
    Вот из-за таких, как вы, бизнес и чурается GPL.
    GPLv3 (какую, кстати, версию вы имеете в виду?) НЕ ТРЕБУЕТ ПУБЛИКОВАТЬ исходный код.


  1. Max-812
    03.06.2018 10:10

    Да не дай бог, чтобы любой пользователь машин с автопилотом мог ставить на них свой софт. Понятно, что по условиям GPL этого будут добиваться, но с учетом возможных последствий — не дай бог. Ибо на 100 случаев вмешательства 99 будут произведены без понимания последствий и надлежащего тестирования.

    И даже если потом Tesla докажет, что софт был не их — отмыться будет крайне сложно.


    1. d-stream
      03.06.2018 16:21

      Именно поэтому автопроизводители очень даже неприветствуют открытость…
      Притом убившийся об столб джигит во всех сми фигурирует именно как "… на автомобиле марки XXX", а не «занизивший свой авто в подсобке продуктового рынка ZZZ и установивший красные тормозные колодки Берембо-Спорт в самодельные березовые суппорта»…