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