الأربعاء، 20 سبتمبر 2017

المصدر المفتوح

######################
المصدر المفتوح:
Open-Source:
######################

يشير المصطلح “open source” أو مصدر مفتوح، إلى شيء يمكن للناس القيام بالتعديل عليه وتشاركه مع اﻵخرين، ﻷنه صُمم باﻷصل ليكون متاحًا للعموم.

ولقد نشأ هذا المصطلح في سياق عالم تطوير البرمجيات لعمل منهجيّة معيّنة ﻹنشاء البرامج الحاسوبية، ويتضمن المصدر المفتوح اليوم مجموعة من القيم والمبادئ فيما يُطلق عليها اسم “the open source way” بما فيها المشاريع مفتوحة المصدر والمنتجات ومبادارت الاحتضان والاحتفاء بمبادئ التبادل الحرّ والمشاركة التعاونية والتطوير الموجّه نحو المجتمع والشفافية.

######################
ما هو البرنامج مفتوح المصدر؟!!
######################

هو ذلك البرنامج الذي يمكن للإنسان تفقّد وتفحص وقراءة شيفرته المصدرية (source code)، وكذلك إمكانية التعديل عليه وتحسينه، وفق ما يناسب الاحتياجات المنشودة.

ال Source code: أو الشيفرة المصدرية هي الكود الذي يكتبه المبرمجون ﻹنشاء البرامج التي نراها أمام أعيننا، لا نستطيع رؤية اﻷكواد بشكل مباشر ﻷنها تعمل في الخلفية، ويلزمنا محرر نصي أو برمجي لنستطيع قراءتها والتلاعب بها (ولكن إذا كان البرنامج مغلق المصدر closed source فإنه يُمنع رؤيتها نهائيًا، ﻷن مبرمجيها أرادوا ذلك).

######################
ما الفرق بين البرنامج مفتوح المصدر واﻷنواع اﻷخرى؟!!
######################

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

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

يعتبر Microsoft Office و Adobe Photoshop أشهر اﻷمثلة على البرمجيات المملوكة أو مغلقة الممصدر.

أمّا المصدر المفتوح open source فيختلف بشكل تامّ، صانعوا هذه البرمجيات جعلوا أكوادهم متاحة للعموم إمّا لأسباب أخلاقيّة أو ﻷسباب تتعلق بسرعة التطوير وما إلى ذلك، فيتمكن الجميع من قراءة وعرض تلك اﻷكواد والتعلّم منها ونسخها ومشاركتها مع اﻵخرين والتلاعب بها وتعديلها والمشاركة في تطويرها، ومن أشهر اﻷمثلة على البرمجيات مفتوحة المصدر محرر الصور GIMP والبرنامج المكتبي LibreOffice.

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

تُعنى شروط التراخيص في المصادر المفتوحة بالطريقة التي ينبغي فيها على اﻷشخاص استخدام ودراسة وتوزيع وتعديل البرامج، وبشكل عامّ؛ فإن بعض البرامج مفتوحة المصدر تمنح مستخدمي الحواسيب اﻹذن لاستعمال تلك البرمجيات ﻷيّ غرض رغبوا فيه ذلك، وفي بعض الرخص تجِد هنالك بعض اﻷشياء (“copyleft”)، وهذا يعني أن أيّ شخص يعدّل على الكود مفتوح المصدر فإنه ينبغي عليه أن يقوم بإطلاق ذلك الكود المصدري المعدّل إلى جانب البرنامج الذي أطلقه، وكذلك فبعض التراخيص تنصّ على عدم التعامل التجاري عند مشاركة اﻷكواد المصدرية المعدّلة مع اﻵخرين، إن تراخيص المصادر المفتوحة تعزز عملية التبادل والتعاون بين اﻷشخاص وتضمين تلك اﻷكواد في مشاريعهم الخاصة لزيادة اﻹنتاجية وتطوير المهارات والذكاء.

######################
هل لفظ “مفتوح المصدر” مفيد فقط للمبرمجين؟!!
######################

اﻹجابة: لا. هي مفيدة لعموم الناس، سواء كانوا مبرمجين أم لم يكونوا وسنوضّح ذلك.

