التفرع (تطوير البرمجيات)

مخطط زمني يوضح تطور توزيعات لينكس ، حيث يُطلق على كل انقسام في الرسم البياني اسم "التفرع".

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

أصل الكلمة

استُخدمت كلمة " fork" بمعنى "الانقسام إلى فروع، والذهاب في طرق منفصلة" منذ القرن الرابع عشر. [ 2 ]

في سياق تطوير البرمجيات، تم استخدام fork بمعنى إنشاء فرع للتحكم في المراجعة بواسطة إريك ألمان في وقت مبكر من عام 1980، في سياق نظام التحكم في شفرة المصدر : [ 3 ]

إنشاء فرع يؤدي إلى "تفرع" نسخة من البرنامج.

كان المصطلح مستخدمًا على يوزنت بحلول عام 1983 لعملية إنشاء مجموعة فرعية لنقل مواضيع النقاش إليها. [ 4 ]

على الرغم من أنه من غير المعروف استخدام مصطلح "fork" بمعنى انقسام مجتمعي خلال نشأة Lucid Emacs (الذي يُعرف الآن باسم XEmacs ) (1991) أو توزيعات برمجيات بيركلي (BSDs) (1993-1994)، فقد استخدم روس نيلسون مصطلح "shattering" بهذا المعنى في عام 1993 (نسبه إلى جون جيلمور ). [ 5 ] وفي عام 1995، استُخدم مصطلح "fork" لوصف انقسام XEmacs، [ 6 ] وأصبح استخدامه مفهومًا في مشروع جنو بحلول عام 1996. [ 7 ]

تُستخدم الكلمة بشكل مشابه لاستدعاء النظام fork() الذي يتسبب في انقسام عملية قيد التشغيل إلى عمليتين عادةً للسماح لهما بأداء مهام مختلفة بالتوازي. [ 8 ]

تفرع البرامج الحرة والمفتوحة المصدر

يجوز قانونًا إنشاء نسخ معدلة من البرامج الحرة والمفتوحة المصدر دون موافقة مسبقة من أولئك الذين يقومون حاليًا بتطوير أو إدارة أو توزيع البرامج وفقًا لتعريف البرامج الحرة وتعريف المصادر المفتوحة : [ 9 ]

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

3. الأعمال المشتقة: يجب أن يسمح الترخيص بالتعديلات والأعمال المشتقة، ويجب أن يسمح بتوزيعها بموجب نفس شروط ترخيص البرنامج الأصلي.

ديناميكيات المجتمع

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

ذكر إريك س. ريموند ، في مقالته " استيطان النوسفير " [ 12 ] ، أن "أهم سمات التفرع هي أنه يُنشئ مشاريع متنافسة لا يمكنها لاحقًا تبادل الشفرة، مما يؤدي إلى انقسام مجتمع المطورين المحتمل". ويشير في ملف المصطلحات التقنية [ 13 ] إلى ما يلي :

يُعتبر التفرع أمرًا سيئًا، ليس فقط لأنه ينطوي على إهدار كبير للجهود في المستقبل، بل لأنه غالبًا ما يصاحبه قدر كبير من الصراع والخلافات بين المجموعات اللاحقة حول قضايا الشرعية والخلافة وتوجه التصميم. هناك ضغط اجتماعي قوي ضد التفرع. ونتيجة لذلك، فإن التفرعات الكبرى (مثل انقسام Gnu-Emacs / XEmacs ، وانقسام مجموعة 386BSD إلى ثلاثة مشاريع فرعية، وانقسام GCC / EGCS قصير الأجل) نادرة لدرجة أنها تُذكر بشكل فردي في تراث المخترقين.

النتائج والتصنيف

يشير ديفيد أ. ويلر [ 9 ] إلى أربع نتائج محتملة للتشعب، مع أمثلة:

  1. موت التفرع. هذه هي الحالة الأكثر شيوعًا. من السهل إعلان التفرع، لكن يتطلب الأمر جهدًا كبيرًا لمواصلة التطوير والدعم المستقلين.
  2. إعادة دمج الفرع ( على سبيل المثال ، أصبح egcs "مباركًا" باعتباره الإصدار الجديد من مجموعة مترجمات GNU ).
  3. موت الأصل ( على سبيل المثال، نجاح خادم X.Org وموت XFree86 ).
  4. التفرع الناجح، عادةً مع التمايز ( على سبيل المثال ، OpenBSD و NetBSD ).

