الدرس 3 من 7 · التاريخ
مشروع GNU والبرمجيات الحرة
الهدف
أن تفهم من أين تأتي معظم الأدوات التي ستستعملها على Linux، وما معنى «البرمجيات الحرة» (logiciel libre)، وأن تعرف كيف تقرأ الرخص الكبرى (GPL و BSD و MIT) التي ستصادفها في عملك.
الخلاصة
- في سنة 1983 أعلن ريتشارد ستولمان (Richard Stallman) عن مشروع GNU: نظام كامل من نوع UNIX، حر بالكامل.
- في سنة 1985 أسّس مؤسسة البرمجيات الحرة (Free Software Foundation، اختصارًا FSF). ثم جاءت رخصة GPL سنة 1989.
- البرنامج الحر يضمن أربع حريات: الاستعمال، والدراسة، وإعادة التوزيع، والتعديل مع مشاركة التعديلات.
- رخصة GPL من نوع copyleft (الحقوق المتروكة): من يعيد توزيع برنامج GPL معدَّل يجب أن يوزّعه بدوره تحت GPL. أما رخصتا BSD و MIT فهما متساهلتان (permissives): يمكنك أن تفعل بالبرنامج تقريبًا ما تشاء.
- في سنة 1998 ظهر مصطلح المصدر المفتوح (open source): الواقع التقني نفسه، بخطاب موجّه أكثر نحو الشركات.
1. المشكلة: الشيفرة تُغلق (أواخر السبعينيات)
في السنوات الأولى للمعلوميات كان المبرمجون يتبادلون شيفراتهم بشكل طبيعي، كما يتبادل الباحثون نتائجهم. بل إن UNIX نفسه كان يُتداول مع شيفرته المصدرية في الجامعات (الدرس 0.1).
ومع مطلع الثمانينيات تغيّر كل شيء: أدرك الناشرون أن البرنامج يمكن أن يُباع منفصلًا عن الآلة. فأصبحت الشيفرة المصدرية سرًّا تجاريًّا. وصار المستخدمون يتسلّمون برامج مترجَمة مسبقًا، لا يحق لهم دراستها، ولا تصحيحها، ولا مشاركتها.
أما ريتشارد ستولمان، المبرمج في مختبر الذكاء الاصطناعي في MIT، فقد عاش هذا التحوّل باعتباره ظلمًا. وتوضّح ذلك حكاية مشهورة: كانت طابعة مختبره تتعطّل كثيرًا. وعلى الطابعة القديمة كان قد عدّل البرنامج لينبّه المستخدمين عند انحشار الورق. أما الطابعة الجديدة، فقد رفض صانعها أن يعطيه الشيفرة المصدرية. فاستحال إصلاح مشكلة بسيطة في الأصل.
2. سنة 1983: الإعلان عن مشروع GNU
في 27 سبتمبر 1983 أعلن ستولمان على Usenet (جدّ المنتديات) عن مشروع جنوني: كتابة نظام تشغيل كامل، متوافق مع UNIX، وحر بالكامل. وسمّاه GNU، وهو اختصار تكراري (récursif) يعني «GNU's Not Unix» («GNU ليس UNIX»).
لماذا التوافق مع UNIX؟ لأن UNIX مصمَّم تصميمًا جيدًا (الدرس 0.1)، ولأنه مقسَّم إلى برامج صغيرة يمكن إعادة كتابتها واحدًا واحدًا، ولأن المستخدمين سيتمكّنون من الانتقال من نظام إلى آخر دون إعادة تعلّم كل شيء.
بدأ العمل في يناير 1984، حين ترك ستولمان منصبه في MIT حتى لا تتمكّن الجامعة من المطالبة بملكية شيفرته. وفي سنة 1985 نشر بيان GNU (GNU Manifesto) الذي يشرح مقاربته، وأسّس مؤسسة البرمجيات الحرة (FSF) لتمويل المشروع.
3. لبنات GNU التي ستستعملها كل يوم
قطعةً بعد قطعة، أعاد مشروع GNU كتابة أدوات UNIX. وفي أواخر الثمانينيات لم يكن ينقصه شيء تقريبًا:
| أداة GNU | التاريخ | الدور | الأمر |
|---|---|---|---|
| GNU Emacs | 1984-1985 | محرّر نصوص | emacs |
| GCC (GNU C Compiler، واليوم GNU Compiler Collection) | 1987 | مترجم (compilateur): استُعمل لترجمة Linux | gcc |
| Bash (Bourne Again Shell، براين فوكس Brian Fox) | 1989 | الصدفة، متوافقة مع صدفة sh الخاصة بـ Bourne |
bash |
| coreutils (دمج fileutils و textutils و shellutils) | التسعينيات وسنوات الألفين | الأوامر الأساسية | ls، cp، mv، cat، chmod |
| grep و sed و gawk و tar و gzip و find | الثمانينيات والتسعينيات | البحث، والتحويل، والأرشفة | grep، sed، awk، tar |
| glibc | ابتداءً من 1987 | مكتبة C، التي تستعملها جميع البرامج تقريبًا | (غير مرئية، لكنها في كل مكان) |
تحقّق بنفسك:
ls --version | head -n 1 # ls (GNU coreutils) …
bash --version | head -n 1 # GNU bash, version …
grep --version | head -n 1 # grep (GNU grep) …
لكن قطعة أساسية كانت ما تزال ناقصة: النواة (noyau)، أي البرنامج الذي يخاطب العتاد مباشرة. فالنواة التي خطّط لها مشروع GNU، واسمها Hurd (بدأ العمل عليها سنة 1990)، طموحة جدًّا وتتقدّم ببطء. وما زالت إلى اليوم غير مستعملة في بيئات الإنتاج. وهذه القطعة الناقصة هي التي سيوفّرها Linux سنة 1991 (الدرس 0.4).
4. الحريات الأربع
بالنسبة إلى ستولمان، كلمة «free» تتحدث عن الحرية، لا عن الثمن. وعبارته الشهيرة: free كما في «حرية التعبير»، لا كما في «جعة مجانية». وفي العربية لدينا لحسن الحظ كلمتان مختلفتان: حر و مجاني.
يكون البرنامج حرًّا إذا تمتّع مستخدمه بـ الحريات الأربع (مرقّمة ابتداءً من الصفر، كما يليق بأهل المعلوميات):
| الحرية | ما يمكنك فعله | مثال ملموس |
|---|---|---|
| 0 | استعمال البرنامج لأي غرض كان | تثبيت Linux على 200 جهاز صندوق (caisse) في سلسلة متاجر، دون حساب للتراخيص |
| 1 | دراسة طريقة عمله وتكييفه (وهذا يستلزم الشيفرة المصدرية) | قراءة شيفرة خادم ويب لفهم خطأ ما |
| 2 | إعادة توزيع نسخ منه | إعطاء زميل مفتاح USB للتثبيت |
| 3 | تحسين البرنامج ومشاركة تحسيناتك | تصحيح علّة (bug) وإرسال التصحيح إلى المشروع |
يمكن بيع البرنامج الحر: فشركة Red Hat تبيع اشتراكات في RHEL، الذي يتكوّن من برمجيات حرة. والبرنامج المجاني ليس بالضرورة حرًّا: فكثير من التطبيقات المجانية تُخفي شيفرتها.
5. رخصة GPL ومبدأ copyleft (1989)
لضمان هذه الحريات، استعمل ستولمان… حق المؤلف نفسه. فرخصة GNU General Public License (GPL) تقول في جوهرها:
يمكنك استعمال هذا البرنامج ودراسته وتعديله وإعادة توزيعه. لكن إذا أعدت توزيع نسخة معدَّلة، فعليك نشرها تحت الرخصة نفسها، مع شيفرتها المصدرية.
هذا هو مبدأ copyleft (تلاعب لفظي بكلمة copyright): الحرية تنتقل من يد إلى يد، ولا يستطيع أحد مصادرتها في الطريق.
| الإصدار | السنة | ما يجب تذكّره |
|---|---|---|
| GPL v1 | 1989 | الإصدار الأول |
| GPL v2 | 1991 | رخصة نواة Linux (بصيغة «الإصدار 2 فقط») |
| GPL v3 | 2007 | تحمي من براءات الاختراع ومن الأجهزة التي تمنع تثبيت نسخة معدَّلة |
| LGPL | 1991 | نسخة «مخفّفة» للمكتبات: يمكن لبرنامج غير حر أن يستعملها |
| AGPL | 2007 (v3) | توسّع الالتزام ليشمل البرامج المستعملة عن بُعد، عبر الشبكة (تطبيقات الويب) |
نقطة مهمة لمدير الأنظمة: رخصة GPL لا تفرض عليك شيئًا ما دمت لا تعيد التوزيع. يمكنك تعديل برنامج GPL لخوادم شركتك دون نشر أي شيء. (ورخصة AGPL هي الاستثناء: إذا قدّمت الخدمة للعموم عبر الشبكة، فعليك أن تعطي الشيفرة لمستخدميها.)
6. سنة 1998: حركة «المصدر المفتوح»
في يناير 1998 أعلنت الشركة الناشرة لمتصفح Netscape أنها ستنشر شيفرته المصدرية (التي ستصبح Mozilla، ثم Firefox). وكانت تلك صدمة: شركة كبرى تفتح منتجها الرئيسي.
وبعد بضعة أسابيع، في فبراير 1998، اقترحت مجموعة من المطوّرين، من بينهم إريك ريموند (Eric S. Raymond) و بروس بيرنز (Bruce Perens)، مصطلحًا جديدًا: open source («المصدر المفتوح»)، الذي صاغته كريستين بيترسون (Christine Peterson). وأسّسوا مبادرة المصدر المفتوح (Open Source Initiative، اختصارًا OSI). وكانت فكرتهم: أن يحدّثوا الشركات عن الجودة والموثوقية والتكاليف، بدل الأخلاق والحرية.
| البرمجيات الحرة (FSF) | المصدر المفتوح (OSI) | |
|---|---|---|
| الحجة الرئيسية | مسألة أخلاقية: يجب أن يكون المستخدم حرًّا | مسألة فعالية: التطوير المفتوح ينتج برمجيات أفضل |
| الشخصية الرمز | ريتشارد ستولمان | إريك ريموند، بروس بيرنز |
| النص المرجعي | الحريات الأربع | Open Source Definition، المشتقّ من مبادئ Debian (DFSG) |
| في الممارسة | الرخص المعترف بها متطابقة تقريبًا |
ويقارن نص ريموند الكاتدرائية والبازار (1997) بين طريقتين في التطوير: داخل مجموعة صغيرة مغلقة (الكاتدرائية) أو في العلن، مع آلاف المساهمين (البازار، وهو نموذج Linux). وإليه تُنسب عبارة كثيرًا ما تُستشهد: مع ما يكفي من العيون، يصبح العثور على كل العلل سهلًا.
وكثيرًا ما نصادف الاختصار FLOSS أو FOSS (Free/Libre and Open Source Software)، الذي يجمع المعسكرين.
7. الرخص التي ستصادفها
على الخادم، لكل برنامج رخصته. وهذه هي العائلات الرئيسية:
| الرخصة | النوع | ما تشترطه | أمثلة |
|---|---|---|---|
| GPL (v2، v3) | copyleft قوي | إعادة توزيع التعديلات تحت GPL، مع الشيفرة المصدرية | نواة Linux (v2)، و bash، و GCC، و coreutils |
| LGPL | copyleft ضعيف | copyleft على المكتبة، لا على البرنامج الذي يستعملها | glibc |
| AGPL | copyleft شبكي | توفير الشيفرة أيضًا لمستخدمي الخدمة عبر الإنترنت | بعض برمجيات الويب (Nextcloud مثلًا) |
| BSD (بندان أو 3 بنود) | متساهلة | الاحتفاظ بإشعار حق المؤلف | FreeBSD، و OpenSSH (في معظمه) |
| MIT | متساهلة | الاحتفاظ بإشعار حق المؤلف، لا أكثر | X Window (X11)، و Node.js، و jQuery |
| Apache 2.0 | متساهلة | إشعار حق المؤلف + بند خاص ببراءات الاختراع | خادم Apache httpd، و Kubernetes، و Android (في جزء كبير منه) |
المثال الذي يوضّح الفرق: استطاعت Apple أن تأخذ شيفرة BSD في macOS دون أن تنشر تعديلاتها، لأن رخصة BSD تسمح بذلك. أما صانع أجهزة الإنترنت المنزلية (box) الذي يعدّل نواة Linux، فعليه أن يوفّر لزبائنه الشيفرة المصدرية لتعديلاته، لأن النواة تحت رخصة GPL.
على Debian، توجد نصوص الرخص الشائعة في مجلد واحد، وكل حزمة (paquet) تصف رخصتها:
ls /usr/share/common-licenses/ # GPL-2, GPL-3, LGPL, BSD, Apache-2.0…
head -n 3 /usr/share/common-licenses/GPL-3
# على نظام Debian كامل، لكل حزمة بطاقة رخصتها:
# /usr/share/doc/<paquet>/copyright
8. GNU/Linux أم Linux؟
يطلب ستولمان أن نقول GNU/Linux، لأن النظام الكامل مدين كثيرًا لأدوات GNU، لا للنواة وحدها. ويتّبع Debian هذا الاستعمال («Debian GNU/Linux»). أما معظم الناس، ومعظم الشركات، فيقولون ببساطة Linux.
في هذه الدورة نقول «Linux» تيسيرًا، لكن تذكّر الحقيقة التقنية: Linux هو النواة؛ وجزء كبير من الأدوات المحيطة بها يأتي من GNU. بل إن بعض أنظمة «Linux» لا تكاد تستعمل GNU: مثل Android، أو توزيعة Alpine (مع BusyBox ومكتبة musl).
9. الخط الزمني للدرس
1983 27 سبتمبر: ستولمان يعلن عن مشروع GNU
1984 بداية العمل؛ ستولمان يغادر MIT
1985 بيان GNU؛ تأسيس Free Software Foundation
1987 GCC
1989 GPL v1؛ Bash
1990 بداية Hurd، النواة التي خطّط لها GNU
1991 GPL v2؛ LGPL
1992 نواة Linux تنتقل إلى رخصة GPL: النظام الحر يكتمل
1997 « الكاتدرائية والبازار » (إريك ريموند)
1998 Netscape تفتح شيفرتها؛ ولادة مصطلح « open source » ومبادرة OSI
2007 GPL v3 و AGPL v3
أفكار شائعة خاطئة
- «حر يعني مجاني.» لا. كلمة حر تتحدث عن الحقوق؛ ويمكن بيع البرنامج الحر (اشتراكات RHEL، دعم SUSE…).
- «المصدر المفتوح يعني أن أي شخص يستطيع تعديل البرنامج الرسمي.» لا. يمكنك تعديل نسختك أنت. ولكي يدخل تصحيحك إلى المشروع الرسمي، يجب أن يقبله المشرفون عليه (mainteneurs).
- «رخصة GPL تُلزم بنشر شيفرة كل ما نطوّره على Linux.» لا. البرنامج الذي يعمل فوق Linux غير معني بذلك. المعني فقط هو التعديلات المعاد توزيعها على برنامج GPL.
- «البرمجيات الحرة للهواة.» أكبر المواقع في العالم، والبنوك، ومشغّلو الاتصالات، كلها تعمل ببرمجيات حرة.
التطبيق العملي (Lab)
على آلتك Debian 12، ستعثر على بصمة GNU وعلى الرخص المثبّتة:
ls --version | head -n 1
bash --version | head -n 1
ls /usr/share/common-licenses/
grep -m1 Version /usr/share/common-licenses/GPL-3
المهام: تسجيل إشارة GNU في ls و bash، وعرض قائمة الرخص التي يوفّرها Debian، وإيجاد تاريخ رخصة GPL 3. ثم انقر على تحقّق.
اختبار قصير
- ما معنى اسم «GNU»، وفي أي سنة أُعلن عن المشروع؟
- اذكر الحريات الأربع للبرمجيات الحرة.
- ما هو copyleft؟ وما الرخصة التي تُعدّ أشهر مثال عليه؟
- شركة عدّلت شيفرة برنامج تحت رخصة MIT وباعته دون نشر تعديلاتها. هل يحق لها ذلك؟ وماذا لو كان البرنامج تحت GPL؟
- ما القطعة التي كانت تنقص مشروع GNU في بداية التسعينيات؟
الأجوبة
- GNU's Not Unix («GNU ليس UNIX»)، وهو اختصار تكراري؛ أعلن عنه ريتشارد ستولمان في 27 سبتمبر 1983.
- 0 الاستعمال لأي غرض؛ 1 الدراسة والتكييف (الوصول إلى الشيفرة المصدرية)؛ 2 إعادة توزيع النسخ؛ 3 التحسين ومشاركة التحسينات.
- المبدأ الذي يقضي بأن تبقى النسخ المعدَّلة والمعاد توزيعها تحت الرخصة الحرة نفسها. والمثال النموذجي هو رخصة GPL.
- مع MIT: نعم، يكفي الاحتفاظ بإشعار حق المؤلف. مع GPL: لا، إذا أعادت توزيع نسخة معدَّلة فعليها أن توفّر الشيفرة المصدرية تحت GPL.
- النواة (لم تكن Hurd جاهزة): وهي التي وفّرها Linux.
المصادر المرجعية: نصوص مشروع GNU (gnu.org)، و Open Source Definition (opensource.org)، و Debian Policy. نص أصلي من MasterLinux.