! T3B > W3C

نافذة إلى المصادر المفتوحة (Opensource)

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

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

عندما نقول أن “مصدر مفتوح” ويمكن للجميع التعديل عليه، فهنا نقصد أن للجميع الحق في رؤية الكود وتغييره وإعادة إصداره فقط على نسخه الشخصية وليست على البرنامج الأساسي، فهذا الأمر يتطلب صلاحيات خاصة يعطيها مدير المشروع المفتوح المصدر لبعض الأشخاص حسب رؤيته وطريقته الخاصة، ويتم العمل على هذه المشاريع عبر برامج إدارة التغييرات أو لنقل التحكم بالإصدارات Version Control System – VCS

حسناً عندما نتحدث عن مصادر مفتوحة وعن Version Control System فإننا نتحدث عن متنافسين قويين هما SVN و CVS فدعونا نتحدث حول العوامل المشتركة والفكرة الأساس وثم نقوم بطرح الإختلافات والمميزات لكل منها عن الآخر

Version Control System :-
هي عبارة عن أنظمة تهتم بترتيب وتنظيم البرمجة الجماعية -التعاونية- بحيث يستطيع الفريق العمل على نفس المشروع في نفس الوقت ويقوم البرنامج بإتاحة أخر نسخة معدلة من الملفات للجميع كما ويقوم بحفظ كل التغييرات بالإضافة أو الحذف أو التعديل.
الـWikipedia تعتبر مثالاً جيداً لتوضيح الأمور ، فهي عبارة عن نظام يتيح لعدد كبير من المستخدمين التعديل على نفس المقال وإضافة ما لديهم وحذف ما يجدونه خطأ وتعديل ما يحتاج التعديل، ولكنها في نفس الوقت تحتفظ بكل التغيرات وذلك ليستطيع القائمون على الموقع إستعادة أي مواد محذوفة أو معدلة في حال تطلب ذلك !! يبقى أن نشير إلى أن أنظمة VCS المختلفة لا تعمل بمفردها فهي عادة تكون إضافات لتستخدم مع IDE’s مختلفة ومتنوعة

Concurrent Versions System – CVS :-
نظام إدارة الإصدارات ذو المصدر المفتوح هذا بدأ في الثمانينيات من القرن الماضي وهو الأكثر إنتشاراً في العالم ربما حتى هذه اللحظة، يستخدم كنظيره Client/Server بحيث يكون الكود الأساسي موجود على Server ويتم طلب هذا الكود والتعديل عليه وإعادته للسيرفر مرة أخرى عبر برنامج يدعم CVS عبر الClient ما يميز هذا النظام عن نظيره هو قلة المساحة المستخدمة ويدعم الـRollback بشكل أسهل وإنتشاره وتوفره

Subversion – SVN :-
أيضاً نظام إدارة إصدارات ذو مصدر مفتوح بدأ التطوير عليه بداية هذا القرن عبر شركة CollabNet ، ببساطة القائمون على هذا المشروع يقولون أنهم يسعون لإنشاء نظام يغطي على CVS ويستبدله كلياً وأعتقد أنهم سينجحون في ذلك. فكرة العمل لا تختلف والأساس لا يختلف، ولكن تم حل العديد من المشاكل التي وجدت في النظام السابق .
تم إستخدام هذا النظام في :Apache Software Foundation, KDE, GNOME, Free Pascal, GCC, Python, Ruby, Samba and Mono. كما أنه متوفر في SourceForge.net و Tigris.org ، ويتم إستخدامه في Google Code و BountySource بشكل حصري دون إتاحة CVS كبديل.

مشكلة النظام هو كبر المساحة المستخدمة لكثرة عدد النسخ التي ينشأها ولكنه أكثر سرعة

المشاكل التي تم حلها في هذا النظام:

  • * atomic commit حيث كان النظام القديم يتطلب شبكة موثوقة لعدم قطع النقل خلال عملية الCommit ولكن لا مشكلة بهذا الخصوص مع النظام الجديد
  • إدارة التغييرات الخاصة بالملفات “نسخ، إعادة تسميه،نقل،حذف” فبعضها لم يكن موجوداً في النظام السابق والبعض الأخر تم تطويره
  • إدارة التغييرات في الmetadata الخاصة بالملفات
  • إدارة التغييرات في symbolic links
  • إستخدام بروتوكول http دون بروتوكول خاص

وعدد آخر من الميزات يمكنكم الإطلاع عليها عند القراءة والإستخدام .

في النهاية أنوه إلى أنني سأقوم بكتابة موضوع ملحق قريباً أوضح فيه الجانب العملي حيث سأقوم بإنشاء مشروع على سيرفر وسأستخدم الSVN في إنشاء المشروع وتعديله وجلبه مرة أخرى كمستخدم آخر .

مصادر مفيدة:
Revision control
Concurrent Versions System
Subversion
SVN vs CVS

دمتم بود

نشر ونوقش في: سوالف سوفت، المشروع ، شبكة فلسطين للحوار

أضف تعليقاً

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s