Движение 0deps: локальные зависимости и неизменяемые контракты
Разработчики программного обеспечения часто устанавливают сотни внешних библиотек в каждый проект. Современные фреймворки полагаются на тысячи транзитивных зависимостей. Это означает, что ваше приложение запускает код от сотен неизвестных авторов.
Такая конфигурация ускоряет разработку, но также создает огромные риски безопасности в вашей цепочке поставок ПО.
Движение 0deps задает простой вопрос: Что, если бы ваше приложение запускало только тот код, который вы действительно контролируете?
Каждая зависимость увеличивает вашу поверхность атаки. Зависимости могут:
- Вносить уязвимости в безопасность.
- Стать объектом атак на цепочку поставок.
- Быть заброшенными.
- Изменять свой публичный API.
- Нарушать обратную совместимость.
В модели 0deps вы включаете все необходимые зависимости непосредственно в репозиторий вашего проекта. Вы не загружаете их динамически во время установки. Все, что необходимо для сборки и запуска приложения, присутствует с момента первого клонирования.
Этот подход обеспечивает:
- Воспроизводимые сборки.
- Меньшую зависимость от внешних реестров пакетов.
- Централизованный аудит безопасности.
- Более высокую предсказуемость.
- Меньшую поверхность атаки на цепочку поставок.
0deps не означает, что вы перестаете обновлять код. Алгоритмы и исправления безопасности должны развиваться. Вместо этого вы сохраняете стабильность публичного контракта.
Каждая библиотека предоставляет тщательно спроектированный интерфейс. Например:
authenticate()createSession()verifyPasskey()
Эти функции определяют контракт. Этот контракт остается неизменным. Вы можете переписать базовый код или заменить внутренние библиотеки, не влияя на остальную часть вашего приложения.
Когда появляется уязвимость, вы обновляете реализацию за интерфейсом. Публичный API остается идентичным. Ваше приложение продолжает работать без изменений в коде.
Структура выглядит следующим образом: Приложение ↓ Публичный интерфейс ↓ Внутренний адаптер ↓ Реализация
Если внешняя библиотека исчезает, вы меняете только адаптер. Никакая другая часть вашего приложения не ломается. Эта изоляция защищает вас от вредоносных пакетов, компрометации реестров и подмены зависимостей (dependency confusion).
Проекты живут десятилетиями. Библиотеки и фреймворки — нет. 0deps позволяет вашему приложению использовать одни и те же стабильные контракты годами, пока вокруг него меняется экосистема.
Вы получаете предсказуемое, отказоустойчивое и удобное в обслуживании программное обеспечение.
Optional learning community: https://t.me/GyaanSetuAi