أوائل المخترعين قاموا ببناء الكثير من جوانب اﻹنترنت على تقنيات مفتوحة المصدر بما فيها نظام التشغيل Linux وخادم الويب “أباتشي”، واليوم فإن أيّ شخص عاديّ يستخدم اﻹنترنت في العالم فإنه مدينٌ بالشكر للمصادر المفتوحة، لأنها كانت سببًا محوريًا في تطور الإنترنت.

عندما تتصفح الويب، تقرأ بريدك اﻹلكتروني، تدردش مع أصدقائك عبر برامج المراسلة، تشغّل الموسيقى، أو تلعب ألعاب MultiPlayer، كل هذه اﻷشياء تعتمد على مجموعة من التقنيات والبرمجيات مفتوحة المصدر من أجل عملية التبادل عبر الشبكة.

اﻷمر ذاته في عالم الحوسبة السحابية، بالنسبة ﻷولئك اﻷشخاص الذي يحتفظون بملفاتهم على سحابة “cloud”، فإن هنالك العديد من التقنيات مفتوح المصدر المصممة لتقوم بمُجريات هذه العملية، وكذلك هنالك عدد من خدمات التخزين السحابي مفتوحة المصدر أشهرها ownCloud and Nextcloud وبالنسبة للبرامج المملوكة هنالك Dropbox و Google Drive.

وتُعدّ منصة OpenStack بمثابة منصّة مفتوحة المصدر تعتمد عليها الكثير من خدمات التخزين السحابي الموجودة في العالم.

######################
لمَ يفضّل بعض الناس استخدام البرمجيات مفتوحة المصدر؟!!
######################
لعددٍ من اﻷسباب:

1- التحكم والسيطرة: كثير من الناس يفضلونها ﻷنها تعطيهم المزيد من التحكم بالبرامج بحيث يمكنهم التعديل عليها لتناسب احتياجاتهم وتغيير اﻷجزاء التي لا تعجبهم منها، المستخدمون العاديون أيضًا يمكنهم الاستفادة منها باستخدامها ﻷي غرض كان.
2- التدريب: ﻷنها تساعدهم على أن يصبحوا مبرمجين أفضل، ﻷنه بفتح الشيفرة المصدرية لدى الجمهور يساعدهم على دراستها وتقديم أفضل البرامج بعدها، ومشاركة أعمالهم مع اﻵخرين وسماع أصوات المديح والنقد، وتطوير مهاراتهم، وعندما يكتشفون أخطاءهم يشاركونها مع اﻵخرين لمساعدتهم على تجنب الوقوع في نفس الخطأ.
3- اﻷمان: وهو أمر معروف، فهي من أكثر البرمجيات أمنًا ﻷن العلل لا تمكث لفترة طويلة بسبب انفتاح الشيفرة لدى العموم فيؤدي ﻹغلاقها بسرعة (بالطبع بعد عمل مراجعة لذلك التصحيح من قِبل المتمكنين لئلا يكون مُدرِج ذلك التصحيح قد ارتكب خطأ أو زرع شيئًا خبيثًا، قبل إطلاق النسخة العامّة لدى عموم المستخدمين).
4- الاستقرار: الكثير من الناس يفضلون المصدر المفتوح للمشاريع المهمة على المدى الطويل، فعندما تكون الشيفرة متاحة يمكن للمستخدمين الاعتماد على هذا البرنامج في المهام الحرجة، فإنهم لن يتأثروا إذا توقف مخترعو البرنامج اﻷصلي عن التحديث والتطوير وإصلاح العلل، بل يستطيعون إنشاء وتطوير نسختهم الخاصة.

######################
هل المصدر المفتوح يعني مجانًا؟!!
######################

هذا خطأ شائع. واﻵثار المترتبة على هذا المفهوم ليست اقتصادية فقط!!!

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

في الواقع إن العديد من أرباب العمل يفضّلون توظيف أصحاب التقنيات مفتوحة المصدر بسبب مهاراتهم في الدعم الفني والمساعدة وإصلاح اﻷخطاء، وليس العكس كما تظن!!!

