مشروع جنو

بقلم ريتشارد ستالمان

هذا المقال تم نشره أولاً في كتاب المصادر المفتوحة (Open Sources). ريتشارد ستالمان لم يكن أبداً من مناصري استخدام تعبير “المصادر المفتوحة”، ولكنه شارك بهذا المقال في الكتاب المذكور ﻻعتقاده أنه من اﻷفضل أن تكون أفكار ورؤى حركة البرمجيات الحرة مذكورة في الكتاب عن أن تكون غائبة عنه.

لماذا نؤمن أنه من اﻷهمية بمكان أن نصر جميعاً على أن تكون البرمجيات التي نستخدمها حرة.

أول مجتمع لمشاركة البرمجيات

حينما بدأت العمل بمختبر الذكاء اﻻصطناعي بمعهد ماساشوستس للتكنولوجيا MIT في العام 1971م، وجدت أنني صرت جزءاً من مجتمع يقوم بمشاركة البرمجيات، الشئ الذي كان متواصلاً في اﻷعوام التي سبقت التحاقي بالمختبر. لم تكن مشاركة البرمجيات مقتصرة تحديداً على مجتمعنا، بل كانت ممارسة قديمة قدم الحواسيب نفسها، مثلما أن مشاركة وصفات الطبخ قديمة قدم عملية الطبخ في حد ذاتها. غير أننا كنا نقوم بالمشاركة أكثر بكثير من غيرنا.

كان مختبر الذكاء اﻻصطناعي يستخدم نظام تشغيل يعتمد مبدأ المشاركة بالوقت، وكان النظام يدعى نظام المشاركة بالوقت غير التوافقي ITS (the Incompatible Timesharing System). كان قراصنة المبرمجين في فريق عمل المختبر (1) قد صمموا وبرمجوا النظام باستخدام لغة التجميع، على أجهزة ديجيتال PDP-10، وهي من أضخم الحواسيب التي كانت موجودة في ذلك الوقت. وحيث أنني كنت عضواً في هذا المجتمع، ومبرمجاً في فريق عمل مختبر الذكاء اﻻصطناعي؛ فقد كانت وظيفتي تتطلب أن أقوم بتحسين هذا النظام.

في ذلك الوقت، لم نكن نطلق على برمجياتنا لفظ “البرمجيات الحرة”؛ وذلك ﻷن اللفظ لم يكن قد تم اختراعه بعد، ولكن هذا ﻻ يمنع من أن ما كنا نمارسه كان حرية البرمجيات. حينما كان المبرمجون التابعون لجامعة أخرى أو شركة مختلفة يرغبون في استخدام أو ترقية أحد برامجنا، كنا نسمح لهم بذلك. حينما كنت ترى شخصاً آخر يستخدم برنامجاً غير مألوف ويجذب ذلك انتباهك، كان بإمكانك أن تطلب من الشخص اﻵخر أن يسمح لك برؤية شفرة المصدر، حيث يمكنك أن تقرأها، وتقوم بتعديلها، ومن ثم تستخدم أجزاء منها لعمل برنامج جديد كلياً.

(1) استخدام لفظة “قرصنة” بمعنى “كسر اﻷمن” هو خطأ شائع ترتكبه الوسائط اﻹعلامية الحديثة. نحن كقراصنة مبرمجين نرفض أن نعترف بهذا المعنى الخاطئ، ونصر على استخدام الكلمة بمعناها الصحيح والذي يعني أن القرصان هو شخص يجب البرمجة، أو شخص يستمتع بالذكاء المرح، أو شخص يمارس اﻻثنين معاً. يمكنك قراءة المزيد في مقالتي حول القرصنة البرمجية.

انهيار المجتمع اﻷولي

في بداية الثمانينيات من القرن الماضي، تغير الوضع كلياً عما كان عليه، وذلك حينما قررت شركة ديجيتال Digital إيقاف تصنيع سلسلة حواسيب PDP-10. بينما كان التصميم راقياً وقوياً بما يناسب الستينيات، إﻻ أنه فشل في التوسع بما يلائم مساحات العناوين الضخمة التي صارت متوفرة في الثمانينيات. هذا كان يعني أن جميع البرامج التي تكون منها نظام المشاركة بالوقت غير التوافقي ITS قد أصبحت بالية وغير صالحة للعمل.

كان مجتمع القراصنة المبرمجين بمختبر الذكاء اﻻصطناعي قد انهار قبل ذلك بفترة قصيرة. ففي العام 1981م، كانت شركة سيمبولكس (Symbolics) قد نجحت في توظيف أغلب القراصنة المبرمجين التابعين لمختبر الذكاء الاصطناعي، مما أدى ﻹضعاف مجتمع المبرمجين الذي صار عاجزاً عن المشاركة بنفس الطريقة السابقة. (إن كتاب القراصنة (Hackers)، من تأليف ستيف ليفي، يحوي وصفاً دقيقاً لهذه اﻷحداث، باﻹضافة إلى أنه يرسم صورة واضحة لهذا المجتمع في ذروة نشاطه). فيما بعد، حينما قام مختبر الذكاء اﻻصطناعي في العام 1982م بشراء جهاز حاسوب PDP-10 حديث، قرر المدراء استخدام نظام تشغيل المشاركة بالوقت من ديجيتال، والذي لم يكن حراً، عوضاً عن نظام ITS القديم.

أجهزة الحواسيب الحديثة في ذلك الوقت، كجهاز VAX أو جهاز 68020، كانت جميعها تحوي أنظمة التشغيل الخاصة بها، والتي لم يكن أيها حراً: كان يجب عليك أن تقوم بتوقيع اتفاقية عدم إفشاء اﻷسرار لو كنت ترغب بالحصول على نسخة من البرنامج.

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

قد يتفاجأ بعض القراء من فكرة أن النظام اﻻجتماعي للبرمجيات اﻻحتكارية — وهو النظام الذي يفرض قانون عدم المشاركة وعدم تعديل البرمجيات — هو نظام ﻻ اجتماعي، كما أنه نظام ﻻ أخلاقي، وبالتالي فهو ممارسة خاطئة من أساسها. ولكن ماذا يمكننا أن نطلق على نظام يعتمد على تفريق الرأي العام، ويجعل المستخدمين ﻻ حول لهم وﻻ قوة؟ القارئ الذي يجد هذه الفكرة مفاجئة هو من اقتنع بأن نظام البرمجيات اﻻحتكارية اﻻجتماعي هو نظام مُسلّم به، أو هو من حكم على النظام باﻻعتماد على الشروط التي فرضها عليه أصحاب البرمجيات اﻻحتكارية أنفسهم. يمكننا أن نتفهم ذلك، فناشرو البرامج قد بذلوا الكثير من الوقت والجهد ﻹقناع المستخدمين بأن هناك طريقة واحدة فقط للحكم على هذه المسألة.

حينما يتحدث ناشرو البرامج عن “فرض حقوقهم” بالقوة، أو ”محاربة وإيقاف القرصنة“ فإن بما يقولونه في الحقيقة ليس مهماً على اﻹطلاق. الرسالة الحقيقية من وراء تصريحاتهم تكمن في افتراضاتهم غير المعلنة، والتي يتعين على الجمهور القبول بها بدون بحث أو تمحيص. إذاً، فلنقم بالبحث في هذه اﻻفتراضات اﻵن.

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

