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