مينيكس، ولينكس، وبعض الدروس

نشره زائر (لم يتم التحقق) في

لينكس نظام تشغيل مفتوح المصدر وأنت تعلم ذلك، وربما أنت تستخدمه الآن في قراءة هذا المقال. ولكنك ربما لم تسمع عن نظام التشغيل مينيكس MINIX. نستطيع أن نقول إن مينكس باختصار هو البذرة الأولى التي أنبتت لينكس. إن لهذا قصة، ومن هذه القصة نستطيع أن نستخلص القليل من الدروس؛ فإذا كنت مهتماً، فتابع من فضلك قراءة المقال...

 

يحكي (أندريه تننبوم) في الكتاب المعروف Operating Systems: Design and Implementation، قصة مينيكس باختصار في قسم فرعي تحت عنوان Minix History (تاريخ مينيكس)، وهذا المقال يعتمد على هذا القسم الفرعي. هذا الكتاب فريد في شرح نظريات نظم تشغيل الحاسوب إلى جانب شرح تطبيقها عملياً في نظام تشغيل تعليمي مصغر، ولكنه حقيقي، يتيح للطلاب استكشاف الجوانب العملية أثناء دراستهم للمبادئ النظرية. في الحقيقة، أكثر من ثلث الكتاب عبارة عن سرد كامل للكود المصدري لنظام التشغيل مينيكس، في ما يزيد على 27600 سطر. المثير في الموضوع أن تننبوم قد كتب نظام التشغيل بنفسه بلغة C مع بعض الأسمبلي، ونشره كاملاً في أول طبعة من الكتاب عام 1987 ميلادي. ما الذي قد يدفع بروفيسوراً مشغولاً في الجامعة إلى كتابة نظام تشغيل كامل؟

 

الحكاية أن الكود المصدري لنظام يونكس UNIX كان يستخدم في الجامعات من أجل تدريس مادة نظم التشغيل (ليس في جامعاتنا بالطبع؛ لأسباب ليس أقلها أن الطالب في هذه المرحلة بالكاد يستطيع أن يفكّ الخط، أعني يقرأ كوداً برمجياً، ولكن هذه قصة أخرى). وصل الأمر إلى أن هناك من كتب كتيباً يفصّل فيه وظيفة كود نظام التشغيل سطراً بسطر، واستخدم هذا الكتيب في كثير من الجامعات بترخيص من شركة AT&T حيث تم تطوير يونكس أول مرة. كان هذا حتى الإصدار السادس من يونكس. منذ الإصدار السابع، أدركت AT&T قيمة يونكس كمنتج تجاري، وحظرت استخدام الكود المصدري في المواد الدراسية (باعتباره سراً من أسرار المهنة). كانت ردة فعل كثير من الجامعات متوقعاً، ومعقولاً، وهو التخلي عن تدريس يونكس، والتركيز على المبادئ النظرية في تدريس نظم التشغيل. لكن ردة فعل تننبوم بالذات كانت غريبة، ومن نوع فريد. لقد شعر بأن تدريس نظم التشغيل نظرياً فقط يبقى ناقصاً، ويعطي الطالب نظرة (عرجاء) أحادية الجانب عن حقيقة نظام التشغيل. النظريات التي تغطّى عادة بكثافة (مثل خوارزميات الجدولة scheduling algorithms)، قد لا تكون بتلك الأهمية عملياً، في حين تحظى أجزاء عملية في غاية الأهمية بتغطية نظرية أقل (مثل الدخل والخرج I/O ونظام الملفات file system)، لأنه ليس هناك الكثير ليقال عنها نظرياً.

 

ما الذي فعله تننبوم؟ وكيف عبّر عن اعتراضه على هذا الأسلوب؟ لقد سحب كرسيه أمام حاسوبه، وكتب نظام تشغيل من الصفر، ولكن بطريقة ذكية. بالنسبة للمستخدم، فإن مينيكس يشبه تماماً يونكس، ويحوي البرامج الأساسية المعتادة (مثل cat وgrep وls وmake...)، بينما يختلف كلياً في بنيته وكوده المصدري. لم يستخدم تننبوم حتى سطراً واحداً من كود يونكس 7، حتى يتجنب أي مشاكل قانونية، وفي نفس الوقت حاول أن يجعل من مينيكس نظام تشغيل سهل التعلم، واضح التركيب، وقليل المتطلبات. بهذا الشكل، أصبح في متناول الطلاب نظام تشغيل مألوف الاستخدام، سهل القراءة (نسبياً بالطبع، على قدر ما يمكن أن تكون قراءة نظام تشغيل سهلة)، ويستطيعون تشريحه كما يشرّح طلاب الأحياء الضفادع على حد تعبير تننبوم.

 

