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

المونوتون هو أداة برمجية حاسوب تخص مصدر مفتوح تقوم بـ التحكّم الموزّع في المراجعة. ويتتبع المونوتون المراجعات التي تمر بها الملفات كما يصنف مجموعات المراجعات في فصائل ويتتبع تاريخها عبر تعديل مسمياتها. يركز المشروع على التكامل في الأداء. فقد صُمم المونوتون للتعامل مع العمليات الموزعة ويستغل بشدّة مبادئ الكتابة المشفرة أو الكتابة ذات توقيع رقمي ليقتفى أثر مراجعات الملف (من خلال SHA-1secured hash) ولتوثيق تحركات المستخدم عبر توقيعات خوارزمية آر إس إيهالمشفرة والشفرة هي توقيع رقمي

## التصميم

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

### التكامل

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

### سير العمل

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

### الشبكات

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

### التفاصيل الأخرى

تشمل التفاصيل الأخرى للمونوتون:
* الدعم الجيد للعالمية والتوطين
* التصميم المتنقل، المعمول به في سي++
* يستطيع المونوتون استيراد مشاريع [[يستطيع المونوتون استيراد مشاريع نظام النسخ المتلاقية
* توقيع المراجعات باستخدام شهادات RSA
* سهل التشغيل لأن مجموعة الأوامر تشبه تلك التي في نظام النسخ المتلاقية
* التوثيق الجيد

## المساوئ

بالنسبة لإصدار يناير 2008 تحديث،As of January 2008 تشمل مساوئ مونوتون:
* المستخدمون المحتملون لا يستطيعون الفحص (أو المعاينة) من خلال مفوّض (أو وكيل) (وهو الأمر الشائع في بيئة عمل الشركات) لأن البروتوكول ليس http.
* ليس بدرجة الشيوع التي قد ينافس بها DVCS الخاص بالمصدر المفتوح مثل bAZAAR, جت، أو ميركوريال.
* القصور في بعض محاور الأداء لبعض العمليات (أبرزها الدفع الأولى).
* القصور في وجود واجهة مستخدم رسومية. ومع ذلك، بعضها مستمر بما في ذلكTracMtn, وهو مكون إضافي لـ Trac وهو معالج القالب للحافظة وتصفح المستودع،guitone ووهي واجهة واجهة مستخدم رسومية
Qt لإدارة قواعد البيانات وساحات العمل.

### الإنجازات

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

## التطبيقات

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

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

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

## التدعيم

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

## مستخدمو مونوتون

* تستخدم بدجن الآن مونوتون لكلاً من بيدجينج نفسها وليبربل.
* Xaraya
* AuroraUX
* GENESIS
* آي 2 بي