Movement 0deps: Local Dependencies และ Immutable Contracts
นักพัฒนาซอฟต์แวร์มักจะติดตั้งไลบรารีภายนอกหลายร้อยรายการในทุกๆ โปรเจกต์ เฟรมเวิร์กสมัยใหม่ต้องพึ่งพา transitive dependencies นับพันรายการ ซึ่งหมายความว่าแอปพลิเคชันของคุณกำลังรันโค้ดจากผู้ร่วมพัฒนาที่คุณไม่รู้จักหลายร้อยคน
ความรวดเร็วนี้สร้างความเสี่ยงมหาศาลต่อซัพพลายเชนซอฟต์แวร์ (software supply chain) ของคุณ
ขบวนการ 0deps ตั้งคำถามง่ายๆ ว่า: จะเป็นอย่างไรหากแอปพลิเคชันของคุณรันเฉพาะโค้ดที่คุณควบคุมได้จริงๆ เท่านั้น?
ทุกๆ dependency จะเพิ่มพื้นที่การโจมตี (attack surface) ของคุณ มันอาจนำช่องโหว่ด้านความปลอดภัยเข้ามา ถูกทิ้งร้าง หรือทำให้โค้ดของคุณพังจากการอัปเดตใหม่ๆ คุณจะสูญเสียการควบคุมโค้ดที่กำลังรันอยู่ในสภาพแวดล้อมการใช้งานจริง (production environment)
ในโมเดลแบบ 0deps คุณจะนำ dependencies ทั้งหมดเข้ามาไว้ใน repository ของโปรเจกต์โดยตรง คุณจะไม่ดาวน์โหลดพวกมันแบบไดนามิกในระหว่างการติดตั้ง ทุกสิ่งที่จำเป็นสำหรับการ build และรันแอปของคุณจะถูกเตรียมไว้ที่นั่นเรียบร้อยแล้ว
แนวทางนี้ให้ประโยชน์หลายประการ:
- Reproducible builds
- ลดการพึ่งพา external package registries
- การตรวจสอบความปลอดภัยแบบรวมศูนย์ (Centralized security audits)
- ความสามารถในการคาดการณ์ได้ดีขึ้น
- ความเสี่ยงด้าน supply chain ที่ต่ำลง
