Рух 0deps: локальні залежності та незмінні контракти

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

Така швидкість створює величезний ризик для вашого ланцюга постачання програмного забезпечення.

Рух 0deps ставить просте запитання: Що, якби ваша програма виконувала лише той код, який ви насправді контролюєте?

Кожна залежність збільшує поверхню атаки. Вона може принести вразливості, бути покинутою або зламати ваш код із новим оновленням. Ви втрачаєте контроль над кодом, що працює у вашому робочому середовищі.

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

Цей підхід дає кілька переваг:

  • Відтворювані збірки
  • Менша залежність від зовнішніх реєстрів пакетів
  • Централізовані аудити безпеки
  • Краща передбачуваність
  • Нижчий ризик для ланцюга постачання

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

Кожна бібліотека надає ретельно розроблений інтерфейс.

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

Ці функції визначають контракт. Цей контракт ніколи не змінюється. Ви можете переписати базовий код або повністю замінити бібліотеку. Решта вашої програми залишається незмінною, оскільки вона взаємодіє лише з контрактом.

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

Ця структура використовує внутрішній адаптер для ізоляції зовнішнього коду: Application ↓ Public Interface ↓ Adapter ↓ Implementation

Якщо зовнішня бібліотека зникає, ви оновлюєте лише адаптер. Жодна інша частина вашого додатка не зламається.

Рух 0deps не бореться з open source. Він змінює те, як ви його використовуєте. Бібліотеки стають інтегрованими компонентами, які ви самі аудитуєте та версіонуєте.

Це дозволяє створювати програмне забезпечення, яке служить десятиліттями. Реалізації змінюються, але ваші контракти залишаються. Така стабільність робить ваше програмне забезпечення передбачуваним і стійким.

Джерело: https://dev.to/fullagenticstack/mouvement-0deps-dependances-locales-contrats-immuables-et-securite-par-conception-24c2