Движение 0deps: локальные зависимости и неизменяемые контракты

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

Такая скорость создает огромный риск для вашей цепочки поставок программного обеспечения (software supply chain).

Движение 0deps задает простой вопрос: Что, если бы ваше приложение запускало только тот код, который вы действительно контролируете?

Каждая зависимость увеличивает поверхность атаки. Она может принести уязвимости, быть заброшенной или сломать ваш код с новым обновлением. Вы теряете контроль над кодом, работающим в вашей рабочей среде (production).

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

Этот подход дает несколько преимуществ:

  • Воспроизводимые сборки
  • Меньшая зависимость от внешних реестров пакетов
  • Централизованный аудит безопасности
  • Лучшая предсказуемость
  • Снижение рисков в цепочке поставок

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

Каждая библиотека предоставляет тщательно спроектированный интерфейс.

  • authenticate()
  • createSession()
  • verifyPasskey()

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

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

Эта структура использует внутренний адаптер для изоляции внешнего кода: Приложение ↓ Публичный интерфейс ↓ Адаптер ↓ Реализация

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

Движение 0deps не борется с open source. Оно меняет способ его использования. Библиотеки становятся интегрированными компонентами, которые вы сами проверяете и версионируете.

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

Источник: https://dev.to/fullagenticstack/mouvement-0deps-dependances-locales-contrats-immuables-et-securite-par-conception-24c2