Часто в комментах на канале вижу один и тот же вопрос: зачем мы ставим node.js/java/python/... через консоль и дурацкие менеджеры версий (sdkman, nvm, pyenv, rvm), если есть нормальные инсталляторы? Кому вообще может понадобиться древняя версия ноды или чего-либо еще?
Проблем здесь несколько:
1. В определённый момент ваш боевой проект разрастается, зависимостей у него появляется много, кодовая база растёт и вы не можете адекватно реагировать на обновление каких-либо библиотек. Например, у меня в проекте есть 2 библиотеки: SCSS и slate.js. Обе активно развиваются и в определённый момент между версиями библиотек появились отличия в API. А данные библиотеки очень сильно связаны с моим кодом. Чтобы обновить их, необходимо отрефакторить порядка 100 тыс. строк кода. А после провести полное регрессионное тестирование всего проекта и всей функциональсти. В текущий момент наш стартап не может позволить себе потратить на это деньги, потому как мы еще не вышли на окупаемость и нам необходимо показать рост нашим инвесторам. Поэтому мы застряли на текущей версии библиотек. Эти же библиотеки зависят по разным причинам от конкретной версии node.js. Таким образом, мы зависли на node.js версии 8.10
2. В далёком 2014 я участвовал в проекте созданиия простого CAD редактора для компании, производящей окна и двери. Никакого rocket science, но много удобного и отзывчивого интерфейса. Последние 5 лет никто не обслуживал проект ввиду его стабильности. Сейчас заказчик вернулся к нам с вопросом на доработку продукта и обновлением интерфейса. Возникает запрос в установке java 8 на рабочее место. При этом мне необходимо продолжать свои текущие проекты на java 9/11
3. Многие крупные компании, вроде банков и заводов, весьма осторожно относятся к новым версиям всего. Так, банки очень долго сидят на устаревших ОС и jvm. И это требования безопасности: старый продукт известен в своих уязвимостях и багах, а новые не появляются. И, что характерно, Российские банки и компании гораздо более подвижны в этом вопросе. Например такой гигант, как MAN до сих пор сидит на Java версии 6 и не планирует переезд.
4. Чаще всего обновление платформы может потребовать еще и обновление клиентов, а это дополнительные проблемы, на которые никто не хочет закладывать время и ресурсы. Представьте себе количество клиентов той же SAP и представьте сколько клиентских машин необходимо обновить для перехода на новую версию продукта
Каждый инструмент создаётся под конкретные проблемы. В случае с менеджерами версий - проблема в использовании нескольких версий одного ЯП на одной машине для разных проектов. И поверьте, без них это делать сильно сложнее.