حركة 0deps: التبعيات المحلية والعقود غير القابلة للتغيير
غالبًا ما يقوم مطورو البرمجيات بتثبيت مئات المكتبات الخارجية في كل مشروع. وتعتمد الأطر البرمجية الحديثة على آلاف التبعيات المتعدية (transitive dependencies). وهذا يعني أن تطبيقك يقوم بتشغيل أكواد من مئات المساهمين المجهولين.
هذا الإعداد يسرع عملية التطوير، ولكنه يخلق أيضًا مخاطر أمنية هائلة في سلسلة توريد البرمجيات الخاصة بك.
تطرح حركة 0deps سؤالًا بسيطًا: ماذا لو كان تطبيقك يشغل فقط الأكواد التي تتحكم فيها فعليًا؟
كل تبعية تزيد من مساحة الهجوم (attack surface) الخاصة بك. يمكن للتبعيات أن:
- تتسبب في ثغرات أمنية.
- تتعرض لهجمات سلسلة التوريد.
- تصبح مهجورة.
- تغير واجهة برمجة التطبيقات (API) العامة الخاصة بها.
- تكسر التوافق مع الإصدارات السابقة.
في نموذج 0deps، تقوم بتضمين جميع التبعيات الضرورية مباشرة في مستودع مشروعك. أنت لا تقوم بتنزيلها ديناميكيًا أثناء التثبيت. كل ما يلزم لبناء وتشغيل التطبيق يكون موجودًا منذ عملية النسخ (clone) الأولى.
يوفر هذا النهج:
- عمليات بناء قابلة لإعادة الإنتاج (Reproducible builds).
- اعتمادًا أقل على سجلات الحزم الخارجية.
- عمليات تدقيق أمني مركزية.
- قابلية تنبؤ أعلى.
- مساحة هجوم أصغر في سلسلة التوريد.
لا تعني 0deps أن تتوقف عن تحديث الكود. فالخوارزميات والإصلاحات الأمنية يجب أن تتطور. بدلاً من ذلك، أنت تحافظ على استقرار العقد العام (public contract).
توفر كل مكتبة واجهة مصممة بعناية. على سبيل المثال:
authenticate()createSession()verifyPasskey()
تحدد هذه الدوال عقدًا. يظل هذا العقد ثابتًا. يمكنك إعادة كتابة الكود الأساسي أو استبدال المكتبات الداخلية دون التأثير على بقية تطبيقك.
عندما تظهر ثغرة أمنية، تقوم بتحديث التنفيذ (implementation) الموجود خلف الواجهة. تظل واجهة برمجة التطبيقات (API) العامة متطابقة، ويستمر تطبيقك في العمل دون الحاجة لتغييرات في الكود.
يبدو الهيكل كما يلي: التطبيق ↓ الواجهة العامة ↓ المحول الداخلي (Internal Adapter) ↓ التنفيذ (Implementation)
إذا اختفت مكتبة خارجية، فستقوم فقط بتغيير المحول (adapter). لن يتعطل أي جزء آخر من تطبيقك. هذا العزل يحميك من الحزم الخبيثة، واختراق السجلات، وهجمات ارتباك التبعيات (dependency confusion).
المشاريع تعيش لعقود، بينما المكتبات والأطر البرمجية لا تفعل ذلك. تتيح 0deps لتطبيقك استخدام نفس العقود المستقرة لسنوات بينما يتغير النظام البيئي من حوله.
ستحصل على برمجيات قابلة للتنبؤ، ومرنة، وسهلة الصيانة.
مجتمع تعليمي اختياري: https://t.me/GyaanSetuAi
