लंबे समय के लिए एक पैच भेजने के लिए योजना बनाई है, लेकिन लगातार स्थगित? कठिनाइयों का सामना करना, पता नहीं कहाँ से शुरू करना था? इस लेख में मैं बताऊंगा कि हमने कैसेज़ान में गो योगदान कार्यशाला का आयोजन किया, इसके परिणामों के बारे में, साथ ही उन पाठों के बारे में जो आयोजकों ने सीखे।
स्पॉयलर: यह इस घटना को दोहराने की योजना है जब गो सक्रिय विकास चरण में जाता है (कोड फ्रीज राज्य से बाहर निकलता है)। कट के तहत विवरण देखें।
गो योगदान कार्यशाला क्या है?
समय-समय पर, विभिन्न आकारों के गो प्रोग्रामर की बैठकें दुनिया भर में होती हैं, जिसका उद्देश्य गो के इनसाइड्स का अध्ययन करना और उसमें अपने परिवर्तन भेजना है। यह सब गोफरकॉन के साथ शुरू हुआ।
कोई व्यक्ति दूसरों को वर्कफ़्लो का पता लगाने, किसी समस्या को हल करने और उसे हल करने में मदद करने के लिए आता है, फिर एक समीक्षा के माध्यम से और, आदर्श रूप से, उस बिंदु पर पहुंचें जहां पैच को अपस्ट्रीम में इंजेक्ट किया जाता है। अन्य लोग "फर्स्ट टाइम कंट्रीब्यूटर" के रूप में आते हैं।
यदि आप निम्नलिखित में से किसी एक में रुचि रखते हैं, तो आप भाग लेने में दिलचस्पी ले सकते हैं:
- गो टूलचैन (संकलक, लिंकर, कोडांतरक, ...) के निम्न-स्तरीय विवरणों में विसर्जित करें
- मानक पुस्तकालय या रनटाइम से कुछ फ़ंक्शन को गति दें
- किसी भी पैकेज के लिए मिसिंग उदाहरण या परीक्षण जोड़ें।
- कुछ बहुत डरावने कोड को रिफलेक्टर करें
- दुर्लभ वास्तुकला या OS (आपके पास हार्डवेयर और / या OS है) के लिए समर्थन में सुधार
- उन लोगों के साथ चैट करें जो लंबे समय से गो में योगदान दे रहे हैं
सूची पूरी नहीं है, हर कोई इसमें कुछ पा सकता है।
रूस में कार्यशाला
कुछ बिंदु पर, मैंने फैसला किया कि मैं इस तरह के कार्यक्रम के आयोजन में हाथ बंटाना चाहता था। मैं सबसे अधिक समान हितों वाले लोगों के एक दायरे में रहना चाहता था।
प्रारंभिक कार्यक्रम लगभग 6-10 घंटे लंबा (सबसे अच्छा और सबसे बुरा मामला) था। हैकाथॉन सबसे उपयुक्त प्रारूप दिखता था, लेकिन उस समय प्रायोजकों को ढूंढना संभव नहीं था। लेकिन IWMI और KFU के वैज्ञानिक और व्यावहारिक मंच के लिए वैकल्पिक कक्षाएं संचालित करने का एक अवसर था, सप्ताह में एक बार एक घंटे और एक आधे के लिए। स्पष्ट दोष: भागीदारी के बीच बड़े ब्रेक के कारण, आपको कुछ अतिरिक्त समय बिताना होगा। और पिज्जा नहीं। आह
काफी अप्रत्याशित रूप से, मैं गोलंगशो पॉडकास्ट (119) में अतिथि बन गया , जहां मैंने छात्रों के लिए कुछ समान आचरण के विचार के बारे में बताया। थोड़ी देर बाद, एलेना ग्रेकोवेट्स ने रूसी भाषी समुदाय गो के सुस्त #kfu-go-2018
चैनल बनाया। न केवल KFU के छात्र वहां संवाद कर सकते थे, बल्कि वे सभी भी जो दूरस्थ रूप से भाग लेने के इच्छुक थे।
उसके बाद, विश्वविद्यालय में बैठक के विवरण को मंजूरी दी गई, विशिष्ट तिथियां ज्ञात हुईं। हैकाथॉन के बजाय, उन्हें "गो प्रोग्रामिंग भाषा पाठ्यक्रम" मिला। इससे सामग्री में बहुत बदलाव नहीं हुआ, लक्ष्य समान रहा और घोषणा में स्पष्ट रूप से वर्णित किया गया था।
इसके बाद उन कार्यों की तलाश में ट्रैकर का स्कैन किया गया, जो कम से कम आंशिक रूप से (इससे भी बेहतर - पूरी तरह से) घटना के ढांचे के भीतर किए जा सकते हैं।
पाठ संख्या १वास्तव में, यह पता चला कि कार्यों की सूची में वे हित शामिल थे या जिन्हें मैं व्यक्तिगत रूप से समझता था। यह भी सूची के संकलन के दौरान पहचाना गया था, लेकिन इसे प्रभावित करना मुश्किल है।
शायद यह बेहतर होगा यदि यह सूची अलग-अलग प्रोफाइल और रुचियों वाले कई लोगों से बनी हो।
कोई भी प्रतिभागी गो ट्रैकर के पास जा सकता है और कुछ भी चुन सकता है, लेकिन सूची से कार्यों के लिए, स्पष्टीकरण तैयार थे, और उनमें से कुछ के लिए आंशिक समाधान।
पाठ्यक्रम के दौरान उत्पन्न की गई अधिकांश सामग्री केफू-गो -2018 रिपॉजिटरी में उपलब्ध है। आप वहां भी कर सकते हैं।
पहली मुलाकात
वे छात्र आए जिन्होंने पहले गो पर नहीं लिखा था। उनमें से अधिकांश ने इस तरह की प्रोग्रामिंग भाषा के बारे में भी नहीं सुना है।
हमने गो से स्रोत पर निर्माण का पहला सबक बिताया। विभिन्न कंप्यूटरों पर अलग-अलग थे, जिनमें अप्रत्याशित समस्याएं भी थीं। विभिन्न ओएस, सिस्टम कंपाइलरों के संस्करण (किसी ने 1.4 पर जाने का इरादा नहीं किया), और इसी तरह। ./make.bash
(विंडोज के लिए make.bat
) विभिन्न त्रुटियों के साथ काम नहीं करता था।
जब बहुमत में एक कार्यशील गो होता था, तो हमारा पहला हैलो वर्ल्ड go tool compile
में विहित संदेश go tool compile
करने के लिए go tool compile
था जब एक नया झंडा इसके पास जाता था।
90 मिनट बीत गए: हमने गो के बारे में बात की, इसकी तुलना C ++ से की, एक टूलकिन संकलित की, बूटस्ट्रैप प्रक्रिया को डिसाइड किया, और एक अद्यतन संकलक को एक साथ रखा।
पाठ संख्या २अलग-अलग, यह ध्यान देने योग्य है कि डेलस फ़ार्कहुलिन ने मेरी मदद की। अनुभवजन्य रूप से पता चला है कि अकेले नेतृत्व करने के लिए चार से अधिक लोग बहुत मुश्किल हैं। स्थिति जटिल है, जब प्रतिभागियों में से कोई भी, संरक्षक को छोड़कर, गो को जानता है। आपको कई अतिरिक्त कदम उठाने होंगे। हालांकि, अगर हम में से चार थे, तो यह बहुत आसान होगा (15 छात्र थे)।
गो परियोजना में पहला पैच
दूसरे पाठ के लिए, लक्ष्य का योगदान करने के लिए सीधे जाना था:
- हम डैनियल मार्टी के साथ सहमत थे कि यह सहमत समय पर उपलब्ध होगा और समीक्षा का संचालन करने में सक्षम होगा (यदि पैच तुच्छ है और सही है तो +2 डालें)।
- इल्या तोकर ने एक खरोंच भंडार का सुझाव दिया जहां पहली सीएल (परिवर्तन सूची) भेजना बहुत आसान है। आपको कुछ तोड़ने के जोखिम के बिना काम में गंभीरता की कोशिश करने की अनुमति देता है।
- उन लोगों को डिलीवरी के लिए तैयार किए गए स्टिकर , जिन्होंने गो में पैच को सफलतापूर्वक इंजेक्ट किया।
हम भाग्यशाली थे: खरोंच भंडार टूट गया था। किसी ने रिपॉजिटरी को गलत कोड भेजा और इस वजह से, ट्रायबोट्स (CI परीक्षण) हमेशा विफल रहे। मेरे द्वारा तैयार किए गए कार्यों में से एक को ठीक करना था जो बिल्ड त्रुटि का कारण बन रहा था।
पाठ के अंत तक 6 पैच भेजे गए थे:
CL105415 , CL105395 , CL105356 , CL105416 , CL105355 , CL105375 ।
सभी को स्टिकर मिले।

