عن المؤسس16 أكتوبر 20264 دقائق قراءة

عبدالله بن سنكر: المكتبات مفتوحة المصدر بأمان، والتراخيص قبل التثبيت

عبدالله بن سنكر يقدّم إطار قرار لاستخدام المكتبات مفتوحة المصدر في مشروعك: أسئلة قبل التثبيت، والفرق بين تراخيص MIT و Apache و GPL و AGPL، وحماية سلسلة الاعتماديات.

عبدالله بن سنكر — المكتبات مفتوحة المصدر
AZHAL

المكتبات مفتوحة المصدر

عبدالله بن سنكر

أي تطبيق حديث، حتى البسيط منه، مبني على مئات المكتبات اللي كتبها ناس ما تعرفهم. وهذا شي ممتاز: ما أحد يكتب مكتبة تواريخ أو تشفير من الصفر. لكن كل مكتبة تثبّتها تدخّل معها كوداً يشتغل بنفس صلاحيات تطبيقك، ورخصة لها شروط، ومطوّراً ممكن يترك المشروع بكرة. عبدالله بن سنكر يشتغل يومياً بحزم npm في مشاريع Next.js وحزم pub.dev في مشاريع Flutter، وهذا إطار القرار اللي يمشي عليه قبل ما يضيف أي مكتبة لمشروع عميل.

الخطوة الأولى: هل تحتاجها أصلاً؟

أرخص اعتمادية هي اللي ما أضفتها. لو الحاجة دالة من عشرة أسطر، اكتبها بنفسك. وقبل ما تدوّر على مكتبة، شوف هل اللغة أو الإطار يوفّر الحاجة من نفسه، لأن وظائف كثيرة كانت تحتاج مكتبة صارت مدمجة في المتصفحات وفي اللغات نفسها. عالم جافاسكربت يتذكر قصة حزمة left-pad: حزمة صغيرة جداً تضيف مسافات على بداية النص، سحبها صاحبها من npm، فتعطّل بناء عدد كبير من المشاريع اللي تعتمد عليها مباشرة أو بشكل غير مباشر. الدرس مو إن المكتبات خطيرة، الدرس إن كل اعتمادية خيط يربطك بقرارات غيرك، والخيوط الصغيرة الكثيرة تتشابك.

الخطوة الثانية: افحص صحة المشروع

لو قررت إنك تحتاجها، افتح صفحة مستودعها قبل ما تثبّتها، وجاوب على هذي الأسئلة:

  • متى آخر تحديث؟ مكتبة ما تحركت من سنين ممكن تكون مستقرة ومكتملة، وممكن تكون مهجورة. شوف هل فيه ردود على البلاغات الأخيرة.
  • كم شخص يصونها؟ مكتبة يعتمد عليها جزء حساس من نظامك، ويصونها شخص واحد، مخاطرة تحتاج تحسبها.
  • كيف تتعامل مع الثغرات؟ وجود سياسة أمان منشورة وسجل تغييرات واضح علامة نضج.
  • وش تجيب معها؟ بعض المكتبات تسحب عشرات الاعتماديات الفرعية، وكل وحدة منها مسؤوليتك بعد.
  • في pub.dev: شوف علامة الناشر الموثّق (verified publisher) ونقاط الجودة اللي يعرضها الموقع لكل حزمة، ودعمها للمنصات اللي تحتاجها.
  • تأكد من الاسم حرفاً حرفاً: فيه حزم خبيثة بأسماء قريبة جداً من حزم مشهورة، تنتظر خطأ إملائي واحد في أمر التثبيت.

الخطوة الثالثة: اقرأ الرخصة

«مفتوح المصدر» ما تعني «بلا شروط». التراخيص تنقسم بالعموم لعائلتين. التراخيص المتساهلة، مثل MIT و BSD و Apache 2.0، تسمح لك تستخدم المكتبة في منتج تجاري مغلق، بشرط إنك تحتفظ بنص الرخصة وإشعار حقوق المؤلف ضمن منتجك. و Apache 2.0 تضيف منحاً صريحاً لحقوق براءات الاختراع المرتبطة بالمساهمات، وتطلب الحفاظ على ملف NOTICE إذا كان موجوداً. والعائلة الثانية تراخيص الحقوق المتبادلة (copyleft)، وأشهرها GPL: لو وزّعت برنامجاً مبنياً على كود GPL، لازم توفّر مصدر برنامجك بنفس الرخصة لمن يستلمه. وهذا مهم لتطبيقات الجوال وبرامج سطح المكتب، لأنها توزَّع فعلاً على أجهزة الناس.

وفيه درجات بين العائلتين وما بعدهما. LGPL أخف، وتسمح عادةً بالربط مع برنامج مغلق بشروط محددة. و MPL تطبّق الحقوق المتبادلة على مستوى الملف المعدّل نفسه، مو المشروع كله. و AGPL هي اللي تهم أصحاب أنظمة SaaS بالذات: لأنها تعتبر تقديم البرنامج للمستخدمين عبر الشبكة سبباً لإلزامك بتوفير المصدر، حتى لو ما وزّعت ملفاً لأحد. وحالة أخيرة يغفل عنها كثير: مستودع منشور بدون أي رخصة مو «مجاني للاستخدام». الأصل القانوني إن الحقوق محفوظة لصاحبه، والنشر العلني ما يعطيك إذناً. وهذا كله فهم عام يساعدك تسأل صح، مو استشارة قانونية؛ ولو المنتج تجاري والرخصة غير واضحة، اسأل مختصاً قبل الإطلاق.

