ماهو الفرق بين الـ Free Software و Open Source ؟

اهو الفرق بين الـ Free Software و Open Source ؟

فيما يلي موجز ورقة عمل تعاونت بانجازها مع الصديق ابراهيم حيدر منذ فترة وارجو ان تكون مفيدة وتوضح بعض النقاط الملتبسة على البعض:

مـقدمـة
يتألف الحاسب من كيانين متكاملين لا يمكن لأحدهما أن يستغني عن الآخر
– يعرف الأول بالكيان المادي Hardware
– يعرف الثاني بالكيان البرمجي Software
يشكل هذين الكيانين بالإضافة إلى الإنسان المنظومة الحاسوبية المهيأة للقيام بعمل ما.

فيما يخص الكيان البرمجي ، وهي ما يهمنا ، تُقسّم البرمجيات إلى فئات وفق عدة معايير
أولاً من الناحية الوظيفية تقسم البرمجيات إلى أربع فئات رئيسية:

[ad]

1.التطبيقات Applications
2.لغات البرمجة Programming Languages
3.أنظمة التشغيل Operating Systems
4.البرامج الخدمية Utilities

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

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

2.Package Software (canned Software): وهذه البرمجيات تكون معلبة و مسجلة يتم الحصول عليها بشكل رئيسي من مراكز بيع معتمدة من قبل الشركة المنتجة و تعتبر من أكثر الطرق التقليدية.
3. Public-Domain Software: يعني هذا المصطلح بشكل دقيق أنَّ هذه البرمجيات لا تخضع إلى Copyright أي أنها غير مسجلة في دائرة حقوق النشر و التوزيع. يقدمها مطوروها للاستخدام العام و للمستخدمين في هذه الحالة كامل الحرية في نسخها وإعادة توزيعها. قد يقدم مطوروا هذه البرمجيات الشيفرة المصدرية مع البرنامج التنفيذي وبالتالي نصبح أمام حالة non-copylefted free software (سنتعرف عليها لاحقاً).
4. Shareware: وهي برمجيات مسجلة تخضع لاتفاقية ترخيص ينشرها مطوروها ليتمكن من يود استخدامها من تجربتها قبل دفع ثمنها مع العلم أنه يحق له تقديمها لمستخدمين آخرين. و من يرغب باستخدامها بشكل مستمر بعد فترة التجربة التي يحددها المنتج عليه أن يدفع التكلفة المحددة إلى المنتج.

ثالثاً هناك منحى يعتمد على فلسفة ملكية البرمجية ووفق هذا المنحى تقسم البرمجيات إلى فئتين وهما:

1.البرمجيات المملوكة ((يستخدم البعض تعبير تجارية , ولكننا نفضل استخدام مفردة مملوكة وﻻسباب سيوضحها مجمل المقال.)) Proprietary Software

2.البرمجيات الحرة Free Software

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

مفهوما Open Source و Free Software

سنعتمد على الشكل التالي في تعريف و توضيح أغلب الفئات البرمجية التي يتم ذكرها عند مناقشة مفهوم البرمجيات الحرة

في البداية ماذا نقصد بالشيفرة المصدرية للبرنامج ؟؟؟؟؟
يقصد بالشيفرة المصدرية تلك التعليمات المكونة لبرنامج ما والمكتوبة باللغة برمجية عالية المستوى High Level Language أو باللغة التجميع Assembly Language و اللغات البرمجية عالية المستوى يستخدمها العديد من المبرمجين والمطورين كمثال, php, C, C++, Delphi, Visual Basic , python, rupy ,.
إنّ البرنامج المكتوب بهذه اللغات لايمكن للحاسب أن ينفذه فهو بحاجة لعملية ترجمة أو تفسير من قبل برنامج مخصص يُعرف بالمترجم Complier ومهمته أن يولد الشيفرة الهدف للبرنامج المصدري والشيفرة الهدف هذه هي عبارة عن شيفرة ثنائية (Binary Code) قابلة للتنفيذ مباشرةً من قبل الحاسب.

