कोडबेस

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

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

सबवर्सन (सॉफ़्टवेयर), गिट (सॉफ़्टवेयर) और अस्थिर  इस वर्कफ़्लो को संभालने के लिए उपयोग किए जाने वाले लोकप्रिय टूल के उदाहरण हैं, जो ओपन सोर्स प्रोजेक्ट्स में आम हैं।

छोटी परियोजनाओं के लिए, इसका कोड फाइलों के गैर-प्रबंधित सेट के रूप में रखा जा सकता है (यहां तक ​​कि लिनक्स कर्नेल को कई वर्षों तक फाइलों के सेट के रूप में बनाए रखा गया था)।

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

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

उदाहरण
कुछ विशेष रूप से बड़े कोडबेस में शामिल हैं:
 * Google: मोनोलिथिक, 1 बिलियन फाइलें, 9 मिलियन सोर्स कोड फाइल्स, सोर्स कोड की 2 बिलियन लाइन्स, कुल मिलाकर 35 मिलियन कमिट, 86 टीबी कुल आकार (जनवरी 2015)
 * फेसबुक: मोनोलिथिक, 8 जीबी (इतिहास सहित रेपो 54 जीबी, 2014), सैकड़ों हजारों फाइलें (2014) * लिनक्स कर्नेल: वितरित, कोड की 15 मिलियन से अधिक पंक्तियां ( और कर्नेल संस्करण 3.10)

यह भी देखें

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