لقد تطور مينيكس كثيراً الآن، منذ النسخة الأولى MINIX 1 في 1987 مع الطبعة الأولى من الكتاب المذكور أعلاه، ثم النسخة الثانية MINIX 2 عام 1997 مع الطبعة الثانية، وأخيراً العمل مستمر على إصدارات متتابعة للنسخة الثالثة MINIX 3 التي أتت عام 2004 مع الطبعة الثالثة من الكتاب، والتي شهدت تغييراً كبيراً في بنية مينكس، وتحاول أن تنقله من فئة نظام تشغيل تعليمي إلى صف نظام تشغيل متكامل وموثوق، ويشترك مجموعة من طلاب ومبرمجي البروفيسور تننبوم في دعمه. إذا كنت مهتماً أكثر بهذا النظام، وبمزاياه وتطويره، فيمكنك تحميله بدون مقابل مع معرفة الكثير من التفاصيل الأخرى من موقعه الرسمي على هذا الرابط: http://www.minix3.org. لكن الذي يهمنا هنا أكثر الآن هو علاقة هذا النظام بالنظام الشهير لينكس. بالمناسبة، اسم MINIX هو اختصار لـ(يونكس المصغّر mini-UNIX).

 

بعد فترة قصيرة من إصدار مينيكس لأول مرة، تكونت مجموعة USENET اسمها comp.os.minix من أجل مناقشة هذا النظام. في خلال أسابيع فقط، بلغ عدد المشتركين في هذه المجموعة أربعين ألفاً. المشكلة التي واجهت تننبوم هنا هي أن أغلب المشتركين أرادوا المزيد من الميزات في النظام، وسيل من مئات الاقتراحات والأفكار، بل ومقتطفات من الكود انهال على مؤلف مينيكس يومياً. نجح تننبوم في مقاومة هذه الموجة لسنوات، والسبب في ذلك هو أنه أراد أن يبقى مينيكس نظيفاً وصغيراً. نظيفاً من أي تعقيدات تأتي مع كثرة الميزات حتى يظل متيسراً لفهم الطلاب، وصغيراً إلى حد كافٍ لتشغيله بأبسط المتطلبات التي يستطيع الطلاب توفيرها.

 

بطبيعة الحال، قام العديد من الطلاب بشراء أجهزتهم الشخصية، وحملوها بنظام مينيكس، ثم عكفوا على دراسة الكود بعناية. واحد من هؤلاء، طالب فنلندي يدعى لينوس تورفالدز. بعد تثبيت ودراسة مينيكس، حاول لينوس استخدامه في مهام لم يكن مينيكس بعد قادراً عليها، لذلك استمر في تزويده بميزات مختلفة من كتابته شخصياً، حتى تكوّن لديه كيرنل ابتدائي مع حلول أغسطس عام 1991 ميلادي. في 25 أغسطس 1991، أعلن عن هذا الكيرنل في المجموعة comp.os.minix، وقد جذب هذا الإعلان اهتمام آخرين ليساعدوه. في 13 مارس 1994، تم إصدار LINUX 1.0، ولم يتوقف بعدها إلى الآن، حيث أصبح منافساً أساسياً وخطيراً للأنظمة التجارية الأخرى، ولكن هذا الجزء يعلمه الجميع.

 

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

 

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

 

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

 

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

 

كملحوظة جانبية، ليست ذات أهمية حقيقية، لكن لا أستطيع تجنب التفكير فيها: هل كان من الممكن أن تكون ثورة لينكس باسم مينيكس يوماً ما إن كان تننبوم قد استجاب لرغبة الناس وجهّز مينيكس بما كان يفتقر إليه بسنوات قبل أن يفعل لاينوس ذلك؟ أتركك الآن لتفكر في الإجابة.