विषय
- #विकास का अवसर
- #ओपनसोर्स योगदान
रचना: 2025-05-03
अपडेट: 2025-05-27
रचना: 2025-05-03 00:00
अपडेट: 2025-05-27 09:42
यह लेख इस बारे में है कि ओपन-सोर्स (Open Source) में रुचि रखने वालों को प्रेरित करना है, लेकिन जो डरते थे कि 'क्या मैं कर सकता हूँ?', 'मुझे कहाँ से शुरू करना चाहिए?'।
आज, मैं ओपन-सोर्स (Open Source) के दरवाज़े पर दस्तक देने के लिए साहस करूँगा, और उस प्रक्रिया में मेरे द्वारा सीखे और महसूस किए गए अनुभव को साझा करना चाहता हूँ।
यदि आप विकास का अध्ययन करते हैं, तो आप अक्सर 'ओपन-सोर्स (Open Source)' शब्द सुनते हैं। GitHub को देखते हुए, आप देखेंगे कि दुनिया को बदलने वाले कई प्रोजेक्ट अपने कोड को खुले तौर पर खोल रहे हैं।
इस तरह से कोड को जनता के लिए जारी करने वाले प्रोजेक्ट को 'ओपन-सोर्स (Open Source)' कहा जाता है।
उदाहरण के लिए, OpenJDK, Spring Framework, Redis, React जैसे बड़े ओपन-सोर्स (Open Source) हैं।
मैंने अब तक कुल 4 बार ओपन-सोर्स (Open Source) में योगदान दिया है। यह ओपन-सोर्स (Open Source) में छोटी-छोटी, छोटी-छोटी सुधार की तलाश करके योगदान कर रहा है, न कि दुनिया को बदलने वाले कार्यों को जोड़ना।
मैं उपरोक्त प्रोजेक्ट की कोड शैली नहीं जानता, और मुझे यह भी नहीं पता कि यह कैसे काम करता है।
आप देख सकते हैं कि आप कोड को पूरी तरह से समझे बिना समुदाय में योगदान कर सकते हैं। मैंने अभी केवल 2 साल के लिए विकास किया है, और मुझे नहीं लगता कि मेरे पास विकास के लिए कोई खास प्रतिभा है।
मैं बस ओपन-सोर्स (Open Source) में योगदान देना और डेवलपर समुदाय के साथ संवाद करना पसंद करता हूँ, इसलिए मैं इन गतिविधियों को जारी रखता हूँ।
ईमानदारी से कहूँ तो, शुरू में, 'क्या यह फिर से शुरू करने के लिए एक पंक्ति जोड़ना अच्छा नहीं होगा?' ऐसा विचार पूरी तरह से खत्म नहीं हुआ था। यह काफी बड़ा था। लेकिन एक और बड़ा कारण था। यह था 'मैं और गहराई से सीखना चाहता हूँ' और 'मैं अपनी समस्याओं को हल करना चाहता हूँ' की आवश्यकता।
टीम प्रोजेक्ट में स्प्रिंग वेबफ्लक्स (Spring WebFlux) का उपयोग करते समय, मुझे इसके अंतर्निहित तकनीकी, प्रोजेक्ट रिएक्टर (Project Reactor) का गहराई से अध्ययन करने का अवसर मिला। मैंने किताबों और दस्तावेजों के माध्यम से अवधारणाओं को समझा, लेकिन वास्तव में जटिल प्रणालियों में यह कैसे काम करता है और अनुकूलित होता हैयह सीधे कोड को देखकर और सामना करके पता लगाया जा सकता था। इसके अलावा, मैंने अक्सर इस बारे में चिंता की कि 'मैं कैसे साबित करूँ कि मैंने रिएक्टर का अध्ययन किया है?' और 'मुझे ओपन-सोर्स (Open Source) में योगदान करना चाहिए!' ऐसा महसूस हुआ।
एक बार 'मैं योगदान करना चाहता हूँ!' तय करने के बाद, यह अस्पष्ट था कि कहाँ से शुरू करें। विशाल कोड में वह हिस्सा ढूंढना जिसे मुझे बदलना था, से लेकर इस बात का अनुमान लगाना कि मेरा बदलाव पूरे सिस्टम को कैसे प्रभावित करेगा, सब कुछ डरावना था।
मैंने बहुत समय लगाया, इस विचार से कि 'अगर मैंने पीआर (PR) अपलोड किया तो क्या होगा?'।
मुझे एहसास हुआ कि मेरा रिएक्टिव स्टैक (Reactive Stack), रेडिस (Redis) जावा क्लाइंट, लेट्यूस (Lettuce) का रिएक्टिव कमांड, रिएक्टर (Reactor) पर आधारित था, और मैं रिएक्टर सीखने के आधार पर रिएक्टर चेन को सीधे संशोधित करके सुधार करना चाहता था।
बस एक फोर्क (fork) करने के बाद, मैंने 'रिएक्टिव (Reactive)', 'रिएक्टर (reactor)' स्ट्रिंग मैचिंग के साथ सभी कोड की जाँच की। मैंने रिएक्टर पब्लिशर (Reactor Publisher) जैसे मोनो (Mono) और फ्लक्स (Flux) के साथ निर्मित सभी चेन को देखा।
कोड की सावधानीपूर्वक जाँच करने के बाद, सौभाग्य से, मुझे एक कोड मिला जो रिएक्टर चेन का उपयोग करता है, जिसकी पठनीयता थोड़ी कम थी और विधि चेनिंग सही ढंग से नहीं की गई थी। यद्यपि यह दुनिया को बदलने वाला सुधार या वास्तुकला परिवर्तन नहीं था, यह एक छोटी और स्पष्ट समस्या थी जिसे मैं समझ और संशोधित कर सकता था। 'ओह, अगर ऐसा है तो मैं भी योगदान कर सकता हूँ!' ऐसा लगा।
मैंने अपनी समझ के आधार पर कोड को सावधानीपूर्वक संशोधित किया और यह जांचा कि क्या यह स्थानीय वातावरण में इरादे के अनुसार काम करता है। भले ही यह एक छोटा बदलाव था, मैंने मौजूदा कोड की शैली का पालन करने और क्या यह अन्य भागों को प्रभावित करेगा, इस बारे में कई बार सोचा, और सावधानी से संपर्क किया।
संशोधित सामग्री को कमिट करने के बाद, अंत में, पीआर (PR) अपलोड करने का समय आ गया। सच कहूँ तो, 'भेजें' बटन दबाने से पहले, मैंने बहुत सोचा और हिचकिचाया। 'क्या इस बदलाव के साथ PR भेजना ठीक है?', 'क्या वे कहेंगे कि मैंने कुछ बहुत ही सामान्य चीज़ें ठीक की हैं?', 'क्या मैं अंग्रेजी में अच्छी तरह से समझा सकता हूँ?' ऐसा चिंतित था।
जैसा कि मैंने पहले कहा था, मुझे इस बात का डर था कि मेरी कमियों के कारण मेरी आलोचना की जाएगी। लेकिन, 'शुरुआत आधी जीत है', 'अगर आप प्रयास नहीं करते हैं, तो आप कुछ भी नहीं सीख सकते' यह सोचकर, मैंने साहस जुटाया और अपनी बदलियों और उनके कारणों को यथासंभव विस्तृत रूप से लिखते हुए PR सबमिट किया।
redis/lettuce - #3061
अंत में, मेरा PR 'मर्ज' हो गया, और मुझे इस तथ्य से वास्तव में एक बड़ी उपलब्धि और गर्व महसूस हुआ कि मैंने जो कोड लिखा और संशोधित किया, वह कई डेवलपर्स द्वारा उपयोग किए जाने वाले एक प्रसिद्ध ओपन-सोर्स (Open Source) प्रोजेक्ट का हिस्सा बन गया।
सबसे बढ़कर, 'मैं भी कर सकता हूँ!' यह आत्मविश्वास हासिल करना सबसे बड़ा फायदा था।
इसे पूरी तरह से समझने की ज़रूरत नहीं है। आप मेरी तरह छोटे से शुरू कर सकते हैं। दस्तावेज़ टाइपो को ठीक करना, अनुवाद में भाग लेना, और साधारण बग रिपोर्टिंग सहित योगदान देने के कई तरीके हैं। महत्वपूर्ण बात है डर को दूर करना और पहला कदम उठाना।
यदि आप गलतियाँ करते हैं, तो वे गलतियाँ आपको समुदाय से प्रतिक्रिया प्राप्त करने और अधिक बढ़ने का अवसर भी प्रदान कर सकती हैं।
यह अपने रिज्यूमे में एक पंक्ति जोड़ने का एक कीमती अवसर भी है, लेकिन सीखने पर आधारित ओपन-सोर्स (Open Source) में योगदान यह साबित करने का एक साधन भी हो सकता है कि आपने वास्तव में कड़ी मेहनत की है।
यह एक ऐसा पोस्ट है जिसपर टिप्पणियां अक्षम हैं।