البرمجيات المملوكة Proprietary Software :
كما هو واضح هي برمجيات ليست بحرة أو نصف حرة ، تمتاز بأنَّ تعديلها أو إعادة نشرها و توزيعها ممنوع أو أنه يتطلب موافقة الجهة المنتجة ، أغلب البرمجيات التجارية (أغلب وليس جميع) الآن تندرج تحت هذه الفئة.
كما هو واضح من الشكل تندرج جميع البرمجيات المغلقة المصدر Closed Software ضمن فئة البرمجيات المملوكة.
ونقصد بالبرمجيات المغلقة المصدر هي البرمجيات المقدمة من الشركة المنتجة بدون شيفرتها المصدرية.
تخضع هذه البرمجيات لتراخيص استخدام و يتم حماية حقوق منتجيها باستخدام Copyright(وهي عبارة عن طريقة متبعة لحماية مُنتج أي عمل إبداعي بشكل قانوني سواء كان نص ، مقطوعة موسيقية ، رسمة ، أو برنامج حاسوبي . في العديد من البلدان يحصل منتج عمل ما على حقوق الملكية لمنتجه حالما يضع منتجه على وسط مادي يقدمه للجهات المختصة ليسجله باسمه).

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

فما هي البرمجيات الحرة Free Software ؟
يُعرف Richard Stallman مؤسس شركة Free Software Foundation (FSF)
البرمجيات الحرة كما يلي :
” البرمجيات الحرة هي قضية حرية و ليست قضية سعر و الحرية هنا تعني حرية مستخدمي البرمجية في أربع جوانب وهي:
1- الحرية لتشغيل البرنامج لأي غاية يريدها المستخدم (الحرية صفر).
2- الحرية لدراسة كيفية عمل البرنامج و ملائمته لحاجات المستخدم (الحرية الأولى). من الطبيعي أن تشكل إمكانية الوصول إلى الشيفرة المصدرية للبرنامج شرط مسبق لتحقق هذه الحرية.
3- الحرية في إعادة نشر نسخ من هذه البرمحية لأيٍ كان (الحرية الثانية).
4- الحرية في تحسين البرنامج و في إمكانية نشر هذه التحسينات إلى العموم و بذلك يستفيد الجميع منها (الحرية الثالثة). من الطبيعي أن تشكل إمكانية الوصول إلى الشيفرة المصدرية للبرنامج شرط مسبق لتحقق هذه الحرية.

تعتبر البرمجية حرة (أي تندرج تحت بند Free Software) في حال امتلاكها هذه الحريات الأربع معاً

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

ولكي تكون هذه الحريات حقيقية يجب أن تكون غير قابلة للتعديل أو بمعنى آخر نهائية فإذا كان لمطور البرمجية القدرة على إبطال إذن الترخيص باستخدام هذه البرمجية بدون أن يقوم المستخدم بأي عمل يسبب ذلك فإنَّ البرمجية لا تكون حرة.
من هنا فإنَّ وجود أنواع من القواعد الضابطة لطريقة توزيع البرمجيات الحرة هو أمر مقبول طالما أن هذه القواعد لا تتعارض مع الحريات الأساسية الممنوحة للمستخدم.
في هذا المنحى يبذغ مفهوم Copyleft

فماذا نقصد بالمصطلح Copylefted Software ؟؟؟
هو مفهوم عام يقصد به التعبير عن البرمجيات الحرة التي تنص شروط إعادة توزيعها ونشرها بعدم السماح لأي شخص يود إعادة نشر هذه البرمجية الحرة سواء عدلها أم لا بإضافة أي قيد جديد على استخدام هذه البرمجية. أي بتعبير آخر كل نسخة من برمجية حرة يجب أن تبقى برمجية حرة حتى لو تمَّ تعديلها أو إصدار إصدارات جديدة منها.
ولكن ما الداعي لوجود هذا المفهوم؟
الطريقة الأسهل لأي شخص لجعل برنامجه في متناول الجميع هو جعله Public-Domain أي بجعلها لا تخضع إلى Copyright هذا يسمح للمستخدمين بالعمل على هذه البرنامج و تعديله باستخدام الشيفرة المصدرية المتاحة له. و لكن ماذا إذا عمد أحد المستخدمين غير المتعاونين للقيام بتعديلات ما على البرمجية و جعل البرنامج مع تعديلاته مملوكاً أي Proprietary software بلا شك سوف تتحول هذه البرمجية إلى منتج مملوك يحصل عليه المستخدمون مجرد من الحرية التي أعطاها إياه المبرمج الأولي.

