0deps موومنٹ: مقامی انحصار اور غیر متبدل معاہدے

سافٹ ویئر ڈویلپرز اکثر ہر پروجیکٹ میں سینکڑوں بیرونی لائبریریاں انسٹال کرتے ہیں۔ جدید فریم ورکس ہزاروں ٹرانسٹیو انحصار (transitive dependencies) پر انحصار کرتے ہیں۔ اس کا مطلب ہے کہ آپ کی ایپلی کیشن سینکڑوں نامعلوم حصہ داروں کا کوڈ چلا رہی ہے۔

یہ رفتار آپ کی سافٹ ویئر سپلائی چین کے لیے ایک بڑا خطرہ پیدا کرتی ہے۔

0deps موومنٹ ایک سادہ سوال پوچھتی ہے: کیا ہو اگر آپ کی ایپلی کیشن صرف وہی کوڈ چلائے جس پر آپ کا اصل کنٹرول ہو؟

ہر انحصار (dependency) آپ کے حملے کی سطح (attack surface) کو بڑھاتا ہے۔ یہ سیکیورٹی کی خامیاں پیدا کر سکتا ہے، متروک ہو سکتا ہے، یا نئی اپ ڈیٹ کے ساتھ آپ کے کوڈ کو خراب کر سکتا ہے۔ آپ اپنے پروڈکشن ماحول میں چلنے والے کوڈ پر کنٹرول کھو دیتے ہیں۔

0deps ماڈل میں، آپ تمام انحصار کو براہ راست اپنے پروجیکٹ ریپوزٹری میں لے آتے ہیں۔ آپ انہیں انسٹالیشن کے دوران متحرک (dynamically) طور پر ڈاؤن لوڈ نہیں کرتے۔ آپ کی ایپ کو بنانے اور چلانے کے لیے جو کچھ بھی چاہیے وہ پہلے سے ہی وہاں موجود ہوتا ہے۔

یہ طریقہ کار کئی فوائد فراہم کرتا ہے:

  • دوبارہ تخلیق کے قابل بلڈز (Reproducible builds)
  • بیرونی پیکیج رجسٹریوں پر کم انحصار
  • مرکزی سیکیورٹی آڈٹ
  • بہتر پیش گوئی (Predictability)
  • کم سپلائی چین خطرہ

بنیادی اصول کوڈ کو تبدیل ہونے سے روکنا نہیں ہے۔ الگورتھم اور سیکیورٹی کی اصلاحات کو ارتقاء پذیر ہونا چاہیے۔ جو چیز مستحکم رہتی ہے وہ 'پبلک کانٹریکٹ' (public contract) ہے۔

ہر لائبریری ایک احتیاط سے ڈیزائن کیا گیا انٹرفیس فراہم کرتی ہے۔

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

یہ فنکشنز ایک معاہدہ (contract) کی تعریف کرتے ہیں۔ وہ معاہدہ کبھی نہیں بدلتا۔ آپ بنیادی کوڈ کو دوبارہ لکھ سکتے ہیں یا پوری لائبریری کو مکمل طور پر تبدیل کر سکتے ہیں۔ آپ کی ایپلی کیشن کا باقی حصہ ویسا ہی رہتا ہے کیونکہ یہ صرف اس معاہدے سے رابطہ کرتا ہے۔

جب کوئی کمزوری (vulnerability) سامنے آتی ہے، تو آپ اسے اندرونی طور پر ٹھیک کرتے ہیں۔ آپ انٹرفیس کے پیچھے موجود امپلیمنٹیشن (implementation) کو اپ ڈیٹ کرتے ہیں۔ پبلک API بالکل ویسی ہی رہتی ہے۔ آپ کی ایپلی کیشن کوڈ میں تبدیلی کے بغیر کام کرتی رہتی ہے۔

یہ ڈھانچہ بیرونی کوڈ کو الگ کرنے کے لیے ایک اندرونی ایڈاپٹر (adapter) کا استعمال کرتا ہے: Application ↓ Public Interface ↓ Adapter ↓ Implementation

اگر کوئی بیرونی لائبریری غائب ہو جاتی ہے، تو آپ صرف ایڈاپٹر کو اپ ڈیٹ کرتے ہیں۔ آپ کی ایپ کا کوئی دوسرا حصہ خراب نہیں ہوتا۔

0deps موومنٹ اوپن سورس کے خلاف نہیں ہے۔ یہ اس کے استعمال کا طریقہ بدل دیتی ہے۔ لائبریریاں ایسے مربوط اجزاء (integrated components) بن جاتی ہیں جن کا آڈٹ اور ورژن آپ خود کرتے ہیں۔

یہ ایسا سافٹ ویئر تخلیق کرتا ہے جو دہائیوں تک چلتا ہے۔ امپلیمنٹیشنز بدلتی رہتی ہیں، لیکن آپ کے معاہدے برقرار رہتے ہیں۔ یہ استحکام آپ کے سافٹ ویئر کو قابلِ پیش گوئی اور لچکدار (resilient) بناتا ہے۔

ماخذ: https://dev.to/fullagenticstack/mouvement-0deps-dependances-locales-contrats-immuables-et-securite-par-conception-24c2