Кайл Кин (Kyle Keen), один из мэйнтейнеров дистрибутива Arch Linux,
обратил внимание (http://kmkeen.com/maintainers-matter/2016-06-15-11-51-16-472...) на проблемы, связанные с внедрением систем самодостаточного распространения приложений для Linux, таких как продвигаемая компанией (https://www.opennet.ru/opennews/art.shtml?num=44601) Canonical технология snap. По мнению Кайна, идея прямой сборки и поставки пакетов разработчиками приложений может привести к проблемам с качеством и безопасностью. Мэйнтейнеры пакетов в дистрибутиве не только выполняют техническую работу по сборке, но и являются важным связующим звеном, не допускающим вольностей со стороны поставщиков ПО и способным самостоятельно решить проблему, не дожидаясь её устранения в основном проекте. Мэйнтейнеры помогают избежать проблем в ситуации неадекватных решений разработчиков, таких как прекращение поставки важных возможностей, встраивание недопустимой функциональности (например, показ рекламы и включение кода для передачи статистики третьим лицам) или удаление пакетов из репозитория (например, случай (https://www.opennet.ru/opennews/art.shtml?num=44104) с удалением из npm).
Кайл полагает, что наблюдаемое ныне добропорядочное поведение upstream-проектов лишь следствие строгого контроля со стороны мэйнтенеров дистрибутивов. Именно поэтому в Linux не наблюдается наводнение сборками, содержащими шпионские и рекламные вставки, а также бесцеремонно внедряющимися в другие приложения, например, без спроса устанавливающие свои панели и плагины в web-браузеры.
Кайл Кин попытался выделить основные мифы, связанные с выгодами прямой поставки ПО:
- Обещание: Изоляция приложения в sandbox-контейнере позволит защититься от недобросовестных поставщиков.
Реальность: Изоляция блокирует лишь часть угроз, но не может ограничить этические злоупотребления. Возможно мэйнейнеры могут незаметить некоторые технические ошибки, которые будут блокированы в sandbox, но они точно заметят уловки не чистых на руку производителей (например, мэйнтейнер не согласится принять мобильное приложение с реализацией фонарика или темы оформления, требующих доступа к сети и телефонии);
- Обещание: Мэйнтейнер является дополнительным промежуточным звеном, замедляющим доведение до пользователя устранений уязвимостей;
Реальность: Часто мэйнтейнеры выпускают исправления раньше, чем выходит обновление от производителя, особенно если проблема выявлена в совместно используемых библиотеках. Дистрибутив может в один заход решить проблему во всех приложениях, использующих уязвимую библиотеку, просто обновив это библиотеку в системе, без ожидания когда производитель пересоберёт свою программу (многие атаки совершаются из-за поставки в составе программы устаревших библиотек).
- Обещание: универсальные пакета позволят производителям не заботятся об особенностях каждого дистрибутива.
Реальность: Производители и без того не учитывают особенности дистрибутивов, так как эту работу берут на себя мэйнтейнеры пакетов, а производителям остаётся рассмотреть включение в upstream предложенные мэйнтейнерами исправления;
- Обещание: Каталоги-магазины приложений (App Stores) являются реинкарнацией традиционных репозиториев дистрибутивов - централизованное размещение программ, удобный поиск, простая установка и автоматические обновления.
Реальность: Отсутствие поддержки системы зависимостей, непригодность для распространения системных программ и автоматизированные проверки, не исключающие добавление вредоносного ПО;
- Обещание: Достаточно создать каталог-магазин приложений и миллионы разработчиков наполнят его своими программами.
Реальность: Смартфоны появились в ситуации большой нехватки приложений. Пользователей сразу стало очень много и только потом подтянулись разработчики со своими предложениями программ. В таких условиях разработчикам сходило с рук встраивание вредоносных функций, рекламы и кода для отслеживания пользователей;
- Обещание: Унифицированный формат пакетов поможет увеличить качество программ в Linux, так как позволит снять нагрузку по подготовке отдельных пакетов для каждого дистрибутива.
Реальность: Простота создания пакетов никак не может повлиять на качество ПО, так же как замена рукописного текста использованием клавиатуры не может повысить грамотность. Решение проблемы очень простое - достаточно написать хорошую программу и открыть её код, и каждый дистрибутив сам создаст для себя пакеты.
- Обещание: Самостоятельный выпуск пакетов разработчиком программы снизит дублирование работы между дистрибутивами.
Реальность: Разные дистрибутивы существуют из-за разных предпочтений пользователей. Само по себе создание пакета не составляет труда. Основные усилия уходят на исправление ошибок, которые остаются неисправленными в основном проекте, и так как патчи общедоступны они вполне успешно совместно используются разными дистрибутивами;
- Обещание: Можно избежать многих ошибок, так как разработчик лучше разбирается в своей программе и более опытен, чем мэйнтейнер.
Реальность: Чтобы не оскорбить разработчиков, Кайл Кин предложил поверить ему на слово, что это не всегда так, и предпочёл не приводить конкретные примеры.
- Обещание: Прямая поставка ПО от производителя не содержит лишних звеньев в цепочке доверия и лучше для пользователей.
Реальность: Это справедливо до тех пор, пока сам производитель не решит добавить что-нибудь. Те кто не доверяет мэйнтейнерам, могут самостоятельно проверить их работу, повторив сборку. Выявить вносимые дистрибутивом изменения значительно проще, чем выявить скрытые изменения производителя.
URL: http://kmkeen.com/maintainers-matter/2016-06-15-11-51-16-472...
Новость: https://www.opennet.ru/opennews/art.shtml?num=44611