اقترح مايكل ويدينيوس ، مبتكر نسخة MariaDB من MySQL ، في عام 2026 تصنيفًا للنسخ المتفرعة وفقًا لعلاقتها بالمشروع الأصلي. [ 14 ] وهو يميز بين النسخة المتفرعة الداخلية ، التي يُنشئها المالك الأصلي أو فريق التطوير لأسباب سياسية أو تتعلق بإعادة التصميم أو التطوير، والنسخة المتفرعة الخارجية التي تُنشئها مجموعة خارجية، ويقسم النسخ المتفرعة الخارجية، بحسب تزايد الاختلاف عن الأصل، إلى أربعة أنواع: [ 14 ]

  • التفرع "بدون تغييرات" في اتجاه المصب - إعادة التأسيس بالإضافة إلى التصحيحات بدون تغييرات مرئية للمستخدم، كما هو الحال في حزم التوزيع.
  • الفرع الفرعي - يضيف تغييرات مرئية للمستخدم مع الحفاظ على التوافق مع الأصل، كما هو الحال مع أوبونتو بالنسبة إلى ديبيان .
  • فرع التوافق - يتخلى عن إعادة التأسيس لصالح عمليات الدمج وإعادة الكتابة المختارة، مع الاستمرار في السعي لتحقيق توافق عالٍ، كما هو الحال مع LibreOffice .
  • فرع مستقل - لم يعد يعتمد على الأصل، على الرغم من أنه قد لا يزال يتبنى بعض التعديلات أو الأفكار منه، كما هو الحال مع illumos .

يقدم ويدينيوس هذه المراحل على أنها مراحل قد يمر بها التفرع بدلاً من كونها خصائص ثابتة، ويضع إصدارات MariaDB المتعاقبة في كل مرحلة على حدة، ويجادل بأن التفرع الذي يتم إنشاؤه استجابةً لأصل راكد يجب أن يصبح عاجلاً أم آجلاً مستقلاً أو يتدهور معه. [ 14 ]

التفرع في نظام التحكم في الإصدارات الموزعة

ساهمت أدوات التحكم في الإصدارات الموزعة (DVCS) في نشر استخدام أقل عاطفية لمصطلح "التفرع"، مما أدى إلى طمس التمييز بينه وبين "الفرع". [ 15 ] مع نظام تحكم في الإصدارات الموزعة مثل Mercurial أو Git ، تتمثل الطريقة المعتادة للمساهمة في مشروع ما في إنشاء فرع شخصي من المستودع أولاً، مستقل عن المستودع الرئيسي، ثم السعي لاحقًا لدمج التغييرات فيه. توفر مواقع مثل GitHub و Bitbucket و Launchpad استضافة مجانية لأنظمة التحكم في الإصدارات الموزعة تدعم صراحةً الفروع المستقلة، مما يقلل بشكل كبير من الحواجز التقنية والاجتماعية والمالية أمام تفرع مستودع شفرة المصدر، ويستخدم GitHub مصطلح "التفرع" للإشارة إلى هذه الطريقة في المساهمة في المشروع.

مشتقات خاصة