هنا تكمن أهمية المفهوم العام Copyleft حيث تتضمن الخطوة الأولى جعل المنتج مسجل للمبرمج الأصلي و من ثمَّ تتم إضافة شروط إعادة النشر التي تمنح كل مستخدم الشرعية و الحق في تعديل و استخدام و إعادة نشر شيفرة البرنامج أو أي برمجية مشتقة من البرنامج الأصلي بشرط أن يحافظ على شروط إعادة النشر غير معدلة و هكذا تصبح شيفرة البرنامج و حريات استخدامها متلازمان قانونياً.
ولكون مطوري البرمجيات المملوكة يستخدمون Copyright أي التسجيل في دائرة حقوق النشر و التوزيع لانتزاع حرية المستخدم قام مشروع GNU باستخدام Copyright لمنح المستخدمين الحرية و لذلك قاموا بعكس المعنى بتعديل التسمية Copyright إلى Copyleft.
في هذا المضمار تخضع كافة برمجيات مشروع GNU تقريباً لـ Copyleft لأن ذلك يتوافق مع هدفها في إعطاء كافة المستخدمين الحرية في إعادة نشر و تعديل برمجيات GNU. وباعتبار Copyleft مفهوم عام فإنه يوجد العديد من الطرق للغوص بالتفاصيل ، في مشروع GNU تمَّ تضمين شروط النشر المحددة في GNU General Public License، و الصيغة التالية منها والتي تستخدم مفهوم Copyleft هو Lesser General Public License (LGPL) .
ملاحظة: هناك العديد من الطرق التي يمكن من خلالها كتابة شروط نشر وفق مفهوم Copyleft و بالتالي فمن الطبيعي وجود عدة تراخيص للبرمجيات الحرة وفق مفهوم Copyleft مع العلم أنه عملياً أن أغلب البرمجيات الحرة تعتمد GNU-GPL. و يفضل أن يستخدم ترخيص Copyleft مفرد للتخلص من مشكلة وجود بنود مختلفة مما يؤدي إلى عدم القدرة على دمج شيفرة برنامج تعتمد ترخيص معين مع شيفرة برنامح آخر تعتمد ترخيص آخر.

ولكن هل من الممكن أن تكون البرمجية حرة و أن لا تخضع لمفهوم Copyleft ؟
الجواب بالطبع نعم و نكون عندها أمام فئة برمجية تدعى non-copyleft free software .
تتمتاز البرمجيات الحرة لهذه الفئة بإمكانية وجود نسخ معدلة منها غير حرة إطلاقاً فلا يوجد ما يمنع المستخدم من الحصول على الشيفرة المصدرية لهذه البرمجية الحرة ومن ثمَّ ترجمة البرنامج (عملية compiler) مع أو بدون إجراء تعديلات و من ثمًَّ نشر الملف التنفيذي كبرنامج مملوك أي منتج proprietary software.
يوضح نظام X Windows System هذا المنحى ، يمكنك زيارة موقع www.x.org لمزيد من التفاصيل.

[ad]

