حكاية المصادر المفتوحة
نشرتُ مادّة هذا المقال أوّل مرّةٍ على منصّة قبيلة، وأُزجي الشكر للأخِ محمد عبدالعزيز على تصويبه لي فيما يخصّ رُخص BSD/MIT. ثمّ أعاد 'gemini' صياغته، ولعلّ في هذه الصياغة الجديدة ما يجعله أوضحَ بيانًا.
طالما أَزْمَعْتُ كتابةَ هذا المقال، بيد أنَّ أمورًا شغلتني عنه، وها قد آنَ أوانُ بسطِ القولِ فيه. موضوعُنا اليومَ هو "المصادرُ المفتوحةُ".
في سالفِ الأزمان، لم تكنِ الحاسبات تَحْوِي أنظمةَ تشغيلٍ بالمعنى المعهودِ. إذ كان البرنامجُ الواحدُ يُشغَّلُ على الجهازِ إلى أن تُقضَى الحاجةُ منه، ليُشغَّلَ برنامجٌ آخرُ يليه، على غِرارِ ما كان عليه الأمرُ مع بعضِ ألعابِ الفيديو القديمةِ كألعابِ "أتاري". وقد أَفضتْ محاولاتٌ حثيثةٌ – لن نخوضَ في غمارِ تفاصيلِها – لبناءِ نظامِ تشغيلٍ قادرٍ على إدارةِ أكثرَ من برنامجٍ في آنٍ واحدٍ، إلى ظهورِ نظامِ "سيستم في" (System V)، الذي طوَّرهُ العالمُ "دينيس ريتشي" في مختبراتِ "بيل" التابعةِ لشركةِ "إيه تي آند تي" (AT&T).
آنذاكَ، كانتِ البرمجياتُ تُوزَّعُ في الغالبِ مجانًا، ويتداولُها الناسُ مصحوبةً بشفرتِها المصدريةِ دونَ كبيرِ اكتراثٍ لهذا الأمرِ؛ ولعلَّ مردَّ ذلك إلى أنَّ مُشغِّلي البرمجياتِ آنئذٍ كانوا في الغالبِ الأعمِّ متخصصين بحاجةٍ إلى تعديلِها لتُوافِقَ أجهزتَهُم الخاصةَ.
شرارة التغيير
وبالعودةِ إلى نظامِ "سيستم في"، فقد رأتْ شركةُ "إيه تي آند تي" في مرحلةٍ ما أنَّ فيهِ مَغْنَمًا تجاريًا مُحتمَلًا، فشرعتْ في بيعِ النظامِ دونَ شفرتِهِ المصدريةِ، وألزمتْ مَنْ يبتغي الحصولَ على الشفرةِ – لِتعديلِها بما يُلائِمُه – بتوقيعِ اتفاقياتٍ وشروطٍ مُعيَّنةٍ.
وقد أفضى هذا التحوُّلُ إلى حدثين أساسيينِ مَهَّدا الطريقَ لظهورِ مصطلحِ "المصدرِ المفتوحِ" (Open Source) لاحقًا:
الحدث الأولُ، وهو حدثٌّ جانبيٌّ نسبيًا، تمثَّلَ في أنَّ أستاذًا جامعيًا فنلنديًا، كان يُدرِّسُ مادةَ نُظُمِ التشغيلِ مُستعينًا بنظامِ "يونكس" (Unix) في شروحاتِهِ، فلمَّا رأى ما استجدَّ من قيودٍ على "سيستم في"، أنشأَ نظامَ تشغيلٍ مُبسَّطًا أسماهُ "مينيكس" (Minix)، وقرَّرَ أن يشرحَ لطلابِهِ عليه.
أمَّا الحدثُ الأهمُّ والأعمقُ أثرًا، فكانَ استياءَ المُبرمِجِ "ريتشارد ستولمن" حينَ وصلَهُ التحديثُ الجديدُ للنظامِ مجرَّدًا من شفرتِهِ المصدريةِ، وقد اعتادَ الرجل إدخالَ تعديلاتٍ عليهِ لتتوافقَ مع طابعتِهِ الخاصةِ. أثارَ هذا الأمرُ حفيظتَهُ، وعقدَ العزمَ على إنشاءِ نظامٍ "حُرٍّ" (Free)، وطرحَ فكرة "الحرياتِ البرمجيةِ الأربعِ"؛ تلكَ الحرياتُ التي يُذَكِّرُنِي مُسمَّاها، بل وحتَّى أسلوبُ تبلورِ فِكرَتِها، بـ"الحرياتِ المدنيةِ الأربعِ" الشهيرةِ.
البرمجيات الحرة (Free Software)
وإلى تلكَ اللحظةِ، لم يكن مصطلحُ "المصدرِ المفتوحِ" قد وُجِدَ بعدُ، بل كانَ السائدُ هو مفهومُ "البرمجياتُ الحُرَّةُ" (Free Software). وكلمةُ "حُرٍّ" هنا لا تعني بالضرورةِ "مجانيًّا"، فالبرنامجُ قد يكونُ مجانيًا أو مدفوعَ الثمنِ، ولكن ليكونَ "حُرًّا" لا بُدَّ أن يمنحَ المستخدمَ أربعَ حرياتٍ أساسيةٍ، نصُّها كالتالي:
- الحريةُ صِفْر (0): حريةُ تشغيلِ البرنامجِ كما تشاءُ، ولأيِّ غرضٍ كانَ.
- الحريةُ واحد (1): حريةُ دراسةِ كيفيةِ عملِ البرنامجِ، وتعديلِهِ ليعملَ وَفْقَ رغباتِكَ. الوصولُ إلى الشفرةِ المصدريةِ شرطٌ لازمٌ لهذا.
- الحريةُ اثنان (2): حريةُ إعادةِ توزيعِ نُسَخٍ من البرنامجِ لتتمكَّنَ من مساعدةِ الآخرينَ.
- الحريةُ ثلاثة (3): حريةُ توزيعِ نُسَخٍ من إصداراتِكَ المُعدَّلةِ للآخرينَ. وبذلك يمكنكَ أن تمنحَ المجتمعَ بأسرهِ فرصةَ الاستفادةِ من تعديلاتِكَ. الوصولُ إلى الشفرةِ المصدريةِ شرطٌ لازمٌ لهذا أيضًا.
ولكفالةِ هذهِ "الحرياتِ البرمجيةِ الأربعِ" وصونها، كانَ لا بُدَّ من صياغةِ تراخيصَ تُكرِّسُ هذه المبادئَ وتضمنُ سريانَها. ومن هذا المنطلقِ، أُنشِئتْ رخصةُ "جي بي إل" (GPL) الشهيرةُ، ولحقَتْ بها تراخيصُ أُخرى تسيرُ على الدربِ ذاتِهِ.
اتَّسَمَتْ رخصةُ GPL بخاصيةٍ أُطلِقَ عليها "العدوى" أو "الانتشار الفيروسي" (viral effect)، بمعنى أنَّكَ إذا أخذتَ برنامجًا حُرًّا، وعدَّلتَ عليهِ، ثمَّ قُمْتَ بتوزيعِهِ، لَزِمَكَ أن تُوزِّعَ الشفرةَ المصدريةَ متضمِّنةً تعديلاتِكَ. لمْ يَرقْ هذا الشرطُ لكثيرٍ من الشركاتِ، إذ لمْ يَكفلْ هذا النموذجُ ربحًا واضحًا أو حمايةً كافيةً للتقنياتِ المُطوَّرةِ داخليًا.
في مطلعِ الثمانينياتِ من القرنِ الماضي، أسَّسَ "ريتشارد ستولمن" مشروعَ "جنو" (GNU). وبدعمٍ متواضعٍ من أفرادٍ وجمعياتٍ، شرعوا في تطويرِ برامجَ حُرَّةٍ تُشكِّلُ نظامَ تشغيلٍ بديلًا لنظامِ "يونكس". أنجزوا معظمَ المكوناتِ، وتبقَّتْ لديهم "النواةُ" (kernel)، وكانوا يعملون على تطويرِها ضمنَ مشروعِ "جنو" تحت اسم "هيرد" (HURD).
أمَّا نظامُ "مينيكس"، الذي أسلفنا ذكرَهُ، فكانتْ شفرتُهُ المصدريةُ مُتاحةً وتُنشرُ مع مؤلفاتِ الأستاذِ "أندرو تانينباوم". بَيْدَ أنَّ مُشكلتَهُ تمثَّلَتْ في أنَّهُ كانَ منشورًا بموجبِ ترخيصٍ يمنعُ الاستخدامَ التجاريَّ، ويقصُرُهُ على الأغراضِ التعليميةِ والشخصيةِ فحسب. وقد أثارتْ هذه النقطةُ استياءَ كثيرينَ، من بينهم "ريتشارد ستولمن" نفسُهُ، الذي لم يتمكَّنْ بسببِ هذا القيدِ من استخدامِ نواةِ "مينيكس" في مشروعِهِ "جنو"، ممَّا كان أحدَ دوافعه لبناءِ نواة "هيرد".
ولادة نواة لينكس وظهور المصدر المفتوح (Open Source Software)
وفي مطلعِ التسعينياتِ، شرعَ طالبٌ فنلنديٌّ يُدعى "لينوس تورفالدز"، خلالَ إجازتِهِ الصيفيةِ، في مشروعِ تطويرِ نواةٍ جديدةٍ لجهازِهِ الشخصيِّ. وما إنْ أنجزَ أساسياتِها حتَّى نشرَها عبرَ قائمةٍ بريديةٍ للمُهتمِّينَ. سرعانَ ما بدأَ المطوِّرونَ في التفاعلِ، مُرسِلينَ تعديلاتٍ ومساهماتٍ، وكانَ "لينوس" يستقبلُها ويُضمِّنُها. وبمرورِ الوقتِ، نما المشروعُ، واستُخدِمَتْ مُكوِّناتٌ من مشروعِ "جنو" ليكتملَ النظامُ ويُصبحَ عمليًا (حتَّى أنَّ "لينوس" نفسَهُ قد اعتمدَ ترخيصَ GPL لنواتِهِ التي عُرفت لاحقًا بنواة "لينكس").
الأمرُ المُلفِتُ للانتباهِ آنذاكَ هو أنَّ هذا النمطَ من التطويرِ لم يكنْ مألوفًا أو مفهومًا على نطاقٍ واسعٍ. فقد كانَ المتعارفُ عليهِ أن يتولَّى فريقٌ مُنظَّمٌ تطويرَ مُنتَجٍ ما بصورةٍ مُغلقةٍ ومركزيةٍ حتَّى يكتملَ. أمَّا أن يُطرحَ مُنتَجٌ ناشئٌ للعمومِ وينمو بمساهماتٍ مُتفرِّقةٍ من كلِّ حدبٍ وصوبٍ، فكانَ ذلك أمرًا يحملُ في طياتِهِ بوادرَ ثورةٍ في عالمِ البرمجياتِ.
ومن هنا، بدأَ البعضُ في مراجعةِ أفكارِهِم حولَ منهجياتِ تطويرِ البرمجياتِ. ومن أبرزِ هؤلاءِ "إريك ريموند"، الذي خطَّ مقالًا شهيرًا (أصبحَ كتابًا لاحقًا) بعنوان "الكاتدرائيةُ والبازارُ" (The Cathedral and the Bazaar). وكانَ لهذهِ المقالةِ أثرٌ مباشرٌ في قرارِ شركةِ "نتسكيب" (Netscape) فتحَ شفرةِ مُتصفِّحِها، وتحويلِهِ إلى ما عُرِفَ لاحقًا بمشروعِ "موزيلا" (Mozilla).
يُخلَصُ الكتابُ إلى أنَّ البرمجياتِ كانتْ تُبنَى تقليديًا على غِرارِ "الكاتدرائياتِ": تخطيطٌ مُطوَّلٌ ودقيقٌ، وتنفيذٌ مركزيٌّ مُحكَمٌ. أمَّا مشروعُ "لينكس"، فكانَ أشبهَ بـ"البازارِ": سوقٌ شعبيٌّ، يستهلُّهُ فردانِ أو ثلاثةٌ يعرضونَ بضاعتَهُم، ثمَّ يتَّسِعُ تدريجيًا، وتُعادُ تنظيمُ المساحاتِ فيهِ دوريًا، إلى أنْ يتحوَّلَ إلى سوقٍ كبيرٍ ذي حوانيتَ وشوارعَ مُنظَّمةٍ، كلُّ ذلك بجهودٍ تبدو ظاهريًا غيرَ مركزيةٍ ولكنَّها تُفضِي إلى نظامٍ مُعقَّدٍ وفعَّالٍ.
وهنا، انطلقَ النقاشُ: هل يمكنُ لهذا النمطِ، الذي يبدو ظاهريًا عفويًا ومنفتحًا، أن يكونَ أكثرَ فاعليةً؟ وبدأتْ تتشكَّلُ حركةٌ جديدةٌ أُطلِقَ عليها اسمُ "البرمجياتِ مفتوحةِ المصدرِ" (Open Source Software). يكمنُ الفرقُ الجوهريُّ في أنَّ "البرمجياتِ الحُرَّةَ" تُركِّزُ في المقامِ الأولِ على "حقوقِ المُستخدِمِ" وفلسفةِ الحريةِ، بينما يُركِّزُ مفهومُ "المصدرِ المفتوحِ" على "فائدةِ السوقِ" والجدوى العمليةِ – أيْ أنَّ الشفرةَ المفتوحةَ تُسهمُ في تحسينِ المنتجاتِ وتسريعِ وتيرةِ التطويرِ ورفعِ مستوى الجودةِ.
وقد أفادتْ حركةُ "المصادرِ المفتوحةِ" من رُخَصٍ برمجيةٍ كانتْ قد ظهرتْ بالفعلِ، أو أخذتْ في الظهورِ، وتُوافِقُ هذا التوجُّهَ العمليَّ الذي يميلُ إليهِ أنصارُ المصدرِ المفتوحِ. ومن أبرزِ هذهِ الرُّخَصِ التي ناسبتْ هذا الهدفَ، رخصتا "إم آي تي" (MIT) و"بي إس دي" (BSD). فهذهِ الرُّخَصُ، بطبيعتِها الأكثرُ تساهُلاً مقارنةً برخصة "جي بي إل"، أتاحتْ للشركاتِ والمؤسساتِ التجاريةِ استخدامَ المشاريعِ البرمجيةِ الخاضعةِ لها، أو أجزاءٍ منها، في تطويرِ مشاريعَ خاصةٍ مُغلقةِ المصدرِ، دونَ أنْ تُلزِمَها بالضرورةِ بنشرِ الشفرةِ المصدريةِ لتعديلاتِها أو إضافاتِها الخاصةِ.
ختامًا: البراغماتية في مواجهة الفلسفة
وهكذا، نشأَ ما يُشبهُ التجاذُبَ الفكريَّ والعمليَّ بينَ مدرستينِ:
- مدرسةُ "البرمجياتِ الحُرَّةِ": التي تنادي بنشرِ الشفرةِ من أجلِ صونِ حرياتِ المُستخدِمِ الأربعِ التي أرساها "ستولمن".
- ومدرسةُ "المصدرِ المفتوحِ": التي تدعو إلى نشرِ الشفرةِ كوسيلةٍ براغماتيةٍ لتحسينِ جودةِ المنتجاتِ وتعزيزِ القدرةِ التنافسيةِ في السوقِ، والتعاونِ المثمرِ بينَ المطورينَ.