फोर्क (सॉफ्टवेयर विकास)

सॉफ्टवेयर इंजीनियरिंग में प्रोजेक्ट फोर्क तब होता है। जब डेवलपर्स कंप्यूटर सॉफ्टवेयर से स्रोत कोड की एक प्रति लेते हैं और उस पर स्वतंत्र विकास प्रारम्भ करते हैं। सॉफ्टवेयर का एक अलग भाग बनाते हैं। शब्द का अर्थ प्रायः न केवल एक संशोधन नियंत्रण होता है। किन्तु डेवलपर समुदाय में विभाजन भी होता है। जैसे यह विद्वता का रूप है। फोर्किंग के लिए आधार अलग-अलग उपयोगकर्ता प्राथमिकताएं हैं और मूल सॉफ़्टवेयर का स्थिर या बंद विकास है।

नि:शुल्क फ्री और ओपन-सोर्स सॉफ्टवेयर है। जो परिभाषा के अनुसार मूल विकास टीम से पूर्व अनुमति के बिना और कॉपीराइट नियम का उल्लंघन किए बिना अलग किया जा सकता है। चूंकि सॉफ़्टवेयर (जैसे यूनिक्स) के लाइसेंस प्राप्त कांटे भी होते हैं।

व्युत्पत्ति
फोर्क शब्द का उपयोग शाखाओं में विभाजित करने के लिए किया गया है। 14वीं शताब्दी की प्रारम्भ में अलग-अलग प्रकारों से जाना गया था। सॉफ्टवेयर वातावरण में शब्द कांटा (सिस्टम कॉल) को उत्पन्न करता है। जो चल रही प्रक्रिया को दो (लगभग) समान प्रतियों में विभाजित करने का कारण बनता है। जो सामान्यतः अलग-अलग कार्यों को करने के लिए अलग हो जाते हैं। सॉफ्टवेयर विकास के संदर्भ में स्रोत कोड नियंत्रण प्रणाली 1980 की प्रारम्भ में एरिक एलमैन द्वारा संशोधन नियंत्रण शाखा बनाने के अर्थ में कांटा का उपयोग किया गया था।

चर्चा के विषयों को स्थानांतरित करने के लिए एक उपसमूह बनाने की प्रक्रिया के लिए 1983 तक यूज़नेट पर शब्द का उपयोग किया गया था। ल्यूसिड एमाक्स अब एक्स इमैक 1991 या बर्कले सॉफ्टवेयर वितरण (1993-1994) की उत्पत्ति के समय फोर्क का उपयोग सामुदायिक विद्वता के अर्थ में नहीं किया गया है। रस नेल्सन ने 1993 में इस प्रकार के कांटे के लिए बिखरने वाले शब्द का प्रयोग किया। जिसका श्रेय जॉन गिलमोर (कार्यकर्ता) को दिया गया। चूंकि एक्स इमैक विभाजन का वर्णन करने के लिए 1995 तक फोर्क वर्तमान अर्थों में उपयोग में था और 1996 तक जीएनयू प्रोजेक्ट में एक समझा जाने वाला उपयोग था।

फ्री और खुला स्रोत सॉफ्टवेयर का फोर्किंग
नि:शुल्क सॉफ्टवेयर परिभाषा और मुक्त स्रोत परिभाषा दोनों के अनुसार वर्तमान में विकसित, प्रबंधन या सॉफ्टवेयर का वितरण करने वालों की पूर्व स्वीकृति के बिना निःशुल्क और ओपन-सोर्स सॉफ़्टवेयर को नियमित रूप से फोर्क किया जा सकता है:

