بسم الله الرحمن الرحيم،
من أول التحديات التي تواجه المشاريع الجماعية على شبكة الإنترنت هي اعتماد طريقة مشاركة الكود أو كافة ملفات المشروع عموماً. سأحصر حديثي عن المشاريع التي يتم تطويرها من قبل أعضاء منتدى ما، كل منهم يسكن في بلد مختلف وقارة مختلفة.
هناك ثلاثة أساليب مرّت علي خلال تجوالي وعملي في مثل هذه المشاريع. سأتحدث عن كل منها مبرزاً محاسنها ومساوئها:
الأسلوب الأول
اعتماد المنتدى كطريقة لتبادل الملفات بشكل كامل. فلنفرض أن الفريق مؤلف من ثلاثة مبرمجين: جابر، عماد، وصالح. في هذا الأسلوب يبدأ جابر بالعمل، ثم يرسل كامل ملفات المشروع إلى المنتدى. ثم يلتقط عماد التعديلات ويكمل عليها، ثم يرفع التعديلات الجديدة إلى المنتدى، ليلتقطها صالح ويزيد عليها من عنده… وهكذا.
نلاحظ أن العمل لا يتم بالتوازي. فلا يستطيع أحد العمل قبل أن يتم زميله تعديلاته ويرسلها إلى المنتدى. طبعاً هذه مشكلة كبيرة لأننا فقدنا إحدى فوائد العمل كفريق، وهي إنجاز أكثر من مهمة بنفس الوقت.
الأسلوب الثاني
وهو تحسين على الأسلوب السابق. حيث يتكفل أحد الأعضاء بالإشراف على مشاركة ملفات المشروع. في هذا النظام يستطيع مبرمجونا الثلاثة العمل على التوازي وبنفس الوقت، وتقع على عاتق المشرف مهمة استقبال التعديلات من كل منهم ودمجها مع بعضها وإعادة طرح الملفات في المنتدى بصورتها الكاملة محتوية كافة التعديلات.
كما نلاحظ، هذا الأسلوب يتطلب وجود من يلعب دور المشرف، وهو دور يتطلب معرفة بعمليات الدمج ووعي كامل بكافة التعديلات التي يقوم بها الأعضاء. بعبارة أخرى، يجب أن يكون خبيراً وربما متعدد المواهب أيضاً.
المخطط أدناه مثال على مشروع جماعي باستخدام هذا الأسلوب. لاحظ العمليات التي يقوم بها المشرف بعد أن يقوم أي من الأعضاء برفع تعديلات جديدة في المنتدى (اضغط على الصورة لتكبيرها).
هذا هو الأسلوب الذي اتبعـَتـْه الشبكة العربية لمطوري الألعاب في مشروع لعبة وادي الملوك.
الأسلوب الثالث
اعتماد أداة تشارُك لإدارة التعديلات ونشرها دون الحاجة لمشرف. كمثال، البرنامج Visual SourceSafe، أو بديله الأحدث Visual Studio Team System من مايكروسوفت. و Perforce و AlienBrain و SVN و Mercurial. كلها تقوم عملياً بدور مشابه. باختصار، هي تضع نفسها بدلاً من المشرف في الأسلوب السابق.
تستطيع هذه الأدوات القيام بعمليات الدمج تلقائياً في أغلب الأحيان، كما أنها توفر إمكانية تنزيل التعديلات فقط بدلاً من إعادة تنزيل كامل المشروع في كل مرة يودّ الشخص الحصول على النسخة الأخيرة من المشروع. هذه الميزة ليست متوفرة في الأسلوبين السابقين، وتبرز أهميتها مع تضخم حجم ملفات المشروع، حيث قد يصبح من المتعذر إعادة تنزيل كامل المشروع كل يوم أو يومين مثلاً.
المخطط أدناه مثال على مشروع جماعي باستخدام هذا الأسلوب. المخطط يفترض استخدام نظام Mercurial مع موقع كود بليكس لمشاركة الملفات (اضغط على الصورة لتكبيرها).
هذا الأسلوب مستخدم في مشروع لعبة عبر السدم في الشبكة العربية لمطوري الألعاب. حيث تم اعتماد خدمات موقع كود بليكس مع نظام ميركوريال لتسهيل التشارك بالكود وملفات المشروع الأخرى كملفات الـ 3D والإكساءات والأصوات وغيرها.
العقبة الوحيدة في هذا الأسلوب هو أن التعامل مع أداة تشارُك ليس أمراً بديهياً، وإنما يحتاج إلى القليل من التدريب قبل أن يستطيع أعضاء الفريق استخدامه والاستفادة منه، وهذا ما سأقوم بعمله إن شاء الله في التدوينة القادمة.