وعملياً، ما تقدر تقرأ رخصة كل اعتمادية فرعية بيدك. فيه أدوات تستخرج قائمة بتراخيص كل الحزم في المشروع، وتنبّهك لو دخلت رخصة من عائلة الحقوق المتبادلة بدون ما تنتبه. وفي Flutter، الإطار يجمع تراخيص الحزم المستخدمة تلقائياً، وتقدر تعرضها للمستخدم في شاشة جاهزة عبر showLicensePage، فتوفي بشرط ذكر الرخصة بدون جهد إضافي. وفي مشاريع الويب، صفحة «تراخيص الطرف الثالث» أو ملف مرفق مع البرنامج يؤدي نفس الغرض. والأهم إن هذا الفحص يصير مرة عند إضافة أي مكتبة جديدة، ومرة قبل كل إطلاق كبير.

الخطوة الرابعة: احمِ السلسلة بعد التثبيت

التثبيت مو نهاية القرار، هو بداية مسؤولية. ملف القفل (package-lock.json أو pubspec.lock) يدخل المستودع دائماً، عشان كل جهاز وكل خادم بناء يثبّت نفس الإصدارات بالضبط، مو «آخر إصدار متوافق» اللي ممكن يتغيّر بين يوم ويوم. وأدوات مثل npm audit أو التنبيهات الآلية في GitHub مثل Dependabot تكشف الاعتماديات اللي ظهرت فيها ثغرات معروفة، وتفتح لك طلب تحديث. ولا تحدّث كل شي دفعة وحدة بدون اختبار: التحديث الكبير لمكتبة رئيسية يحتاج فرعاً ومراجعة وتشغيلاً كاملاً للاختبارات، مثل أي تعديل ثاني. وانتبه إن بعض حزم npm تقدر تشغّل سكربتات وقت التثبيت نفسه، فالحزمة المجهولة ممكن تنفّذ كوداً على جهاز المطوّر أو خادم البناء قبل ما تستخدمها أصلاً.

نفس المنطق ينطبق على مهارات الذكاء الاصطناعي

الفكرة نفسها صارت تنطبق على أدوات الذكاء الاصطناعي. مكتبة «سكيلز» المجانية من منصة أزهل الرقمية تجمع أكثر من ألف مهارة مفتوحة المصدر لـ Claude، مصنّفة، مع تحميل مباشر ورابط لمصدر كل مهارة على GitHub. ووجود رابط المصدر هنا مو تفصيلة شكلية: المهارة تعليمات وأحياناً سكربتات ينفّذها وكيل ذكي على جهازك، فقبل ما تثبّتها افتح مصدرها، واقرأ وش تسوي، وشوف رخصتها، تماماً مثل أي مكتبة برمجية.

الخلاصة اللي يمشي عليها عبدالله عبدالرحيم بن سنكر الكندي: المصدر المفتوح من أعظم الأشياء اللي صارت في البرمجة، لكنه مو مجاني بالكامل. ثمنه انتباهك: تسأل قبل ما تثبّت، وتقرأ الرخصة قبل ما تبيع، وتراقب بعد ما تطلق. ومشروع يدفع هذا الثمن من البداية، ما يتفاجأ بفاتورته لاحقاً.

عندك فكرة؟ الاستشارة الأولى علينا

كلّم عبدالله مباشرة على واتساب — رسالتك توصل له هو، مو لرد آلي. نسمع فكرتك ونقول لك وش تحتاج وكم تكلّف، ببلاش.

مقالات ذات صلة

كل المقالات
عبدالله الكندي — اختبار فكرة مشروع
AZHAL

اختبار فكرة مشروع

عبدالله الكندي

16 أكتوبر 20265 دقائق قراءة

عبدالله الكندي: افشل صغير ومبكر، كيف تصمم تجربة تختبر فكرتك بسرعة

عبدالله الكندي يشرح كيف تصمم تجربة صغيرة تكشف ضعف فكرتك قبل ما تصرف عليها: حدد الافتراض الأخطر، واكتب رقم الفشل مسبقاً، وتجنّب الأخطاء اللي تخلّي النتيجة بلا معنى.

اقرأ المقال
عبدالله عبدالرحيم بن سنكر — قمع المبيعات واتساب
AZHAL

قمع المبيعات واتساب

عبدالله عبدالرحيم بن سنكر

16 أكتوبر 20264 دقائق قراءة

من الإعلان إلى واتساب إلى بيع: عبدالله عبدالرحيم بن سنكر يصمم القمع

إعلان يجيب محادثات واتساب كثيرة وبيع قليل؟ عبدالله عبدالرحيم بن سنكر يصمم القمع مرحلة مرحلة: الرسالة الجاهزة، وأول رد، وأسئلة التأهيل، والمتابعة، وقياس كل حملة.

اقرأ المقال
عبدالله بن سنكر — تقرير حملة سناب شات
AZHAL

تقرير حملة سناب شات

عبدالله بن سنكر

16 أكتوبر 20264 دقائق قراءة

عبدالله بن سنكر: اقرأ تقرير حملة سناب شات بالترتيب الصحيح

عبدالله بن سنكر يرتّب لك مقاييس تقرير حملة سناب شات بالتسلسل اللي تقرأها فيه: من حالة العرض والصرف، إلى الظهور والسحب، إلى التحويلات وتكلفتها والتكرار، ووش يعني كل خلل.

اقرأ المقال