Найти тему
OVERCLOCKERS.RU

Как зависимости уничтожают Linux экосистему и не только

Предисловие

Что такое операционная система? Поисковая система конечно же предоставит возможные ответы:

-2

По сути операционная система это программа необходимая для взаимодействия с вычислительным устройством, а так же является платформой для запуска прикладных приложений будь то игры, браузер или софт для 3D моделирования.

Разработчик конечно может написать приложение работающее без операционной системы, например игру для старой игровой консоли, или для ПК, но проблема в том, что игра будет работать только на определенном наборе комплектующих.

Разработчику нужно будет работать над поддержкой целого зоопарка разных комплектующих, а ведь нужно ещё и над самой игрой работать... Чтобы разработчикам не приходилось ломать голову над зоопарком разных комплектующих и были придуманы операционные системы:

-3

Главная обязанность любой адекватной операционной системы это предоставить пользователю среду для комфортного запуска и использования приложений.

Отличный пример адекватной операционной системы это Microsoft Windows, хотя начиная с Windows 8 адекватность с каждой новой версией исчезает, вместо адекватности приходят зависимости, как бы это печально не было... Тем не менее Windows до сих пор лучшая операционная система на данный момент для ПК и ноутбуков, не считая MacOS конечно, ибо она только для экосистемы Apple.

Можно сколько угодно ругать Microsoft Windows за закрытый исходный код, за поведение корпорации, за принуждение к обновлению, за слежку, за вредоносные обновления для "устаревших" по мнению корпорации версий системы (планируемое устаревание), и за многое другое, но у Windows есть база.

Да, Microsoft запретили запускать Windows 11 после установки если нет доступа к интернету, но даже у этой версии "операционной системы" есть база:

-4

Большинство приложений для Windows независимы и поставляются либо в виде ZIP архивов (распаковал и запустил), либо в виде полностью автономных EXE/MSI установочных пакетов, причем разработчики децентрализовано распространяют свои приложения, да и сами пользователи могут распространить приложения хоть дискетами, что корпорации не очень то и по нраву.

-5

Microsoft уже давно ставит пользователей в максимально зависимое положение, и я не рекомендую Windows 11 для установки и использования, но при желании даже эту версию системы можно установить без зависимости от интернета вопреки принуждению со стороны корпорации:

-6

Microsoft поступают отвратительно, Windows с каждой новой версией становится только хуже, но задумайтесь, почему люди всё ещё не убежали в сторону свободных дистрибутивов Linux?

Конечно, Windows теряет позиции, оно и не удивительно учитывая что последняя действительно адекватная операционная система от Microsoft это была Windows 7, но Windows всё равно держит трон превосходства, и перевод государственных организаций на Linux не сильно то и меняет общую статистику по всему миру, как и старания Valve:

-7

Вроде кто-то и пробует перейти на дистрибутивы Linux, но в реальности только доля ОС от Apple действительно выросла, а Linux дистрибутивы вроде и растут, но в каких-то конвульсиях, и то эти "конвульсии" идут из азиатского региона в основном, интересно, почему же так выходит?

На самом деле ответ прост, Linux дистрибутивы просто не способны конкурировать с Microsoft Windows, в итоге корпорация может "закручивать гайки" сколько пожелает, ведь пользователям всё равно некуда переходить.

Почему дистрибутивы Linux не способны конкурировать с Microsoft Windows

И вот здесь начинаются проблемы, ведь Windows становится ничем не лучше дистрибутивов Linux, она набирает зависимости опускаясь на уровень дистрибутивов... Хотя на самом деле проблема не в том что Windows опускается ниже плинтуса по многим аспектам, а в разработчиках софта пренебрежительно относящихся к обычным пользователям.

-

--

---

NPM инцидент 2016

Казалось бы, что может быть интересного в инциденте 2016 года? Ведь все уже давно забыли! Или нет?

https://www.opennet.ru/opennews/art.shtml?num=44104

-9

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

Непонятно? Тогда сделаю наглядный пример:

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

Вандалу не понравилось что на столбе висят провода и отрезает их, в итоге у целого дома нет электричества, а поставщик электроэнергии вас просто посылает подальше, ведь столб не его забота...

Ну ладно, протянули от другого столба провода, было тяжело, пришлось намотать адскую скрутку из чего попало, но питание восстановлено, вы дальше живете себе спокойно играете в игры на компьютере, делаете свои дела, но спустя некоторое время компьютер загорается и устраивает пожар на весь дом!

После выясняется что владелец трансформаторной будки решил сделать обновление и сменить стандарты электропитания! Теперь вместо 230в в сеть поступает 2500в, ведь для такого напряжения хватит и более тонких проводов по сечению! Хотите пожаловаться и взыскать компенсацию за нанесённый ущерб? А кочерга там плавала! Не нравится - сделайте своё!

Вот так и работают зависимости, и хорошо если всеми зависимостями управляет одна организация, но в случае Open Source все пляшут как попало.

С миру по нитке лишь на словах выглядит чудесно, в реальности хуже не придумать ситуации когда от любой зависимости всё может пойти наперекосяк...

-10