هناك افتراض ضمني آخر يقضي بأن الشئ الوحيد ذو اﻷهمية في موضوع البرمجيات هو نوع الوظائف التي يمكنك القيام بها — بمعنى أننا كمستخدمي حواسيب يجب ألا نهتم أو نفكر في نوع المجتمع الذي يُسمَح لنا بالعيش فيه.

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

إذا قررنا أن نرفض هذه اﻻفتراضات، وأردنا أن نحكم على هذه المسائل استناداً على المنطق واﻷخلاق لوحدهما، واضعين المستخدم أولاً، فإننا سنصل في النهاية لنتائج مختلفة كلياً. ينبغي أن تكون لدى مستخدمي الحواسيب حرية تعديل البرمجيات بما يناسب احتياجاتهم، كما ينبغي أن تكون لديهم حرية مشاركة البرمجيات، ببساطة ﻷن مساعدة اﻵخرين هي اﻷساس في بناء المجتمع.

بما أن المساحة ﻻ تسمح بعرض مطول للأسباب التي تقودنا لهذه النتيجة؛ عليه ننصح القارئ باﻻطلاع على صفحة http://www.gnu.org/philosophy/why-free.html وصفحة http://www.gnu.org/philosophy/free-software-even-more-important.html.

الخيار اﻷخلاقي القاسي

بعد انهيار مجتمعي القديم، صار من المستحيل علي أن أواصل كالسابق. وعليه صار علي أن أقوم بأقسى خيار أخلاقي على اﻹطلاق.

الخيار اﻷسهل كان أن أنضم لعالم البرمجيات اﻻحتكارية، حيث أقوم بتوقيع اتفاقيات عدم إفشاء اﻷسرار، وأقطع وعداً بألا أساعد زملائي المبرمجين. على اﻷرجح أنني كنت سأقوم بتطوير برمجيات سيتم إصدارها تحت اتفاقيات عدم إفشاء مماثلة، مما سيزيد الضغط على اﻵخرين ويضطرهم لخيانة زملائهم بالمثل.

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

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

الخيار اﻵخر، والذي كان مباشراً ولكنه غير مريح إطلاقاً، كان أن أغادر مجال الحوسبة نهائياً. كان هذا يعني أن قدراتي لن يساء استخدامها، ولكن سيتم إهدارها. كان هذا سيعني أيضاً أنني لن أكون مسئولاً عن تفرقة وتحجيم مستخدمي الحواسيب، إﻻ أن هذا لم يكن ليمنع حدوثهما في جميع اﻷحوال.

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

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

بصفتي مبرمج أنظمة تشغيل فقد كنت أمتلك الصفات المؤهلة لهذه المهمة. لذلك، ورغماً عن أنني لم أكن متأكداً من النجاح، فقد أدركت أنني قد تم اختياري لهذه المهمة. اخترت أن أجعل نظام التشغيل ملائماً ليونكس (Unix) بحيث تكون البرمجيات قابلة للترقية، وحتى يتمكن مستخدمو يونكس من اﻻنتقال بسهولة للنظام الجديد. قمت باختيار اسم جنو (GNU)، على عادة القراصنة المبرمجين، كاختصار متكرر بمعنى “جنو ليس يونكس أو GNU's Not Unix.” وينطق كمقطع لفظي واحد مع تشديد الجيم.

إن أي نظام تشغيل يجب أن يحتوي أشياء أكثر من نواة النظام، والتي بالكاد تسمح بتشغيل البرامج اﻷخرى. في السبعينيات كانت جميع نظم التشغيل المحترمة تحتوي على معالجات أوامر، ومُجمّعات ومترجمات ومُصحّحات للشفرة البرمجية، ومحررات نصوص، وبرامج بريد الكتروني، والكثير غيرها من البرامج. نظام ITS كان يحتويها، كما كانت أنظمة Multics وVMS وUnix جميعها. كان هذا يعني أن نظام جنو سيحتوي هذه البرامج أيضاً.

لاحقاً، سمعت هذه الكلمات، والتي تُنسَب إلى هيليل (Hillel) (1):

لو لم أكن داعماً لنفسي، فمن سيدعمني؟
لو لم أهتم باﻵخرين، فمن أنا؟
لو لم أفعلها اﻵن، فمتى إذاً؟

قراري بإنشاء مشروع جنو كان مستنداً على عقلية مشابهة لهذه.

(1) بصفتي ملحداً، فأنا ﻻ أتبع أي قادة دينيين، ولكنني أُعجَب أحياناً بمقولة أحدهم.

حر كما في الحرية

إن تعبير “البرمجيات الحرة” كثيراً ما يساء فهمه — فهو ﻻ علاقة له بالمال، وإنما يُعنَى بالحرية. فيما يلي، سنقوم بتعريف البرمجيات الحرة.

يعتبر البرنامج المعين برمجية حرة بالنسبة لك أيها المستخدم حينما يستوفي هذه الشروط:

بما أن “الحرية” هنا ترمز للفعل لا للمال، عليه فليس هناك تضارب بين كون البرمجية حرة وكونها تباع بسعر. في الواقع، فإن حرية بيع نسخ من البرامج هي حرية أساسية: إن المجتمع يستفيد من مجموعات البرمجيات الحرة التي تباع على اﻷقراص المضغوطة، حيث أنها تشكل مصدراً هاماً من مصادر جمع اﻷموال، والتي تساعد في تطوير البرمجيات الحرة. هذا يعني أن أي برمجية ﻻ يُسمح بإدخالها في هذه المجموعات هي بطبيعة الحال برمجية غير حرة.

نظراً لغموض معنى كلمة “الحرية”، فإننا قد بحثنا مطولاً عن بدائل لها، إﻻ أننا لم نجد تعبيراً آخر أكثر مناسبة منها. إن اللغة اﻻنجليزية تزخر بالكلمات ذات الفروق الشكلية البسيطة أكثر من أي لغة أخرى، ولكنها تفتقر لوجود كلمة بسيطة وغير غامضة تحمل معنى “حر” كما في الحرية — “غير مقيد (unfettered)” هي أكثر كلمة ملائمة في المعنى. المرادفات اﻷخرى مثل “مُحَرّر (liberated)”، و“ مستقل (freedom)”، و“مفتوح (open)” جميعها تحمل معنىً خاطئاً، أو تعاني من قصور آخر في المعنى.

برمجيات جنو ونظام تشغيل جنو

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

بسبب هذه القرارات، والكثير غيرها، فإن نظام جنو هو أكثر من مجرد تجميع لبرمجيات جنو. إن نظام جنو يحتوي العديد من البرمجيات التي لم يتم تطويرها في مشروع جنو. هذه البرمجيات تم تطويرها من قبل مبرمجين آخرين لخدمة أغراضهم، ولكننا تمكنا من استخدامها ﻷنها برمجيات حرة.

بداية إطلاق المشروع

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

ولكن بروفيسور ونستون، والذي كان رئيس مختبر الذكاء اﻻصطناعي بمعهد ماساشوستس للتكنولوجيا في ذلك الوقت، قام مشكوراً بدعوتي لمواصلة استخدام موارد المختبر.

الخطوات اﻷولى