تسمح تراخيص BSD بتحويل النسخ المتفرعة إلى برامج احتكارية، ويقول مؤيدو حقوق النسخ المفتوحة إن الحوافز التجارية تجعل الاحتكار شبه حتمي. (مع ذلك، يمكن التحايل على تراخيص حقوق النسخ المفتوحة من خلال الترخيص المزدوج مع منح حقوق احتكارية في شكل اتفاقية ترخيص مساهم ). تشمل الأمثلة macOS (المبني على NeXTSTEP الاحتكاري و FreeBSD مفتوح المصدر )، و Cedega و CrossOver (نسختان احتكاريتان من Wine ، مع أن CrossOver تتبع Wine وتساهم فيه بشكل كبير)، وEnterpriseDB (نسخة متفرعة من PostgreSQL ، تضيف ميزات توافق مع Oracle [ 16 ] )، وPostgreSQL المدعوم بنظام تخزين ESM الخاص به [ 17 ] ، وNetezza [ 18 وهو مشتق احتكاري عالي التوسع من PostgreSQL. يساهم بعض هؤلاء الموردين بتغييرات في مشروع المجتمع، بينما يحتفظ البعض الآخر بتغييراتهم كميزة تنافسية خاصة بهم.

ترقيم الإصدارات

غالباً ما تعيد النسخ المتفرعة ترقيم الإصدارات من الأرقام المستخدمة عادةً للإصدارات الأولية للبرامج، مثل 0.0.1 أو 0.1 أو 1.0، حتى لو كان البرنامج الأصلي في إصدار آخر مثل 3.0 أو 4.0 أو 5.0. ويُستثنى من ذلك أحياناً البرامج المتفرعة المصممة لتكون بديلاً مباشراً للمشروع الأصلي، مثل MariaDB لـ MySQL [ 19 ] أو LibreOffice لـ OpenOffice.org .

تفرع البرامج الاحتكارية

في البرمجيات الاحتكارية ، عادةً ما تكون حقوق النشر مملوكة للجهة المُشغِّلة، وليس لمطوري البرمجيات الأفراد. ولذلك، يُلجأ عادةً إلى إنشاء نسخ مُتفرعة من الشيفرة الاحتكارية عندما يحتاج المالك إلى تطوير نسختين أو أكثر، مثل نسخة تعمل بنظام ويندوز ونسخة تعمل بنظام سطر الأوامر ، أو نسخ لأنظمة تشغيل مختلفة، مثل معالج نصوص لأجهزة IBM PC المتوافقة وأجهزة ماكنتوش . وبشكل عام، تركز هذه النسخ المُتفرعة على توفير نفس الشكل والمظهر وتنسيق البيانات والسلوك بين المنصات، بحيث يتمكن المستخدم المُلمّ بإحدى المنصات من العمل بكفاءة أو مشاركة المستندات المُنشأة على المنصة الأخرى. ويُعد هذا في الغالب قرارًا اقتصاديًا يهدف إلى زيادة الحصة السوقية وبالتالي استرداد تكاليف التطوير الإضافية الناتجة عن عملية التفرع.

ومن بين التفرعات الاحتكارية البارزة، والتي لا تنتمي إلى هذا النوع، العديد من أنواع أنظمة يونكس الاحتكارية - والتي تكاد تكون جميعها مشتقة من يونكس AT&T بموجب ترخيص، وتُسمى جميعها "يونكس"، ولكنها أصبحت غير متوافقة فيما بينها بشكل متزايد. [ 20 ] انظر حروب يونكس .

انظر أيضاً

مراجع

  1. يُعدّ مصطلح "الانشقاق" بدلالاته استخدامًا شائعًا، على سبيل المثال
  2. مدخل كلمة "fork" في قاموس أصل الكلمات على الإنترنت، مؤرشف بتاريخ 25 مايو 2012 في أرشيف الإنترنت (Wayback Machine) .
  3. ألمان، إريك. "مقدمة لنظام التحكم في شفرة المصدر". مؤرشف في 6 نوفمبر 2014 في مشروع Wayback Machine . إنجريس، جامعة كاليفورنيا في بيركلي، 1980.
  4. هل يمكن لأحد أن ينشئ "فلسفة الشبكة"؟ ( جون جيلمور ، net.misc، 18 يناير 1983)
  5. التحطيم  - جيد أم سيئ؟ (راسل نيلسون، gnu.misc.discuss، 1 أكتوبر 1993)
  6. ردًا على: مرحبًا فرانز: نظام ويندوز 32 كيلوبايت سيء للغاية!!!!! (بيل دوبوك، cu.cs.macl.info، 21 سبتمبر 1995)
  7. ليجنوكس؟ (ماركوس ج. دانيلز، gnu.misc.discuss، 7 يونيو 1996)
  8. يُشتق مصطلح "fork" من معيار POSIX لأنظمة التشغيل: يُطلق على استدعاء النظام المستخدم لإنشاء نسخة من العملية اسم fork(). روبليس، غريغوريو؛ غونزاليس-باراهونا، خيسوس م. (2012). دراسة شاملة لعمليات تفرع البرمجيات: التواريخ والأسباب والنتائج (ملف PDF) . مؤتمر OSS 2012، المؤتمر الدولي الثامن لأنظمة المصادر المفتوحة. doi : 10.1007/978-3-642-33442-9_1 . مؤرشف (ملف PDF) من الأصل في 2 ديسمبر 2013. تم الاطلاع عليه في 20 أكتوبر 2012 .
  9. 1 2 3 لماذا البرمجيات مفتوحة المصدر / البرمجيات الحرة (OSS/FS، FLOSS، أو FOSS)؟ انظر إلى الأرقام!: التفرع ( مؤرشف في 5 أبريل 2006 على Wayback Machine (ديفيد أ. ويلر))
  10. ستالمان، ريتشارد. "تعريف البرمجيات الحرة" . مؤسسة البرمجيات الحرة. مؤرشف من الأصل في 14 أكتوبر 2013. تم الاطلاع عليه في 15 أكتوبر 2013 .
  11. "تعريف المصادر المفتوحة" . مبادرة المصادر المفتوحة. 7 يوليو 2006. مؤرشف من الأصل في 15 أكتوبر 2013. تم الاطلاع عليه في 15 أكتوبر 2013 .
  12. ريموند، إريك س. (15 أغسطس 2002). "نظرية الاختلاط، ممارسة البيوريتانية" . catb.org . مؤرشف من الأصل في 6 أكتوبر 2006.
  13. نسخة متفرعة مؤرشفة في 8 نوفمبر 2011 على موقع Wayback Machine ( ملف المصطلحات )، أضيفت لأول مرة إلى الإصدار 4.2.2. مؤرشفة في 14 يناير 2012 على موقع Wayback Machine ، 20 أغسطس 2000)
  14. 1 2 3 ويدينيوس، مايكل (29 يناير 2026). "مفاهيم التفرع" . مونتي يقول . تم الاسترجاع في 22 يوليو 2026 .
  15. على سبيل المثال ، ويليس، ناثان (15 يناير 2015). "نسخة معدلة من Node.js تعتمد على "الحوكمة المفتوحة"" . LWN.net . مؤرشف من الأصل في 21 أبريل 2015. تم الاطلاع عليه في 15 يناير 2015. تُعدّ النسخ المعدلة جزءًا طبيعيًا من نموذج التطوير المفتوح، لدرجة أن GitHub يضع زر "إنشاء نسختك الخاصة" في كل صفحة تقريبًا.انظر أيضًا: نيمان، لينوس (2015). فهم تفرع الشفرة في البرمجيات مفتوحة المصدر (أطروحة دكتوراه). كلية هانكن للاقتصاد. ص 57. hdl : 10138/153135 . في حين كان لدى الممارسين سابقًا تعريفات ضيقة نوعًا ما للتفرع، [...] يبدو أن المصطلح يُستخدم الآن على نطاق أوسع بكثير. فالإجراءات التي كانت تُسمى تقليديًا فرعًا، أو توزيعًا جديدًا، أو تجزئة للشفرة، أو تفرعًا زائفًا، وما إلى ذلك، قد يُطلق عليها الآن اسم التفرعات من قِبل بعض المطورين. ويبدو أن هذا يعود، إلى حد كبير، إلى التعريف الواسع واستخدام مصطلح التفرع من قِبل منصة GitHub. 
  16. تم أرشفة قاعدة بيانات المؤسسات في 13 نوفمبر 2006 على موقع Wayback Machine
  17. دعم فوجيتسو لـ PostgreSQL ( مؤرشف في 20 أغسطس 2006 على Wayback Machine)
  18. أرشيف نيتيزا بتاريخ 13 نوفمبر 2006 على موقع Wayback Machine
  19. قمتُ بنسخ مشروع، من أين تبدأ أرقام إصداراتي؟ مؤرشف بتاريخ ٢٦ أغسطس ٢٠١١ في أرشيف الإنترنت
  20. الخوف من التفرع ( مؤرشف في 17 ديسمبر 2012 على موقع Wayback Machine) - مقال عن التفرع في مشاريع البرمجيات الحرة ، بقلم ريك موين
  • حق الشوكة في ويكي كرات اللحم
  • أطروحة دكتوراه تتناول موضوع التفرع: (نيمان، 2015) مؤرشفة في 16 يوليو 2023 في Wayback Machine "فهم تفرع الشفرة في البرمجيات مفتوحة المصدر - دراسة لتفرع الشفرة، وتأثيره على البرمجيات مفتوحة المصدر، وكيف ينظر إليه المطورون ويمارسونه"