نشرت هذه المقالة في المجلة العلمية للفتيان - تونس
سنحاول في هذه المقالة تبسيط بعض المفاهيم المتعلقة بالبرمجيات الحرة ومفتوحة المصدر بغاية التعريف بنظام التشغيل غنو/لينكس واكتشاف أهم خصائصه وميزاته.
ما هي البرمجيات؟
جميعنا يعرف تلك الأجهزة الساحرة المنتشرة في كل جوانب حياتنا اليومية والتي تدعى بالـ (حواسيب)، والتي من الغالب بأننا نستطيع تمييزها عبر الأشكال المألوفة لمكوناتها كشاشات الإظهار التي تستخدم لعرض البيانات ولوحات المفاتيح التي يتم عبرها إدخال المعلومات، والفأرة التي نتحكم من خلالها ببعض مهام هذه الحواسيب، جميع هذه المكونات تندرج ضمن ما يسمى بالتجهيزات Hardware، والتي تتميز بأنها تجهيزات فيزيائية يمكن إدراكها عبر الحواس (كالبصر واللمس).
إلا أن سهولة التعرف على التجهيزات الحاسوبية نتيجة إمكانية إدراكها عبر الحواس يعيق استيعاب فكرة مكون أساسي آخر من مكونات الحاسوب، وهي البرمجيات Software، وذلك نتيجة افتقارها للخصائص الفيزيائية التي تمكننا من تلمسها أو رؤيتها. إن إدراك وجود البرمجيات يمكن فقط عبر إدراك تأثيراتها. وهي تشكل عنصراً أساسياً في تكوين الحواسيب وقدرتها على إنجاز مهامها.
دون البرمجيات تتحول التجهيزات الحاسوبية إلى جسد هامد لا حياة فيه، فالبرمجيات هي الروح التي تبعث في هذه التجهيزات الحياة وتمكنها من القيام بالأعمال التي نطلبها منها. وكما يمكننا إدراك الجسد عبر حواسنا إلا أننا نستطيع إدراك الروح فقط عبر ادراك تأثيراتها، فكذلك لا يمكننا المعرفة بوجود البرمجيات إلا من خلال تأثيراتها.
البرمجيات هي سلسلة من التعليمات التي تخبر التجهيزات المكونة للحاسوب بالكيفية التي ينبغي بها أن تقوم بأعمالها. من أمثلة البرمجيات التي لا بد أن الغالبية منكم قد اطلعوا عليها أو حتى استخدموها برمجيات تنسيق النصوص المستخدمة في كتابة الرسائل والتقارير، وكذلك البرمجيات الرسومية التي تمكننا من معالجة الصور الرقمية وتعديلها.
بما أن البرمجيات تشكل تعليمات التشغيل التي ينبغي أن يقرأها الحاسوب ليتعلم كيفية القيام بالمهام المطلوبة منه فإن هذه التعليمات لا بد أن تكتب من قبل شخص ما بلغة يستطيع الحاسوب فهمها واستيعابها. هذه اللغة تدعى لغة البرمجة والشخص الذي يقوم بهذه المهمة يدعى المبرمج. قد تتردد على مسامعكم أسماء مثل Visual Basic, Java, C++ وهي كلها أسماء للغات برمجة مختلفة يمكن استخدامها لكتابة البرمجيات الحاسوبية. وكما لا يستطيع الإنسان فهم جميع لغات العالم، فإن قدرة الحواسيب على فهم لغات البرمجة محدودة، ولا بد للمبرمج الذي يريد بناء برنامج ما من اختيار لغة برمجة تتلاءم مع التجهيزات الحاسوبية التي يريد تشغيل برنامجه عليها.
ما هو نظام التشغيل؟
جميع الأمثلة التي ذكرناها سابقاً هي أمثلة لنوع محدد من البرمجيات يدعى (البرمجيات التطبيقية) أي البرمجيات التي تستطيع استخدامها لمساعدتك على إنجاز تطبيق معين (ككتابة رسالة أو تعديل صورة). إذاً هل هناك أنواع أخرى من البرمجيات غير البرمجيات التطبيقية؟
نعم، ولربما كان أكثر البرمجيات أهمية مايعرف بـ (نظام التشغيل Operating System). وعلى الرغم من ضرورة نظام التشغيل لأي حاسوب إلا أن حقه غالباً ما يهضم وذلك لأنه يعمل عادة من وراء الكواليس دون أن نلحظ حتى وجوده أو وجود تأثيراته. يقوم نظام التشغيل بمهمتين أساسيتين: تعريف أجهزة الحاسوب بعضها ببعض، كأن يقوم بدور الوسيط بين المعالج وأداة التخزين (القرص الصلب مثلاً) وإدارة هذه التجهيزات لضمان سلامة عملها وتجنب أية مشاكل قد تحدث إضافة إلى تمكين المستخدم من التفاعل مع هذه التجهيزات عبر البرمجيات التطبيقية اللازمة لمساعدته في إنجاز مهامه.
قد يقول البعض بأنهم قادرون على إدراك وجود نظام التشغيل من خلال واجهة الإستخدام المألوفة لنظام التشغيل ويندوز من إنتاج شركة مايكروسوفت على سبيل المثال، وبأن هذا النظام يمكنهم من إجراء بعض العمليات الحسابية باستخدام الحاسبة الموجودة ضمنه، إلا أن هذا المفهوم مغلوط إلى حد ما. فعندما تظهر لك شاشة ملونة تمكنك من الضغط على مفتاح يحمل اسم (إبدأ Start) لاختيار البرنامج الذي تريد فإنك لا تتعامل مباشرة مع نظام التشغيل، بل تتعامل مع واجهة رسومية تلعب دور الوسيط بينك وبين نظام التشغيل والذي يلعب بدوره مهمة الوسيط بينك وبين التجهيزات الحاسوبية. ولأوضح هذه الفكرة أكثر تذكر بأنك تستطيع التعامل مع حاسوبك (مع تفاوت كبير في مقدار سهولة هذا التعامل) دون استخدام هذه الواجهة الرسومية الجميلة عبر الشاشة السوداء الصغيرة التي تمكنك من إدخال أوامرك إلى الحاسوب عبر طباعتها باستخدام لوحة المفاتيح (كالأسلوب المستخدم لإصلاح الحاسوب عندما تتوقف الواجهة الرسومية عن العمل). أي أن نظام التشغيل مازال يعمل، وبأن الذي اختلف هو طريقة تفاعلك معه.
أما بالنسبة للحاسبة التي مكنتك من إجراء بعض العمليات الحسابية فهي ليست جزءاً من نظام التشغيل، بل برنامج تطبيقي صغير أضيف إلى نظام التشغيل ليمكنك من استخدام حاسوبك مباشرة (ربما لإقناعك بأن نظام التشغيل الذي اشتريته موجود ويعمل بنجاح، وإلا فإنك لن تصدق إدعاءات الشركة التي باعتك هذا النظام لأنه وكما أسلفنا من الصعب إدراك وجود هذا النظام الذي كتب عليه العمل في الخفاء طيلة عمره – وهو ما لا أحسده عليه البتة!- ).
هناك الكثير من أنظمة التشغيل، إلا أن الإنتشار الهائل لنظام التشغيل ويندوز Windows الذي تنتجه وتسوقه شركة مايكروسوفت في جميع أنحاء العالم غالباً ما يترك الإنطباع الخاطئ بأنه ما من نظام تشغيل آخر للحواسيب الشخصية. موضوعنا في هذا المقال نظام التشغيل غنو/لينكس والذي انتشر مؤخراً بشكل كبير، وحقق نجاحاً معتبراً كبديل لنظام التشغيل ويندوز في جميع التطبيقات بسبب مزاياه التي سنأتي على ذكر بعضها لاحقاً. ولكن ولكي نستطيع استيعاب فلسفة هذا النظام علينا بداية أن ندرك مفهوم الشيفرة المصدرية ومبادئ البرمجيات الحرة.
ما هي الشيفرة المصدرية؟
ذكرنا آنفاً بأن البرمجيات يجب أن تكتب بلغة يستطيع الحاسوب فهمها والتعامل معها. هذه البرمجيات ستكتب من قبل المبرمج والذي يكون عادة إنساناً اختار العمل في هذه المهنة (كتابة أو صناعة البرمجيات). إذاً لا بد للغة البرمجة أن تكون قابلة للفهم من قبل الطرفين: المبرمج الذي سيقوم بكتابة البرنامج، والتجهيزات الحاسوبية (وعلى وجه الخصوص المعالج) الذي سيقوم بقراءة هذا البرنامج ومعالجته. إن تحقيق هذه المعادلة الصعبة ليس بالأمر اليسير، وهو ما كان عليه الحال في بدايات صناعة الحواسيب وتقنية المعلومات، في ذلك الحين كانت لغات البرمجة أقرب فهماً إلى الحواسيب وأعسر على بني الإنسان، ولذلك فقد اقتصر العمل في كتابة البرمجيات على مهندسين فائقي الذكاء قرروا تخصيص القسط الأكبر من حياتهم في تعلم هذه اللغات الصعبة بغية كتابة البرمجيات الحاسوبية.
لو بقي الحال على ذلك لكان من المحال على الحواسيب أن تنتشر بالصورة التي هي وصلت إليها في يومنا هذا وذلك نتيجة شح البرمجيات المتوفرة لتشغيل هذه الحواسيب نظراً لصعوبة كتابة برمجيات لتشغيلها بسبب ندر الأشخاص المستعدين للتضحية فيما تبقى من حياتهم لتخصيصه في تعلم لغة برمجية معقدة واحدة.
ما الحل إذاً؟
سأفترض أننا على الأغلب عاجزون عن فهم واستيعاب اللغة الصينية (حسناً، على الأقل بطلاقة). ماذا ستعمل إذا ما اضطررت إلى الذهاب إلى الصين في رحلة عمل تخبئ لك مردوداً سخياً (سواء أكان مادياً أم علمياً أم معنوياً، ما يهمني هنا ليس هذا المردود بقدر ما يهمني ألا تقول لي بأنك غير مهتم بالذهاب إلى الصين!) ومن المعروف عن أن أهل الصين لا يستخدمون عادة سوى لغتهم الأم في تعاملاتهم اليومية؟
وكأنني أسمعك تجيب بسرعة ودون عناء في التفكير: سأصطحب معي مترجماً يفهم اللغتين الصينية والعربية! وأنا لن أعارضك في هذا على الإطلاق (فقد جربت مرة تلك القواميس الإلكترونية المحمولة، ولم أحصد سوى الكثير من المواقف التي يخجلني ذكرها!).
ما هي مهمة هذا المترجم؟ بكل بساطة سيأخذ كلامك ويحوله إلى اللغة الصينية ثم يقوله للشخص المقابل. هذا هو المبدأ الذي اتبع لحل مشكلة لغات البرمجة المعقدة. فإذا ما اعتبرنا أن لغة البرمجة التي يستطيع الحاسوب فهمها معادلة للغة الصينية من حيث الصعوبة، فإن الحل يكمن في استخدام لغة برمجة مبسطة (كاللغة العربية، ولربما كان مثالي هنا غير دقيق تماماً، حيث أن اللغة العربية ليست من اللغات السهلة على الإطلاق، إلا أنني سأعتبرها كذلك على الأقل لنا نحن العرب، مطمئناً بأنه لن يقرأ هذا المقال الكثير من الناطقين بالإنكليزية) يستطيع الإنسان فهمها والتعامل معها وبالتالي كتابة البرمجيات الحاسوبية باستخدامها. عند انتهاء المبرمج من كتابة برنامجه باللغة السهلة التي يستطيع استيعابها يتم إعطاء هذا البرنامج لـ (مترجم Compiler) ليقوم بترجمته إلى اللغة المعقدة للحاسوب.
دعونا الآن نستخدم بعض المصطلحات التقنية، وأن ندعو اللغة المعقدة التي يستطيع الحاسوب استيعابها بـ (لغة الآلة Machine Language)، فالحواسيب في النهاية هي آلات من صنع البشر. ولندعو اللغة التي يستطيع الإنسان التعامل معها بـ (اللغة عالية المستوى High Level Language)، ومن أعلى مستوى على هذه الأرض من الإنسان الذي أكرمه الله فخلقه في أحسن تقويم؟ إن جميع الأمثلة التي ذكرناها سابقاً عن لغات البرمجة هي لغات عالية المستوى (++Visual Basic, Java, C).
إذاً يقوم المبرمج بكتابة برنامجه باستخدام لغة برمجة عالية المستوى، ومن ثم تتم ترجمته إلى لغة الآلة باستخدام المترجم. يدعى النص المكتوب باستخدام لغة البرمجة عالية المستوى (والمؤلف من مجموعة التعليمات المعطاة للحاسوب والتي تشكل البرنامج) بالشيفرة المصدرية Source Code، كما يدعى المقابل المترجم له إلى لغة الآلة بالبرنامج التنفيذي Executable Program.
البرمجيات الحرة ومفتوحة المصدر
إن صعوبة لغة الآلة التي يستطيع الحاسوب إستيعابها تجعل من المتعذر على الإنسان العادي أن يفهم النصوص المترجمة إلى هذه اللغة (البرامج التنفيذية) وبالتالي فهو عاجز عن دراستها وتحليلها وتعلم كيفية عملها. لقد استغلت بعض الشركات التجارية المنتجة للبرمجيات هذه الخاصية لتحقيق أكبر قدر من الربح المادي من برمجياتها، حيث أنها تعطي المستخدم عند شرائه أحد برامجها النسخة المترجمة إلى لغة الآلة (البرنامج التنفيذي) وتحتفظ لنفسها بالشيفرة المصدرية لهذا البرنامج. هذا يعني أن المستخدم أصبح قادراً على تشغيل هذا البرنامج واستثماء قدراته غير أنه عاجز عن دراسة آلية عمله وتعديلها بما قد تتطلبه احتياجاته الخاصة. تدعى هذه البرمجيات بالبرمجيات المغلقة Closed Software بمعنى أن الشركة المنتجة لهذه البرمجيات أغلقت الباب في وجه المستخدم للحيلولة دون حصوله على الشيفرة المصدرية.
قد يكفي غالبية المستخدمين حصولهم على البرنامج التنفيذي لتلبية متطلباتهم، ولكن ماذا لو احتاج المستخدم إلى تطوير البرنامج ليتلاءم مع ظروفه ومتطلباته الخاصة؟ في عالم البرمجيات المغلقة ليس أمام هذا المستخدمين سوى خيارين اثنين: إما أن يطلب من الشركة المنتجة لهذا البرنامج إجراء هذا التعديل، وهو ما قد يكلفه (في حال وافقت الشركة على القيام بهذا التعديل أساساً) مبالغ طائلة ويستغرق الكثير من الوقت، أو أن يضحي بالكثير من وقته وتفكيره لدراسة لغة الآلة المعقدة ليتمكن بالتالي من تعديل هذا البرنامج أو تطويره (وهو ما قد تتجاوز تكاليفه المادية والمعنوية المبالغ الطائلة التي قد تطلبها الشركة المنتجة).
إلا أن محدودية البرمجيات المغلقة لا تتوقف على تعذر تعديل أو تطوير هذه البرمجيات. بما أن الدافع الرئيسي وراء تطوير البرمجيات من قبل الشركات التجارية هو تحقيق الربح المادي، فإن هذه الشركات ستخضع رغماً عنها لآليات السوق التجارية. ومن المعروف في عالم الأعمال بأن الشركات لا تبقى ناجحة إلى الأبد، بل أن معظمها سيصل إلى مرحلة يصعب معها تحقيق المزيد من الأرباح وبالتالي تزداد صعوبة الإستمرارية في العمل، وغالباً ما تنتهي هذه الحال بانتهاء دورة حياة هذه الشركة وخروجها من السوق. وهناك الكثير من الأمثلة على ذلك في عالم تقنية المعلومات كشركتي ديجيتال وتاندي.
تخيل نفسك في هذا الموقف: أنفقت الكثير من المال للحصول على برنامج تطبيقي هام لك أو لمؤسستك، لتقرأ في نشرة الأخبار الإقتصادية بعد شهر واحد من إتمام فرحتك بإنتهاء إعداد البرنامج الجديد بأن الشركة المنتجة لهذا البرنامج قد أفلست. ماذا ستعمل؟ للأسف فإنك لا تملك الكثير من الخيارات، فلأن البرنامج الذي ابتعته مغلق لا حول لك ولا قوة في ما آلت إليه الحال، وكل ما تملكه الآن هو برنامج تنفيذي مكتوب بلغة فائقة التعقيد لن تستطيع تطويره ولا تعديله أو ربما حتى صيانته.
مما سبق نستنتج أن الحصول على برنامج ما بصيغته التنفيذية دون الحصول على الشيفرة المصدرية المرافقة يعني تقييد خيارات المستخدم وتحديد المهام التي يستطيع القيام بها بالنسبة لهذا البرنامج. حسناً، ماذا لو أرفق كل برنامج مع شيفرته المصدرية المكتوبة باللغة عالية المستوى التي يمكن للإنسان فهمها والتعامل معها بالإضافة إلى النسخة التنفيذية؟ هذا يعني أن المستخدم أصبح قادراً على تعديل هذا البرنامج من خلال مراجعة شيفرته المصدرية ودراسة آلية عمله وبالتالي تعديله وتطويره إذا ما دعت الحاجة. وهكذا فإن المستخدم سيتحرر من القيود التي تفرضها عليه البرمجيات المغلقة لأن إمكانيات تعامله مع البرنامج لم تعد محددة باستخدامه فقط دون القدرة على تعديله أو تطويره.
هذه البرمجيات والتي ترفق مع شيفرتها المصدرية تدعى بالبرمجيات الحرة كونها تتيح للمستخدم حرية الإطلاع على هذه الشيفرة المصدرية وتعديلها وتطويرها بما يتلاءم واحتياجاته الخاصة. كما أنها قد تدعى أيضاً بالبرمجيات مفتوحة المصدر نظراً لأن شيفرتها المصدرية تكون متاحة (أو مفتوحة) للمستخدم للإطلاع عليها وتعديلها. وبسبب وجود بعض الإختلاف بين مفهومي البرمجيات الحرة والبرمجيات مفتوحة المصدر فإنه من غير الصحيح استخدام إحدى هاتين التسميتين مكان الأخرى، ولذلك فمن الأنسب دوماً استخدام مصطلح البرمجيات الحرة ومفتوحة المصدر للتعبير عن البرمجيات التي تكون شيفرتها المصدرية متاحة للمستخدم للإطلاع عليها وتعديلها وتطويرها.
لقد كان ريتشارد ستولمان Richard Stallman أول من ناقش محدودية وقيود البرمجيات المغلقة وطرح فكرة حرية المستخدم في حصوله على الشيفرة المصدرية للبرمجيات التي يستخدمها ودراستها وتعديلها وإعادة توزيعها. وليضع الأساس القانوني لهذه الفكرة فقد كتب أيضاً ما يدعى بإتفاقية الترخيص العمومية GNU General Public License (GPL) كالوثيقة القانونية التي تحكم استخدام البرمجيات المرافقة لها وتضمن توافقية هذه البرمجيات واستخداماتها مع المبادئ الأساسية للبرمجيات الحرة. أسس ريتشارد في العام 1995 مؤسسة البرمجيات الحرة Free Software Foundation كمؤسسة لا تهدف للربح غايتها نشر هذه الأفكار وترويج استخدام البرمجيات الحرة في العالم. قامت هذه المؤسسة باستقطاب الكثير من المطورين الذين آمنوا بأفكارها ومبادئها وقاموا معاً ببناء مجموعة من البرمجيات التي أطلقت مع شيفرتها المصدرية لتتيح للمستخدمين إمكانية تطويرها وتعديلها. هذه البرمجيات بنيت اعتماداً على العمل التطوعي لهؤلاء المطورين، وبالتالي فهي غير مملوكة من قبل شخص أو جهة ما، بما سيضمن حريتها من أية سيطرة قد تحد من حريات مستخدميها.
نظام التشغيل الحر ومفتوح المصدر
هل تذكر ذلك البرنامج المسكين الذي يعمل طيلة عمره في الكواليس دون أن يدرك وجوده أحد مع أنه حجر الأساس في أي نظام حاسوبي؟ ذاك هو نظام التشغيل. وهنا يبرز مجدداً الدور الحيوي لهذا البرنامج، حيث أن حركة البرمجيات الحرة، ومهما أنتجت من برمجيات تطبيقية حرة، فإنها بحاجة إلى نظام تشغيل يتمتع بنفس القدر من الحرية التي تتمتع بها هذه البرمجيات، وإلا فإن المستخدم سيضطر إلى تشغيل هذه البرمجيات التطبيقية ضمن نظام تشغيل مغلق، وبالتالي فإن ذلك سيجرده من بعض الحريات التي حصل عليها.
وبالفعل، فإن انتشار حركة البرمجيات الحرة ظل محدوداً ومقتصراً على المبرمجين والمطورين إلى أن قرر شاب فنلندي من جامعة هلسنكي يدعى لينوس تورفالدز Linus Torvalds بناء نظام تشغيل حر ليجعله متاحاً (وبالتأكيد مع شيفرته المصدرية) لجميع المستخدمين ليقوموا بتعديله وتطويره ونشره. استخدم لينوس مجموعة البرمجيات التي طورتها مؤسسة البرمجيات الحرة كأدوات لبناء نظام تشغيله، لذلك ومع أن قلب (نواة) نظام التشغيل نفسه سمي لينكس Linux تيمناً باسم مبتكره، فإن الحزمة المتكاملة لنظام التشغيل والتي تضم العديد من البرمجيات الأخرى التي طورتها مؤسسة البرمجيات الحرة تدعى نظام التشغيل غنو/لينكس (في إشارة إلى دور كل من ريتشارد ستولمان ومؤسسة البرمجيات الحرة إضافة إلى لينوس تورفالدز في بناء هذا النظام المتكامل).
إن الحاجة الماسة إلى نظام تشغيل حر مكمل لتشكيلة البرمجيات التي طورتها مؤسسة البرمجيات الحرة سرعان ما دفعت بالعديد من المطورين إلى التطوع لتطوير هذا النظام الوليد ليتحول بسرعة قياسية من مجرد تطبيق بسيط لفكرة طموحة إلى نظام تشغيل متكامل يضاهي في جودته ومزاياه أنظمة التشغيل التجارية.
مزايا نظام التشغيل غنو/لينكس
بما أن نظام التشغيل غنو/لينكس قد بني نتيجة تفاعل جهود الكثير من المطورين المتطوعين بناء على مبادئ فلسفة البرمجيات الحرة فإن هذا النظام متاح لأي مستخدم يريد استخدامه دون أي مقابل مادي. أي أنك لن تضطر لدفع قيمة مادية لقاء حصولك على هذا النظام واستخدامه (وبالتأكيد حصولك على شيفرته المصدرية أيضاً).
ولكن طالما أن غنو/لينكس متاح بشكل مجاني، لماذا تقوم بعض الشركات ببيعه؟ هذه النقطة تستوجب بعض التوضيح، فمع أن نظام التشغيل ذاته متاح دون مقابل فإن بعض الشركات قد تجد فرصة لتحقيق بعض الأرباح من خلال تجميع تشكيلة من البرمجيات الحرة وتوضيبها مع نظام التشغيل لينكس في علبة جذابة تحتوي بالإضافة على أقراص البرمجيات المدمجة مجموعة من الكتيبات المطبوعة وتعليمات الإستخدام، كما قد تقدم بعض خدمات الدعم الفني عبر الهاتف أو الإنترنت. وهكذا فإن هذه الشركات لا تتقاضى منك مقابلاً لقاء حصولك على نظام التشغيل ذاته، بل تستحصل على ثمن هذه الخدمات التي قدمتها لك في تجميع البرمجيات وطباعة الكتيبات وتوفير خدمات الدعم الفني.
وبعكس تراخيص الإستخدام التجارية المرافقة للبرمجيات المغلقة، والتي تجعل منك منتهكاً لقوانين حماية الملكية الفكرية بمجرد نسخك لأحد هذه البرمجيات، معرضاً نفسك للمساءلة القانونية ولدفع غرامات فلكية، فإن الشركات التي تقوم بتسويق البرمجيات الحرة ومفتوحة المصدر لن تستطيع تقييدك أو منعك من نسخ هذه البرمجيات أو تعديلها أو إعادة توزيعها، ذلك أن هذه البرمجيات مترافقة مع إتفاق ترخيص يضمن لك مطلق الحرية في القيام بذلك. وفي حال أردت أن تحصل على نظام التشغيل غنو/لينكس أو أي من البرمجيات الحرة دون المرور عبر إحدى هذه الشركات فغالبية هذه البرمجيات متاحة للتنزيل عبر الإنترنت، أو حتى بإمكانك نسخها من صديق دون خشية انتهاك قوانين حماية الملكية الفكرية.
من المزايا الأخرى لفلسفة البرمجيات الحرة ومفتوحة المصدر إتاحتها لطيف واسع من المطورين للمساهمة في بناء البرمجيات التطبيقية التي قد يحتاجونها، وبالتالي فإن كم البرمجيات الحرة المتوفرة ضخم جداً، وهو في تزايد مستمر يوماً تلو الآخر. هذا يعني بالمحصلة توفر عدد كبير جداً من البرمجيات التي تعمل ضمن نظام التشغيل غنو/لينكس بدأ من تطبيقات الأتمتة المكتبية كبرمجيات تنسيق النصوص والجداول الحسابية مروراً بتطبيقات الرسوم ومعالجة الصور إنتهاء ببرامج تطوير مواقع الإنترنت والألعاب.
كما يعد غنو/لينكس من أكثر أنظمة التشغيل أماناً ووثوقية، ويعود الفضل في ذلك إلى طبيعة تطويره وتوفر شيفرته المصدرية، ما يتيح اكتشاف الأخطاء البرمجية والثغرات الأمنية وإصلاحها بسرعة فائقة تتجاوز بمراحل تلك التي ستغرقها تطوير البرمجيات المغلقة.
يتميز غنو/لينكس أيضاً بدعمه الكبير لتعدد المستخدمين، وهو ما يجعله الخيار الأنسب في كثير من التطبيقات التي تتطلب قدرات على التعامل مع عدد كبير من المستخدمين، كتطبيقات مواقع الإنترنت والتجارة الإلكترونية. كما أن من فوائد دعم تعدد المستخدمين بالنسبة للمستخدم المنزلي هي الحصول على إعدادات مختلفة لكل مستخدم، حيث سيملك كل فرد من أفراد العائلة إعداداته الخاصة – كشكل سطح المكتب والتطبيقات التي سيتخدمها وملفاته الشخصية- دون التأثير على الإعدادات الخاصة لبقية أفراد الأسرة.
إذا ما وجدت بأن هذه الميزات التي ذكرتها للتو تستحق التجربة ولكنك مازلت تفتقد الجرأة اللازمة للإنتقال الكلي إلى نظام جديد تماماً فعندي لك بعض الأخبار السارة. فأنت غير مجبر على الإطلاق على التنازل عن نظام التشغيل الذي اعتدت استخدامه للتمتع بمزايا غنو/لينكس، وذلك لأن هذا النظام الأليف يحب الأصدقاء، ولا يمانع أبداً أن تقوم بتثبيته على حاسوبك جنباً إلى جنب مع نظام تشغيل آخر، دون أن يؤثر أي منهما على إعدادات أو أداء الآخر.
عندما تقوم بتثبيت غنو/لينكس على حاسوبك بالإضافة إلى نظام تشغيل آخر فإن الحاسوب سيسألك في كل مرة يقلع فيها عن نظام التشغيل الذي تود استخدامه، وعندما تختار أياً من الأنظمة المتاحة (غنو/لينكس أو ويندوز على سبيل المثال) فإن الحاسوب سيقوم بتشغيل هذا النظام في حين يخلد الآخر في سبات عميق إلى أن تقوم بإعادة تشغيل الحاسوب ليتاح لك الخيار مجدداً.
أنصحك بشدة أن تجرب تثبيت غنو/لينكس إلى جانب نظام التشغيل الحالي، وكلي ثقة أن الوقت لن يطول بك حتى تستمتع بما سيقدمه لك هذا النظام من مزايا فريدة ممتعة، عدا عن إدراكك للقيمة الحقيقية لحريتك، وعندها فأنا متأكد بأنك ستطلب مني كتابة مقال لشرح كيفية إزالة نظام التشغيل الآخر والإبقاء على غنو/لينكس فقط.
محمد أنس طويلةanas@tawileh.net
(هامش جانبي)ماذا تعني كلمة غنو GNU؟
قصة هذه الكلمة طريفة للغاية، وهي تمثل مبدأ غريباً في التسمية عادة ما يستخدمه مطوروا البرمجيات الحرة ومفتوحة المصدر.
أول من ابتكر هذه الكلمة كان ريتشارد ستولمان نفسه، وهي اختصار للأحرف الأولى من عبارة GNU is Not Unix. تدل هذه العبارة بما لا يدع مجال للشك بأن ريتشارد ليس من محبي نظام التشغيل يونيكس نتيجة كونه نظاماً مغلقاً لا يتاح لمستخدمه الوصول إلى شيفرته المصدرية وبالتالي فهو يقيد الحرية التي يؤمن ريتشارد بأنها من حق المستخدم. فعلياً فإن ريتشارد (يكره) ليس يونيكس وحسب، بل أي برنامج مغلق، ويمكنك الإستدلال على ذلك أيضاً بالنظر إلى الهدف الذي كرس هذا الرجل جل حياته لأجله لبناء نظام تشغيل حر يضاهي يونيكس.
هذا يفسر الجزء الأخير من العبارة، والذي يقصد به تمييز هذا النظام عن نظام التشغيل يونيكس، فهو بالنهاية (ليس يونيكس Not Unix)!
ولكن ماذا عن الجزء الأول GNU؟هنا تكمن الحيلة، وهي ما يدعى بالتسمية المتتالية Recursive Naming، أي أن أول حرف من الكلمة هو اختصار لنفس الكلمة، وهنا حرف الـ G هو اختصار لكلمة GNU، ولكن ماذا تعني GNU؟ تعني مجدداً الأحرف الأولى من عبارة GNU is Not Unix، وهكذا دواليك. أي أن GNU ذاتها لا ترمز لأي شئ محدد. وستجد هذا الأسلوب في التسمية المتتالية متبعاً بكثرة في عالم البرمجيات الحرة ومفتوحة المصدر بغاية التعبيرعن روح الدعابة التي يتمتع بها المطورون في هذا العالم.
بمحض الصدفة، فإن ريتشارد كان قادراً على إضافة قليل من المعنى لهذه الكلمة، فهي (مجدداً، بمحض الصدفة) ترمز أيضاً لاسم أحد الحيوانات والذي يشبه الوعل. لذلك فقد استخدم ريتشارد رأس هذا الحيوان شعاراً للبرمجيات الحرة.
(هامش جانبي)
البطريق – شعار غنو/لينكس!
في عالم القرن الحادي والعشرين، يرتبط كل شئ بشعار ما، والبطريق اللطيف هذا هو شعار نظام التشغيل غنو/لينكس. وهو لا يحتل فقط أغلفة المجلات والبرمجيات والقمصان، بل ستجده أيضاً يبتسم لك في الكثير من الألعاب و رسومات سطح المكتب.
ولكن، لماذا اختير البطريق دون غيره؟
السبب الرسمي لذلك كما يقول لينوس تورفالدز:" إن البطاريق مخلوقات رائعة، و أنا أحبها!".ويعلق الكثيرون بالقول أن البطريق البدين والذي يبدو وكأنه قد أنهى للتو وليمة دسمة ابتلع خلالها مئة سمكة لا يصلح لأن يكون شعاراً لنظام تشغيل ممشوق، سريع وقوي مثل غنو/لينكس، و لهؤلاء أقول: هل شاهدت مرة بطريقاً يسبح تحت الماء؟
ما هي البرمجيات؟
جميعنا يعرف تلك الأجهزة الساحرة المنتشرة في كل جوانب حياتنا اليومية والتي تدعى بالـ (حواسيب)، والتي من الغالب بأننا نستطيع تمييزها عبر الأشكال المألوفة لمكوناتها كشاشات الإظهار التي تستخدم لعرض البيانات ولوحات المفاتيح التي يتم عبرها إدخال المعلومات، والفأرة التي نتحكم من خلالها ببعض مهام هذه الحواسيب، جميع هذه المكونات تندرج ضمن ما يسمى بالتجهيزات Hardware، والتي تتميز بأنها تجهيزات فيزيائية يمكن إدراكها عبر الحواس (كالبصر واللمس).
إلا أن سهولة التعرف على التجهيزات الحاسوبية نتيجة إمكانية إدراكها عبر الحواس يعيق استيعاب فكرة مكون أساسي آخر من مكونات الحاسوب، وهي البرمجيات Software، وذلك نتيجة افتقارها للخصائص الفيزيائية التي تمكننا من تلمسها أو رؤيتها. إن إدراك وجود البرمجيات يمكن فقط عبر إدراك تأثيراتها. وهي تشكل عنصراً أساسياً في تكوين الحواسيب وقدرتها على إنجاز مهامها.
دون البرمجيات تتحول التجهيزات الحاسوبية إلى جسد هامد لا حياة فيه، فالبرمجيات هي الروح التي تبعث في هذه التجهيزات الحياة وتمكنها من القيام بالأعمال التي نطلبها منها. وكما يمكننا إدراك الجسد عبر حواسنا إلا أننا نستطيع إدراك الروح فقط عبر ادراك تأثيراتها، فكذلك لا يمكننا المعرفة بوجود البرمجيات إلا من خلال تأثيراتها.
البرمجيات هي سلسلة من التعليمات التي تخبر التجهيزات المكونة للحاسوب بالكيفية التي ينبغي بها أن تقوم بأعمالها. من أمثلة البرمجيات التي لا بد أن الغالبية منكم قد اطلعوا عليها أو حتى استخدموها برمجيات تنسيق النصوص المستخدمة في كتابة الرسائل والتقارير، وكذلك البرمجيات الرسومية التي تمكننا من معالجة الصور الرقمية وتعديلها.
بما أن البرمجيات تشكل تعليمات التشغيل التي ينبغي أن يقرأها الحاسوب ليتعلم كيفية القيام بالمهام المطلوبة منه فإن هذه التعليمات لا بد أن تكتب من قبل شخص ما بلغة يستطيع الحاسوب فهمها واستيعابها. هذه اللغة تدعى لغة البرمجة والشخص الذي يقوم بهذه المهمة يدعى المبرمج. قد تتردد على مسامعكم أسماء مثل Visual Basic, Java, C++ وهي كلها أسماء للغات برمجة مختلفة يمكن استخدامها لكتابة البرمجيات الحاسوبية. وكما لا يستطيع الإنسان فهم جميع لغات العالم، فإن قدرة الحواسيب على فهم لغات البرمجة محدودة، ولا بد للمبرمج الذي يريد بناء برنامج ما من اختيار لغة برمجة تتلاءم مع التجهيزات الحاسوبية التي يريد تشغيل برنامجه عليها.
ما هو نظام التشغيل؟
جميع الأمثلة التي ذكرناها سابقاً هي أمثلة لنوع محدد من البرمجيات يدعى (البرمجيات التطبيقية) أي البرمجيات التي تستطيع استخدامها لمساعدتك على إنجاز تطبيق معين (ككتابة رسالة أو تعديل صورة). إذاً هل هناك أنواع أخرى من البرمجيات غير البرمجيات التطبيقية؟
نعم، ولربما كان أكثر البرمجيات أهمية مايعرف بـ (نظام التشغيل Operating System). وعلى الرغم من ضرورة نظام التشغيل لأي حاسوب إلا أن حقه غالباً ما يهضم وذلك لأنه يعمل عادة من وراء الكواليس دون أن نلحظ حتى وجوده أو وجود تأثيراته. يقوم نظام التشغيل بمهمتين أساسيتين: تعريف أجهزة الحاسوب بعضها ببعض، كأن يقوم بدور الوسيط بين المعالج وأداة التخزين (القرص الصلب مثلاً) وإدارة هذه التجهيزات لضمان سلامة عملها وتجنب أية مشاكل قد تحدث إضافة إلى تمكين المستخدم من التفاعل مع هذه التجهيزات عبر البرمجيات التطبيقية اللازمة لمساعدته في إنجاز مهامه.
قد يقول البعض بأنهم قادرون على إدراك وجود نظام التشغيل من خلال واجهة الإستخدام المألوفة لنظام التشغيل ويندوز من إنتاج شركة مايكروسوفت على سبيل المثال، وبأن هذا النظام يمكنهم من إجراء بعض العمليات الحسابية باستخدام الحاسبة الموجودة ضمنه، إلا أن هذا المفهوم مغلوط إلى حد ما. فعندما تظهر لك شاشة ملونة تمكنك من الضغط على مفتاح يحمل اسم (إبدأ Start) لاختيار البرنامج الذي تريد فإنك لا تتعامل مباشرة مع نظام التشغيل، بل تتعامل مع واجهة رسومية تلعب دور الوسيط بينك وبين نظام التشغيل والذي يلعب بدوره مهمة الوسيط بينك وبين التجهيزات الحاسوبية. ولأوضح هذه الفكرة أكثر تذكر بأنك تستطيع التعامل مع حاسوبك (مع تفاوت كبير في مقدار سهولة هذا التعامل) دون استخدام هذه الواجهة الرسومية الجميلة عبر الشاشة السوداء الصغيرة التي تمكنك من إدخال أوامرك إلى الحاسوب عبر طباعتها باستخدام لوحة المفاتيح (كالأسلوب المستخدم لإصلاح الحاسوب عندما تتوقف الواجهة الرسومية عن العمل). أي أن نظام التشغيل مازال يعمل، وبأن الذي اختلف هو طريقة تفاعلك معه.
أما بالنسبة للحاسبة التي مكنتك من إجراء بعض العمليات الحسابية فهي ليست جزءاً من نظام التشغيل، بل برنامج تطبيقي صغير أضيف إلى نظام التشغيل ليمكنك من استخدام حاسوبك مباشرة (ربما لإقناعك بأن نظام التشغيل الذي اشتريته موجود ويعمل بنجاح، وإلا فإنك لن تصدق إدعاءات الشركة التي باعتك هذا النظام لأنه وكما أسلفنا من الصعب إدراك وجود هذا النظام الذي كتب عليه العمل في الخفاء طيلة عمره – وهو ما لا أحسده عليه البتة!- ).
هناك الكثير من أنظمة التشغيل، إلا أن الإنتشار الهائل لنظام التشغيل ويندوز Windows الذي تنتجه وتسوقه شركة مايكروسوفت في جميع أنحاء العالم غالباً ما يترك الإنطباع الخاطئ بأنه ما من نظام تشغيل آخر للحواسيب الشخصية. موضوعنا في هذا المقال نظام التشغيل غنو/لينكس والذي انتشر مؤخراً بشكل كبير، وحقق نجاحاً معتبراً كبديل لنظام التشغيل ويندوز في جميع التطبيقات بسبب مزاياه التي سنأتي على ذكر بعضها لاحقاً. ولكن ولكي نستطيع استيعاب فلسفة هذا النظام علينا بداية أن ندرك مفهوم الشيفرة المصدرية ومبادئ البرمجيات الحرة.
ما هي الشيفرة المصدرية؟
ذكرنا آنفاً بأن البرمجيات يجب أن تكتب بلغة يستطيع الحاسوب فهمها والتعامل معها. هذه البرمجيات ستكتب من قبل المبرمج والذي يكون عادة إنساناً اختار العمل في هذه المهنة (كتابة أو صناعة البرمجيات). إذاً لا بد للغة البرمجة أن تكون قابلة للفهم من قبل الطرفين: المبرمج الذي سيقوم بكتابة البرنامج، والتجهيزات الحاسوبية (وعلى وجه الخصوص المعالج) الذي سيقوم بقراءة هذا البرنامج ومعالجته. إن تحقيق هذه المعادلة الصعبة ليس بالأمر اليسير، وهو ما كان عليه الحال في بدايات صناعة الحواسيب وتقنية المعلومات، في ذلك الحين كانت لغات البرمجة أقرب فهماً إلى الحواسيب وأعسر على بني الإنسان، ولذلك فقد اقتصر العمل في كتابة البرمجيات على مهندسين فائقي الذكاء قرروا تخصيص القسط الأكبر من حياتهم في تعلم هذه اللغات الصعبة بغية كتابة البرمجيات الحاسوبية.
لو بقي الحال على ذلك لكان من المحال على الحواسيب أن تنتشر بالصورة التي هي وصلت إليها في يومنا هذا وذلك نتيجة شح البرمجيات المتوفرة لتشغيل هذه الحواسيب نظراً لصعوبة كتابة برمجيات لتشغيلها بسبب ندر الأشخاص المستعدين للتضحية فيما تبقى من حياتهم لتخصيصه في تعلم لغة برمجية معقدة واحدة.
ما الحل إذاً؟
سأفترض أننا على الأغلب عاجزون عن فهم واستيعاب اللغة الصينية (حسناً، على الأقل بطلاقة). ماذا ستعمل إذا ما اضطررت إلى الذهاب إلى الصين في رحلة عمل تخبئ لك مردوداً سخياً (سواء أكان مادياً أم علمياً أم معنوياً، ما يهمني هنا ليس هذا المردود بقدر ما يهمني ألا تقول لي بأنك غير مهتم بالذهاب إلى الصين!) ومن المعروف عن أن أهل الصين لا يستخدمون عادة سوى لغتهم الأم في تعاملاتهم اليومية؟
وكأنني أسمعك تجيب بسرعة ودون عناء في التفكير: سأصطحب معي مترجماً يفهم اللغتين الصينية والعربية! وأنا لن أعارضك في هذا على الإطلاق (فقد جربت مرة تلك القواميس الإلكترونية المحمولة، ولم أحصد سوى الكثير من المواقف التي يخجلني ذكرها!).
ما هي مهمة هذا المترجم؟ بكل بساطة سيأخذ كلامك ويحوله إلى اللغة الصينية ثم يقوله للشخص المقابل. هذا هو المبدأ الذي اتبع لحل مشكلة لغات البرمجة المعقدة. فإذا ما اعتبرنا أن لغة البرمجة التي يستطيع الحاسوب فهمها معادلة للغة الصينية من حيث الصعوبة، فإن الحل يكمن في استخدام لغة برمجة مبسطة (كاللغة العربية، ولربما كان مثالي هنا غير دقيق تماماً، حيث أن اللغة العربية ليست من اللغات السهلة على الإطلاق، إلا أنني سأعتبرها كذلك على الأقل لنا نحن العرب، مطمئناً بأنه لن يقرأ هذا المقال الكثير من الناطقين بالإنكليزية) يستطيع الإنسان فهمها والتعامل معها وبالتالي كتابة البرمجيات الحاسوبية باستخدامها. عند انتهاء المبرمج من كتابة برنامجه باللغة السهلة التي يستطيع استيعابها يتم إعطاء هذا البرنامج لـ (مترجم Compiler) ليقوم بترجمته إلى اللغة المعقدة للحاسوب.
دعونا الآن نستخدم بعض المصطلحات التقنية، وأن ندعو اللغة المعقدة التي يستطيع الحاسوب استيعابها بـ (لغة الآلة Machine Language)، فالحواسيب في النهاية هي آلات من صنع البشر. ولندعو اللغة التي يستطيع الإنسان التعامل معها بـ (اللغة عالية المستوى High Level Language)، ومن أعلى مستوى على هذه الأرض من الإنسان الذي أكرمه الله فخلقه في أحسن تقويم؟ إن جميع الأمثلة التي ذكرناها سابقاً عن لغات البرمجة هي لغات عالية المستوى (++Visual Basic, Java, C).
إذاً يقوم المبرمج بكتابة برنامجه باستخدام لغة برمجة عالية المستوى، ومن ثم تتم ترجمته إلى لغة الآلة باستخدام المترجم. يدعى النص المكتوب باستخدام لغة البرمجة عالية المستوى (والمؤلف من مجموعة التعليمات المعطاة للحاسوب والتي تشكل البرنامج) بالشيفرة المصدرية Source Code، كما يدعى المقابل المترجم له إلى لغة الآلة بالبرنامج التنفيذي Executable Program.
البرمجيات الحرة ومفتوحة المصدر
إن صعوبة لغة الآلة التي يستطيع الحاسوب إستيعابها تجعل من المتعذر على الإنسان العادي أن يفهم النصوص المترجمة إلى هذه اللغة (البرامج التنفيذية) وبالتالي فهو عاجز عن دراستها وتحليلها وتعلم كيفية عملها. لقد استغلت بعض الشركات التجارية المنتجة للبرمجيات هذه الخاصية لتحقيق أكبر قدر من الربح المادي من برمجياتها، حيث أنها تعطي المستخدم عند شرائه أحد برامجها النسخة المترجمة إلى لغة الآلة (البرنامج التنفيذي) وتحتفظ لنفسها بالشيفرة المصدرية لهذا البرنامج. هذا يعني أن المستخدم أصبح قادراً على تشغيل هذا البرنامج واستثماء قدراته غير أنه عاجز عن دراسة آلية عمله وتعديلها بما قد تتطلبه احتياجاته الخاصة. تدعى هذه البرمجيات بالبرمجيات المغلقة Closed Software بمعنى أن الشركة المنتجة لهذه البرمجيات أغلقت الباب في وجه المستخدم للحيلولة دون حصوله على الشيفرة المصدرية.
قد يكفي غالبية المستخدمين حصولهم على البرنامج التنفيذي لتلبية متطلباتهم، ولكن ماذا لو احتاج المستخدم إلى تطوير البرنامج ليتلاءم مع ظروفه ومتطلباته الخاصة؟ في عالم البرمجيات المغلقة ليس أمام هذا المستخدمين سوى خيارين اثنين: إما أن يطلب من الشركة المنتجة لهذا البرنامج إجراء هذا التعديل، وهو ما قد يكلفه (في حال وافقت الشركة على القيام بهذا التعديل أساساً) مبالغ طائلة ويستغرق الكثير من الوقت، أو أن يضحي بالكثير من وقته وتفكيره لدراسة لغة الآلة المعقدة ليتمكن بالتالي من تعديل هذا البرنامج أو تطويره (وهو ما قد تتجاوز تكاليفه المادية والمعنوية المبالغ الطائلة التي قد تطلبها الشركة المنتجة).
إلا أن محدودية البرمجيات المغلقة لا تتوقف على تعذر تعديل أو تطوير هذه البرمجيات. بما أن الدافع الرئيسي وراء تطوير البرمجيات من قبل الشركات التجارية هو تحقيق الربح المادي، فإن هذه الشركات ستخضع رغماً عنها لآليات السوق التجارية. ومن المعروف في عالم الأعمال بأن الشركات لا تبقى ناجحة إلى الأبد، بل أن معظمها سيصل إلى مرحلة يصعب معها تحقيق المزيد من الأرباح وبالتالي تزداد صعوبة الإستمرارية في العمل، وغالباً ما تنتهي هذه الحال بانتهاء دورة حياة هذه الشركة وخروجها من السوق. وهناك الكثير من الأمثلة على ذلك في عالم تقنية المعلومات كشركتي ديجيتال وتاندي.
تخيل نفسك في هذا الموقف: أنفقت الكثير من المال للحصول على برنامج تطبيقي هام لك أو لمؤسستك، لتقرأ في نشرة الأخبار الإقتصادية بعد شهر واحد من إتمام فرحتك بإنتهاء إعداد البرنامج الجديد بأن الشركة المنتجة لهذا البرنامج قد أفلست. ماذا ستعمل؟ للأسف فإنك لا تملك الكثير من الخيارات، فلأن البرنامج الذي ابتعته مغلق لا حول لك ولا قوة في ما آلت إليه الحال، وكل ما تملكه الآن هو برنامج تنفيذي مكتوب بلغة فائقة التعقيد لن تستطيع تطويره ولا تعديله أو ربما حتى صيانته.
مما سبق نستنتج أن الحصول على برنامج ما بصيغته التنفيذية دون الحصول على الشيفرة المصدرية المرافقة يعني تقييد خيارات المستخدم وتحديد المهام التي يستطيع القيام بها بالنسبة لهذا البرنامج. حسناً، ماذا لو أرفق كل برنامج مع شيفرته المصدرية المكتوبة باللغة عالية المستوى التي يمكن للإنسان فهمها والتعامل معها بالإضافة إلى النسخة التنفيذية؟ هذا يعني أن المستخدم أصبح قادراً على تعديل هذا البرنامج من خلال مراجعة شيفرته المصدرية ودراسة آلية عمله وبالتالي تعديله وتطويره إذا ما دعت الحاجة. وهكذا فإن المستخدم سيتحرر من القيود التي تفرضها عليه البرمجيات المغلقة لأن إمكانيات تعامله مع البرنامج لم تعد محددة باستخدامه فقط دون القدرة على تعديله أو تطويره.
هذه البرمجيات والتي ترفق مع شيفرتها المصدرية تدعى بالبرمجيات الحرة كونها تتيح للمستخدم حرية الإطلاع على هذه الشيفرة المصدرية وتعديلها وتطويرها بما يتلاءم واحتياجاته الخاصة. كما أنها قد تدعى أيضاً بالبرمجيات مفتوحة المصدر نظراً لأن شيفرتها المصدرية تكون متاحة (أو مفتوحة) للمستخدم للإطلاع عليها وتعديلها. وبسبب وجود بعض الإختلاف بين مفهومي البرمجيات الحرة والبرمجيات مفتوحة المصدر فإنه من غير الصحيح استخدام إحدى هاتين التسميتين مكان الأخرى، ولذلك فمن الأنسب دوماً استخدام مصطلح البرمجيات الحرة ومفتوحة المصدر للتعبير عن البرمجيات التي تكون شيفرتها المصدرية متاحة للمستخدم للإطلاع عليها وتعديلها وتطويرها.
لقد كان ريتشارد ستولمان Richard Stallman أول من ناقش محدودية وقيود البرمجيات المغلقة وطرح فكرة حرية المستخدم في حصوله على الشيفرة المصدرية للبرمجيات التي يستخدمها ودراستها وتعديلها وإعادة توزيعها. وليضع الأساس القانوني لهذه الفكرة فقد كتب أيضاً ما يدعى بإتفاقية الترخيص العمومية GNU General Public License (GPL) كالوثيقة القانونية التي تحكم استخدام البرمجيات المرافقة لها وتضمن توافقية هذه البرمجيات واستخداماتها مع المبادئ الأساسية للبرمجيات الحرة. أسس ريتشارد في العام 1995 مؤسسة البرمجيات الحرة Free Software Foundation كمؤسسة لا تهدف للربح غايتها نشر هذه الأفكار وترويج استخدام البرمجيات الحرة في العالم. قامت هذه المؤسسة باستقطاب الكثير من المطورين الذين آمنوا بأفكارها ومبادئها وقاموا معاً ببناء مجموعة من البرمجيات التي أطلقت مع شيفرتها المصدرية لتتيح للمستخدمين إمكانية تطويرها وتعديلها. هذه البرمجيات بنيت اعتماداً على العمل التطوعي لهؤلاء المطورين، وبالتالي فهي غير مملوكة من قبل شخص أو جهة ما، بما سيضمن حريتها من أية سيطرة قد تحد من حريات مستخدميها.
نظام التشغيل الحر ومفتوح المصدر
هل تذكر ذلك البرنامج المسكين الذي يعمل طيلة عمره في الكواليس دون أن يدرك وجوده أحد مع أنه حجر الأساس في أي نظام حاسوبي؟ ذاك هو نظام التشغيل. وهنا يبرز مجدداً الدور الحيوي لهذا البرنامج، حيث أن حركة البرمجيات الحرة، ومهما أنتجت من برمجيات تطبيقية حرة، فإنها بحاجة إلى نظام تشغيل يتمتع بنفس القدر من الحرية التي تتمتع بها هذه البرمجيات، وإلا فإن المستخدم سيضطر إلى تشغيل هذه البرمجيات التطبيقية ضمن نظام تشغيل مغلق، وبالتالي فإن ذلك سيجرده من بعض الحريات التي حصل عليها.
وبالفعل، فإن انتشار حركة البرمجيات الحرة ظل محدوداً ومقتصراً على المبرمجين والمطورين إلى أن قرر شاب فنلندي من جامعة هلسنكي يدعى لينوس تورفالدز Linus Torvalds بناء نظام تشغيل حر ليجعله متاحاً (وبالتأكيد مع شيفرته المصدرية) لجميع المستخدمين ليقوموا بتعديله وتطويره ونشره. استخدم لينوس مجموعة البرمجيات التي طورتها مؤسسة البرمجيات الحرة كأدوات لبناء نظام تشغيله، لذلك ومع أن قلب (نواة) نظام التشغيل نفسه سمي لينكس Linux تيمناً باسم مبتكره، فإن الحزمة المتكاملة لنظام التشغيل والتي تضم العديد من البرمجيات الأخرى التي طورتها مؤسسة البرمجيات الحرة تدعى نظام التشغيل غنو/لينكس (في إشارة إلى دور كل من ريتشارد ستولمان ومؤسسة البرمجيات الحرة إضافة إلى لينوس تورفالدز في بناء هذا النظام المتكامل).
إن الحاجة الماسة إلى نظام تشغيل حر مكمل لتشكيلة البرمجيات التي طورتها مؤسسة البرمجيات الحرة سرعان ما دفعت بالعديد من المطورين إلى التطوع لتطوير هذا النظام الوليد ليتحول بسرعة قياسية من مجرد تطبيق بسيط لفكرة طموحة إلى نظام تشغيل متكامل يضاهي في جودته ومزاياه أنظمة التشغيل التجارية.
مزايا نظام التشغيل غنو/لينكس
بما أن نظام التشغيل غنو/لينكس قد بني نتيجة تفاعل جهود الكثير من المطورين المتطوعين بناء على مبادئ فلسفة البرمجيات الحرة فإن هذا النظام متاح لأي مستخدم يريد استخدامه دون أي مقابل مادي. أي أنك لن تضطر لدفع قيمة مادية لقاء حصولك على هذا النظام واستخدامه (وبالتأكيد حصولك على شيفرته المصدرية أيضاً).
ولكن طالما أن غنو/لينكس متاح بشكل مجاني، لماذا تقوم بعض الشركات ببيعه؟ هذه النقطة تستوجب بعض التوضيح، فمع أن نظام التشغيل ذاته متاح دون مقابل فإن بعض الشركات قد تجد فرصة لتحقيق بعض الأرباح من خلال تجميع تشكيلة من البرمجيات الحرة وتوضيبها مع نظام التشغيل لينكس في علبة جذابة تحتوي بالإضافة على أقراص البرمجيات المدمجة مجموعة من الكتيبات المطبوعة وتعليمات الإستخدام، كما قد تقدم بعض خدمات الدعم الفني عبر الهاتف أو الإنترنت. وهكذا فإن هذه الشركات لا تتقاضى منك مقابلاً لقاء حصولك على نظام التشغيل ذاته، بل تستحصل على ثمن هذه الخدمات التي قدمتها لك في تجميع البرمجيات وطباعة الكتيبات وتوفير خدمات الدعم الفني.
وبعكس تراخيص الإستخدام التجارية المرافقة للبرمجيات المغلقة، والتي تجعل منك منتهكاً لقوانين حماية الملكية الفكرية بمجرد نسخك لأحد هذه البرمجيات، معرضاً نفسك للمساءلة القانونية ولدفع غرامات فلكية، فإن الشركات التي تقوم بتسويق البرمجيات الحرة ومفتوحة المصدر لن تستطيع تقييدك أو منعك من نسخ هذه البرمجيات أو تعديلها أو إعادة توزيعها، ذلك أن هذه البرمجيات مترافقة مع إتفاق ترخيص يضمن لك مطلق الحرية في القيام بذلك. وفي حال أردت أن تحصل على نظام التشغيل غنو/لينكس أو أي من البرمجيات الحرة دون المرور عبر إحدى هذه الشركات فغالبية هذه البرمجيات متاحة للتنزيل عبر الإنترنت، أو حتى بإمكانك نسخها من صديق دون خشية انتهاك قوانين حماية الملكية الفكرية.
من المزايا الأخرى لفلسفة البرمجيات الحرة ومفتوحة المصدر إتاحتها لطيف واسع من المطورين للمساهمة في بناء البرمجيات التطبيقية التي قد يحتاجونها، وبالتالي فإن كم البرمجيات الحرة المتوفرة ضخم جداً، وهو في تزايد مستمر يوماً تلو الآخر. هذا يعني بالمحصلة توفر عدد كبير جداً من البرمجيات التي تعمل ضمن نظام التشغيل غنو/لينكس بدأ من تطبيقات الأتمتة المكتبية كبرمجيات تنسيق النصوص والجداول الحسابية مروراً بتطبيقات الرسوم ومعالجة الصور إنتهاء ببرامج تطوير مواقع الإنترنت والألعاب.
كما يعد غنو/لينكس من أكثر أنظمة التشغيل أماناً ووثوقية، ويعود الفضل في ذلك إلى طبيعة تطويره وتوفر شيفرته المصدرية، ما يتيح اكتشاف الأخطاء البرمجية والثغرات الأمنية وإصلاحها بسرعة فائقة تتجاوز بمراحل تلك التي ستغرقها تطوير البرمجيات المغلقة.
يتميز غنو/لينكس أيضاً بدعمه الكبير لتعدد المستخدمين، وهو ما يجعله الخيار الأنسب في كثير من التطبيقات التي تتطلب قدرات على التعامل مع عدد كبير من المستخدمين، كتطبيقات مواقع الإنترنت والتجارة الإلكترونية. كما أن من فوائد دعم تعدد المستخدمين بالنسبة للمستخدم المنزلي هي الحصول على إعدادات مختلفة لكل مستخدم، حيث سيملك كل فرد من أفراد العائلة إعداداته الخاصة – كشكل سطح المكتب والتطبيقات التي سيتخدمها وملفاته الشخصية- دون التأثير على الإعدادات الخاصة لبقية أفراد الأسرة.
إذا ما وجدت بأن هذه الميزات التي ذكرتها للتو تستحق التجربة ولكنك مازلت تفتقد الجرأة اللازمة للإنتقال الكلي إلى نظام جديد تماماً فعندي لك بعض الأخبار السارة. فأنت غير مجبر على الإطلاق على التنازل عن نظام التشغيل الذي اعتدت استخدامه للتمتع بمزايا غنو/لينكس، وذلك لأن هذا النظام الأليف يحب الأصدقاء، ولا يمانع أبداً أن تقوم بتثبيته على حاسوبك جنباً إلى جنب مع نظام تشغيل آخر، دون أن يؤثر أي منهما على إعدادات أو أداء الآخر.
عندما تقوم بتثبيت غنو/لينكس على حاسوبك بالإضافة إلى نظام تشغيل آخر فإن الحاسوب سيسألك في كل مرة يقلع فيها عن نظام التشغيل الذي تود استخدامه، وعندما تختار أياً من الأنظمة المتاحة (غنو/لينكس أو ويندوز على سبيل المثال) فإن الحاسوب سيقوم بتشغيل هذا النظام في حين يخلد الآخر في سبات عميق إلى أن تقوم بإعادة تشغيل الحاسوب ليتاح لك الخيار مجدداً.
أنصحك بشدة أن تجرب تثبيت غنو/لينكس إلى جانب نظام التشغيل الحالي، وكلي ثقة أن الوقت لن يطول بك حتى تستمتع بما سيقدمه لك هذا النظام من مزايا فريدة ممتعة، عدا عن إدراكك للقيمة الحقيقية لحريتك، وعندها فأنا متأكد بأنك ستطلب مني كتابة مقال لشرح كيفية إزالة نظام التشغيل الآخر والإبقاء على غنو/لينكس فقط.
محمد أنس طويلةanas@tawileh.net
(هامش جانبي)ماذا تعني كلمة غنو GNU؟
قصة هذه الكلمة طريفة للغاية، وهي تمثل مبدأ غريباً في التسمية عادة ما يستخدمه مطوروا البرمجيات الحرة ومفتوحة المصدر.
أول من ابتكر هذه الكلمة كان ريتشارد ستولمان نفسه، وهي اختصار للأحرف الأولى من عبارة GNU is Not Unix. تدل هذه العبارة بما لا يدع مجال للشك بأن ريتشارد ليس من محبي نظام التشغيل يونيكس نتيجة كونه نظاماً مغلقاً لا يتاح لمستخدمه الوصول إلى شيفرته المصدرية وبالتالي فهو يقيد الحرية التي يؤمن ريتشارد بأنها من حق المستخدم. فعلياً فإن ريتشارد (يكره) ليس يونيكس وحسب، بل أي برنامج مغلق، ويمكنك الإستدلال على ذلك أيضاً بالنظر إلى الهدف الذي كرس هذا الرجل جل حياته لأجله لبناء نظام تشغيل حر يضاهي يونيكس.
هذا يفسر الجزء الأخير من العبارة، والذي يقصد به تمييز هذا النظام عن نظام التشغيل يونيكس، فهو بالنهاية (ليس يونيكس Not Unix)!
ولكن ماذا عن الجزء الأول GNU؟هنا تكمن الحيلة، وهي ما يدعى بالتسمية المتتالية Recursive Naming، أي أن أول حرف من الكلمة هو اختصار لنفس الكلمة، وهنا حرف الـ G هو اختصار لكلمة GNU، ولكن ماذا تعني GNU؟ تعني مجدداً الأحرف الأولى من عبارة GNU is Not Unix، وهكذا دواليك. أي أن GNU ذاتها لا ترمز لأي شئ محدد. وستجد هذا الأسلوب في التسمية المتتالية متبعاً بكثرة في عالم البرمجيات الحرة ومفتوحة المصدر بغاية التعبيرعن روح الدعابة التي يتمتع بها المطورون في هذا العالم.
بمحض الصدفة، فإن ريتشارد كان قادراً على إضافة قليل من المعنى لهذه الكلمة، فهي (مجدداً، بمحض الصدفة) ترمز أيضاً لاسم أحد الحيوانات والذي يشبه الوعل. لذلك فقد استخدم ريتشارد رأس هذا الحيوان شعاراً للبرمجيات الحرة.
(هامش جانبي)
البطريق – شعار غنو/لينكس!
في عالم القرن الحادي والعشرين، يرتبط كل شئ بشعار ما، والبطريق اللطيف هذا هو شعار نظام التشغيل غنو/لينكس. وهو لا يحتل فقط أغلفة المجلات والبرمجيات والقمصان، بل ستجده أيضاً يبتسم لك في الكثير من الألعاب و رسومات سطح المكتب.
ولكن، لماذا اختير البطريق دون غيره؟
السبب الرسمي لذلك كما يقول لينوس تورفالدز:" إن البطاريق مخلوقات رائعة، و أنا أحبها!".ويعلق الكثيرون بالقول أن البطريق البدين والذي يبدو وكأنه قد أنهى للتو وليمة دسمة ابتلع خلالها مئة سمكة لا يصلح لأن يكون شعاراً لنظام تشغيل ممشوق، سريع وقوي مثل غنو/لينكس، و لهؤلاء أقول: هل شاهدت مرة بطريقاً يسبح تحت الماء؟
تعليقات
إرسال تعليق