كنت قد سمعت عن مجموعة مترجمات الجامعة الحرة (Free University Compiler Kit)، المعروفة بالاسم المختصر VUCK، قبل فترة قصيرة من بدئي العمل على مشروع جنو. (كلمة “حرة” في اﻷلمانية تبدأ بحرف v. هذا البرنامج كان عبارة عن برنامج مترجم تم تصميمه لترجمة عدة لغات مختلفة، من ضمنها لغة سي (C) وباسكال (Pascal)، كما أنه كان يستهدف عدة أجهزة مختلفة. عليه فقد قمت بالتواصل مع صاحب البرنامج ﻷسأله إن كان بإمكان مشروع جنو أن يستفيد من عمله.

كان رد المبرمج علي ساخراً، بقوله أن كون الجامعة حرة ﻻ يعني بضرورة الحال أن المترجم مجاني. كان هذا ما دفعني ﻷن أقرر أن أول برنامج في مشروع جنو سيكون مترجماً متعدد اللغات واﻷهداف.

كنت أتمنى أﻻ أضطر لكتابة البرنامج كاملاً بنفسي، ولذلك تحصّلت على شفرة المصدر لمترجم باسكال (Pascal)، حيث كان مترجماً متعدد القواعد (multiplatform)، تم تطويره في مختبر لورنس لفرمور. كان المترجم يدعم نسخة ممتدة من باسكال، وهي نفس اللغة التي تمت كتابة البرنامج نفسه بها، وكان الغرض منها أن تكون لغة برمجة ﻷنظمة التشغيل. قمت بإضافة واجهة أمامية للغة سي (C)، بعدها بدأت بترقية المترجم للعمل على حاسوب موتورولا 68000. في النهاية اضطررت ﻷن ألغي الفكرة بكاملها حينما اكتشفت أن المترجم كان يحتاج لعدة ميجابايتات من مساحة المُراكِم (stack space)، بينما كان نظام يونكس المتوفر على حاسوب 68000 يسمح بـ64 كيلوبايت كحدٍ أقصى لمساحة المُراكِم.

كان هذا حينما أدركت أن مترجم باسكال كان يقوم بتحليل الملف المدخل بكامله، من ثم يقوم بإنشاء شجرية تعتمد على البنية التركيبية للملف المدخل، من ثم يقوم بتحويل الشجرية لسلسلة من “اﻷوامر”، وأخيراً يقوم بتوليد ملف المخرجات، كل ذلك بدون أن يقوم بتحرير المساحة التخزينية المشغولة سابقاً. عندما وصلت لهذه النقطة، أدركت أنني سأضطر لكتابة مترجم جديد من البداية، والذي أصبح يعرف فيما بعد باسم جي سي سي (GCC). لم أقم باستخدام أي شفرة من مترجم باسكال اﻷصلي، لكنني استفدت من الواجهة اﻷمامية للغة سي (C) التي قمت بكتابتها من قبل. كل هذا حدث بعد عدة سنوات، إذ أنني بدأت أولاً بكتابة برنامج جنو إيماكس (GNU Emacs).

برنامج جنو إيماكس (GNU Emacs)

بدأت العمل على برنامج جنو إيماكس في سبتمبر 1984م، وبمطلع عام 1985م كان قد تحول لبرنامج صالح للاستعمال. كان هذا مهماً ﻷن البرنامج ساعدني ﻷتمكن من استخدام أنظمة تشغيل يونكس ﻷقوم بتحرير الملفات، إذ أنني لم أكن راغباً في تعلم كيفية استخدام برنامج في آي (vi) أو إيد (ed)، ولذلك كنت أقوم بتحرير ملفاتي على أنظمة أخرى حتى انتهيت من كتابة إيماكس.

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

كان يمكنني أن أقول لهم: “اعثروا على صديق لديه اتصال بشبكة اﻻنترنت، وسيقوم هو بعمل نسخة لكم.” أو كان يمكنني أن أفعل ما فعلته ببرنامج إيماكس اﻷصلي على جهاز ديجيتال PDP-10: أن أقول لهم “أرسلوا إلي شرائطكم، ومظاريفاً بريدية معنونة إلى أنفسكم SASE، وسأقوم بإعادتها لكم بريدياً وعليها برنامج إيماكس”. المشكلة أنني لم يكن لدي وظيفة، وكنت أبحث عن طرق لجني المال باستخدام البرمجيات الحرة. عندها أعلنت أنني سأقوم بإرسال شريط عبر البريد لكل من يرغب بذلك، لقاء رسم مالي يبلغ 150 دولار. بهذه الطريقة، تمكنت من بدء مشروع عمل لتوزيع البرمجيات الحرة، وهو المشروع الذي نبعت منه الشركات الحديثة التي تقوم بتوزيع إصدارات جنو/لينكس المتعددة.

متى يكون جميع مستخدمو برنامج معين أحراراً؟

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

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

مطورو نظام عرض إكس لم يعتبروا هذه مشكلة—لقد كانوا يتوقعون هذا، بل ويسعون إليه. لم يكن غرضهم الحرية، بل فقط “النجاح”، وكان تعريفهم للنجاح هو “الحصول على أكبر عدد من المستخدمين”. لم يكونوا مهتمين بحرية مستخدميهم، بقدر ما كانوا مهتمين بعددهم.

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

الحقوق المتروكة واتفاقية جنو العامة

لم يكن الهدف من وراء مشروع جنو تحصيل الشهرة، وإنما كان إعطاء المستخدمين كامل حريتهم. من ثم كان لزاماً علينا أن نستخدم شروط توزيع من شأنها أن تمنع تحويل برامج جنو لبرامج احتكارية. الطريقة التي استخدمناها أصبحت تعرف باسم “الحقوق المتروكة”.(1)

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

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

حتى تنجح فكرة الحقوق المتروكة، يجب أن تكون النسخ المعدلة من برنامج ما حرة أيضاً. هذه الخطوة تضمن أن أي عمل يتم تطويره بناءً على عملنا سيكون متوفراً لمجتمعنا حال نشره. حينما يقوم المبرمجون اللذين يشغلون وظائف برمجة في شركاتهم بالتطوع لتطوير وتحسين برمجيات جنو، فإن الحقوق المتروكة هي ما يمنع شركاتهم من القول: “يمنع عليكم مشاركة هذه التحسينات البرمجية، ﻷننا سنقوم باستخدامها لتطوير نسختنا اﻻحتكارية من البرنامج.”

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

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

إن رخصة جنو العامة (GNU GPL) تعد أكثر تطبيق عملي مستخدم في ترخيص برامج جنو، مع التنويه لوجود رخص حقوق متروكة أخرى يتم استخدامها في حالات معينة. فمثلاً يتم ترخيص كتيبات جنو باستخدام رخصة حقوق متروكة مبسطة، نظراً ﻷن رخصة جنو العامة أكثر تعقيداً مما تحتاجه الكتيبات.(2)

(1) في العام 1984 أو 1985، قمت باستلام بريد مرسل من دون هوبكنز (وهو شخص ذو خيال واسع). كان المظروف يحتوي عدة كتابات مسلية، مثل: “جميع الحقوق متروكة”. كنت استخدم كلمة “الحقوق متروكة” للدلالة على المفهوم الذي كنت أقوم بتطويره في ذلك الوقت.

(2) نحن نقوم باستخدام رخصة جنو للوثائق الحرة لترخيص الوثائق.

مؤسسة البرمجيات الحرة

كان اﻻهتمام ببرنامج إيماكس متزايداً، مما نتج عنه زيادة عدد اﻷشخاص المهتمين بالمشاركة في مشروع جنو؛ ولذلك قررنا أنه قد حان الوقت للبحث عن مصادر تمويل مرة أخرى، مما نتج عنه إنشاء مؤسسة البرمجيات الحرة (FSF)، وهي منظمة خيرية معفية من الضرائب، تُعنَى بتطوير البرمجيات الحرة. مع مرور الزمن، تولت مؤسسة البرمجيات الحرة مهمة توزيع أشرطة إيماكس، من ثم توسعت فتمت إضافة برمجيات حرة أخرى (بعضها من جنو والبعض من جهات أخرى) للشرائط، كما أصبحت تبيع الكتيبات الحرة أيضاً.

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

موظفو مؤسسة البرمجيات الحرة قاموا بكتابة وتطوير مجموعة من حزم البرامج الخاصة بجنو، والتي نذكر منها مكتبة لغة سي (C) ومُنفِّذ اﻷوامر. إن مكتبة سي الخاصة بجنو هي الحزمة البرمجية التي تستخدمها كل البرامج التي تعمل على أنظمة جنو/لينكس حينما تتواصل مع نواة النظام (لينكس). هذه المكتبة قام بتطويرها أحد موظفي مؤسسة البرمجيات الحرة، وهو السيد رولاند ماكجراث. أما منفذ اﻷوامر المستخدم على أغلبية أنظمة جنو/لينكس فهو باش (BASH)، وهو اختصار للجملة اﻹنجليزية (النسخة الجديدة من منفذ أوامر بورن) (1). منفذ أوامر باش قام بتطويره موظف المؤسسة برايان فوكس.

لقد قمنا بتمويل تطوير هذه البرامج ببساطة ﻷن مشروع جنو لم يكن يتمحور حول اﻷدوات أو بيئة التطوير فقط، وإنما كان هدفنا تطوير نظام تشغيل متكامل، وهذه البرامج كانت خطوة أساسية في الوصول لهذا الهدف.

(1) اسم “النسخة الجديدة من منفذ أوامر بورن” هو لعب على اﻹسم اﻷصلي، “منفذ أوامر بورن”، حيث كان منفذ اﻷوامر المعتمد على أنظمة يونكس القديمة.

كيف ندعم البرمجيات الحرة

إن فلسفة البرمجيات الحرة ترفض التجارة بالبرمجيات على نطاق واسع، ولكنها في نفس الوقت ﻻ ترفض فكرة التجارة بصورة عامة. حينما يقوم أصحاب اﻷعمال باحترام حرية المستخدمين، حينها نتمنى لهم النجاح وﻻ شئ غيره.

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

اليوم تقوم العديد من المؤسسات بممارسة أنواع مختلفة من تجارة البرمجيات الحرة المذكورة سابقاً. بعضها تقوم بتوزيع مجموعات من البرمجيات الحرة على أقراص مضغوطة. بينما يقوم البعض اﻵخر ببيع خدمات الدعم، والتي تتعدد مستوياتها من اﻹجابة على أسئلة المستخدمين، ﻹصلاح أخطاء البرمجيات، ﻹضافة ميزات وخصائص جديدة للبرامج. في الحقيقة، لقد تطور اﻷمر حتى صرنا نرى شركات برمجيات كاملة يتم إنشاؤها لتقوم ببيع برمجياتها الحرة.

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

اﻷهداف التقنية للمشروع

إن الهدف اﻷساسي من وراء مشروع جنو هو تطوير البرمجيات الحرة. حتى إن كان جنو يفتقر لميزات تقنية تجعله أفضل من يونكس، فإن جنو سيظل صاحب اﻷفضلية اﻻجتماعية؛ ﻷنه يسمح للمستخدمين بالتعاون، كما أن له اﻷفضلية اﻷخلاقية، ﻷنه يحترم حرية المستخدم.

رغم ذلك، كان من الطبيعي أن نقوم بتطبيق معايير الممارسة الجيدة على عملنا—على سبيل المثال، تخصيص هياكل البيانات في الذاكرة بصورة ديناميكية وحسب الحوجة، مما ينتج عنه تلافي مشكلة اﻷحجام الثابتة والتي قد ﻻ تكون معروفة مسبقاً. مثال آخر يكمن في استخدام جميع أنواع الشفرات ذات 8 بت في الحالات التي كان فيها هذا اﻻستخدام منطقياً.

باﻹضافة لذلك فقد رفضنا طريقة يونكس في التركيز على اﻻستخدام المنخفض للذاكرة، وذلك حينما قررنا عدم دعم اﻷجهزة التي تتكون بنيتها من 16 بت (كان من الواضح بالنسبة إلينا أن اﻷجهزة ذات البنية المكونة من 32 بت سوف تصبح شيئاً عادياً حينما ننتهي من تطوير نظام جنو)، كما قررنا عدم بذل مجهود في تخفيض استخدام الذاكرة إﻻ حينما يتجاوز 1 ميجابايت. بالنسبة للبرامج التي لم تكن تحتاج للتعامل مع ملفات بيانات كبيرة، كنا نشجع المبرمجين لكي يقوموا بكتابة برامجهم بحيث تقوم بقراءة الملف المدخل كاملاً إلى ذاكرة الحاسوب، من ثم يقوم البرامج بالعمل على محتويات الملف، من دون التفكير في عمليات اﻹدخال واﻹخراج (I/O).

هذه القرارات كان لها بالغ اﻷثر في جعل الكثير من برامج جنو تتميز عن مثيلاتها في نظام يونكس، فيما يتعلق بالسرعة ودقة اﻷداء.

أجهزة الحاسوب المتبرع بها

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

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

ولكن حتى لو وجدنا منطقاً من وراء الشر، فإنه ﻻ يزال شراً. اﻵن ليس لدينا أي نسخة من نظام يونكس القديم، ﻷننا قمنا باستبدالها جميعاً بأنظمة تشغيل حرة. حينما عجزنا عن استبدال نظام تشغيل جهازٍ ما بآخر حر، قمنا باستبدال الجهاز نفسه.

قائمة مهام مشروع جنو

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

اليوم (1) زالت أغلب أجزاء يونكس المفقودة من قائمة مهام جنو—جميع هذه اﻷجزاء تمت إضافتها لجنو، باستثناء القليل جداً من البرامج الثانوية. ﻻ زالت القائمة مليئة بالمشاريع التي يطلق عليها البعض “تطبيقات”. إن أي برنامج يجتذب أكثر من مجموعة صغيرة من المستخدمين يعتبر إضافة مفيدة لنظام التشغيل.

إن قائمة المهام تحتوي حتى على ألعاب—وقد كانت كذلك منذ البداية. بما أن يونكس كان يحتوي على ألعاب، فمن الطبيعي كان أن يحتوي جنو على ألعاب أيضاً. لم يكن عدم التوافق بين النظامين يشكل مشكلة، ولذلك لم نهتم بقائمة اﻷلعاب التي احتوى عليها يونكس. بدلاً عن ذلك، قمنا بإدراج مجموعة من اﻷلعاب المختلفة التي اعتقدنا أن المستخدمين سوف يحبونها.

(1) كان هذا في العام 1998م. في العام 2009م لم تعد لدينا قائمة مهام طويلة كما في السابق. إن المجتمع البرمجي في عالم اليوم يقوم بتطوير البرمجيات الحرة بسرعة أكبر مما يمكننا أن نقوم بمتابعتها وتسجيلها. ولذلك، عوضاً عن تلك القائمة، أصبح لدينا اليوم قائمة قصيرة بالمشاريع ذات اﻷولوية القصوى، باﻹضافة لقائمة أقصر منها تحتوي على المشاريع التي نرغب بتشجيع المبرمجين ليقوموا بتطويرها.

رخصة مكتبة جنو العامة (GNU Library GPL)

إن مكتبة لغة سي (C) التابعة لمشروع جنو تستخدم نوعاً خاصاً من رخص الحقوق المتروكة، نطلق عليها اسم رخصة مكتبة جنو العامة (1)، والتي تسمح بربط البرامج اﻻحتكارية بالمكتبة. لماذا قمنا بهذا اﻻستثناء؟

المسألة ليست مسألة مبدأ؛ إذ أنه لا وجود للمبدأ الذي يقول أن البرمجيات اﻻحتكارية تمتلك الحق في استخدام شفرتنا البرمجية. (لماذا نقوم بالمشاركة في مشروع نعلم سلفاً أنه سيرفض التعاون والمشاركة معنا؟) إن استخدام الرخصة الخاصة لمكتبة لغة سي هي حركة استراتيجية بحتة.

إن وظيفة مكتبة لغة سي تعتبر وظيفة عامة؛ ﻷن أي نظام احتكاري أو مُجمّع شفرة يحتاج لوجود مكتبة لغة سي. ولذلك فنحن إن كنا سنجعل مكتبة لغة سي متوفرة حصراً على البرمجيات الحرة، فإن هذه الخطوة لم تكن لتعطي البرمجيات الحرة أي أفضلية—على العكس تماماً، كانت هذه الخطوة ستثبط من يرغبون باستخدام مكتبتنا.

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

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

على سبيل المثال، فإن مكتبة ريدلاين (GNU Readline)، والتي تم تطويرها لتوفر خدمات تحرير سطور اﻷوامر في منفذ أوامر باش (BASH)، هذه المكتبة مرخصة باستخدام رخصة جنو العامة العادية (GNU GPL)، وليس باستخدام رخصة المكتبة (Library GPL). هذا اﻷمر على اﻷرجح سيؤثر سلباً على عدد البرامج التي تستخدم ريدلاين، إﻻ أن هذا ﻻ يعتبر خسارة بالنسبة إلينا. في نفس الوقت، هناك برامج مفيد واحد على اﻷقل تم تطويره كبرمجية حرة تستخدم مكتبة ريدلاين، وهذا نجاح حقيقي بالنسبة لمجتمع البرمجيات الحرة.

مبرمجو البرمجيات اﻻحتكارية لديهم أفضلية المال، أما مبرمجو البرمجيات الحرة فعليهم أن يصنعوا أفضلياتهم لبعضهم البعض. أتمنى في يوم من اﻷيام أن يكون لدينا مجموعة ضخمة من المكتبات البرمجية المرخصة برخصة جنو العامة، والتي ليس لديها مثيل في عالم البرمجيات اﻻحتكارية. مثل هذه المكتبات ستوفر وحدات البناء اﻷساسية التي ستساعد في تطوير البرمجيات الحرة، ومع الوقت ستتراكم اﻷفضلية بحيث يمكن تطوير برامج حرة أكثر وأكثر.

(1) هذه الرخصة تعرف الآن برخصة جنو العامة المصغرة، حتى ﻻ نعطي اﻻنطباع بأن جميع المكتبات البرمجية يجب أن تستخدم هذه الرخصة. للمزيد من التفاصيل، يمكنك اﻻصطلاع على مقالة لماذا يجب أﻻ تستخدم رخصة جنو العامة المصغرة لترخيص مكتبتك القادمة.

كيف يمكن تلبية المتطلبات (أو خدش الحكة)؟

إريك رايموند قال “إن أي عمل برمجي جيد يبدأ من خدش المبرمج لحكته الخاصة.” ربما كان هذا ما يحدث في بعض اﻷحيان، ولكن الحقيقة أن العديد من أجزاء جنو اﻷساسية تم تطويرها حتى نتمكن من الحصول على نظام تشغيل حر، أي أن البرامج جاءت نتيجة رؤية وخطة استراتيجية، ﻻ نتيجة اندفاع لحظي.

فمثلاً، حينما قمنا بتطوير مكتبة لغة سي الخاصة بجنو، كان هذا ﻷن أي نظام مشابه ليونكس يحتاج لوجود مكتبة سي. حينما طورنا منفذ أوامر باش (BASH)، كان هذا ﻷن أي نظام مشابه ليونكس يحتاج لوجود منفذ أوامر، وحينما قمنا بتطوير برنامج اﻷرشفة تار (GNU tar)، كان هذا ﻷن أي نظام مشابه ليونكس يجب أن يحتوي على برنامج أرشفة. نفس هذا اﻷمر ينطبق على البرامج التي قمت بتطويرها شخصياً—مُجمّع لغة سي (GNU C compiler)، وبرنامج إيماكس (GNU Emacs)، ومُصحّح الشفرة (GDB)، وبرنامج اﻹنشاء (GNU Make).

بعض برامج جنو تم تطويرها لتتجاوب مع بعض التهديدات التي كانت تواجه حرياتنا. فمثلاً قمنا بتطوير برنامج ضغط الملفات (gzip) ليحل محل برنامج الضغط الخاص بيونكس (Compress)، والذي اكتسبه المجتمع بسبب مشكلة براءة اختراع خوارزمية لمبيل-زيف-ويلش (LZW ). شاهدنا المجتمع البرمجي وهو يقوم بتطوير بيئة برمجة لستيف الرسومية (LessTif)، كما شاهدنا تطور بيئة سطح المكتب جنوم (GNOME)، ومشروع هارموني (Harmony)، والتي نتجت جميعها من الرغبة في حل المشاكل التي تسببها مكتبات برمجية احتكارية معينة (انظر أدناه). نحن اﻵن نقوم بتطوير برنامج جنو لحماية الخصوصية (GNU Privacy Guard) لكي يحل محل نظيره من برامج التشفير اﻻحتكارية؛ ﻹيماننا بأن المستخدمين ﻻ يجب أن يتم تخييرهم بين خصوصيتهم وحريتهم.

بالطبع، فإن المبرمجين المسئولين عن كتابة هذه البرامج أصبحوا مهتمين بالعمل، ومن ثم تمت إضافة الكثير من الخصائص من قبل أشخاص آخرين، لخدمة أغراضهم واهتماماتهم. إﻻ أن هذا ليس السبب الذي كُتِبَت هذه البرامج من أجله في المقام اﻷول.

تطورات غير متوقعة

في بداية إطلاق مشروع جنو، كنت أتخيل أننا سنقوم بتطوير نظام جنو في كليته، ومن ثم سنقوم بإطلاق النظام متكاملاً للمستخدمين، إﻻ أن اﻷمر لم يتم على هذا النسق.

بما أن جميع مكونات نظام جنو تم تطويرها على نظام يونكس، فإن جميع هذه المكونات كانت تعمل على أنظمة تشغيل يونكس قبل أن يكتمل نظام جنو بفترة طويلة. بعض هذه البرامج أصبح مشهوراً، وبدأ المستخدمون في توسيع البرامج وترقيتها لتعمل على أنظمة تشغيل أخرى—مثل أنظمة يونكس المختلفة والتي لم تكن تتوافق مع بعضها، باﻹضافة لبعض أنظمة التشغيل اﻷخرى.

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

نواة هيرد (The GNU Hurd)

بحلول عام 1990م، كان نظام جنو قد شارف على اﻻكتمال، باستثناء الجزء المفقود، والذي كان نواة النظام. كنا قد قررنا تطوير نواة النظام الخاصة بنا كمجموعة من العمليات الخدمية (server processes) التي تعمل على رأس نواة ماك (Mach). نواة ماك المصغرة (microkernel) هي نواة نظام تم تطويرها في جامعة كارنيجي ميلون (Carnegie Mellon University) بدايةً، من ثم في جامعة يوتاه (University of Utah). نواة هيرد هي مجموعة من المخدّمات (ومن ثم جاء اﻻسم، أي أن هيرد معناها باﻻنجليزية القطيع) والتي ستعمل على رأس نواة ماك، حيث ستقوم بعمل كافة الوظائف التي تقوم بها نواة نظام يونكس. تأخر تطوير نواة هيرد ﻷننا كنا ننتظر إطلاق نواة ماك كبرمجية حرة، وذلك الشئ الذي كنا قد وُعدنا به.

من أسباب اختيارنا لهذا التصميم هو محاولة تلافي الجزء اﻷصعب من المهمة: وهو محاولة تصحيح أخطاء نواة النظام، بدون أن يكون لدينا مُصحِّح قادر على التصحيح على مستوى شفرة المصدر. هذه المهمة كانت قد اكتملت بالفعل في نواة ماك، وعليه فقد كنا نتوقع أننا سنقوم بتصحيح أخطاء نواة هيرد باعتبارها برامج مستخدم عادية، وذلك باستخدام مُصحّح شفرة جنو (GDB). من المؤسف أن اﻷمر استغرق وقتاً طويلاً للغاية، كما أن المخدّمات متعددة الوظائف (multithreaded servers)، والتي تتواصل مع بعضها البعض باستخدام الرسائل، اتضح أنها صعبة التصحيح. النتيجة أن اﻷمر استغرق أعواماً طويلة لتصل نواة هيرد لمرحلة النضوج.

أليكس

لم يكن من المفترض بدايةً أن تُسمى نواة جنو باسم هيرد. اﻻسم اﻷصلي كان أليكس—وهو اسم المرأة التي كانت حبيبتي في ذلك الوقت. كانت أليكس مديرة نظام يونكس (system administrator)، وكانت قد أشارت من قبل ﻷن اسمها سيتوافق مع نمط التسمية المتبع على أنظمة يونكس. وعلى سبيل المزاح، أخبرت أليكس صاحباتها بأنه “ينبغي أن يقوم شخص ما بتسمية نواة نظام باسمي.” لم أعلق أنا بشئ، ولكنني قررت أن أفاجئها بنواة نظام مسماة باسم أليكس.

لم يستمر اﻷمر على هذه الطريقة، ﻷن مايكل بوشنيل (والذي يعرف اﻵن باسم توماس)، وهو المطور الرئيسي للنواة، فضّل اسم هيرد، كما أنه أعاد تعريف أليكس لترمز إلى جزء معين من النواة—وهو الجزء الذي يستقبل استدعاءات النظام (system calls) ومن ثم يقوم بمعالجتها عبر إرسال الرسائل لمخدّمات هيرد.

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

ولكن قبل أن تحدث جميع هذه التغييرات، كان أحد أصدقائها قد رأى اسم أليكس حينما كان يطالع شفرة المصدر الخاصة بنواة هيرد، ومن ثم ذكر اﻷمر لها. وهكذا تسنى لها أن ترى نواة نظام مسماة باسمها.

لينكس وجنو/لينكس

ﻻ زالت نواة هيرد غير صالحة للاستخدام العملي، وﻻ نعلم إن كانت ستصل هذه المرحلة على اﻹطلاق. إن التصميم القائم على القدرات به مشاكل ناتجة عن مرونة التصميم نفسه، وﻻ يبدو أن هنالك حلولاً لهذه المشاكل في الوقت الحالي.

لحسن الحظ، هناك نواة نظام أخرى متوفرة. في العام 1991م قام لينوس تورفالدس (Linus Torvalds) بتطوير نواة نظام متوافقة مع يونكس، وأطلق عليها اسم لينكس (Linux). في البداية كانت النواة احتكارية، ولكن في العام 1992م قام لينوس بترخيصها كبرمجية حرة. عملية دمج نواة لينكس مع نظام جنو غير المكتمل نتج عنها نظام تشغيل حر متكامل. (عملية الدمج نفسها كانت عملية كبيرة بطبيعة الحال). إن الفضل يعود لنواة لينكس لتمكننا من استخدام نسخة متكاملة من نظام جنو اليوم.

هذه النسخة نسميها جنو/لينكس (GNU/Linux)، وذلك لكي نوضح أن النسخة عبارة عن مزيج يتكون من نظام جنو، باستخدام لينكس كنواة النظام. أرجو من القارئ أﻻ يقع في الخطأ الشائع ويقوم بتسمية النظام “لينكس”؛ ﻷن هذا يعني نسب عملنا لشخص آخر. أرجو من الجميع أن ينسبوا إلينا فضل أعمالنا.

التحديات القادمة

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

اﻷجزاء اﻷربعة القادمة ستناقش هذه التحديات بالتفصيل.

مواصفات العتاد السرية

مصنعو العتاد يميلون بكثرة ﻷن يحافظوا على سرية مواصفات عتادهم، هذا اﻷمر يجعل من الصعب كتابة محركات حرة تتيح لنواة لينكس ولنظام عرض إكس (XFree86) أن تدعم العتاد الجديد. لدينا أنظمة حرة بكاملها اليوم، ولكننا سنفقدها غداً إن لم نتمكن من دعم حواسيب الغد.

هناك طريقتان للتعامل مع هذه المشكلة. يمكن للمبرمجين أن يقوموا بعملية الهندسة العكسية حتى يتمكنوا من معرفة كيف يمكننا دعم العتاد المعني. بقيتنا يمكن أن يختاروا استخدام العتاد المدعوم بالبرمجيات الحرة. طالما أن أعدادنا مستمرة في التزايد فإن سرية المواصفات سينتهي بها اﻷمر أن تصبح سياسة دحر ذاتي.

ولكن الهندسة العكسية مهمة صعبة. هل سيكون لدينا مبرمجون لهم قدرة وعزم ليتمكنوا من إكمال المهمة؟ بالتأكيد—فقط إذا تمكنا من بناء شعور قوي بأن حرية البرمجيات هي مسألة مبدأ، وأن المحركات اﻻحتكارية هي أمر غير مقبول على اﻹطلاق. إذاً هل سيقوم أغلبنا ببذل المال، أو القليل من الزمن، حتى نتمكن جميعاً من استخدام المحركات الحرة؟ بالتأكيد، إذا كان اﻹصرار على نيل الحرية شعوراً عاماً.

(ملحوظة في عام 2008م: هذه المشكلة تمتد حتى نظام اﻹدخال واﻹخراج اﻷساسي (BIOS). هناك نسخة حرة من النظام اﻷساسي على موقع ليبري بوت (LibreBoot) (إصدارة من كوربوت coreboot). المشكلة تكمن في كيفية الحصول على مواصفات اﻷجهزة حتى يتمكن أعضاء فريق ليبري بوت من دعمها بدون استخدام البرامج الثنائية “(blobs)” غير الحرة).

المكتبات البرمجية غير الحرة

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

أول مثال لهذه المشكلة كان في الثمانينيات، مع مجموعة أدوات موتيف (Motif). رغم أنه لم يكن هناك أنظمة تشغيل حرة في ذلك الوقت، إﻻ أنه كان من الواضح حجم المشكلة التي ستسببها موتيف للأنظمة الحرة فيما بعد. كان رد مشروع جنو على مستويين: بالطلب من مشاريع البرمجيات الحرة المنفردة أن تدعم مجموعة أدوات إكس الحرة (X Toolkit) باﻹضافة لدعمها لموتيف؛ وبالطلب من بعضهم أن يقوموا بتطوير بديل حر لموتيف. هذه المهمة استغرقت العديد من السنوات، إﻻ أن ليسموتيف (LessTif)، المطور من قبل مجموعة المبرمجين التواقين (Hungry Programmers) صار من القوة بحيث أصبح يدعم أغلبية تطبيقات موتيف بحلول عام 1997م.

بين عامي 1996م و1998م ظهرت مجموعة أدوات غير حرة أخرى، تُعنَى ببرمجة الواجهات الرسومية (GUI). هذه المجموعة سميت كيوت (Qt) وأصبحت تستخدم في مجموعة مقدرة من البرمجيات الحرة، بما فيها بيئة سطح المكتب "كيه" (KDE).

لم يكن باﻹمكان استخدام بيئة كيه (KDE) على أنظمة جنو/لينكس الحرة؛ وذلك ﻷننا لم نكن نستطيع استخدام مكتبة كيوت. إﻻ أن بعض إصدارات جنو/لينكس، والتي لم تكن تمانع استخدام البرمجيات غير الحرة، قامت بإضافة بيئة كيه إلى تلك اﻷنظمة—مما نتج عنه أنظمة ذات قدرات أعلى، ولكنها ذات حرية أقل. مجموعة بيئة كيه كانت تشجع المبرمجين بقوة لكي يستخدموا مكتبة كيوت، مما نتج عنه أن الملايين من “مستخدمي لينكس” الحديثين لم يكن لديهم أدنى فكرة بحجم وطبيعة المشكلة. كان الوضع يبدو سيئاً للغاية.

استجاب مجتمع البرمجيات الحرة لهذه المشكلة بطريقتين: بيئة سطح مكتب جنوم (GNOME)، ومشروع هارموني (Harmony).

مشروع جنوم (وهو اختصار لعبارة بيئة نموذج الكائن الشبكي، أو GNU Network Object Model Environment) هو مشروع بيئة سطح المكتب الخاص بجنو. في عام 1997م بدأ ميجيل دي إيكازا هذا المشروع بدعم من شركة ريدهات (Red Hat)، وكان الغرض توفير إمكانيات مشابهة لسطح المكتب، ولكن باستخدام برمجيات حرة حصرياً. هناك بعض الميزات التقنية أيضاً، مثل أن جنوم يدعم مجموعة مختلفة من لغات البرمجة، وأنه ليس محصوراً على لغة سي++. ولكن الغرض اﻷساسي من المشروع كان الحرية: أﻻ يضطر أحد ﻻستخدام أي برمجيات غير حرة.

مشروع هارموني هو عبارة عن مكتبة توافقية بديلة، تم تصميمها لتجعل باﻹمكان تشغيل برامج بيئة كيه بدون الحوجة ﻻستخدام مكتبة كيوت.

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

[ملحوظة لاحقة: في سبتمبر 2000م، تحول ترخيص كيوت إلى رخصة جنو العامة، مما نتج عنه حل هذه المشكلة جذرياً].

السؤال اﻵن: كيف سنستجيب للمكتبة البرمجية غير الحرة التي ستأتي تالياً؟ هل سيتفهم المجتمع بكليته أهمية البقاء بعيداً عن هذا الشرك؟ أم أن بعضنا سيقرر التنازل عن حريتهم من أجل الراحة وسهولة اﻻستخدام، مما سينتج عنه مشكلة كبيرة بكل تأكيد؟ إن مستقبلنا يعتمد تماماً على فلسفتنا.

براءات اختراع البرمجيات

إن أكبر تهديد نواجهه يأتي من قبل براءات اختراع البرمجيات، والتي من شأنها أن تجعل الخوارزميات والميزات بعيدة عن متناول البرمجيات الحرة لمدة قد تصل إلى عشرين عاماً. على سبيل المثال، فإن خوارزمية الضغط المعروفة باسم لمبيل-زيف-ويلش (LZW) تم تسجيلها كبراءة اختراع في العام 1983م، وﻻ زلنا اليوم عاجزين عن إصدار برامج حرة يمكنها إنتاج ملفات جيف (GIF) مضغوطة بهذه الخوارزمية. [انتهت صلاحية براءة اﻻختراع هذا في العام 2009م]. مثال آخر حدث في العام 1998م، حيث اضطررنا ﻹيقاف توزيع برنامج ﻹنشاء ملفات إم بي 3 الصوتية (MP3)، وذلك بسبب التهديد برفع قضية سرقة براءة اﻻختراع. [براءة اﻻختراع هذه انتهت صلاحيتها في العام 2017م. يمكنك أن ترى طول الفترة التي اضطررنا ﻻنتظارها حتى تنتهي صلاحية الوثائق].

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

هؤﻻء الذين يقدرون البرمجيات الحرة من أجل الحرية بيننا سوف يلتزمون باستخدام البرمجيات الحرة في جميع اﻷحوال، وسنتمكن من أداء عملنا بدون الاضطرار ﻻستخدام الميزات والخصائص المسجلة تحت براءات اﻻختراع. ولكن الذين يقدرون البرمجيات الحرة ﻷنهم يتوقعون منها أن تكون أفضل من ناحية تقنية، هؤﻻء من سيصف البرمجيات الحرة بالفشل حينما تعجز عن أداء وظيفةٍ ما بسبب براءات اﻻختراع. وعليه، فرغم إيجابية الحديث عن الفوائد العملية لنموذج “البازار” في التطوير، وقوة ودقة أداء بعض البرمجيات الحرة، إﻻ أننا يجب أﻻ نتوقف هنا. ﻻ بد من أن نمضي قدماً ونتحدث عن الحرية والمبادئ.

الوثائق الحرة

إن أكبر نقص في نظام تشغيل جنو الحر ليس عجز البرامج—إنما هو قلة الكتيبات الحرة الجيدة، والتي يمكننا أن نجعلها جزءاً من أنظمة تشغيلنا. عملية التوثيق هي جزء ﻻ يتجزأ من أي حزمة برمجية، وحينما تعجز حزمة برمجية مهمة عن توفير كتيب جيد وحر، فإن هذه تعتبر ثغرة كبيرة. للأسف نحن لدينا العديد من هذه الثغرات حالياً.

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

السماح بإجراء التعديلات مهم أيضاً. كقاعدة عامة، أنا ﻻ أؤمن أنه من الضروري إعطاء الجميع إذناً بتعديل كل أنواع الكتب والمقالات. على سبيل المثال، أنا ﻻ أعتقد أنني أنا أو أنت مضطران ﻹعطاء اﻹذن بتعديل مقالات كهذه المقالة، ﻷنها تعكس تصرفاتنا ورؤانا الشخصية.

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

بصورة عامة، ليس هنالك مشكلة في وضع بعض القيود على الطريقة التي يتم بها إجراء التعديلات على الوثائق الحرة. على سبيل المثال، اشتراط اﻹبقاء على حقوق الملكية الخاصة بالمؤلف اﻷصلي، وشروط التوزيع، وقائمة المؤلفين، كل هذه اﻷشياء مقبولة وﻻ غبار عليها. بالمثل، ليس هناك مشكلة في إلزام النسخ المعدلة بأن تعلم المستخدم بأنها نسخ معدلة من اﻷصل، كما يمكن اشتراط عدم تعديل أو حذف أجزاء كاملة من اﻷصل، طالما أن هذه اﻷجزاء ﻻ تتضمن مواضيعاً تقنية. هذه القيود ﻻ غبار عليها؛ ﻷنها لن تشكل مشكلة بالنسبة للمبرمجين الملتزمين الذين يرغبون بتعديل الكتيب المعني ليلائم البرنامج المعدل. بعبارة أخرى، مثل هذه القيود ﻻ تمنع مجتمع البرمجيات الحرة من اﻻستفادة الكاملة من الكتيب.

على الرغم من ذلك، فلا بد من التأكد أنه باﻹمكان تعديل المحتوى التقني للكتيب، ومن ثم توزيع الكتيب الجديد عبر الوسائط المعتادة، باستخدام القنوات المألوفة. من دون هذه اﻹمكانية، تصبح هذه القيود عائقاً أمام المجتمع، ويصبح الكتيب غير حراً، وعندها سنحتاج لكتيب آخر.

هل سيكون مبرمجو البرمجيات الحرة بالوعي والتصميم الكافي ﻹنتاج طيف متكامل من الكتيبات الحرة؟ للمرة الثانية، يبدو أن مستقبلنا يعتمد على فلسفتنا.

يجب أن نتحدث عن الحرية

اﻷرقام التقديرية تخبرنا أن هناك عشرة ملايين مستخدم ﻷجهزة جنو/لينكس اليوم، بما يشمل ديبيان (Debian) جنو/ليكنس و ريدهات (Red Hat) “لينكس”. البرمجيات الحرة قد وصلت مرحلة من التميز العملي بحيث صار المستخدمون يهرعون إليها ﻷسباب عملية بحتة.

النتائج اﻹيجابية لهذا اﻷمر واضحة، مثل اﻻهتمام المتزايد بتطوير البرمجيات الحرة، وازدياد أعداد زبائن شركات البرمجيات الحرة، وزيادة القدرة على إقناع الشركات بتطوير برمجياتهم الحرة بشكل تجاري، عوضاً عن تطوير برمجياتهم بصورة احتكارية.

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

ولكننا للأسف نفشل في فعل هذا اﻷمر: المجهودات المبذولة لجذب المستخدمين الجدد وضمهم لمجتمعنا تفوق وتتجاوز المجهودات المبذولة لتعليمهم المبادئ اﻷولية لمجتمعنا. يتوجب علينا أن نقوم بالمجهودين معاً، كما يتوجب علينا أن نحافظ على التوازن بينهما.

“المصادر المفتوحة”

محاولة تعليم المستخدمين الجدد مبادئ الحرية أصبحت أكثر صعوبة في العام 1998م، حينما قرر جزء من مجتمع البرمجيات الحرة أن يتوقفوا عن استخدام تعبير “البرمجيات الحرة”، واستخدموا تعبير “البرمجيات مفتوحة المصدر” عوضاً عنه.

بعض الذين فضلوا استخدام التعبير الجديد حاولوا أن يتفادوا أي ارتباك قد ينجم من استخدام لفظة “حرة” عبر استبدالها بلفظة “مجانية”—وهو هدف مشروع. ولكن البعض اﻵخر حاولوا أن يضعوا روح المبادئ التي ألهمت إنشاء حركة البرمجيات الحرة ومشروع جنو إلى الجانب، وفضلوا أن يتقربوا إلى المدراء التنفيذيين والزبائن والذين يمتلك العديد منهم أيديولوجيات فكرية تجعلهم يقدمون المكسب على الحرية والمجتمع والمبادئ. نتيجة لذلك، فإن روح “المصادر المفتوحة” تكمن في تركيزها على إنتاج برامج ذات جودة عالية وفعالة، ولكنها لا تلقي بالاً للحرية والمجتمع والمبادئ.

إن مجلات “لينكس” تشكل مثالاً واضحاً على هذا—جميعها تمتلئ بإعلانات البرامج اﻻحتكارية التي تعمل على أنظمة جنو/لينكس. حينما تظهر النسخة القادمة من موتيف أو كيوت أو أي برنامج آخر مشابه، هل ستقوم هذه المجلات بتحذير المبرمجين من استخدام هذه البرامج، أم أنها ستعرض إعلانات لها؟

إن الدعم الناتج عن التجارة من شأنه أن يساعد مجتمع البرمجيات الحرة بعدة طرق، وهذا اﻷمر يمكنه أن يكون مفيداً على عدة مستويات. ولكن اكتساب الدعم عبر تقليل الحديث عن الحرية والمبادئ يمكنه أن يجعل اﻷمر كارثياً؛ ﻷنه يزيد الفجوة بين الممارسة والتوعية بالحقوق التي تحدثنا عنها سابقاً.

إن “البرمجيات الحرة” و“المصادر الحرة” تتحدثان، بصورة عامة، عن نفس الفئة من البرمجيات، إﻻ أن أقوالهما تختلف عن البرمجيات والمبادئ. إن مشروع جنو يستمر في استخدام تعبير “البرمجيات الحرة” لتأكيد أن الحرية، وليس التكنولوجيا فحسب، أمر مهم وأساسي.

حاول!

حكمة يودا (“ليس هنالك ما يسمى ‘بالمحاولة’”) تبدو جيدة، ولكنها ﻻ تصلح في حالتي. لقد قمت بتنفيذ معظم أعمالي وأنا قلق من قدرتي على أداء المهمة، كما أنني لم أكن متأكداً من أن مجهوداتي ستنجح في الوصول ﻷهدافها. ولكنني استمررت في المحاولة، ﻷنه لم يكن هناك شخص آخر يحول بين العدو والمدينة. رغم أنني لم أكن متأكداً من النجاح، إﻻ أنني نجحت في الكثير من مساعيّ.

في أحيان أخرى، فشلت مجهوداتي، وسقطت بعض المدن التي كنت أقوم بحمايتها. ولكنني كنت أجد مدينة أخرى مهددة من العدو، وكنت أجهز نفسي لمعركة أخرى للدفاع عنها. مع مرور الوقت، تعلمت كيف أبحث عن التهديدات والمخاطر، وكيف أضع نفسي ما بين العدو والمدينة، في نفس الوقت الذي أنادي فيه القراصنة المبرمجين اﻵخرين ليأتوا ويشاركوني المهمة.

اليوم، لم أعد المدافع الوحيد عن القضية. من المريح والمفرح أن أرى حشداً من القراصنة المبرمجين يقومون بحفر الخنادق لتعزيز دفاعاتهم، مما يجعلني أدرك أن هذه المدينة سوف تظل صامدة—اﻵن على اﻷقل. ولكن المخاطر تتزايد عاماً بعد عام، واﻵن تقوم شركة مايكروسوفت (Microsoft) باستهداف مجتمعنا بصورة مباشرة. ﻻ يمكننا أن نأخذ مستقبل الحرية على أنه شئ مضمون. ﻻ تتعامل معه على أنه شئ مضمون! إذا كنت ترغب بالمحافظة على حريتك، ينبغي عليك أن تجهز نفسك للدفاع عنها.