logo

logo

logo

logo

logo

برمجيات المصادر المفتوحة

برمجيات مصادر مفتوحه

Open source software -

 برمجيات المصادر المفتوحة

برمجيات المصادر المفتوحة

برمجيات المصادر المفتوحة تحليل المتطلبات والمواصفات
شروط توزيع برمجيات المصادر المفتوحة أدوات هندسة البرمجيات لتطوير المصادر المفتوحة
البرمجيات الحرّة خطوات التطوير
لمحة تاريخية مستقبل المصادر المفتوحة
تطوير برمجيات المصادر المفتوحة  
 

البرمجيات تعبير عام يشير إلى مختلف أنواع البرامج المستخدمة لتشغيل الحواسيب والأجهزة الأخرى ذات الصلة، ويمكن تقسيمها وفقاً لإمكانية الحصول على الرماز المصدري source code إلى برمجيات المصادر المغلقة closed source software، التي لا يمكن الحصول على رمازها المصدري؛ وبرمجيات المصادر المفتوحة open source software، التي ترافق دوماً رمازها.

ثمة أنواع عديدة من البرمجيات تتوزع على النوعين السابقين، منها: البرمجيات الامتلاكية proprietary، والتشاركية shareware، والتجريبية trialware، والتعريفية demoware، والخفيفة liteware، والضبابية vaporware، والمجانية freeware، والبرمجيات الحرة free software، والبرمجيات ذات الملكية المجتمعية public domain software، وبرمجيات الحقوق المتروكة أو المسموحة النسخ copyleft software.

تسهم برمجيات المصادر المفتوحة والبرمجيات الحرة في توفير برمجيات عالية الكفاءة، وتساعد على نشر المعارف البرمجية بين المهتمين من مطوّرين ومستخدمين.

برمجيات المصادر المفتوحة

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

يمكن استخدام الرماز المصدري لبرمجيات المصادر المفتوحة وتعديله من أي كان، كما يمكن إعادة توزيعها توزيعاً حراً.

يشارك في إنتاج برمجيات المصادر المفتوحة مجتمع من مئات آلاف المبرمجين حول العالم، فهي برمجيات غير مقيّدة بأي نظام تشغيل أو تقانات معيّنة، مع أن معظمها مبني على نظام لينكس Linux أو يونكس Unix.

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

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

شروط توزيع برمجيات المصادر المفتوحة

ينبغي أن تستجيب شروط توزيع برمجيات المصادر المفتوحة للمعايير التالية:

1- حرية إعادة التوزيع: أي عدم تقييد الرخصة ببيع البرمجيات على أنها مكوِّن في برمجيات أخرى ضمن حزمة متكاملة من مصادر مختلفة. ولا تتطلب الرخصة ضرائب أو نفقات.

2- الرماز المصدري: يجب أن يُرفق البرنامج مع رمازه المصدري، المسموح توزيعه بصيغته الاثنينيّة. ولا يُسمح بصيغ وسيطة مثل خرج المترجم compiler أو المعالج الأولي.

3- أعمال مشتقة: يجب أن تسمح الرخصة بالتعديلات وبالأعمال المشتقة منها، وتسمح بتوزيعها تحت شروط الرخصة الأصيلة نفسها.

4- سلامة الرماز المصدري المكتوب من المؤلف: يمكن للرخصة أن تحدّ توزيع صيغة الرماز المصدري بصيغة معدّلة وفق شروط خاصة فقط. ويمكن للرخصة أن تشترط أن تحمل الأعمال المشتقة اسم نسخة أو رقمها مختلفاً عن الأصل.

5- عدم التمييز بين الأفراد أو المجموعات: يجب ألا تميّز الرخصة الفرد أو المجموعة.

6- عدم التمييز بين مجالات الاستخدام: ينبغي ألا تحدّ الرخصة أي فرد من السعي إلى استخدام البرنامج في حقل معين.

7- توزيع الرخصة: يجب تطبيق الحقوق المعطاة للبرنامج على جميع من يعاد توزيعه عليهم دون الحاجة إلى تنفيذ رخصة إضافية لهذه الجهات.

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

9- عدم تقييد الرخصة ببرمجيات أخرى: يجب ألا تضع الرخصة تقييداً على برمجيات أخرى تُوزّع مع البرمجيات موضوع الرخصة. كأن تشترط أن تكون جميعها برمجيات مفتوحة المصدر مثلاً.

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

البرمجيات الحرّة