И всё бы хорошо если бы от зависимостей начали избавляться, но как можно заметить разработчики всё ещё насилуют зависимости и страдают каждый раз когда что-то идет наперекосяк... Ладно если бы страдали только недальновидные разработчики, но в итоге страдать приходится и обычным пользователям.

https://www.opennet.ru/opennews/art.shtml?num=57481

-11

Возьмем для примера такое приложение как Unreal Tournament 1999 скомпилированное 3 ноября 1999 года, оно прекрасно работает без каких-либо зависимостей и доработок "напильником" по сей день:

-12

Даже ужасная в использовании Windows 11 способна запустить это независимое приложение, какой бы плохой и ужасной ни была, ибо это состоятельная операционная система которая является стабильной платформой для запуска приложений, отсюда и изобилие софта для Windows, разработчики понимают что их труды не будут уничтожены просто так со временем, а это мотивация создавать новое:

-13

Тем временем софт с зависимостями (преимущественно от линуксоидных разработчиков) постоянно ворчит на неудовлетворённые зависимости везде где только возможно:

-

--

---

Борьба с зависимостями

Если разработчик не желает довести своё приложение до адекватного состояния, то у пользователя есть три варианта:

1) Забыть о приложении. Самый распространённый вариант, отсюда крайне низкая популярность дистрибутивов Linux, и сотни терабайт кривого софта в репозиториях не привлекают, наоборот, только отвращение вызывают...

2) Начать мучиться с зависимостями и проблемами во время установки, запуска и использования приложения. Не очень распространённое явление по очевидным причинам, обычно этим занимаются фанатики, но они никогда не признают в лоб наличие массы проблем, у таких всегда всё хорошо, даже когда проблемы официально признаны.

3) Использовать уже готовую сборку от других людей. Не очень распространённое явление в среде Linux ввиду отсутствия стабильной базы для развития подобного направления, но в среде Windows это весьма распространено, даже я не постеснялся некоторый явно линуксоидный софт привести в пригодное для нормального использования состояние:

Сборка Stable Diffusion web UI Neuro: Доступная и простая в использовании нейросеть. Часть 2

Сборка Stable Diffusion web UI Neuro: Доступная и простая в использовании нейросеть. Часть 1

AMD и нейросети: Пробую использовать DirectML версию Stable Diffusion Web UI с видеокартой NVIDIA

Мои весёлые приключения с нейронными сетями (Dall-E, Stable Diffusion)

Увеличение и обработка изображений в два клика с помощью Real-ESRGAN (Vulkan) и Waifu2X (OpenCL)

Но есть и другой вариант борьбы с зависимостями, здесь уже должны разработчики начать думать о пользователях.

Для примера покажу свой "калькулятор", этот проект вообще не должен был развиваться в рабочий калькулятор, его главная задача была в том, чтобы показать каким простым для запуска софт должен быть в среде Linux, чтобы от дистрибутивов люди не воротили нос в массовом порядке, и со своей основной задачей проект справился на все 100%.

А что проект развился в простой калькулятор это уже "так получилось"... Хотя в некоторых дистрибутивах Linux (Debian 11.6.0 Xfce, SalentOS 14.04.2 full x64) нет калькулятора в стандартном наборе приложений, так что моя поделка очень даже выручает в таких случаях, ведь не требует выкачивать гигабайты зависимостей ради всяких Kcalc и работает буквально в любом дистрибутиве.

https://github.com/Shedou/Chi-Calculator

Разработчиков обычно не волнует, а сможет ли обычный пользователь банально запустить приложение без лишних телодвижений, и никакие оправдания в стиле "никто никому ничего не должен" не исправят ситуацию, пользователи только покрутят у виска и пойдут к тем, кто сделал подходящее для решения задачи приложение адекватным в плане распространения и запуска, даже если оно будет стоить денег.

И если ты, мой дорогой читатель из числа таких разработчиков, что тонут в зависимостях и топят пользователей в этом же болоте, имей совесть, не заставляй пользователя страдать на ровном месте, а там и пользователя перестанут воротить нос да посылать матерными словами при каждом косяке на пути к запуску приложения.

-16

Особенно будут благодарны пользователи у которых нет максимально быстрого и стабильного доступа в интернет, таких немало даже если смотреть "среднюю температуру по больнице", ну а про Китай с локальным "интернетом" я вообще промолчу, у них своя атмосфера:

-

--

---

Почему следует бороться с зависимостями

Начну с простого, человек смотрит на красивые заявления для дистрибутива Linux, верит сказанному и меняет Windows на условную Ubuntu:

-18

Что дальше? Дальше человек понимает в какое дерьмо вляпался... Просто так установить приложение с помощью установочных пакетов невозможно, это вам не Windows с "exe" стандартом для исполняемых файлов, в том числе установочных пакетов, нет, в линуксах целая помойка "своих вариантов", которые открываются порой как обычный архив и делайте с этим что хотите:

Ну да ладно, линуксы ведь хороши центрами приложений? Лезет пользователь в центр приложений и пробует установить приложение что понравилось, банально хочет себе калькулятор с интересным названием Kcalc!