180 मिनट बीत गए: उन्होंने गो डेवलपमेंट प्रक्रिया को समाप्त कर दिया, सभी को Google CLA जारी किया, गेरिट सेट किया, "हेल्लो वर्ल्ड" पैच भेजे, स्क्रैच रिपॉजिटरी असेंबली की मरम्मत की, और प्रतिभागियों में से एक पैच को गोलंग / गो में भेजने में कामयाब रहे (मर्ज उसी दिन था)।
पाठ संख्या ३अच्छे स्टिकर के लिए "समय पर" आपको एक विश्वसनीय आपूर्तिकर्ता से संपर्क करने की आवश्यकता है। निकटतम बिंदुओं पर सहेजना जहां स्टिकर को काटने के बिना मुद्रित किया जा सकता है, यह एक अच्छा विचार नहीं है। और आप कुछ और के साथ गोफर लोगो को जोड़ नहीं सकते हैं: हाथ में एक इंटेल साइन के साथ एक गोफर स्टिकर के सभी बोधगम्य कानूनों का उल्लंघन करता है।
शेष कक्षाएं एक शिथिल योजना के अनुसार आयोजित की गईं। हम आए और अपने कार्यों पर काम किया, अनुभवों का आदान-प्रदान किया और एक-दूसरे की मदद की। इस तरह की लगभग हर बैठक ने कई पैच भेजे।
फिर कोड फ्रीज हो गया और पाठ्यक्रम तार्किक अंत तक आ गया। इस बिंदु पर, 17 पैच डाले गए थे। हम अभी भी शनिवार को एक साथ मिलते हैं और अलग-अलग गो उपयोगिताओं पर काम करते हैं ...

