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 ที่ต่ำลง