Dr. Sheppard's blog Light modeDark mode


Почему AppImage не популярны. Ответ на пост от Reddit

Для контекста: https://www.reddit.com/r/AppImage/comments/1hk4xpg/why_are_appimages_not_popular

Проблема очень проста: дизайн AppImage был разработан в середине 2000-х годов и до сих пор остается таким. Он использует устаревшую логику, где есть программа, которую нужно загрузить с веб-сайта производителя, о чем вы знаете заранее, затем нужно загрузить программу, предоставить ей права на запуск, переместить ее в папку рабочего стола в файловом менеджере, и она будет интегрирована: программа появится на рабочем столе, в меню и везде, где это необходимо, вместо современного пользовательского интерфейса, где у пользователя есть Центр программного обеспечения, откуда он загружает приложение, которое автоматически интегрируется в рабочий стол (путем копирования файла с рабочего стола в каталог /usr/share/applications) и обновляется там по мере необходимости.

AppImage имеет AppStream, хотя не совсем ясно, зачем он нужен, если AppImage избегает использования центров приложений, которые применяют эти файлы для отображения информации о приложении. По разным причинам инструменты изоляции AppImage не поддерживались (я думаю, потому что они не были интегрированы ни в одну систему сборки, а правила изоляции AppImage также нужно было писать как скрипты, то есть изобретать все с нуля, но это всего лишь мое мнение, у Мэтью Гордона, вероятно, другое мнение).

Как мы уже говорили, у AppImage нет собственного центра программного обеспечения, потому что считается, что AppImage в нем не нуждается, хотя при сборке приложения appimagetool предлагает добавить ваше приложение в список на appimage.github.io, где половина приложений больше не используется, треть поддерживаемых не имеет кнопки загрузки и хорошего анализа данных, которые затем упаковываются в файл JSON, и использовались центры программного обеспечения, такие как AppImagePool, но поскольку appimage.github.io плохо поддерживается, они быстро стали работать неэффективно. стали архивными проектами, или, как в случае с Nitrux SC, для которого AppImage является важной частью, теперь используют AppImageHub.

AppImage поддерживает совместимость со старыми инструментами сборки, а ленивые разработчики (например, electron-builder, код которого зависит от пакета appimage-maker, использующего библиотеки appbuilder, которые не обновлялись 100500 лет, и в релизах которого используется старая среда выполнения appimage, старше мамонтов и почти того же возраста, что и тираннозавр) годами не обновляют скрипты, в результате чего накапливается множество проблем, разработчики отказываются от AppImage и переходят на Flatpak.

Подводя итог всему вышесказанному, для того чтобы AppImage стал популярным, необходимо предпринять следующие шаги:

  1. Нативная интеграция в настольную версию.
  2. Надежная инфраструктура сборки, например, на основе рецептов, с множеством параметров сборки, таких как перепаковка, сборка с нуля и другие функции (кстати, ближайший конкурент лучше всего разработал эту часть).
  3. Обновление всех важных существующих инфраструктур сборки, таких как electron-builder (маловероятно, что это произойдет, но тогда нужно будет инвестировать в форки, такие как Reforged), переход на использование статической среды выполнения, что решит миллиард проблем. проблемы пользователей (почти панацея, у меня даже GIMP работает на musl без проблем!)
  4. Центр программного обеспечения или плагины к существующим, потому что пользователи Linux привыкли получать приложения оттуда, а не заходить на веб-сайт производителя.

Но подождите, почему мы говорим об AppImage? Всё просто: это ЛУЧШЕЕ, что когда-либо случалось с упаковкой Linux (возможно, за исключением makeself+mojosetup, который помогает играм и некоторым программам, таким как DaVinci Resolve).

Flatpak — это отнюдь не метод упаковки приложения, наиболее близкое описание — это способ развернуть другой дистрибутив Linux внутри вашего с графическим интерфейсом и хорошим продвижением, и в то же время занять весь ваш диск.

Snap — это смесь AppImage и Flatpak — это не отдельная файловая система, подобная Git (как в Flatpak), а squashfs, только одна с полным дистрибутивом, а вторая, от которой зависит ваше приложение. Всё было бы хорошо, но она монтируется при запуске системы, а не по щелчку мыши, поэтому ваш хороший компьютер будет включен около минуты, пока он монтирует ваши пакеты snap. Система изоляции тесно связана с AppArmor (разработчики, если я правильно помню, говорили, что для обеспечения того же уровня функциональности, что и в Ubuntu, необходимо поддерживать около 60 патчей для AppArmor, которые не всегда обновляются с каждым релизом ядра) и хорошо работает только в Ubuntu, а поскольку формат закрытый, немногие пользователи осмелятся установить в свою систему что-то неизолированное, непонятно, как это было собрано и кто это сделал.

В общем, вот и всё. В заключение хочу поблагодарить всех, кто пытается продвигать и улучшать AppImage, вы делаете невероятно большую работу. Я мог бы попытаться назвать вас по имени, но ваша радость растёт с каждым днём. Почти каждый день я вижу новые проекты на AppImage, и это меня очень радует.

This article is available in English: https://drsheppard01.github.io/posts/response-en/