"दूसरे चरण" की मुश्किलें
सबसे आसान तरीका था पहला कदम उठाना। उन लोगों के लिए जो गिट के साथ काम करने के लिए अनिश्चित हैं, खरोंच रिपॉजिटरी एक महान समाधान है।
न्यूनतम मात्रा के कार्यों को खोजना बहुत मुश्किल नहीं था और बड़े संदर्भ की आवश्यकता नहीं थी। लिंटर की एक किस्म ने यहां मदद की। gometalinter --enable-all
से पैकेज पर " gometalinter --enable-all
" GOROOT
और जो ठीक करना है उसे चुनें।
यह एक स्तर अधिक कार्यों के साथ अधिक कठिन था। मेरे लिए इस तरह का सुझाव देना मुश्किल था, लेकिन उनके लिए यह चुनना मुश्किल था। उसी समय, एक समझ थी कि हम पहले ही लिंटर चेतावनी के सुधार को आगे बढ़ा चुके हैं (यानी, चुनौती गायब हो गई, उत्पादक प्रशिक्षण के लिए नए प्रकार के कार्यों की तलाश करना आवश्यक था)।
सिद्धांत रूप में, गो में परीक्षणों को बेहतर बनाने के लिए एक अच्छा दूसरा-स्तरीय कार्य है: कवरेज बढ़ाना, बेंचमार्क को जोड़ना या परिष्कृत करना, काफी सही या अक्षम परीक्षणों को ठीक करना, प्रतिगमन परीक्षणों की जांच करना, और बहुत कुछ। इसके लिए परीक्षण पैकेज में कुछ विसर्जन की आवश्यकता होती है, लेकिन परिवर्तन की गुंजाइश कम से कम होगी और परिणाम की जांच करना काफी आसान है। लेकिन हर कोई परीक्षण के साथ काम करना पसंद नहीं करता है।
2 वे स्तर के कार्यों के रूप में वे क्या करने में कामयाब रहे इसके उदाहरण:
- एन्कोडिंग / json: अनमरशैलटाइप एरर (
#22369
) में फ़ील्ड का पूरा पथ जोड़ें - समय: समय का अनुकूलन करें। समय और समय। (
#17858
) - cmd / संकलन:
#21735
निर्देशों के धीमे संस्करणों से बचें x86 ( #21735
)
हमने उन्हें कोड फ्रीज के करीब शुरू किया था, इसलिए हमारे पास इसे समाप्त करने का समय नहीं था: 90 मिनट के लिए 2 शनिवार थे, लेकिन यह पर्याप्त नहीं है। इसके अलावा, सभी ने अपने काम पर काम किया। शायद यह आसान होगा यदि कम से कम दो लोग टीमों में विभाजित हो जाते हैं, उदाहरण के लिए, अंक 21735 के मामले में, आप समानांतर में विभिन्न परिकल्पनाओं का परीक्षण कर सकते हैं और समानांतर में संकलक के विभिन्न हिस्सों का अध्ययन कर सकते हैं, फिर ज्ञान साझा कर सकते हैं।
पाठ संख्या ४सबसे अधिक, यह इस विशेष भाग पर ध्यान देने योग्य है, अपरिहार्य गहनता और इसके बाद आने वाले मुद्दों पर ध्यान देने योग्य है। मुझे संदेह है कि ऐसे लोग हैं जो गो के सभी भागों को इतना जानते हैं कि किसी भी विकल्प का समर्थन करने में सक्षम हैं, इसलिए यहां फिर से यह सभी विभिन्न विशेषज्ञों की कमी के लिए आता है।
कार्यशाला v2
ऊपर वर्णित कुछ समस्याओं को एक वैकल्पिक प्रारूप द्वारा हल किया जाएगा, जब तीन सप्ताह के भीतर अधिक जटिल कार्य को इसके समाधान की आवश्यकता नहीं होगी। अगली कार्यशाला को एक निरंतर घटना के रूप में आयोजित किया जाना चाहिए, कम से कम 4-5 घंटे, और आदर्श रूप से एक ब्रेक के साथ और लंबे समय तक।
आमतौर पर, हैकाथॉन प्रारूप का अर्थ है प्रतिभागियों की कुछ तैयारी शुरू होने से पहले, कार्य की पसंद और इसे हल करने के तरीकों का प्रारंभिक विवरण, टीमों का गठन। इससे सफल योगदानों की संख्या बढ़ाने में भी मदद मिल सकती है।
हमें और अधिक आकाओं की जरूरत है जो प्रतिभागियों को वास्तविक समय में समस्याओं के चयन और समाधान में मदद कर सकें।
एक शहर की पसंद प्रतिभागियों की संख्या और उनके भौगोलिक वितरण पर निर्भर करती है। चार विकल्प मेरे सबसे करीब हैं: मॉस्को, इन्नोपोलिस, कज़ान, निज़नी नोवगोरोड।
निष्कर्ष में
गो में योगदान देना शुरू करने के लिए ऐसे हैकथॉन में आना आवश्यक नहीं है, एक प्रेरक उदाहरण मार्को का लेख होगा कि गो में नया कितना योगदान दे रहा है । हालांकि, एक ही इच्छुक लोगों की एक कंपनी में, शुरुआती असुविधा और भ्रम को दूर करना शुरू से अंत तक जाना आसान है।
यदि आप इस विषय के प्रति उदासीन नहीं हैं, तो बने रहें , गोलंग-आर.सैक पर देखें । गो के सक्रिय विकास की अगली अवधि अगस्त 2018 में शुरू होती है: इसके बारे में भूलने के लिए बहुत दूर नहीं, और अच्छी तरह से तैयार करने के लिए समय नहीं होने के भी करीब नहीं।
शुरुआती योगदानकर्ताओं के लिए बोनस सामग्री
आगामी कार्यक्रम