Зависимости. Они везде.
Помню как когда-то давно узнал про понятии dll-hell в Windows. Его так никогда и не победили полностью. Просто каждое приложение стало носить все свои чемоданы с собой. И как-то в целом все работало. Тем более что потом появился COM. COM-объекты обещали нам светлое будущее. Ведь любой COM-объект мог включать в себя реализацию всех прошлых версий. Но, этого так никогда и не случилось. И до сих пор пользователи теряются в том какой DirectX или Net им нужно обновить и зачем. А еще пугаются Visual C++ Redistributable Runtimes.
Но это было давно. Потом появился web и npm. Замечательное решение когда каждый может выкачать и добавить себе в приложение любую непонятную хрень. Уже сколько было с ним проблем и аварий. И вот на днях очередное чудо. Взбунтовались полифилы и начали пересылать пользователей куда попало. Казалось бы древность. Выбросить эту гадость. Но ведь это касается приложений для старых браузеров. А кто использует старые браузеры? Конечно в первую очередь крупные корпорации и госорганизации, где до сих пор используют IE11 например. Ну и получается кто рискует больше всего?
Теперь подход другой. Столкнулся я с ним когда работал с React Native и собирал сборки под iOS. Ну далее когда просто под iOS разрабатывал. Там чума называется cocoapods (есть еще такие же яйца, но другого цвета SwiftPM, Carthage. И если у вас в команде достаточно тревожные люди, вы возможно будете прыгать с одного на другое. С версиями и взаимными зависимостями можно играть очень много. А какое-то время проект под React Native собирался около получаса и собирался не всегда. Вот сегодня собирается, а завтра может и не соберется. После обеда соберется, а к вечеру нет. Или соберется только завтра утром. Очень занимательное занятие.
А как было просто раньше разрабатывать на С++? скачиваешь исходники или dll под свою платформу. Прописываешь в Visual Studio пути и все работает (наверное). Сейчас кеогда я смотрю на С++, меня все больше эта картина разочаровывает. Сахара и дополнительных фич напихивают столько что аж на зубах хрустит. Упрощает ли это что-то и делает более безопасным? Ну не знаю. А еще теперь можно использовать CMake. Это что-то для диких людей, которые забыли графические интерфейсы и пишут полотна голого текста. И главное пакеты могут сами подтягиваться. Но как любят делать все менеджеры пакетов - не всегда и не везде. Пробовал недавно собрать
https://github.com/OpenApoc/OpenApoc/releases/. Минут 40 что-то скачивается в MSVS. Потом пытаешься обнаружить что же там за конфигурации собрались. Запустить то можно? И сразу ошибки лезут. Конечно можно залезть, разобраться, но нет охоты. И вообще для неофита CMake выглядит даже хуже чем npm.
Ну это наверное проблемы убогих Windows и MacOS? На драгоценном Linux все лучше? Нет, там Линус бушует. Драйверов для видеокарт нормальных чтобы все работало как нет так и не будет. Так еще читал предложение отключать нафиг все видеокарты старше 5 лет. Отличное решение, верно? При том что средне-дорогие карты могут сейчас служить больше 5 лет даже для игр. А стоять в компьютере, где основная нагрузка идет на процессор могут и лет 10, а то и больше. Зависимости же в Linux так глубоко зарыты, что без них и приложение зачастую не поставить. И каждое с готовностью будет конфликтовать с какими-то другими своими зависимостями. Просто шикарно.
Про политику тоже не забываем. Прекрасные люди в граде на холме вполне могут подкладывать в пакеты всякие гадости против злых русских. Только ведь любая защита или хитрая проверка тоже может не срабатывать или глючить. Мне сразу вспомниается курьез с игрой Settlers III, когда пиратам подложили свинью. Вместо чушек железа в плавильне в пиратских версиях выплавлялись свиньи. Но не долго праздновали победу над пиратами, потому что эта фича начала всплывать и у законопослушных покупателей. С тех пор не редки случая когда защита бьет по тем, по ком не должна или кого должна была защищать. А еще давайте вспомним не только русских хакеров, а раскосые лица студентов в вузах по всему миру, которые станут специалистами и тоже смогут подкладывать мины в пакеты против недружественных Китаю стран. Кто-то будет готовить подлянки против еврейцев. Отличное же будущее! Интересное.
Разработка и использование ПО еще никогда не было таким веселым!