0deps मूवमेंट: स्थानीय डिपेंडेंसीज़ और इम्यूटेबल कॉन्ट्रैक्ट्स

सॉफ्टवेयर डेवलपर्स अक्सर सैकड़ों बाहरी लाइब्रेरीज़ इंस्टॉल करते हैं। आधुनिक फ्रेमवर्क हजारों ट्रांजिटिव डिपेंडेंसीज़ (transitive dependencies) पर निर्भर करते हैं। इसका मतलब है कि आपका ऐप उन अजनबियों का कोड चलाता है जिन्हें आप नहीं जानते।

यह गति एक कीमत के साथ आती है। आप सॉफ्टवेयर सप्लाई चेन जोखिमों का सामना करते हैं।

हर डिपेंडेंसी आपके अटैक सरफेस (attack surface) को बढ़ाती है। डिपेंडेंसीज़ ये कर सकती हैं:

  • सुरक्षा खामियां पैदा करना।
  • सप्लाई चेन हमलों के लिए लक्ष्य बनना।
  • लेखकों द्वारा छोड़ दिए जाना।
  • अपने पब्लिक API को बदलना।
  • बैकवर्ड कम्पैटिबिलिटी (backward compatibility) को तोड़ना।

0deps मूवमेंट इसे बदल देता है। यह पूछता है: क्या होगा यदि आपका ऐप केवल उसी कोड पर निर्भर हो जिसे आप नियंत्रित करते हैं?

0deps मॉडल में, आप सभी आवश्यक कोड को सीधे अपने प्रोजेक्ट रिपॉजिटरी में ले आते हैं। आप इंस्टॉलेशन या बिल्ड टाइम के दौरान पैकेज डाउनलोड नहीं करते हैं। जब आप रेपो को क्लोन करते हैं, तो आपको जो कुछ भी चाहिए वह वहीं होता है।

यह कई लाभ प्रदान करता है:

  • रिप्रोड्यूसिबल बिल्ड्स (Reproducible builds)।
  • बाहरी पैकेज रजिस्ट्रियों पर कोई निर्भरता नहीं।
  • केंद्रीकृत सुरक्षा ऑडिट।
  • अधिक पूर्वानुमान क्षमता (predictability)।
  • कम सप्लाई चेन जोखिम।

लक्ष्य कोड को बदलने से रोकना नहीं है। एल्गोरिदम और सुरक्षा सुधारों (security fixes) को विकसित होना चाहिए। जो चीज़ समान रहती है, वह है पब्लिक कॉन्ट्रैक्ट (public contract)।

आप प्रत्येक लाइब्रेरी के लिए एक स्थिर इंटरफ़ेस डिज़ाइन करते हैं। उदाहरण के लिए:

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

इन फंक्शन्स के पीछे का कार्यान्वयन (implementation) पूरी तरह से बदल सकता है। आप लॉजिक को फिर से लिख सकते हैं या लाइब्रेरी को बदल सकते हैं। आपके ऐप के बाकी हिस्से को कभी अंतर पता नहीं चलता।

यह अपडेट के दौरान होने वाली सबसे बड़ी सिरदर्द को हल करता है। आमतौर पर, आप एक बग को ठीक करने और साथ ही अपने ऐप को खराब करने की चिंता करते हैं। 0deps के साथ, पब्लिक API समान रहती है। आपका एप्लिकेशन बिना किसी कोड बदलाव के काम करता रहता है।

आप बाहरी टूल्स को इंटरनल एडेप्टर (internal adapters) के पीछे अलग कर देते हैं। यदि कल कोई लाइब्रेरी बंद हो जाती है, तो आपको केवल एडेप्टर को अपडेट करना होगा। आपका बाकी सिस्टम सुरक्षित रहता है।

0deps ओपन सोर्स से नफरत नहीं करता है। यह ओपन सोर्स का अधिक सुरक्षित रूप से उपयोग करना चाहता है। डायनेमिक इंस्टॉलेशन के बजाय, आप लाइब्रेरीज़ को एकीकृत घटकों (integrated components) के रूप में देखते हैं। आप उनका ऑडिट करते हैं। आप उन्हें वर्जन देते हैं। आप उन्हें एनकैप्सुलेट (encapsulate) करते हैं।

सॉफ्टवेयर दशकों तक जीवित रहता है। लाइब्रेरीज़ और फ्रेमवर्क खत्म हो जाते हैं। 0deps यह सुनिश्चित करता है कि आपका एप्लिकेशन उन सभी बदलावों के बावजूद चलता रहे।

स्रोत: https://dev.to/fullagenticstack/movimiento-0deps-dependencias-locales-contratos-inmutables-y-seguridad-por-diseno-1a6o

वैकल्पिक लर्निंग कम्युनिटी: https://t.me/GyaanSetuAi