Проприетарные разработки глубоко проникли в код многих приложений и сервисов. В сложных системах избавиться от них очень непросто. Зачастую для этого используются обходные пути, которые скорее являются «костылями». В ядре Linux для работы с проприетарными драйверами используются драйверы-прослойки, которые предназначены практически исключительно для трансляции обращений драйвера к ядру. У прослойки код открытый, так что проблемы с GPL-лицензией нет, формальности соблюдены.
Но у такого подхода немало противников. Один из них — Кристоф Хелвиг (Christoph Hellwig), разработчик ядра Linux. Ранее он был членом управляющего технического комитета организации Linux Foundation. Также он выступал истцом в судебном процессе с VMware. Хелвиг предложил значительно ужесточить защиту от связывания проприетарных драйверов с компонентами ядра Linux.
Для этого он предлагает использовать патчи, которые дают возможность наследовать флаги, связанные с экспортом GPL-символов. В этом случае наследуется флаг TAINT_PROPRIETARY_MODULE во всех модулях, импортирующих символы из модулей с данным флагом. Суть защиты в том, что если драйвер-прослойка будет импортировать что-то не из GPL-модуля, то GPL-модуль унаследует метку TAINT_PROPRIETARY_MODULE и не сможет обращаться к компонентам ядра, доступным только для GPL-модулей.
Источник: 3dnews
В ходе обсуждения предложили и обратную блокировку. Так, если модуль импортирует EXPORT_SYMBOL_GPL, то в этом случае любые экспортируемые модулем символы не должны импортироваться теми модулями, которые не заявляют о совместимости с GPL. Предложение было сделано не Хелвигом, а другим участником дискуссии. Но Хелвиг согласился с ним. Скорее всего, Линус Торвальдс не пропустит это предложение, поскольку оно приведет к блокированию ряда подсистем ядра для проприетарных драйверов.
Весь сыр-бор разгорелся после публикации инженера из Facebook патчей с реализацией подсистемы netgpu. Эта подсистема дает возможность организовать прямой обмен данными между сетевой картой и GPU с выполнением обработки протокола силами CPU. На базе предложения можно сделать общую реализацию RDMA для обмена данными между GPU или внешней CXД. Многие разработчики выразили недовольство подобными нововведениями, поскольку реализация доступна лишь для проприетарных драйверов NVIDIA через предоставляемую этими драйверами прослойку. Хелвиг даже назвал разработчика троллем.
В свою очередь, автор патча возразил, что подсистема не привязана к NVIDIA, так что ее поддержка может быть обеспечена для программных интерфейсов к GPU AMD и Intel. В конечном итоге продвижение netgpu в ядре признали невозможным до появления рабочей поддержки на основе таких свободных драйверов, как AMDGPU, Intel i915 или Nouveau.
interprise
Под линукс и так драйверов под кучу устройств просто нету, а что есть работает через раз, так давайте еще вставим такие палки в колеса, что они исчезнут совсем. Выбирая между лишится рынка линукс или открыть драйвера, условная нвидия скорее всего выберет просто отказаться или в крайнем случае выпустить открытые упрощенные драйвера. Таким образом эта вся псевдо открытость пойдет только во вред обычным пользователям.
Alex_ME
Вы так думаете? Львиная доля рынка NVidia — датацентры, где, в основном, Linux.
anonymous
Ну так для датацентров f*-you-NVidia и напишет опенсорс драйвера на отвали, c функционалом только для датаценторв. Пока Линукс не занял большую часть рынка, так делать, нельзя, увы. Как бы ни хотелось…
Надо бы добиться законодательства, что если делаешь и продаёшь железо, то обязан бесплатно предоставить покупателю все имеющиеся API, описания интерфейсов и т.п., иначе недобросовестная конкуренция.
dead_moros
0xd34df00d
Не только схему, но и исходники на vhdl или verilog или что там. А то это тивоизация какая-то.
Fenzales
Ядро лицензировано под GPL-2, так что не судьба :)
balamutang
В Китае по-моему так и сделано, в смысле есть такой закон. Хочешь производить там — выкладывай исходники. Только это слабо помогает, альфаверсии прототипов драйверов, написанные задней ногой за пару дней сами понимаете как работают.
quwy
Аналогичная практика была в свое время внедрена СССР. Пришло кому-то наверху в голову озарение, что разные НИИ по сто раз переизобретают одно и то же, и надо бы это как-то организовать. В итоге любое промышленное ПО перед внедрением должно было «публиковаться» в некоем государственном «репозитарии». На первый взгляд идея здравая, но реализация была как всегда. НИИ отправляли свои «коммиты» на отвяжись, неработоспособными обрывками, только первую версию без последующих исправлений, без документации, лишь бы галочку поставить, короче. Китай весело идет по тем же граблям.
anonymous
Не надо передёргивать. Схему — нет, чтоб не копировали. А чем передача API может нанести ущёрб вендору?
fougasse
Как минимум- затратами на поддержу актуальности.
Плюс возникает проблема полноты АПИ, кто решает, что входит, а что нет?
Но гораздо большая сложность — поддержка совместимости. Пока АПИ не публичное — это проблема вендорская и только вендорская.
anonymous
Во-первых, это лукавство — у гигантов точно хватит ресурсов, чтобы поддерживать документацию в актуальном состоянии. Но если нет, можно тогда просто потребовать чтобы код драйверов был полностью открытым. Пиратить их не будут, т.к. они бесполезны без купленного у вендора аппаратного устройства.
dth_apostle
ps. как же я вас, мамкиных эспроприаторов, терпеть не могу — только ради возможности «пнуть» лишний раз готов минусов еще подсобрать.
stepuncius
Зато могут рассказать конкурентом многое об аппаратной реализации…
А её в том или ином виде «пиратить» — вполне реально.
Moskus
О, monsieur определенно знает много о том, как весело и легко поддерживать разработку того, что содержит патентованные решения, составляющие интеллектуальную собственность и коммерческое преимущество разработчика. Когда каждый каждый коммит должен проверяться на предмет того, попадает ли он в эту категорию. Плюс, есть еще такие веселые вещи, как функционал, определяемый драйвером (как у nVidia Quadro, которые не отличаются от не-инженерных устройств практически ни чем). Если nVidia откроет код драйверов, никто не будет платить дополнительные деньги за Quadro — эту историю мы уже проходили в девяностых, когда драйвер можно было патчить, приучая его к другому ID, и конвертировать GeForce в Quadro и обратно простой перезагрузкой системы (лично так делал ради работы в 3D Max). И это только пара примеров.
myz0ne
А сейчас что мешает? Ладно под виндой может подпись драйверов помешать, а под линухом то что?
Moskus
Под Linux это лишено практического смысла, потому что большинство софта, который требует Quadro — не под Linux. PTC Creo, Mastercam и т.п.
Что же касается прямого ответа на вопрос — я несколько отстал от этого вопроса, потому что сам не на столько владею программированием, чтобы пытаться самостоятельно ковыряться, а раскопанные кем-то решения перестали появляться несколько лет назад, когда карты перестали дифференцироваться по набору номиналов резисторов, распаянных на плате. Т.е. сначала было возможно патчить драйвер, потом это стало невозможно, но осталось возможно патчить карту путем перепайки резисторов (навсегда). Информацию о том, как решить эту проблему с современными картами (где-то после 2016) мне найти не удавалось, допускаю, конечно, что не очень хорошо искал. Слышал, впрочем, что есть какие-то новые наработки с патчем VGPU-инфраструктуры.
0xd34df00d
Это не передёргивание. Если я владею железкой, то я имею право менять её по своему усмотрению, покуда это не приносит вреда окружающим, разве нет? А отсутствие схем ограничивает меня в этом праве.
anonymous
Это к вопросу о праве на ремонт тракторов — отдельная большая тема. Боритесь.
0xd34df00d
Так я как раз и предлагаю объединить усилия и бороться одновременно и за открытые драйвера, и за открытые схемы.
mistergrim
В праве оно вас никак не ограничивает.
0xd34df00d
Как и отсутствие открытого API железки.
oisee
Ну, раньше к телевизорам и прочим бытовым приборам принципиальная схема в комплекте шла.
Alex_ME
Не думаю, что linux-компьюнити сможет, без поддержки со стороны NVidia, написать production-ready драйвер, потому что NVidia (насколько я помню) так и не открыла спецификации по управлению питанием, без которых о какой-то нормальной производительности можно забыть.
anonymous
Значит, надо на законодательном уровне требовать, чтобы все такие спецификации были открыты.
0xd34df00d
Зачем?
Вот у нас уже есть опенсорсные AMD'шные драйвера. Если бы открытость была так важна, то это бы означало, что AMD бы захватило соответствующий рынок, разве нет?
alex1478
Процесс это не быстрый. Есть у меня старая карта nvidia, она меня пока полностью устраивает. Но при обновлении в приоритете буду смотреть AMD'шные карты, как раз из-за открытых драйверов.
0xd34df00d
Ну и отлично! Значит, и без законов всё исправится, разве нет?
alex1478
Мне боком до выше озвученного закона, я говорю что ситуация:
— процесс не быстрый.inferrna
Не думаю, что NVidia без поддержки коммьюнити сможет написать production-ready операционку для эксплуатации своих железок. Она, конечно, может уйти в проприетарь и *BSD, но так будет даже веселее.
quwy
А нафига ей это делать? Есть винда, и она для основной массы ее коньюмерских продуктов подходит идеально.
am-habr
Работая с производителями железа, у меня складывается следующее впечатление.
— Создают версию 1 железа с говнософтом, который они «поддерживают». Продают.
— Клиенты рвут одно место, чтобы описать и доказать баги, потому что вендор сам их воспроизвести не может.
— Спустя полгода вендор выпускает патч и гордо бьёт себя в грудь.
— Спустя два года больше не фиксит версию 1, но выпускает версию железа 2.
— Версия 1 могла бы еще 5 лет работать, но есть уже «новое», без «старых» багов.
Производителям нужно развиваться, зарабатывать деньги. Закрытое ПО — это их ключ.
Хорошее ПО — не главная цель, поэтому оно у них плохое, у всех.
Причиной тому является силосное (ограниченное) мышление, подвержено ему целое поколение людей.
Но, в конце концов, в свободном мире каждый вправе сам выбирать лицензию на своё ПО. И не обязательно другим должно быть от этого ПО хорошо. Всё определяет цель.
Linus Torvalds: Disagreement With Free Software Foundation
Linus Torvalds says GPL v3 violates everything that GPLv2 stood for
Линус как-то сказал в одном интервью:
I suspect — and I may not be right — but when it comes to things like DRM or licensing, people get really very excited about them. People have very strong opinions.
I have very strong opinions and they happen to be for different reasons than many other people.
Paskin
Эта «подсистема» — как раз зачаток NVidia OS. Они для этого и Меланокс купили — хотят сделать «сетевой GPU», в который нужно только загрузить модель или алгоритм — и стримить туда данные. А CPU будут нужны только для мониторинга и конфигурации — на них поставят какой-нибудь «докеро-запускатель» и все.
Alex_ME
Intel Xeon Phi на новый лад?
yvm
Лучше я куплю железку не у самой крутой фирмы, но открывшей спеки.
stepuncius
Насколько я понимаю — сейчас Nvidia, почти монополист в области Deep Learning железок. ( возможно, это изменится когда допилят транспилятор CUDA -> openCL или когда появится единый стандарт TPU)
anonymous
none7
Для NVidia ещё есть ЦОДы, но кроме CUDA там быть ничего не должно, иначе оно может замедлить CUDA, то есть растрачивать потенциал железа. А если сервер нужен только под CUDA, то зачем ему огромный Linux?
stepuncius
Датацентры, в которых по лицензии на драйвер нельзя ставить игровые видеокарты — очень вкусный кусок пирога.
Видимо, отказаться от Linux — Nvidia не сможет…
… Равно, как и открыть драйвера, ибо это по-сути откроет аппаратную реализацию CUDA.
Боюсь, если протащить такой патч Nvidia просто форкнет ядро. ( дальше 2 варианта: подтягивать новые версии и иметь патч для удаления флага EXPORT_SYMBOL_GPL, если разработчики ядра запретят это модификацией лицензии — нвидия просто заморозит версию и будет в облаках вариант взять сервер с GPU Nvidia и старым ядром или с новым ядром и без GPU, лет на 5 текущего ядра с небольшими патчами от Nvidia и тех, кто ей очень активно пользуется — хватит, а потом, думаю и так они не смогут вечно держать рынок серверного Deep Learning)
P.S. И ещё не факт, что в случае форка ядра и лицензионного запрета на удаление флага EXPORT_SYMBOL_GPL — победит ветка ядра с флагом. ( т.к. многие тех. гиганты, которые пишут немалую часть ядра могут перейти в форк без флага, т.к. сами могут хотеть втыкать и пользоваться проприератными дровами, например, спорный патч написал разработчик из facebook, которому очень нужен Deep Learning)
neit_kas
На сколько помню, не смогут. По GPL v2 они считай сами себе сделали неприятный лицензионный конфуз. На сколько помню, для правки лицензии нужно согласие всех тех, кто участвовал в разработке. Попробуй их всех сейчас найди. Кстати, поэтому не могут и на GPL v3 перейти.
Fenzales
Scondo
Читайте текст GPL — на GPL 3 они могут перейти в любой момент. Принятие GPL означает согласие с возможным перелицензированием под будущими версиями GPL.