مونتون (برنامج)

التصميم

نظرًا لأنه يشبه جنو أرك ويختلف عن الإصدار الجزئى أباتشي سبفيرجن، يتعامل المونوتون بأسلوب توزيعي مع التحكم في الإصدار. ويستخدم المونوتون رموز  SHA-1 HASh ليحدد الملفات ومجموعات الملفات المخصصة كما هو الحال مع جت وميركوريال في محل المراجعة الخطية للأرقام. ويحتفظ كل مشارك بتاريخ مراجعاته مخزّنًا على قاعدة بيانات إس كيو لايت.

التكامل

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

سير العمل

تبدو مونوتون قوية على وجه الخصوص في سير العمل المدمج/المتشعب, وهو ما تحققه جزئيا بالسماح بالمعاينة قبل الدمج

الشبكات

رُغم إن مونوتون تدعُم بالأساس تشكيلة من بروتوكولات الشبكات لمواءمة تفريعات الأكواد, إلا أنها تختصّ الآن باستخدام بروتوكول معتاد يدعى netsync, وهو أقوى وأكفأ ويتشارك في بعض المفاهيم مع cvcup وrsync. (ومع ذلك, وفيما يتعلق بالإصدار 0.27, من المحتمل أنه يستخدم بروتوكول netsync عبر أي مسار يشمل بشكل ملحوظ وصلات ssh). ويمتلك netsync منفذًا لـ أياناالمخصص له (4591) ويتم دعم الإصدارات الأقدم عن طريق مكون إضافي لإجراء تحليل مروري إيثار ريال. وليس هناك خادم مونوتون خاص لأن أي عميل مونوتون يصلح للعمل كخادم.

الإنجازات

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

التطبيقات

تُطبّق المونوتون في اللهجة الجديدة من c++ في مقدمة بوست (مكتبات سي++) ومكتبة Botan للكتابة الشفرية ومكتبة قواعد بيانات إس كيو لايت. وتدعم مونوتون التعديل والتمديد من خلال دوال الهووك المكتوبة في لغة برمجة Lua. وتعمل خاصية بناء العملية في المونوتون عبر buildbot وتشمل اختبارات استرداد واسعة المجال.

المونوتون كإلهام من ألجيت

في أبريل 2005، أصبح المونوتون موضوع مشوّق للغاية في البرمجيات الحرة والمفتوحة المصدر بعد أن ذكره لينوس تورفالدس كبديل ممكن لـ Bit Keeper في عملية تطوير لينكس. وفي نشر بقائمة المراسلة Linux kernel، أشاد تروفالدز بمونوتون في حين انتقض طريقة الهدم (عمومًا كافة أنظمة التحكم في إصدار خادم العميل):
“لا تنزعج بإبلاغي عن الطريقة الهدمية. إذا كان الأمر كذلك، فابدأ بالقراءة عن "مونوتون". ويبدوا أنه من أكثر البدائل صلاحية, لكن لا تتملّق المطور كثيرًا حتى لا يجدوا ما يعملوا عليه. فهم على وعى تام بمشاكلي) 
بدلاً من تبنى مونوتون, قرر تروفالدز أن يكتب نظامه SCM الخاص, جت. ويستخدم تصميم جيت بعض أفكار مونوتون, لكن المشروعان لا يشتركان في أي كود مصدر رئيسي. وركز جيت أكثر على الأداء العالي, الذي استلهمه من التاريخ الطويل لأنماط التعاون الموزعة عالية الطلب التي استخدمها تروفالدز وكتّاب linux kernel.
دار الجدل حول قضيه  هي ما إذا كان استبدال bitkeeper ينبغي أن يدعم cherry picking, بينما يستطيع المخزن التفريعى أن يدعم دفعات متداخلة ويرفض غيرها على أساس فردى. ويجادل تروفالدز أن هذا المنهج "ينتج عن الديناميكيّات والحالات النفسيّة الخاطئة في النظام "بنقل العبء إلى upstream صيانة البرمجيات rather than forcing downstream مخازن معاكسة أكثر من نظيراتها الموافقة وذلك لبذل جهد أكبر للحفاظ على التفريعات من المهملات. وناقش مضيفًا أن مونوتون كانت صائبة في تحولها إلى cherry-picking كجزء تفصيلي لكنها فشلت في تطويعه بما يكفى ليسهل "إلقاء" أي تفريعات غير نظيفة بعد استيفاء غرضها. كما لاحظ تروفالدز أن مونوتون في هذا الوقت لم تحقق مستوى الأداء المطلوب لمشروع بحجم تطوير linux kernel.
تسرى هذه الحجة على خلاف ما يعتقده مطوّرو البرامج من أن cherry picking يعد تفصيلة متقدمة لدرجة أن أداة scm لابد وأن تسعى لتدعيمها. وتعتبر أدوات SCM الأخرى, مثل Darcs قويّة في هذه المنطقة على وجه الخصوص. بالنسبة لإصدار 2010 تحديث اعتبارا من 2010. دعّم كلاً من جيت ومونوتون لبعض الوقت

التدعيم

التدعيم الحالي للبرامج يتم من خلال قوائم المراسلة وآي آر سي  و http://wiki.monotone.ca/