Журнал «Компьютерра» N 7 от - Журнал Компьютерра
13-Я КОМНАТА: Социальные вопросы из глубин ядра
Автор: Илья Щуров Voyager
Порой кажется, что крестьянин в эпоху крепостного права был свободнее, чем современный человек, даже живущий в самой демократичной из всех демократий. Окружающий нас мир, созданный за многие годы развития цивилизации, слишком сложен, чтобы отдельный индивид мог полностью разобраться в его устройстве. А без понимания этого устройства мы не можем принимать собственных обоснованных решений. Мы вынуждены доверять другим людям и полагаться на их мнение - а значит, попадать в зависимость от них. Мы зависим от СМИ, от рекламы, от юристов, от врачей, от учителей, от программистов…
Но если мы все-таки хотим стать чуточку свободнее, нам приходится разбираться в этом безумно сложном мире. Так разработчики свободного софта погружаются в тонкости законов об авторском праве, а обсуждение вроде бы чисто технического вопроса об использовании бинарных модулей в ядре Linux затрагивает гораздо более широкие социальные сферы.
Надо сказать, что бинарные модули - весьма болезненная тема в Linux-сообществе, консенсуса по которой нет. Речь вот о чем. Ядро Linux поддерживает систему подгружаемых модулей - в частности, драйверов разнообразных устройств, не включенных в ядро напрямую. Технически при подключении модуля он динамически линкуется с самим ядром, при этом для такой линковки исходный код модуля не требуется. Тем самым появляется возможность создавать проприетарные бинарные драйверы для Linux, чем с успехом пользуются многие поставщики железа. Однако существует мнение, что такие драйверы нарушают лицензию GPL.
Дело в том, что для компиляции модуля требуются определенные файлы из исходников ядра (содержащие описание интерфейсных функций, но не содержащие, простите за тавтологию, содержательного кода). Естественным образом возникает вопрос: являются ли такие модули производной работой (derived work) от ядра. Если да (как считают во Free Software Foundation), то на них GPL распространяется, а значит, их исходные коды тоже должны быть открыты. Подобная перспектива очень нравится многим разработчикам ядра (бинарные модули мало кто любит - как из этических соображений, так и из чисто прагматических - отлаживать работу системы с подобными вставками очень трудно), но, увы, воспринимается не слишком оптимистично производителями железа, считающими, что публикация кодов драйверов или даже подробных спецификаций раскроет их коммерческие секреты.
В конце прошлого года один из разработчиков предложил запретить проприетарные модули чисто техническими средствами. В ядро можно было бы внести код, проверяющий информацию о лицензии (что происходит и сейчас) и блокирующий не-GPL-модули. Просто и незамысловато.
Однако эта идея пришлась очень не по душе Линусу Торвальдсу, и его аргументация здесь весьма интересна. Ведь закон об авторском праве, на котором базируется GPL, вообще говоря, ограничивает распространение, но не использование программы. А технический контроль относился бы именно к использованию. К тому же вопрос о том, что является, а что не является производной работой, - достаточно тонкий. Понятно, что если драйвер разработан без использования содержательного кода ядра, то его статус как производной работы по меньшей мере неочевиден. Использование заголовочных файлов - тоже спорный критерий, поскольку это может быть классифицировано как fair use. Линус подчеркивает, что предлагаемые технические методы защиты GPL очень близки методам медиа-индустрии, по сути отрицающей fair use, продвигающей технические средства DRM и утверждающей, что переписать музыку с честно купленного компакт-диска на свой mp3-плеер - преступление.
Технические средства не должны подменять собой закон и здравый смысл, а разработчики и авторы не должны диктовать своей аудитории, как ей жить. И это часть той свободы, о которой мы говорим.