मेरी कंपनी समर्थन के लिए भुगतान करने वाले बड़े संगठनों पर साइट पर स्थापित एक एप्लिकेशन के संदर्भ में "सामान्य" रिलीज बनाम रखरखाव रिलीज के सवाल से जूझ रही है। सबसे पहले मुझे अपनी शर्तों को परिभाषित करने दें:सामान्य रिलीज बनाम रखरखाव रिलीज पर नीति?
- कल्पना कीजिए कि हमने उत्पाद के संस्करण 1.0, 1.1 और 1.2 जारी किए हैं। ये हैं जिन्हें मैं "सामान्य" रिलीज करता हूं, यानी वे विकास की मुख्य शाखा से अगली रिलीज हैं, जिसमें सभी नवीनतम और सबसे बड़े बग फिक्स और एन्हांसमेंट (संभवतः प्रत्येक रिलीज के दसियों) शामिल हैं।
- अब कल्पना करें कि 1.0 पर कुछ बड़ेशॉट ग्राहक एक शो-स्टॉपिंग मुद्दे की रिपोर्ट करते हैं जो किसी के सामने नहीं आया है। समस्या अभी भी 1.2 में मौजूद है, और दुर्भाग्यवश 1.3 कई हफ्तों या महीनों के लिए नहीं है। इसलिए हम 1.0.1 "रखरखाव" रिलीज बनाने के लिए 1.0 पर हमारे कोड को ब्रांच करते हैं, जिसमें केवल एक ही समस्या है जो समस्या को हल करता है।
यह दृष्टिकोण ग्राहक को खुश करता है क्योंकि हम एक दिन या उससे भी अधिक समय में अपनी समस्या को ठीक करते हैं, बजाय उन्हें अगले सामान्य रिलीज तक सप्ताहों तक प्रतीक्षा करने की बजाय। इसके अलावा, क्योंकि रखरखाव रिलीज में केवल एक छोटा बदलाव होता है, उन्हें व्यापक यूएटी प्रक्रिया के माध्यम से जाने की आवश्यकता नहीं होती है, जबकि यदि वे अगले सामान्य रिलीज में अपग्रेड करते हैं, जो कई संस्करण हो सकते हैं, तो उन्हें 30 या 40 मिलेंगे उत्पाद में परिवर्तन होता है कि (उनके जोखिम-विपरीत राय में) व्यापक यूएटी की आवश्यकता होती है।
- यह महंगा है हमें बना सकते हैं और हमारे सॉफ्टवेयर
- एक से अधिक संस्करण का समर्थन यह छड़ी-में-कीचड़ ग्राहकों नवीनतम संस्करण के पीछे बहुत दूर गिर करने की अनुमति देता करने के लिए:
- यह अंततः उन ग्राहकों को भविष्य में अपग्रेड करने की प्रक्रिया को जटिल बनाता है, क्योंकि उनकी स्थापना प्रत्येक अन्य 1.0 ग्राहक से काफी अलग है (अगर उनके रखरखाव को किसी भी तरह बदल दिया गया है तो उनके डेटाबेस को अपग्रेड करना विशेष रूप से जटिल है)
समस्या यह है कि है
तो मैं सोच रहा था कि इस मुद्दे पर हर किसी का रुख क्या है? रखरखाव रिलीज के प्रसार के माध्यम से आप अपनी पीठ के लिए रॉड बनाने के बिना ग्राहक को खुश कैसे रखते हैं? उदाहरण के लिए, क्या आप रखरखाव रिलीज के रूप में कुछ श्रेणियों को ठीक करने की अनुमति देते हैं, लेकिन जोर देते हैं कि अन्य सामान्य रिलीज में अन्य प्रकार किए जाते हैं?
स्पष्टीकरण: बग-फ्री सॉफ़्टवेयर लिखना कुल समाधान नहीं है, क्योंकि उपर्युक्त संदर्भ में "समस्या" बाहरी प्रणाली के व्यवहार में एक अप्रत्याशित परिवर्तन हो सकता है जिस पर हमारा उत्पाद निर्भर करता है।
ग्राहक => ग्राहक * एस *, मेरे उत्तर में एक बग है :) – Graviton
निरंतर एकीकरण (जो हमारे पास है) के साथ भी, आपको अभी भी ऐसी स्थिति हो सकती है जहां आप एक सप्ताह या उससे अधिक दूर पूरा कर सकें बड़ी सुविधा, इसलिए आप अभी मुख्य शाखा जारी नहीं कर सकते हैं। उस स्थिति में, क्या आप नवीनतम संस्करण (उपरोक्त उदाहरण में 1.2.1) को रखरखाव रिलीज जारी करेंगे, न कि वर्तमान में वे संस्करण के लिए? यह कम से कम संस्करणों के प्रसार को कम करेगा, भले ही वह अभी भी ग्राहक को बहुत सी यूएटी करने के लिए छोड़ देता है अगर वे एक फिक्स चाहते हैं। –
हम जावा शॉप हैं, और मुझे प्रीप्रोसेसर निर्देशों के बराबर कुछ भी पता नहीं है, लेकिन मैं नहीं देख सकता कि वे उन मामलों में कैसे काम करेंगे जहां आंशिक रूप से लागू सुविधा ने सिस्टम के कुछ हिस्सों में बदलाव किए हैं उस सुविधा के बाहर।किसी भी मामले में मुझे लगता है कि एक ही परिणाम (यानी नए प्रेषित कोड को छोड़कर) अंतिम रिलीज से शाखाबद्ध करके और आवश्यक सुधार करने के लिए हासिल किया जा सकता है। –