Gerakan 0deps: Dependensi Lokal dan Kontrak Imutabel
Pengembang perangkat lunak sering kali menginstal ratusan pustaka eksternal di setiap proyek. Framework modern bergantung pada ribuan dependensi transitif. Ini berarti aplikasi Anda menjalankan kode dari ratusan kontributor yang tidak dikenal.
Kecepatan ini menciptakan risiko besar bagi rantai pasokan perangkat lunak Anda.
Gerakan 0deps mengajukan pertanyaan sederhana: Bagaimana jika aplikasi Anda hanya menjalankan kode yang benar-benar Anda kendalikan?
Setiap dependensi meningkatkan permukaan serangan (attack surface) Anda. Hal ini dapat menimbulkan celah keamanan, ditinggalkan pengembangnya, atau merusak kode Anda dengan pembaruan baru. Anda kehilangan kendali atas kode yang berjalan di lingkungan produksi Anda.
Dalam model 0deps, Anda membawa semua dependensi secara langsung ke dalam repositori proyek Anda. Anda tidak mengunduhnya secara dinamis selama instalasi. Segala sesuatu yang diperlukan untuk membangun dan menjalankan aplikasi Anda sudah tersedia di sana.
Pendekatan ini memberikan beberapa manfaat:
- Build yang dapat direproduksi (reproducible builds)
- Mengurangi ketergantungan pada registri paket eksternal
- Audit keamanan terpusat
- Prediktabilitas yang lebih baik
- Risiko rantai pasokan yang lebih rendah
Prinsip utamanya bukanlah menghentikan perubahan kode. Algoritma dan perbaikan keamanan harus terus berkembang. Yang tetap stabil adalah kontrak publiknya.
Setiap pustaka mengekspos antarmuka (interface) yang dirancang dengan cermat.
- authenticate()
- createSession()
- verifyPasskey()
Fungsi-fungsi ini mendefinisikan sebuah kontrak. Kontrak tersebut tidak pernah berubah. Anda dapat menulis ulang kode dasarnya atau mengganti pustaka tersebut sepenuhnya. Bagian lain dari aplikasi Anda tetap sama karena ia hanya berkomunikasi dengan kontrak tersebut.
Ketika kerentanan muncul, Anda memperbaikinya secara internal. Anda memperbarui implementasi di balik antarmuka tersebut. API publik tetap identik. Aplikasi Anda terus berjalan tanpa perubahan kode.
Struktur ini menggunakan adapter internal untuk mengisolasi kode eksternal: Application ↓ Public Interface ↓ Adapter ↓ Implementation
Jika pustaka eksternal menghilang, Anda hanya perlu memperbarui adapter-nya. Tidak ada bagian lain dari aplikasi Anda yang rusak.
Gerakan 0deps tidak melawan open source. Gerakan ini mengubah cara Anda menggunakannya. Pustaka menjadi komponen terintegrasi yang Anda audit dan kelola versinya sendiri.
Ini menciptakan perangkat lunak yang bertahan selama puluhan tahun. Implementasi berubah, tetapi kontrak Anda tetap ada. Stabilitas ini membuat perangkat lunak Anda dapat diprediksi dan tangguh.
