Ричард Столлмен — основатель движения свободного ПО, проекта GNU, Фонда свободных программ и Лиги за свободу программирования. Недавно он опубликовал в британском издании Guardian свою статью, в которой объясняет, можно ли считать Android «Линуксом», и, главное, относится ли он к свободному софту.
Насколько Android уважает свободу своих пользователей? Для тех пользователей, которые ценят свободу, это самый важный вопрос относительно любой программной платформы.
В движении за свободный софт мы разрабатываем программы, уважающие свободу пользователей, чтобы и у нас, и у вас была возможность избежать того софта, который свободу не уважает. Идея же «открытых исходных кодов» сфокусирована на том, как создавать код; это иной образ мыслей, где ценится скорее качество кода, нежели свобода. Таким образом, главный вопрос — это не «открытость» Android, но его способность давать пользователям свободу.
Android — это операционная система, предназначенная в первую очередь для мобильных телефонов и состоящая из Linux (ядро, написанное Торвальдсом), некоторых библиотек, платформы Java и приложений. Не считая ядра Linux, программная платформа Android версий 1 и 2 была в основном разработана в Google; Google распространял её на условиях лицензии Apache 2.0 — слабой свободной лицензии, лишённой копилефта (принудительной необходимости публиковать исходный код с той же лицензией при создании и распространении изменённой версии. — Прим. ред.).
Версия Linux, включенная в Android, не является полностью свободной, так как она содержит несвободные «бинарные куски» (так же, как версия Linux Торвальдса), некоторые из которых действительно используются в тех или иных устройствах на Android. Платформы Android также используют другие несвободные прошивки и несвободные библиотеки. В остальном исходный код Android версий 1 и 2, выпущенный Google, может считаться свободным софтом, но этого кода недостаточно для работы устройства. Некоторые программы, поставляемые с Android, тоже несвободны.
Android очень сильно отличается от операционной системы GNU/Linux, так как содержит очень мало от GNU. Действительно, практически единственный компонент, роднящий Android с GNU/Linux, — это сам Linux, то есть ядро. Людям, ложно считающим, что «Linux» относится ко всей комбинации GNU/Linux, этот факт взрывает мозг, и они делают парадоксальные утверждения вроде того, что «Android содержит Linux, не будучи при этом Linux». Если не начинать с путаницы, ситуация окажется простой: Android содержит Linux, но не GNU; следовательно, Android и GNU/Linux по большей части различаются.
(Внутри Android ядро Linux остаётся отдельной программой, с кодом лицензированным по GNU GPL версии 2. Совмещение Linux с кодом, лицензированным по Apache 2.0, было бы нарушением копирайта, так как GPL версии 2 и Apache 2.0 несовместимы. Слухи о том, что в Google каким-то образом сменили лицензию Linux на Apache, неверны; Google не в силах сменить лицензию кода Linux и не пытался этого сделать. Если бы авторы Linux разрешили его использование по GPL версии 3, тогда код был бы совместим с кодом, лицензированным по Apache, и их комбинация могла бы быть выпущена с лицензией GPL третьей версии. Однако Linux не был выпущен таким образом.)
Google соблюдает требования лицензии GNU General Public License в случае с Linux, но лицензия Apache на остальные компоненты Android не требует публикации исходных кодов. Google заявил, что никогда не опубликует исходный код Android 3.0 (за исключением Linux), хотя скомпилированный вариант был выпущен. Исходный код Android 3.1 также удерживается. Таким образом, всё просто и ясно: за исключением ядра Linux, Android 3 представляет собой несвободный софт.
В Google говорят, что исходный код версии 3.0 остался неопубликованным, потому что в нём слишком много ошибок и всем лучше подождать следующего релиза. Для тех, кто хочет просто использовать Android, это, возможно, хороший совет, но в конечном счёте решать такие вопросы должны сами пользователи. С ошибками или без, этот код был бы полезен программистам и энтузиастам, которые хотели бы включить нововведения из Android 3 в собственные версии.
Отказ от публикации исходного кода уже двух версий платформы вызывает подозрение о том, не намереваются ли в Google сделать Android проприетарным навсегда. В этом случае публикация нескольких версий Android как свободного софта была лишь временной уловкой, которая помогла получить помощь сообщества, чтобы улучшить проприетарный программный продукт. Будем надеяться, что это не так.
В любом случае, большая часть исходного кода некоторых версий Android была выпущена как свободный софт. Значит ли это, что продукты, использующие эти версии Android, уважают свободу пользователей? Нет, и на то есть несколько причин.
Во-первых, в большинстве случаев они содержат несвободные приложения Google, предназначенные для обращения к сервисам вроде YouTube и Google Maps. Они официально не являются частью Android, но это не означает, что с продуктом всё в порядке. Также там есть несвободные библиотеки; можно спорить о том, являются ли они частью Android, но важно, что для многих функций они нужны.
Даже исполняемый код, официально являющийся частью Android, может не соответствовать исходникам, которые распространяет Google. Производители вносят изменения в исходники и зачастую не публикуют их. Лицензия GNU GPL вынуждает их распространять только модифицированные исходники ядра, но остальные части Android защищены более слабой лицензией Apache, которая позволяет им не публиковать код, который они в действительности используют. В Replicant, свободной версии Android, которая поддерживает лишь некоторые модели телефонов, многие из этих библиотек заменены, а без несвободных версий приложений можно прожить, но там есть другие проблемы.
Некоторые модели устройств сделаны таким образом, чтобы не позволить пользователям установить изменённое ПО. В этой ситуации исполняемый код несвободен даже в том случае, если он был произведён из доступных и свободных исходных кодов. Однако некоторые устройства с Android можно «рутить», после чего пользователи получают возможность устанавливать другое ПО.
Важные части прошивки или драйверы также зачастую проприетарны. Они отвечают за модуль сотовой связи, Wi-Fi, Bluetooth, GPS, трёхмерную графику, камеру, динамик и, в некоторых случаях, микрофон. В некоторых моделях несколько таких драйверов свободны, а без нескольких можно обойтись, но без микрофона или передатчика обойтись не получится.
Прошивка телефона поставляется предустановленной. Если бы всё, что она делала, — лишь находилась в памяти и работала, мы могли бы считать её аналогом микросхемы. Когда мы настаиваем, что программы в компьютерном устройстве должны быть свободными, мы можем не обращать внимания на предустановленную прошивку, менять которую никогда не придётся, потому что пользователю нет разницы, что это программа, а не микросхема.
К сожалению, в данном случае это будет вредоносная микросхема. Вредоносные функции недопустимы независимо от того, как они реализованы.
На большинстве телефонов с Android эта прошивка настолько контролирует телефон, что способна превратить его в прослушивающее устройство. В некоторых телефонах она контролирует микрофон. В некоторых может получить полный доступ к основному компьютеру через общую память, чтобы заменить установленный пользователем свободный софт или влиять на него.
Цель свободного софта в том, чтобы пользователи могли сами контролировать работу своих компьютеров, и такое положение дел ей не соответствует. Одно дело, когда речь идёт о багах — они случаются в любой вычислительной системе. Другое дело, когда устройства сами могут оказаться жучками (игра слов: и “баг” и “жучок” по-английски bug. — Прим. пер.). (Крейг Мюррей в книге «Убийстве в Самарканде» упоминает о своём участие в разведывательной операции, в ходе которой не-андроидный телефон ничего не подозревающей жертвы удалённо превратили в подслушивающее устройство.)
В любом случае операторская прошивка телефона в устройстве на основе Android не может быть приравнена к микросхеме, потому что аппаратная часть дозволяет установку новых версий, и это происходит в действительности. Но поскольку прошивка проприетарна, лишь производитель может делать новые версии, а пользователи не могут.
Резюмируя, можно сказать, что мы можем терпеть несвободные операторские прошивки, оговаривая, что их новые версии не будут загружаться, они не смогут контролировать основной компьютер и могут подавать сигнал лишь в тот момент и в том случае, когда позволит свободная операционная система. Другими словами, они должны быть эквивалентом микросхемы, и эта микросхема не должна быть вредоносной.
Последние новости в прессе, посвящённые Android, концентрировались на патентных войнах. В течение вот уже двадцати лет мы призываем к отмене софтверных патентов, и мы предупреждали, что подобные войны могут случиться. Софтверные патенты могут привести к удалению функций из Android или сделать их недоступными. За дополнительной информацией о том, почему софтверные патенты должны быть упразднены, следует обратиться к сайту endsoftpatents.org.
Так или иначе ни патентные атаки, ни ответы Google напрямую не относятся к теме этой статьи: как продукты с Android подходят к этичной системе распространения и как они терпят неудачу. Это тоже привлекает внимание прессы.
Android — это серьёзный шаг на пути к этичному, контролируемому пользователем портативному телефону, использующему софт со свободными исходными кодами, но до этой цели по-прежнему далеко. Хакеры работают над Replicant, но поддержка новой модели телефона — это серьёзная работа, и по-прежнему нерешённой остаётся проблема прошивки. Несмотря на то что телефоны с Android на сегодняшний день не так плохи, как смартфоны Apple или Windows, нельзя сказать, что они уважают вашу свободу.
Copyright 2011 Ричард Столлмен. Публикуется по лицензии Creative Commons Атрибуция — Без производных произведений 3.0.