Но установка как-то затянулась, пользователь начинает подозревать неладное и приходит в недоумение, как так, всего пара мегабайт, а установка затянулась на десятки минут... Тут и приходит осознание что линуксы где-то нагло наврали, особенно если посмотреть на сетевую активность во время установки приложения, там отчетливо видно что для установки калькулятора было загружено более 450 МБ трафика из интернета, да, это всё зависимости ради калькулятора официальный размер которого всего 1.3 мегабайта:

Ладно, а как дела обстоят если нужно установить дистрибутив или программу на автономный ПК без доступа к интернету? А никак, нет интернета - нет приложений, "автономные" установочные пакеты бесполезны когда дело доходит до реального использования ибо требуют зависимости, а потом зависимости зависимостей и так глубоко в адские просторы:

Может быть Flatpak решит проблему автономной установки приложений? Ну что я могу сказать, удачи установить GIMP на систему без высокоскоростного доступа в интернет:

-22

Может AppImage выручит? Не а, не выручит, даже мой "калькулятор" и то работоспособнее всяких CPU-X собранных в формате AppImage:

Даже если AppImage и заработает кое-как, это не решает весьма серьёзную проблему подобных "архивов", ему просто негде хранить файлы конфигураций, потому разработчики этого "чуда" не придумали ничего умнее как испражниться фекалиями в систему пользователя, да ещё и в скрытую по умолчанию папку, чтобы чистка системы от фекалий была максимально затруднительным занятием для пользователя, особенно если нужно решить проблему с кривыми файлами конфигурации (банально удалить настройки):

Но что это я про линуксы, давайте взглянем на софт который может работать в среде Windows! Что это там такое? Загрузка зависимостей во время установки приложения из так называемого автономного установочного пакета? А нескончаемое сосание зависимостей во время использования приложения не желаете? А что если зависимость исчезнет из репозитория или будет подменена? Пользователю смириться с нерабочей кнопкой в приложении по вине отсутствующей или подменённой зависимости?

Вот что происходит когда софт разрабатывают линуксоиды, а если подобный софт запустить и использовать на системах без доступа к интернету? Такое в принципе невозможно, если конечно это не сборка Neuro где я оборвал большинство зависимостей и сделал Stable Diffusion web UI пригодным для нормального запуска и использования:

https://github.com/Shedou/Neuro

-26

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

-27

Если Windows страдала от невнимательности самих пользователей, которые открывали всё подряд не задумываясь и заражали вирусами систему, то в случае зависимостей никакой сверх разум и параноидальная осторожность не спасёт от подмены, ведь это происходит чуть ли не в слепую.

Б - безопасность.

Да и в случае переустановки "шиндовс" нет никаких проблем подключить к ПК флешку и установить полный набор приложений совершенно независимо от интернета и чего-либо вообще. Какой адский ужас происходит в случае если нужно переустановить Linux я пожалуй промолчу...

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

-

--

---

Заключение

Ни одной статьи не хватит, чтобы продемонстрировать всю вредоносность зависимостей в дистрибутивах Linux и приложениях, впрочем, пока линуксоиды утопают в болоте зависимостей, некоторые корпорации имеют просто безграничные возможности по "закручиванию гаек" в своих операционных системах, всё равно пользователи посмотрят на линуксы, покрутят у виска и вернуться в Windows, ещё и деньги заплатят корпорации лишь бы не сталкиваться с вонючим линуксоидным болотом зависимостей.

Особо буйные фанатики Linux попытаются искать оправдания всему что я написал, в том числе прибегая к софизму искажая и перевирая, а не особо разумные просто опустятся до оскорблений в мой адрес, скажу сразу, не утруждайтесь, факты говорят сами за себя:

-28

Стоит только оборвать доступ к интернету как дистрибутивы Linux становятся беспомощными, так же и софт с зависимостями, и это факт:

-29

Хотя можно и не обрывать доступ к интернету, достаточно взять какую нибудь Ubuntu 13.04 и попробовать воспользоваться прекрасным центром приложений, даже доступ к интернету не поможет, ибо репозитории мертвы, и качать зависимости из мёртвых репозиториев невозможно, как и софт собственно:

А потом ещё жалуются что проклятые корпорации якобы подкупают всех чтобы бедный линукс не развивался! Какое может быть развитие если эти самые линуксы не способны на выполнение элементарных базовых задач, а некоторые индивиды из сообщества ведут себя как дикие обезьяны? И это ещё на фоне постоянно бурлящего болота зависимостей сжирающего труд людей...

-31

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

А такой труд оплачивать нет смысла, всё равно при обновлении нужно будет выбросить на мусорку вложенные в труд деньги, ведь оно обязательно перестанет работать по вине очередной тухлой зависимости.

https://www.linux.org.ru/forum/general/12496436

-32

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

И не пытайтесь переводить тему в серверы, мол там с линуксом всё прекрасно, нет, если бы там всё было прекрасно, то такие вещи как Docker даже не появились бы на свет из отчаяния при виде зависимостей и проблем от них...

Благодарю за внимание, больше интересных статей в блоге Hard-Workshop.

-33