मैं एक बहुत बड़े शोध के नेतृत्व वाले ओपन-सोर्स प्रोजेक्ट पर काम कर रहा हूं, जिसमें अन्य नियमित योगदानकर्ताओं का एक समूह है। क्योंकि परियोजना अब काफी बड़ी है, एक कंसोर्टियम (दो पूर्णकालिक कर्मचारियों और कुछ सदस्यों से बना) परियोजना को बनाए रखने के लिए प्रभारी है, निरंतर एकीकरण (CI), आदि। उनके पास अभी बाहरी एकीकरण के लिए समय नहीं है। हालांकि योगदान।
यह परियोजना एक "कोर" ढांचे से बना है, लगभग आधे-एक-मीलियन-या-कोड की पंक्तियों में, "प्लगइन्स" का एक गुच्छा जो कंसोर्टियम और कई बाहरी प्लगइन्स द्वारा बनाए रखा जाता है, जिनमें से अधिकांश हम ' टी भी के बारे में पता
वर्तमान में, हमारे CI कोर, और बनाए गए प्लगइन्स का निर्माण करते हैं।
हमारे सामने एक बड़ा मुद्दा यह है कि अधिकांश योगदानकर्ता (और विशेष रूप से सामयिक लोग) 90% बनाए गए प्लगइन्स का निर्माण नहीं कर रहे हैं, इसलिए जब वे कोर में परिवर्तनशील बदलावों का प्रस्ताव देते हैं (जो कि इन दिनों काफी नियमित आधार पर होता है), उन्होंने जाँच की कि GitHub पर पुल अनुरोध करने से पहले कोड उनकी मशीन पर संकलित है।
कोड काम करता है, वे खुश हैं, और फिर सीआई ने इमारत का निर्माण किया और समस्याएं शुरू हुईं: संकलन एक कंसोर्टियम-बनाए गए प्लगइन में विफल रहा, कि योगदानकर्ता ने उसकी मशीन पर निर्माण नहीं किया।
उस प्लगइन में उदाहरण के लिए CUDA जैसे थर्ड-पार्टी लाइब्रेरियों पर निर्भरता हो सकती है , और उपयोगकर्ता नहीं चाहता है, पता नहीं कैसे या हार्डवेयर कारणों से नहीं कर सकता है, उस टूटे हुए प्लगइन को संकलित करें।
तो फिर - या तो हो-विलय कर दिया कभी नहीं करने के लिए की अधर में लटकी पीआर रहता विज्ञापन aeternam पीआरएस - या योगदानकर्ता टूट प्लगइन का स्रोत नाम बदल चर greps, कोड, उसका / उसकी शाखा पर धक्का, के लिए प्रतीक्षा करता है बदल जाता है संकलन को समाप्त करने के लिए CI, आमतौर पर अधिक त्रुटियां प्राप्त करता है, और जब तक सीआई खुश नहीं होता है, तब तक प्रक्रिया को दोहराता है - या कंसोर्टियम में पहले से ही ओवरबुक किए गए स्थायी में से एक हाथ देता है और अपनी मशीन पर पीआर को ठीक करने की कोशिश करता है।
उन विकल्पों में से कोई भी व्यवहार्य नहीं है, लेकिन हम यह नहीं जानते कि इसे अलग तरीके से कैसे किया जाए। क्या आप कभी भी अपनी परियोजनाओं की एक समान स्थिति से सामना कर चुके हैं? और यदि हां, तो आपने इस समस्या को कैसे हैंडल किया? क्या कोई उपाय है जो मैं यहाँ नहीं देख रहा हूँ?