Свободная аппаратура и свободные аппаратные разработки
Ричард СтолменДо какой степени идеи свободных программ распространяются на аппаратуру? Обязаны ли мы делать свои чертежи аппаратуры свободными точно так же, как мы обязаны делать свободными свои программы? Требует ли охрана нашей свободы отказа от аппаратуры, сделанной по несвободным чертежам?
Определения
Свободные программы определяются свободой, а не стоимостью; грубо говоря, это значит, что пользователи вольны применять программы, копировать и перераспространять их, с изменениями и без них. Более точно определение формулируется в терминах четырех важнейших свобод. Чтобы подчеркнуть, что “свободный” относится к свободе, а не к стоимости, в английской речи мы часто сопровождаем слово “free” французским или испанским словом “libre”.
Если применить то же понятие напрямую к аппаратуре, свободная аппаратура будет означать аппаратуру, которую пользователи вольны применять, копировать и перераспространять с изменениями или без них. Однако не существует устройств для копирования аппаратуры, кроме ключей, ДНК и внешней формы пластмассовых объектов. Аппаратура по большей части делается на производстве по того или иного рода чертежам. Чертежи появляются до аппаратуры.
Таким образом, на самом деле нам нужно представление о свободных чертежах аппаратуры. Это просто: это значит, что чертежи допускают, чтобы пользователи применяли их (т.е. изготовляли по ним аппаратуру), копировали и перераспространяли их с изменениями или без них. Чертежи должны предоставлять те же четыре свободы, которыми определяются свободные программы.
Тогда мы можем говорить об аппаратуре, собранной по свободным чертежам, как о “свободной аппаратуре”, но выражение “аппаратура со свободными чертежами” понятнее, поскольку позволяет избежать возможного непонимания.
Те, кто впервые встречаются с понятием свободной программы, часто думают, что оно означает, что копию можно получить бесплатно. Многие свободные программы доступны по нулевой цене, потому что получить копию по сети ничего не стоит, но в данном случае “свободный” означает не это. (На самом деле некоторые программы-шпионы, такие как Flash Player и Angry Birds, бесплатны, хотя они не свободны.)
Для аппаратуры эта путаница обычно идет в другом направлении; производство аппаратуры стоит денег, так что выпущенная в коммерческих целях аппаратура не будет бесплатна (если только это не приложение к чему-нибудь и не приманка для покупателей), но это не мешает ее чертежам быть свободными. То, что вы распечатываете на своем трехмерном принтере, может быть очень дешево в производстве, но не совсем бесплатно, потому что расходные материалы будут, как правило, сколько-то стоить. С точки зрения этики вопрос свободы полностью перекрывает вопрос стоимости, поскольку устройство, отказывающее своим пользователям в свободе, ничего не стоит, даже меньше.
Мы можем пользоваться выражением “свободная аппаратура” как эквивалентом выражения “аппаратура, выполненная по свободным чертежам”.
Выражения “открытая аппаратура” и “аппаратура с открытым исходным текстом” употребляются некоторыми с тем же конкретным значением, что и “аппаратура со свободными чертежами”, но эти термины принижают свободу как проблему. Они были выведены из выражения “программы с открытым исходным текстом”, которое более или менее охватывает свободные программы, но не говоря о свободе и не представляя вопрос как дело добра и зла. Чтобы подчеркнуть важность свободы, мы останавливаемся и указываем на свободу во всех удобных случаях; поскольку слово “открытый” этого не делает, давайте не будем заменять им слово “свободный”.
Аппаратура и программы
Между аппаратурой и программами есть принципиальная разница. Программа, даже скомпилированная в исполняемую форму, представляет свод данных, которые можно трактовать как инструкции для компьютера. Как любую цифровую работу, ее можно копировать и править с помощью компьютера. У копии программы нет естественной предпочтительной физической формы или воплощения.
В отличие от нее, аппаратура — это физическая структура, и ее вещественность принципиальна. Хотя чертеж аппаратуры может быть представлен как данные, в некоторых случаях даже как программа, чертеж не является аппаратурой. Чертеж микропроцессора не может выполнить программу. У вас не очень-то получится печатать на чертеже клавиатуры или выводить символы на чертеже экрана.
Более того, хотя с помощью компьютера можно изменять или копировать чертеж аппаратуры, компьютер не может преобразовать чертеж в физическую структуру, описанную в нем. Это требует производственного оборудования.
Граница между аппаратной и программной частью
Где в цифровых устройствах граница между аппаратурой и программами? Это следует из определений. Программы — это рабочая часть устройства, которую можно копировать и изменять с помощью компьютера; аппаратура — это рабочая часть, с которой этого делать нельзя. Этот способ разграничения правилен, потому что он связан с практическими последствиями.
Между аппаратурой и программами есть нечеткая область, куда входят определенные программы для подсистем; эти программы можно обновлять или заменять, но их никогда не предполагается обновлять или заменять после продажи продукта. Или, может быть, это возможно, но нетипично, или изготовитель может выпустить замену, а вы нет. С понятийной точки зрения эта область довольно узка. На практике она важна, потому что в нее попадают многие продукты. Действительно, в настоящее время клавиатуры, камеры, жесткие диски и память на USB, как правило, содержат встроенную несвободную программу, которую изготовитель мог бы заменять.
Мы можем считать разницу между встроенными программами для устройств и эквивалентной аппаратурой незначительной особенностью реализации при условии, что мы в том и в другом случае уверены, что они не будут изменяться. Если приемлемо, чтобы устройство было реализовано с помощью внутренних схем, которые никто не может изменять, то внутренняя программа, которую никто не может изменять, ничем не хуже. Было бы неразумно отвергать эквивалентную реализацию посредством внутренних программ, когда с точки зрения работы они неразличимы.
Однако эквивалентность не наблюдается, когда программная реализация оказывается не полностью внутренней, и какая-то компания может изменять программу. Например, когда программы для устройств нужно копировать в устройство, чтобы оно функционировало, или включать в дистрибутив системы, которую вы устанавливаете, то это не внутренная программная реализация; напротив, это устанавливаемая несвободная программа.
Чтобы программа для устройства была морально эквивалентна аппаратуре, она должна быть неизменяемой. Но что, если устройство не в состоянии работать без каких-то программ, а это делает возможным их изменение? Мы можем сделать эти программы практически неизменяемыми, позаботившись о том, чтобы эта замена никогда не происходила. Это не вполне чистое решение, но вполне чистого решения пока предложено не было; это единственный известный нам способ в каком-то смысле отвергать несвободные программы, пользуясь в то же время этим устройством. Это гораздо лучше, чем просто отступиться.
Но у нас не может быть и того, и другого. Чтобы сделать предустановленные программы для устройств фактически неизменяемыми, не давая никому воспользоваться методом их изменения, мы должны проводить это без исключений, даже когда есть изменения, которые мы хотели бы установить. Это означает отказ ото всех обновлений и исправлений в этих программах.
Некоторые заявляли, что предустановленные в постоянной памяти программы и программируемые логические микросхемы (ПЛИС) “размывают границу между аппаратурой и программами”, но я думаю, что это неверное толкование фактов. Программы для подсистем, которые устанавливают в процессе работы, не становятся аппаратурой; программы, которые доставляют во внутренней постоянной памяти устройства и которые нельзя изменять, по природе являются программами, но мы можем рассматривать их, как если бы это была электрическая схема. Что касается ПЛИС, то сами по себе микросхемы являются аппаратурой, но конфигурация вентилей, которая загружается в микросхему, является разновидностью программы для подсистемы.
Загрузка свободных конфигураций в ПЛИС потенциально представляет полезный метод конструирования цифровых устройств, свободных на уровне электрических схем. Однако для того чтобы ПЛИС можно было применять в мире свободы, нам нужен для них свободный инструментарий. Препятствие к этому представляет тот факт, что формат файла конфигурации вентилей, загружаемого в ПЛИС, хранится в секрете. Много лет не было ни одного типа ПЛИС, для которого эти файлы можно было бы создавать без несвободных средств.
На 2015 год есть свободные программные инструменты для программирования Lattice iCE40, популярной модели ПЛИС, на языке описания аппаратуры. С помощью свободных инструментов можно также компилировать программы на Си и выполнять их на ПЛИС Xilinx Spartan 6 LX9, но эти средства не поддерживают язык описания аппаратуры. Мы рекомендуем отказываться от других ПЛИС, пока для них не будет поддержки свободными инструментами.
Что касается самих программ на языке описания аппаратуры, то они могут работать как программы (когда выполняются на эмуляторе или загружаются в ПЛИС) или как схема аппаратуры (когда она реализуется на печатной плате или в кремнии в неизменяемом виде).
Этический вопрос о трехмерных принтерах
С точки зрения этики, программы были свободны; несвободная программа — это несправедливость. Должны ли мы придерживаться тех же взглядов в отношении чертежей аппаратуры?
Конечно, должны в областях, где осуществима трехмерная печать (или, в более общем случае, любого рода личное производство). Модели для принтеров по изготовлению практически полезного объекта (т.е. функционального, а не декоративного) должны быть свободны, потому что это работы функционального значения. Пользователи заслуживают контроля над этими работами точно так же, как они заслуживают контроля над программами, которыми пользуются. Несвободные чертежи прикладных объектов распространять нельзя, точно так же как нельзя распространять несвободные программы.
Так что когда выбираете трехмерный принтер, убедитесь, что он работает без несвободных программ; У Фонда свободного программного обеспечения есть список одобренных принтеров.
Должны ли мы отвергать несвободную цифровую аппаратуру?
Является ли несвободный чертеж цифровой [1] аппаратуры несправедливостью? Должны ли мы ради своей свободы отвергать цифровую аппаратуру, сделанную по несвободным чертежам, как мы должны отвергать несвободные программы?
Проводя параллель между исходными текстами программ и чертежами аппаратуры, многие аппаратные хакеры опрометчиво осуждают несвободные чертежи аппаратуры точно так же, как несвободные программы. Я с этим не согласен, потому что положение программ и аппаратуры различно.
Сегодняшняя технология производства микросхем и печатных плат напоминает типографию: она зиждется на массовом заводском производстве. Она больше похожа на копирование книг в 1950 году, чем на копирование программ сегодня.
Свобода копировать и править программы представляет этический императив, потому что эта деятельность доступна для тех, кто пользуется программами: оборудования, которое позволяет вам пользоваться программами (компьютер), достаточно и для того, чтобы копировать и править их. Сегодняшние мобильные компьютеры для этого слабоваты, но любой может найти компьютер, мощности которого вполне хватит.
Более того, компьютера достаточно, чтобы получить по сети и выполнить версию, которую изменил кто-то другой, кто это умеет, даже если вы не программист. Действительно, непрограммисты берут программы из сети и выполняют их каждый день. Вот почему свободные программы многое меняют для непрограммистов.
Что из этого можно сказать и об аппаратуре? Не каждый, кто может пользоваться цифровой аппаратурой, умеет править электрические схемы или чертежи микросхем, но у каждого, у кого есть персональный компьютер, есть необходимое для этого оборудование. До этого момента аппаратура и программы аналогичны, но дальше идет большое различие.
Собрать электрическую схему или микросхему по чертежам и выполнить ее на компьютере нельзя. Монтаж большой схемы — это громоздкая и неприятная работа, и это только если у вас печатная плата. Производство микросхем для отдельных лиц сегодня неосуществимо; только массовое производство делает микросхемы достаточно дешевыми. При нынешней технологии производства аппаратуры пользователи не могут получить по сети и выполнять измененную версию чертежей популярной цифровой аппаратуры, как они могли бы выполнять измененную версию популярной программы. Таким образом, четыре свободы не дают сегодня пользователям коллективного контроля над чертежами аппаратуры, как они дают пользователям коллективный контроль над программой. Вот где аргументация того, что все программы должны быть свободны, не применима к нынешней технологии производства аппаратуры.
В 1983 году свободных операционных систем не было, но было ясно, что если бы у нас такая система была, мы тут же смогли бы пользоваться ею и получить свободу программ. Не хватало только программ для такой системы.
Если бы в 2014 году у нас были свободные чертежи микропроцессора, подходящего для персонального компьютера, микросхемы, массово выпускаемые по этим чертежам, не дали бы нам той же свободы в области аппаратуры. Если мы станем покупать продукт массового производства какого-то завода, эта зависимость от завода приведет к большей части тех же проблем, что и несвободные чертежи. Чтобы свободные чертежи дали нам свободу аппаратуры, нам нужна технология производства, которой пока нет.
Мы можем представить себе будущее, в котором наши личные изготовители смогут делать микросхемы, а наши роботы собирать и паять их вместе с трансформаторами, переключателями, кнопками, индикаторами, вентиляторами и так далее. В этом будущем все мы станем делать свои собственные компьютеры (а также изготовители и роботы) и все мы сможем воспользоваться измененными чертежами, сделанными теми, кто знаком с аппаратурой. Тогда аргументы в пользу того, чтобы отвергать несвободные программы, будут применимы и для несвободных чертежей аппаратуры.
Это будущее наступит по меньшей мере через годы. А пока необходимости принципиально отвергать аппаратуру с несвободными чертежами нет.
Нам нужны свободные чертежи цифровой аппаратуры
Хотя в нынешних обстоятельствах у нас нет необходимости отвергать цифровую аппаратуру, сделанную по несвободным чертежам, нам нужно составлять свободные чертежи и применять их по мере возможности. Сегодня они предоставляют выгоды, а в будущем они могут стать единственным способом пользоваться свободными программами.
Свободные чертежи аппаратуры обещают практические выгоды. Аппаратуру по ним могут производить несколько компаний, что снижает зависимость от одного поставщика. Можно организовывать группы, чтобы производить аппаратуру большими партиями. Когда есть электрические схемы или тексты на языке описания аппаратуры, можно исследовать, нет ли в чертежах ошибок или вредоносных функций (известно, что НАБ заложило вредоносные слабости в некоторую вычислительную аппаратуру). Более того, свободные чертежи могут служить строительными блоками для проектирования компьютеров и других сложных устройств, спецификации которых будут публиковаться; в них будет меньше частей, которые можно было бы использовать против нас.
Свободные чертежи аппаратуры могут стать применимыми в некоторых частях наших компьютеров и сетей и во встроенных системах еще до того, как мы сможем изготавливать таким образом целые компьютеры.
Свободные чертежи аппаратуры могут стать важны даже до того, как мы сможем изготавливать аппаратуру лично, если они станут единственным способом избегать несвободных программ. По мере того как обычную коммерческую аппаратуру все более и более проектируют с целью подчинить пользователей, она становится все менее совместима со свободными программами из-за секретных спецификаций и требований, чтобы программы были подписаны кем-то отличным от вас. Микросхемы модемов сотовых телефонов и даже некоторые графические ускорители уже требуют, чтобы программы для них были подписаны производителем. Любая программа в вашем компьютере, которую позволено изменять кому-то другому, но не вам, является орудием несправедливой власти над вами; аппаратура, которая навязывает это требование, вредоносна. В случае микросхем модемов сотовых телефонов все доступные сейчас модели вредоносны.
Когда-нибудь цифровая аппаратура со свободными чертежами может вообще остаться единственной платформой, допускающей работу свободных программ. Зададимся же целью получить чертежи необходимой цифровой аппаратуры до того, как это случится, и будем надеяться, что у нас будут средства выпускать ее достаточно дешево для всех пользователей.
Если вы проектируете аппаратуру, делайте, пожалуйста, свои чертежи свободными. Если вы пользуетесь аппаратурой, пожалуйста, присоединяйтесь к тем, кто оказывает на компании давление, чтобы сделать чертежи аппаратуры свободными.
Уровни проектирования
У программ есть разные уровни реализации; в пакет могут входить библиотеки, команды и сценарии, например. Но эти уровни по существу не важны для свободы программ, потому что все их можно сделать свободными. Составление компонентов программы — это работа такого же плана, что и составление программы, которая объединяет компоненты; точно так же сборка компонентов из исходного текста — это операция такого же плана, что и сборка объединенной программы из исходного текста. Чтобы сделать все это целиком свободным, нужно просто продолжать работу, пока мы не выполним ее всю.
Таким образом, мы настаиваем, чтобы программа была свободна на всех уровнях. Чтобы программа могла считаться свободной, каждая строка составляющего ее исходного текста должна быть свободной, чтобы вы могли пересобрать программу исключительно из свободного исходного текста.
В отличие от этого, физические объекты часто складываются из компонентов, которые проектируют и собирают на заводе другого типа. Например, компьютер делают из микросхем, но проектирование (или изготовление) микросхем сильно отличается от проектирования (или изготовления) из микросхем компьютера.
Таким образом, нам надо различать уровни конструкции цифрового продукта (а может быть, и каких-то других видов продуктов). Плата, на которой соединяются микросхемы — это один уровень; конструкция каждой микросхемы — это другой уровень. В ПЛИС связи элементарных ячеек — это один уровень, а сами элементарные ячейки — другой уровень. В идеальном будущем нам нужны будут свободные чертежи для всех уровней. В нынешних обстоятельствах сделать свободным хотя бы один уровень — это уже значительный прогресс.
Однако если чертежи одного уровня сочетают свободные и несвободные части — например, если “свободная” схема на языке описания аппаратуры включает в себя несвободные “ядра” — мы должны заключить, что чертеж в целом на этом уровне несвободен. То же — для несвободных “мастеров” или “макросов”, если они определяют часть взаимных соединений микросхем или программно соединяемых частей микросхем. Свободные части могут быть шагом к будущей цели свободных чертежей, но достижение цели означает замену несвободных частей. В мире свободы несвободные части никогда не допустимы.
Авторское право и лицензии для свободных чертежей аппаратуры
Чертеж аппаратуры делают свободным, выпуская его под свободной лицензией. Мы рекомендуем Стандартную общественную лицензию GNU версии 3 или более поздней. Мы составляли ее, учитывая возможность такого применения.
Авторское лево на электронные схемы и недекоративные формы объектов не заходит так далеко, как можно было бы предположить. Авторское право на эти чертежи оговаривает только то, как эти чертежи рисуются или записываются. Авторское лево — это способ применения авторского права, так что оно действует только в тех пределах, в каких действует авторское право.
Например, электронная схема как совокупность соединений не может быть объектом авторского права (и тем самым авторского лева). Определения схем, написанные на языке описания аппаратуры, могут быть объектом авторского права (и тем самым авторского лева), но авторское лево распространяется только на детали выражений языка описания аппаратуры, а не на совокупность соединений, которую они порождают. По закону каждый может нарисовать ту же совокупность соединений так, чтобы это выглядело по-другому, или написать другое определение на языке описания аппаратуры, которое породит ту же схему.
Авторское право не распространяется на физические электронные схемы, так что когда монтируют экземпляры схемы, лицензия чертежей по закону не влияет на то, что можно делать с собранными устройствами.
В случае изображений объектов и моделей для трехмерных принтеров авторское право не распространяется на создание другого изображения такой же формы чисто функционального объекта. Оно также не распространяется на функциональные физические объекты, сделанные по этому изображению. В рамках авторского права каждый волен создавать их и пользоваться ими (а нам эта свобода очень нужна). В США авторское право не распространяется на функциональные стороны, описанные чертежом, но на декоративные стороны распространяется. Когда у одного и того же объекта есть и декоративные, и функциональные стороны, мы попадаем в сложную ситуацию [2].
Все это может быть верно и в вашей стране, а может и не быть. Перед тем как производить объекты на продажу или в большом количестве, вы должны проконсультироваться с местным юристом. Авторское право — не единственная проблема, на которую нужно обратить внимание. На вас могут напасть с помощью патентов (скорее всего, правообладателями будут лица, никак не связанные с созданием чертежей, которыми вы пользуетесь), могут быть и другие юридические трудности.
Имейте в виду, что авторское и патентное право — это совершенно разные вещи. Кто думает, будто у них есть хоть что-то общее, ошибается. Вот почему выражение “интеллектуальная собственность” — это чистое заблуждение, от него нужно полностью отказаться.
Содействие свободным чертежам аппаратуры с помощью хранилищ
Самый действенный способ поощрять публикации чертежей аппаратуры под свободными лицензиями — устанавливать правила на сайтах, где они публикуются. Операторы сайта должны ставить свободу тех, кто станет применять чертежи, выше предпочтений тех, кто эти чертежи делает. Это означает требование свободы чертежей полезных объектов как условие их размещения.
В случае декоративных объектов этот аргумент неприменим, так что нет необходимости настаивать на том, чтобы они были свободны. Однако мы должны настаивать на том, чтобы ими можно было обмениваться. Таким образом, у сайта, на котором размещаются модели как декоративных, так и функциональных объектов, должны быть соответствующие правила лицензирования для каждой из категорий.
Я предлагаю, чтобы для чертежей цифровой аппаратуры сайт настаивал на GNU GPL версии 3 или более поздней, Apache 2.0 или CC0. Для функциональных трехмерных моделей сайт должен просить автора чертежа выбрать одну из четырех лицензий: GNU GPL версии 3 или более поздней, Apache 2.0, CC-SA, CC-BY или CC0. Для декоративных моделей сайт должен предлагать GNU GPL версии 3 или более позднюю, Apache 2.0, CC0 или любую из лицензий Creative Commons.
Сайт должен требовать, чтобы все чертежи публиковались в виде исходного текста, причем исходный текст в секретных форматах, которые можно применять только в несвободных системах проектирования, не годится. Для трехмерных моделей формат STL не является предпочтительным для редактирования модели, следовательно, это не исходный текст, так что сайт не должен его принимать, разве что кроме случаев, когда он сопровождает настоящий исходный текст.
Нет оснований выбирать только один формат исходного текста чертежей аппаратуры, но форматы исходного текста, которые пока не могут обрабатываться свободными программами, должны приниматься в лучшем случае неохотно.
Свободные чертежи аппаратуры и гарантии
В целом, у авторов свободных чертежей аппаратуры нет моральной обязанности предлагать гарантию тем, кто изготавливает эту аппаратуру. Это не то же самое, что продавать физическую аппаратуру, которая должна сопровождаться гарантией продавца или разработчика.
Заключение
У нас уже есть лицензии, подходящие для того, чтобы делать наши чертежи аппаратуры свободными. Нам как сообществу остается только признать, что именно это мы должны делать, и настаивать на свободных чертежах, когда объекты изготавливаем мы сами.
Примечания
- Понятие “цифровая аппаратура” здесь включает аппаратуру с аналоговыми схемами и компонентами в дополнение к цифровым.
- Полезные сведения об этой сложности для США приводятся в статье Public Knowledge, хотя авторы ее впадают в общую ошибку, употребляя несуразное понятие “интеллектуальная собственность” и пропагандистское выражение “защита”.
Почти вся эта статья была опубликована двумя частями в Уайерд в марте 2015 года.