######################
10 طرق لتكون مساهمًا في مجتمع المصادر المفتوحة:
######################

ما هي الطرق الممكنة للمساهمة في المشاريع مفتوحة المصدر عدا عن كتابة اﻷكواد؟!! لست بحاجة ﻷن تكون مبرمجًا لتساهم في مجتمع المصادر المفتوحة، لحسن الحظ هناك العديد من الطرق والخيارات المتنوعة ﻹطلاق إبداعاتك:

إليك عشرة طرق بإمكانك أن تكون فيها عضوًا فاعلاً في مجتمع المصادر المفتوحة:

1- قدّم تقاريرًا:
ينبغي أن تقدم تقاريرا عمّا أعجبك وما لم يعجبك في البرنامج، وهذا يشمل العلل (bugs) أو المشاكل البرمجية، ولا ضير من التواصل مع صاحب المشروع لتشرح وجهة نظرك، إنه لمن الجيد مساعدة المطور في فهم أوجه القصور التي يراها المستخدم حسب منظوره.

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

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

4- اكتب توثيقات وشروحات للبرنامج وطرق استخدامه:
يتمتع الكثير من مبرمجو المشاريع بقدرات عالية في كتابة اﻷكواد، ولكن ليس في كتابة التوثيقات، بالطبع فلكل شخص هوايته وميوله وتخصصه، يمكنك أن تكون كاتبًا لتوثيقات البرامج (documentation) بحيث تكتب حول البرنامج وتشرح خصائصه ومميزاته وكذلك تشرح طرق استخدامه عوضًا عن كيفية حلّ المشاكل إن حصلت، كما ينبغي أن تكتب لائحة باﻷسئلة اﻷكثر شيوعًا (FAQ) حتى يسهل الوصول إلى المطلوب من قِبل المستخدمين.

5- ترجمة الواجهات والوثائق:
إذا كنتَ تتقن اللغة اﻹنجليزية فلعلك تحاول ترجمة بعض واجهات البرامج إلى اللغة العربيّة أو أي لغة تريدها، كما يمكنك ترجمة التوثيقات إن لم ترغب بكتابة توثيق جديد من الصفر.

6- أجب على أسئلة المستخدمين في المنتديات والقوائم البريدية:
مساعدة اﻵخرين أمر جميل، بإمكانك تقديم الدعم الفني للآخرين عبر المنتديات والقوائم البريدية، لعلّ أشهر مثال أجنبي هو موقع askubuntu الشهير، ولعل أشهر مثال عربي لدينا هو مجتمع البرمجيات الحرة على فيسبوك، عدا عن ذلك فإن مساعدة اﻵخرين يزيدك خبرة بالمشاكل وحلولها، هذا يعني تقدمك في المجال التقني مستقبلاً في مهنتك.

7- ساعد في تصميم واجهة المستخدم، الشعارات، اﻷيقونات، الخلفيات، المواقع:
العديد من المبرمجين يميلون إلى تصميم واجهة مستخدم تقنيّة، لا جمالية ولا تجذب المستخدمين الجدد، إنه لمن الصعب تفهم احتياجات المستخدمين (UX)، يمكنك أن تساعد في تحسين تجربة المستخدم وتقوم بتصميم الشعارات (logos) أو المواقع اﻹلكترونية المختصة بتلك البرامج.

8- الترويج للمشروع:
وذلك من خلال الحديث عنه سواءً في المجموعات أو في مدونتك الشخصية ونشر تحديثات المشروع عبر الوسائط الاجتماعية، انشر تجاربك الشخصية، عندما يقرأ اﻵخرون تجربتك الشخصية مع المشروع سوف يفرق ذلك كثيرًا.

9- تقديم العتاد (Hardware):
إذا كان المشروع يحتاج إلى خوادم وكان لديك عدد من الحواسيب القوية المخصصة، يمكنك توفير وصول مخول للمطورين لاختبار المشروع.

10- قل شكرًا:
كما يكفيك أن تتوجه بالشكر سواءً للمطورين أو الكُتّاب وغيرهم، فالكلمة الجميلة لها أثرها ووزنها.



ليست هناك تعليقات:

إرسال تعليق