ما هي البرمجيات مفتوحة المصدر Open Source Software (OSS) ؟
سوف نعتمد هنا على التعريف الوارد في موقع www.opensource.org
“تعتبر البرمجية من برمجيات المصادر المفتوحة ليس فقط بتحقيقها شرط الوصول إلى الشيفرة المصدرية للبرنامج وإنما باستجابة شروط نشر هذه البرمجية للمعايير التالية:
1.ضمان حرية المستخدم في إعادة نشر البرمجية: يجب أن لا يمنع الترخيص أي طرف من بيع أو تقديم البرمجية مجاناً كعنصر أو جزء أساسي في توزيعة برمجية كاملة تتضمن برمجيات من مصادر مختلفة. كما أنَّه يجب ألا يتضمن الترخيص أي مطالبة مادية مقابل هكذا بيع.
2.الشيفرة المصدرية: يجب أن يتضمن البرنامج الشيفرة المصدرية و يجب أن يسمح بتوزيع الشيفرة المصدرية بالإضافة إلى الشكل المترجم للبرنامج. تقديم الشيفرة المصدرية يجب أن يكون بالشكل الذي يسمح للمترجم بتعديله.
3.يجب أن يأخذ الترخيص بعين الإعتبار الأعمال المشتقة من البرمجية و التعديلات التي أجريت عليها وذلك بالسماح بنشرها تحت نفس شروط ترخيص البرمجية الأصلية لأنّ الاضطلاع على تجارب الآخرين و تعديلاتهم يسمح بتسريع عملية التطوير.
4.تضمين الشيفرة المصدرية للمؤلف الأصلي: يجب أن يمنع الترخيص المطورين من نشفر الشيفرة المصدرية المعدلة بدون نشر الشيفرة المصدرية الأصلية.
5.يجب ألا يتضمن الترخيص أي تمييز ضد أي أشخاص أو مجموعة من الأفراد و ذلك لتحقيق المنفعة الأكبر في مساهمة أكبر عدد من الأشخاص .
6.يجب ألا يتضمن الترخيص أي تمييز ضد أي مجال استثماري للبرمجية أي بمعنى آخر يجب أن لا يقيد الترخيص المستخدم من استخدام البرمجية في مجال معين و ليكن التجاري.
7.توزيعية الترخيص:و نعني بها أنَّ الحقوق المرتبطة ببرنامج يجب أن تطبق على جميع من يوزع إليهم البرنامج بدون الجاجة إلى إجراء تراخيص إضافية مع هؤلاء الأشخاص.
8.على الترخيص ألا يرتبط بمنتج معين: أي أنّ الحقوق المرتبطة ببرنامج يجب ألا تعتمد على كون البرنامج جزء من توزيعة برمجية مستقلة. فإذا تم َّ فصله عن هذه التوزيعة و نشره بصورة مستقلة وفق شروط ترخيص البرنامج فإن من يصلهم هذا البرنامج سوف يخضعون لنفس الحقوق التي منحت في السابق على كون البرمجية جزء من توزيعة.
9.يجب أن لا يقيد الترخيص البرمجيات الاخرى : مثلاً يجب أن لا ينص الترخيص على كون البرمجيات التي توزع مع برمجية المصدر المفتوح على نفس الوسط المادي تخضع لمفاهيم المصادر المفتوحة أيضاً.
10.على الترخيص أن يكون محايد تقنياً: أي ألا يتضمن الترخيص أي شرط يمكن أن يؤكد على استخدام تقنية معينة أو نمط ملائمة محدد.”

الخلاصة:

ماهو الفرق بين الـ Free Software و Open Source ؟؟؟؟؟؟؟؟؟
تحت مقولة “كلمات مختلفة تقود لأفكار مختلفة”
في عام 1998 بدأ بعض الأشخاص من بين جمهور البرمجيات الحرة يستخدمون التعبير Open source software بدلاً من free software لوصف ما يقومون به من عمل وبسرعة بدأ التعبير Open source يرتبط بالعديد من الاتجاهات ، بالعديد من الفلسفات البرمجية و حتى بالعديد من طرق تحديد الترخيص المقبول . اليوم يختلف المفهومان بل أنهم آخذا يشكلان اتجاهين منفصلين بأهدافهما و يرؤيتهما على الرغم من أنهما يعملان جنباً لجنب في العديد من المشاريع.
سنوجز الفرق بالقول المقتبس من موقع GNU

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

ببساطة الشركات التجارية تعتمد الصدر المفتوح ﻻنها تعتقد انها افضل وسيلة تطوير, بينما انصار ستولمان واﻻفراد يعتبرونها موضوع متعلق بمفهوم الحرية كاساس.

مواقع مفيدة
www.gnu.org (GNU’s Not Unix )GNU
www.opensource.org Open Source Site

http://en.wikipedia.org/wiki/Richard_Stallman

[ad#ad-2]

10 Comments

اترك رد