في مايو 2009، كان عمري 22 عاماً، أنهي شهادتي في نظم معلومات الحاسوب من جامعة الأردن، وساعدت في تأسيس نادي مصدر مفتوح. وقفت أمام طلاب آخرين وشرحت لهم لماذا يجب أن يهتموا ببرمجيات لم يدفعوا ثمنها، بناها أناس لن يقابلوهم أبداً، تعمل على هواتف بـ2.5 ميجابايت من الـheap.

الـstack الذي درّسناه: Java - وتحديداً J2ME - وPHP للويب، وMySQL لأنه لم يكن هناك خيار آخر واضح. هذه ليست تدوينة عن أدوات حديثة. إنها تدوينة عن كيف كان يبدو أن تكون مبشّراً ببرمجيات المصدر المفتوح في عمّان عام 2009، حين نشأ معظم الطلاب في الغرفة على نسخ مقرصنة من Windows XP واعتقدوا أن Linux لمن يستمتع بالمعاناة.

لماذا J2ME لا Objective-C

يسألني الناس هذا السؤال الآن، الذين لم يكونوا هناك. “لماذا J2ME؟ iPhone كان موجوداً بالفعل في 2009.”

iPhone كان موجوداً. برنامج مطوري iPhone كان يتطلب Mac و99 دولاراً سنوياً. الهواتف التي يمتلكها زملاؤنا فعلاً - والهواتف التي سيحمل مستخدمو أي برنامج قد نبنيه - كانت Nokia Series 40 وSony Ericsson وجهاز Symbian عرضي. J2ME هو ما تشغّله تلك الهواتف. MIDP 2.0 وCLDC 1.1، وإن كنت محظوظاً جهاز متوافق مع JTWI بكاميرا API محترمة.

إذا كنت تبني برمجيات لمستخدمين حقيقيين في الأردن عام 2009، كنت تستهدف J2ME. لم يكن هذا اختياراً فلسفياً. كان حساباً رياضياً.

مشروع تخرجي آنذاك كان منصة تسويق قائمة على GIS مع عملاء موبايل لـWindows Mobile وSymbian. كنت أكتب الـfrontend للموبايل بـJava. الـbackend الويب بـPHP. قاعدة البيانات بـMySQL. إذن المنهج الذي صمّمناه للنادي لم يكن نظرياً - كان حرفياً ما كنت أبنيه في نفس الفصل الذي كنت أُدرّسه.

ما معنى المصدر المفتوح فعلاً في تلك الغرفة

إليك ما جعل الأمر يبدو جريئاً: معظم الناس في مجال البرمجيات في الأردن آنذاك - طلاباً ومهنيين والجميع - كانوا يعملون في عالم يحمل فيه البرنامج سعراً ورقم تسلسلي. Microsoft Office لها مفتاح. Photoshop لها مفتاح. فكرة أن شيئاً مفيداً كان متاحاً، بشكل قانوني، مجاناً، مع الكود المصدري الذي تستطيع فعلاً قراءته - كانت تحتاج شرحاً.

لم أكن أُلقي محاضرة عن فلسفة ريتشارد ستولمان. كنت أشرح لغرفة من الشباب في العشرينيات أنهم يستطيعون بناء تطبيق ويب اليوم باستخدام Apache وPHP وMySQL دون إنفاق دينار واحد على التراخيص، وأن ذلك قانوني ومتعمَّد وهو الطريقة التي يعمل بها معظم الإنترنت أصلاً.

لحظات الإضاءة كانت حقيقية. “إذن الكود موجود فقط… هكذا؟” نعم. الكود موجود فقط هكذا. اذهب اقرأه. اذهب اكسره. اذهب أصلحه وأرسل الإصلاح.

ما أصمد وما لم يصمد

الفلسفة أصمدت. التقنية المحددة لم تصمد.

J2ME الآن قطعة متحفية. Symbian قطعة متحفية. Nokia Series 40 قطعة متحفية. قبل عقد كامل من استكمال الهواتف الذكية سيطرتها، كنا ندرّس تطوير الموبايل على أجهزة يصعب إيجادها الآن خارج درج مجموعات الهواة.

لكن المبدأ - أن تفهم الـstack الكامل، أن تستطيع قراءة المصدر للأدوات التي تستخدمها، أن شحن شيء حقيقي هو أفضل تعليم - هذا صمد. المهندسون الذين عملت معهم وهم يمتلكون أفضل الحدسيات هم في الغالب أشخاص قضوا وقتاً في قراءة الكود الذي لم يكتبوه. هذه ليست مصادفة.

النسخة المحددة من “المصدر المفتوح كعرض غير اعتيادي” تراجعت هي أيضاً، لأسباب واضحة. في 2009، إقناع شخص بأن المصدر المفتوح شرعي كان يتطلب جهداً. في 2024، محاولة بناء أي مشروع جاد بدون مصدر مفتوح ستحتاج شرحاً أطول. نجح التبشير، جماعياً. ربحنا.

ما حدث بعده مباشرة

بعد ثلاثة عشر شهراً من تأسيس النادي، كنت في EHS/HAKEEM أكتب روتينات MUMPS لنظام الرعاية الصحية الوطني في الأردن. إذا لم تكن مألوفاً بـMUMPS: إنها لغة من 1966، تعمل على VistA، لا تزال تُشغّل مستشفيات حول العالم، وهي بُعدٌ ما عن PHP كما يمكن أن تسافر بينما تبقى على نفس الكوكب.

القفزة تبدو مقلقة. لم تشعر بالقلق. كنت ألقي محاضرات عن “اقرأ الكود المصدري، افهم النظام تحتك” - ثم وجدت نفسي في نظام كود مصدري عمره 40 عاماً، كتبه أناس في MIT والـVA، وكان عليّ فهمه لأفعل أي شيء مفيد. الممارسة انتقلت حتى حين كانت بناء الجملة من حقبة أخرى.

دأبت على التدريس بشكل ما منذ قبل أن تكون لي مسمّى وظيفي. في AFAQ كنت أجري مراجعات معمارية كانت في معظمها تدريساً مُهيكلاً. في Bytro، ورش تحديث. في Talentera، العمل مع الفريق على تصميم الأنظمة. تغيّر الشكل. بقي الحدس - اشرح النظام، أظهر المصدر، ابنِ الشيء - ثابتاً.

من 2009 إلى الآن

كنت في الثانية والعشرين، أقف أمام لوح أبيض، أشرح لماذا runtime Java يتسع في هاتف Nokia هو شيء جيد يستحق وقتك. أنا الآن في السابعة والثلاثين، أشحن أنظمة موزعة بـKotlin وGo، أشغّل منصة تحكم وكلاء محلية أولاً (Fulcrum) في homelab خاص بي.

قيود heap في J2ME ذهبت. APIs الـMIDP 2.0 ذهبت. العميل Symbian لمشروع تخرجي ذهب. لكنني ما زلت أشرح لماذا يجب قراءة الكود المصدري، ما زلت أؤمن بأن أفضل طريقة لتعلم نظام هي بناء شيء حقيقي به، وما زلت، قليلاً، ذلك الشخص الذي وقف في عمر الثانية والعشرين وقال “هذا يستحق وقتك” عن برمجيات لم تدفع ثمنها.

بعض الحدسيات تتراكم.