تركّز البرمجيات الحرّة على حرية المستخدمين في تشغيل البرمجيات ونسخها وتوزيعها ودراستها وتعديلها وتحسينها. وتشير إلى أن لمستخدمي البرمجيات الإمكانيات الأربع الأساسية التالية:

  • تشغيل البرنامج لأي غرض (الحرية 0).
  • دراسة كيفية عمل البرنامج وتغييرها؛ ليقوم بما هو مرغوب فيه.
  • إعادة توزيع النسخ؛ ليتمكّن المستخدم من مساعدة جاره.
  • توزيع نسخ من الإصدارات المعدّلة للآخرين.

    تصبح البرمجيات حرّة إذا امتلك مستخدموها كل هذه الحريات. لذلك ينبغي أن يكونوا أحراراً في إعادة توزيع النُسخ؛ سواءً مع تعديلات أو من دونها؛ مجاناً أو مقابل رسوم.

    تعني حريةُ تشغيل البرنامج حريةَ أي فرد أو منظمة في استخدامه على أي نظام حاسوبي، ولأي مهمة وهدف دون أن يكون مطالباً بالإبلاغ عنه للمطوّر أو لأي كيان آخر.

    لمحة تاريخية

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

    أطلق الناشط الأمريكي لحركة المصادر المفتوحة ريتشارد ستالمان Richard Stallman مشروعاً سماه غنو GNU ومؤسسة البرمجيات الحرة في ثمانينيات القرن العشرين؛ لبناء نظام تشغيل حر، حيث بدأ ستالمان بكتابة رماز بعض أدوات برمجة هذا النظام. وأنشأ عام 1989 رخصة غنو العمومية GNU General Public License (GPL) بصفتها أداة قانونية، ليس فقط لضمان أن البرمجيات التي تنتجها غنو ستبقى حرة، بل لتعزيز إنتاج البرمجيات الحرة. وكتب ريتشارد ستالمان أيضاً بيان غنو، الذي أشار إلى أن الحقوق الأربعة (الوصول إلى الرماز المصدري، وحرية إعادة التوزيع، والسماح بتعديل البرمجيات، وإمكانية إعادة توزيع الأعمال المشتقة تحت شروط الترخيص نفسها) هي حقوق أساسية.

    واصلت المصادر المفتوحة تطوّرها بوساطة مجموعات برمجية معزولة نسبياً؛ خلال الثمانينيات وبداية التسعينيات من القرن العشرين، وساعدت يوزنت USENET والإنترنت في تنسيق الجهود العابرة للحدود الوطنية؛ وبناء مجتمعات قوية من المستخدمين.

    كان طالب علوم الحاسوب لينوس تورفالدس Linus Torvalds من فنلندا غير راضٍ عن نظام التشغيل التعليمي «مينيكس» -وهو نسخة خفيفة من يونكس- لذلك أعاد في صيف 1991 كتابته مضيفاً إليه خصائص عديدة. وكان الإصدار الأول من نواة لينكس. تعاون معه لاحقاً أشخاص كثُر لجعل هذه النواة صالحة للاستعمال أكثر فأكثر؛ ليصبح لينكس نظام تشغيل حقيقياً تُغطيه الرخصة GPL.

    في 7 نيسان/ إبريل 1998 عُقدت « قمة البرمجيات المجانية»، واتُّفق على اعتماد تسمية «البرمجيات الحرة»؛ على أن تكون «المصادر المفتوحة» تسمية بديلة أخرى لها لانتشارها في المجتمع.

    تطوير برمجيات المصادر المفتوحة

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

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

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

    في برمجيات المصادر المفتوحة، يمكن تطبيق طرائق النمذجة الأولية السريعة rapid prototyping، والتطوير التزايدي التطوري incremental and evolutionary development، ودورة الحياة اللولبيةspiral lifecycle، والتطوير السريع للتطبيقات، وحديثاً البرمجة الحدّية وعملية البرمجيات الرشيقة agile software process. وتُطبّق الطرائق السريعة على تطوير المصادر المفتوحة لصفاتها التفاعلية والتزايدية.

    ومن طرائق التطوير السريعة التي تناسب تطوير المصادر المفتوحة خاصةً «التطوير السريع بمساعدة الإنترنت» internet-speed development، وذلك لاعتمادها مبدأ التطوير الموزّع. يستخدم هذا التطوير فرقاً موزّعة جغرافياً «تعمل على مدار الساعة»، وتعتمدها شركات البرمجيات المغلقة الكبيرة مثل مايكروسوفت Microsoft. وإذا طُوّرت المصادر المفتوحة من مجموعات كبيرة من المتطوعين في دول مختلفة؛ فهذا يحقق التطوير الموزّع على نحو طبيعي ومن دون الحاجة إلى استثمارات مالية كما في البرمجيات المغلقة.

    تحليل المتطلبات والمواصفات

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

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

    أدوات هندسة البرمجيات لتطوير المصادر المفتوحة

  • أنظمة التحكم في النسخة

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

    يُعدّ نظام النسخ المتسايرة Concurrent Versions System (CVS) مثالاً بارزاً لأداة تعاون في كتابة رماز مشاريع المصادر المفتوحة. يساعد هذا النظام على إدارة ملفات وأرمزة المشاريع عندما يعمل عدة أشخاص على المشروع نفسه وفي الوقت نفسه. وتسمح هذه الأداة لكثيرين بالعمل على الملف نفسه وفي الوقت نفسه، وذلك بنقل نسخه إلى مجلدات المستخدمين. كما يسمح نظام النسخ المتوافقة بسهولة استرجاع نسخة سابقة من ملف ما.

  • نظام التحكم في مراجعة النسخ الجزئية Subversion revision control system (SVN)

    استُحدث ليحل محلّ نظام النسخ المتسايرة. وقد اكتسب سريعاً مكانة بوصفه نظام تحكم في النسخ لمشروع المصادر المفتوحة.

    يُستخدم كثير من مشاريع المصادر المفتوحة نظام التحكم في مراجعة النسخ الموزع Git، وهو نسخة جزئية من نظام مراجعة النسخ الذي يركّز على السرعة، وتستخدمه نواة لينكس.

    خطوات التطوير

    1- الاستفادة من إعادة الاستخدام

    يجري البحث أولاً عن مشاريع مصادر مفتوحة متوفرة ولها الوظائف ذاتها. ويمكن أن تكون أجزاء مشاريع تتكامل مع المشروع أو أفكاراً مفيدة له.

    2- تحديد المشاريع الواجب إنشاؤها

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

    3- اختيار رخصة شائعة وتطبيقها

    ينبغي أن يكون لكل مشروع رخصة واضحة وبسيطة تسمح بالتعاون قانونياً. وتُحدِّد الرخصة حقوق مطوّري البرمجيات ومستخدميها ومسؤولياتهم.

    4- وضع أسس إدارة المشروع

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

    5- بناء التعاون

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

    6- إنشاء منحى فني للمشروع

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

    7- الإعلان

    عندما يجري تأسيس المشروع، ويصبح قابلاً للتقديم؛ يُعلم الآخرون بذلك.

    مستقبل المصادر المفتوحة

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

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

    وتظهر الدراسات بوضوح أن المصادر المفتوحة قد تغلبت على التيار السائد، ليس داخل مجتمع البائعين فحسب؛ ولكن أيضاً ضمن منظّمات الزبائن من جميع الأنواع والأحجام؛ وأن نمواً جديداً يتحقق بفضل الفوائد الكامنة في المصادر المفتوحة كالابتكار الذي يقوده المجتمع، وفي الأسواق السريعة النمو كسوق الحوسبة السحابية cloud computing والمتنقلة mobile. ويُتوقع - نتيجة لمشاركة أعداد أكبر من المستخدمين- أن تكون البرمجيات المفتوحة المصدر في طريقها إلى غالبية المشاريع.

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

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

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

    محمود محفوري

    مراجع للاستزادة:

    - P. Abrahamsson, O. Salo and J. Warsta, Agile Software Development Methods: Review and Analysis, VTT Publications, 2002.

    - S. Androutsellis-Theotokis, D. Spinellis, M. Kechagia and G. Gousios, Open Source Software: A Survey from 10,000 Feet, Foundations and Trends in Technology,
    Information and Operations Management, Vol. 4, Nos. 3–4, 2010.

    - F. P. Deek and J. A. M. McHugh, Open Source, Technology and Policy, Cambridge University Press, 2008.

    - R. Dixon, Open Source Software Law, Artech House, 2004.

    - A. Fuggetta, Open source software - an evaluation, Journal of Systems and Software, 2003.

    - K. C. Laudon, J. P. Laudon, Management Information Systems-Managing the Digital Firms, Pearson Prentice Hall, 2004.

    - W. Scacchi, Free and Open Source Development Practices in the Game Community, University of California, Irvine. IEEE Computer Society, IEEE SOFTWARE, 2004.

     


التصنيف : كهرباء وحاسوب
النوع : كهرباء وحاسوب
المجلد: المجلد الرابع
رقم الصفحة ضمن المجلد :
مشاركة :

اترك تعليقك



آخر أخبار الهيئة :

البحوث الأكثر قراءة

هل تعلم ؟؟

عدد الزوار حاليا : 87
الكل : 16314002
اليوم : 2474