निःशुल्क सॉफ्टवेयर में कांटे प्रायः विभिन्न लक्ष्यों या व्यक्तित्व संघर्षों पर विवाद से उत्पन्न होते हैं। फोर्क में दोनों पक्ष लगभग समान कोड आधार मानते हैं। किन्तु सामान्यतः केवल बड़ा समूह या जो कोई भी वेब साइट को नियंत्रित करता है। वह पूर्ण मूल नाम और संबंधित उपयोगकर्ता समुदाय को बनाए रखेगा। इस प्रकार फोर्किंग से जुड़ी एक प्रतिष्ठा दंड है। विभिन्न टीमों के बीच संबंध सौहार्दपूर्ण या बहुत कटु हो सकते हैं। दूसरी ओर एक कठोर या नरम कांटा है। जो प्रतिस्पर्धा करने का इच्छा नहीं रखता है। किन्तु अंततः मूल के साथ विलय करना चाहता है।

एरिक एस. रेमंड ने अपने निबंध होमस्टेडिंग द नोस्फियर में कहा गया है कि कांटे की सबसे महत्वपूर्ण विशेषता यह है कि यह प्रतिस्पर्धी परियोजनाओं को जन्म देता है। जो बाद में संभावित डेवलपर समुदाय को विभाजित करते हुए कोड का आदान-प्रदान नहीं कर सकते हैं। वह शब्दजाल फ़ाइल में नोट करता है:

डेविड ए व्हीलर नोट्स फोर्क के चार संभावित परिणाम दर्शाये गये हैं। उदाहरण के साथ:


 * 1) कांटे की मौत। यह अब तक का सबसे सामान्य स्थिति है। कांटे की घोषणा करना सरल है। किन्तु स्वतंत्र विकास और समर्थन जारी रखने के लिए अधिक प्रयास किया गया है।
 * 2) फोर्क का फिर से विलय (उदाहरण के लिए जीएनयू कंपाइलर संग्रह के नए संस्करण के रूप में धन्य हो रहा है।)
 * 3) मूल के अन्त (उदाहरण के लिए X.org सर्वर सफल और एक्सफ्री86 नष्ट हो रहा है।)
 * 4) सफल ब्रांचिंग सामान्यतः भेदभाव के साथ (जैसे ओपेनबीएसडी और नेटबीएसडी)

वितरित पुनरीक्षण नियंत्रण (डीवीसीएस) उपकरण ने शाखा के साथ भेद को धुंधला करते हुए शब्द कांटा के कम भावनात्मक उपयोग को लोकप्रिय बना दिया है। मरक्यूरियल या गिट (सॉफ़्टवेयर) जैसे डीवीसीएस के साथ किसी प्रोजेक्ट में योगदान करने का सामान्य प्रकार पहले रिपॉजिटरी की एक व्यक्तिगत शाखा बनाना है। जो मुख्य रिपॉजिटरी से स्वतंत्र है और बाद में आपके परिवर्तनों को इसके साथ एकीकृत करने का प्रयास करता है। गिटहब, बिट बकेट और लॉन्चपैड (वेबसाइट) जैसी साइटें निःशुल्क डीवीसीएस होस्टिंग प्रदान करती हैं। जो स्पष्ट रूप से स्वतंत्र शाखाओं का समर्थन करती हैं। जैसे कि स्रोत कोड रिपॉजिटरी को फोर्क करने के लिए तन्त्र, सामाजिक और वित्तीय बाधाएं बड़े मापदंड पर कम हो जाती हैं और गिटहब इस पद्धति के लिए अपने शब्द के रूप में फोर्क का उपयोग करता है।

फोर्क्स प्रायः 0.1 या 1.0 से संस्करण क्रमांकन को पुनरारंभ करते हैं। तथापि मूल सॉफ़्टवेयर संस्करण 3.0, 4.0 या 5.0 पर था। एक विरोधाभास तब होता है, जब फोर्क्ड सॉफ़्टवेयर को मूल प्रोजेक्ट के लिए ड्रॉप-इन प्रतिस्थापन के रूप में डिज़ाइन किया जाता है। उदा माईस्क्वेल के लिए मारियाडीबी openoffice.org के लिए लिब्रे ऑफिस।

