जब एक निर्भरता की महत्वपूर्ण कार्यक्षमता टूट जाती है और विकास को बाधित करता है तो क्या करें?


12

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

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

मैं भाग्यशाली था कि फिक्स सरल था ( और यह कि किसी ने पहले ही कर दिया था ), इसलिए मैं इस मुद्दे के आसपास पहुंचने में सक्षम था। लेकिन क्या होगा अगर यह पुस्तकालय मेरे आवेदन के विकास के लिए महत्वपूर्ण था? क्या होगा अगर मेरे विकास को रोक रहा बगफिक्स अन्य लोगों के लिए एक व्यापक प्रसार मुद्दा नहीं था, इसलिए यह जल्दी ठीक नहीं हुआ, जैसा कि इस बार हुआ?

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

और, निश्चित रूप से, घंटों या दिनों के लिए कार्यालय की कुर्सियों पर तलवारबाजी एक विकल्प नहीं है ...

जवाबों:


19

यह एक कारण है कि आप ओपन-सोर्स सॉफ्टवेयर का उपयोग कर रहे हैं, है ना?

आप के लिए एक ही तर्क बना सकता है "क्या होता है अगर मेरी बहुत महंगी, मालिकाना, बंद-स्रोत लाइब्रेरी अचानक खत्म हो जाती है? क्या मेरे लिए इसे ठीक करने के लिए [बड़ी, अखंड सॉफ्टवेयर कंपनी] में कोई उपलब्ध होगा?" ओपन-सोर्स सॉफ्टवेयर के साथ, कम से कम आपके पास उस बग को ठीक करने का मौका है।

यदि आपका सॉफ़्टवेयर एक ओपन सोर्स लाइब्रेरी के लिए महत्वपूर्ण निर्भरता लेता है, तो जोखिम को कम करने के लिए तीन चीजें हैं:

  1. कोड बेस से परिचित हों, शायद खुद भी योगदान दे रहे हों। यह एक और कारण है कि आपने ओपन-सोर्स क्यों चुना, है ना?

  2. यदि पहला पुस्तकालय नीचे गिरता है तो एक फॉल-बैक लाइब्रेरी रखें। यही कारण है कि आप इंटरफेस को प्रोग्राम करते हैं; ताकि आप कार्यान्वयन को बदल सकें यदि आपको करना है, तो ठीक?

  3. स्थिरता के लिए अपनी आवश्यकता के विरुद्ध रक्तस्राव-बढ़त के लिए अपनी इच्छा को संतुलित करें (अर्थात अल्फा सॉफ़्टवेयर का उपयोग न करें)। तुम्हें पता था कि तुम क्या कर रहे थे, है ना?


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

11

उन अनुप्रयोगों को विकसित करने का समाधान जहां बग या सुविधाओं की कमी के कारण आपके काम को रोकने का एक उच्च जोखिम है, उच्च जोखिम पुस्तकालयों का उपयोग नहीं करना है। बोरिंग और लंगड़ा, मुझे पता है ।।

आपने कहा कि यह एक अल्फा रिलीज है। महत्वपूर्ण परियोजनाओं के लिए अल्फ़ा रिलीज़ का उपयोग न करें। यह बीटा रिलीज़ भी नहीं है, अकेले 1.0 दें तो इस तरह की उम्मीद की जानी चाहिए। एक परियोजना में इस चरण का पूरा बिंदु समस्याओं को खोजना और परियोजना को कठोर बनाना है।

यदि आप खुद को इस स्थिति में पाते हैं तो आपको मूल रूप से वही करना होगा जो आपने किया था (हमने बिल्कुल वही काम किया है)। इसे ठीक करें और प्रोजेक्ट को पीआर करें।

लेकिन समाधान समझदार कार्यक्षमता और एपीआई के साथ अधिक स्थिर पुस्तकालयों का उपयोग कर रहा है या कम से कम एक स्थिर संस्करण के लिए पीछे की संगतता बना रहा है। आपको किसी ऐसी चीज पर 100% निर्भर रहना चाहिए जिस पर आपका कोई नियंत्रण नहीं है और सफल होने के लिए आवश्यक है।


1

आमतौर पर एडेप्टर या रैपर के पीछे तीसरे पक्ष के पुस्तकालयों को छिपाने की सिफारिश की जाती है जो आप खुद लिखते हैं। इसके दो गुना फायदे हैं:

  • आप अपने किसी भी कोड को बदले बिना किसी दूसरे के साथ तीसरे पक्ष के पुस्तकालय को स्वैप कर सकते हैं
  • आप अपने खुद के एडॉप्टर इंटरफेस के खिलाफ अपने बाकी कोड को प्रोग्राम कर सकते हैं। पुस्तकालय के साथ एक अस्थायी समस्या के मामले में, बस अपने स्वयं के ठूंठ / नकली या पुस्तकालय की कार्यक्षमता के सरलीकृत संस्करण में प्लग करें। इस तरह से आपके डाउनस्ट्रीम सुविधाओं का विकास और परीक्षण अवरुद्ध नहीं है (भले ही पूर्ण कार्यक्रम की तैनाती अभी भी है)।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.