बीएसडी लाइसेंस फोर्क्स को स्वामित्व सॉफ्टवेयर बनने की अनुमति देता है और कॉपीलेफ्ट समर्थकों का कहना है कि वाणिज्यिक प्रोत्साहन इस प्रकार स्वामित्व को लगभग अपरिहार्य बना देते हैं। कॉपीलेफ्ट लाइसेंस, चूंकि एक योगदानकर्ता लाइसेंस समझौते के रूप में एक स्वामित्व अनुदान के साथ दोहरे लाइसेंसिंग के माध्यम से रोका जा सकता है। उदाहरणों में सम्मिलित हैं। जैसे मैक ओेएस (स्वामित्व NeXTSTEP और ओपन सोर्स फ्रीबीएसडी पर आधारित), सीडेगा (सॉफ्टवेयर) और विदेशी शराब (सॉफ्टवेयर) के स्वामित्व कांटे, चूंकि क्रॉसओवर वाइन को ट्रैक करता है और अधिक योगदान देता है। एंटरप्राइजडीबी पोस्टग्रेएसक्यूएल का कांटा ओरेकल संगतता सुविधाओं को जोड़ता है। उनके स्वामित्व ईएसएम भंडारण प्रणाली के साथ समर्थित पोस्टग्रेएसक्यूएल, और Netezza के पोस्टग्रेएसक्यूएल का स्वामित्व अत्यधिक स्केलेबल व्युत्पन्न होते हैं। इनमें से कुछ विक्रेता सामुदायिक परियोजना में परिवर्तनों का योगदान करते हैं। किन्तु कुछ अपने परिवर्तनों को अपने प्रतिस्पर्धी लाभों के रूप में रखते हैं।

फोर्किंग स्वामित्व सॉफ्टवेयर
स्वामित्व सॉफ़्टवेयर में कॉपीराइट सामान्यतः नियोक्ता संस्था के पास होता है, न कि व्यक्तिगत सॉफ़्टवेयर डेवलपर्स के पास। स्वामित्व कोड इस प्रकार अधिक सामान्य रूप से फोर्क किया जाता है। जब स्वामित्वकर्ता को दो या दो से अधिक संस्करण विकसित करने की आवश्यकता होती है। जैसे कि विंडो (कंप्यूटिंग) संस्करण और कमांड लाइन इंटरफेस संस्करण या अलग-अलग ऑपरेटिंग सिस्टम के संस्करण। जैसे आईबीएम पीसी संगत यन्त्रों के लिए शब्द संसाधक और एप्पल मैकिंटोश कंप्यूटर। सामान्यतः इस प्रकार के आंतरिक कांटे प्लेटफार्मों के बीच समान रूप, अनुभव, डेटा प्रारूप और व्यवहार पर ध्यान केंद्रित करेंगे। जिससे परिचित उपयोगकर्ता भी उत्पादक हो या दूसरे पर उत्पन्न लेखों को साझा कर सके। यह लगभग सदैव अधिक बाजार भागीदारी उत्पन्न करने के लिए आर्थिक निर्णय है और इस प्रकार फोर्क द्वारा बनाई गई अतिरिक्त विकास क्रय मूल्यों का भुगतान करता है।

इस प्रकार का उल्लेखनीय स्वामित्व कांटा स्वामित्व यूनिक्स की कई जाति नहीं है। लगभग सभी लाइसेंस के अनुसार एटी एंड टी यूनिक्स से प्राप्त हुए हैं और सभी को यूनिक्स कहा जाता है। किन्तु तेजी से पारस्परिक रूप से असंगत है। यूनिक्स युद्ध देखें।

यह भी देखें

 * सॉफ्टवेयर कांटे की सूची
 * स्रोत पोर्ट
 * डाउनस्ट्रीम (सॉफ्टवेयर विकास)
 * समूह निर्णय लेना
 * मॉड्यूलर प्रोग्रामिंग
 * मॉडिंग
 * निर्देशित सॉफ्टवेयर
 * निजीकरण
 * टीम प्रभावशीलता
 * डुप्लीकेट कोड
 * रॉम हैकिंग

बाहरी संबंध

 * Right to Fork at Meatball Wiki
 * A PhD examining forking: (Nyman, 2015) "Understanding Code Forking in Open Source Software – An examination of code forking, its effect on open source software, and how it is viewed and practiced by developers"