Google समर ऑफ़ कोड और Chrome एक्सटेंशन

मैं चीन में रहने वाला एक छात्र हूं. फ़िलहाल, मैं दूसरे साल की पढ़ाई कर रहा हूं. मुझे वेब डेवलपमेंट का बहुत शौक है. अपने पहले साल में, मैंने कॉलेज के एक टेक्निकल क्लब में शामिल हुआ. इस क्लब से मुझे कोडिंग और ओपन सोर्स के बारे में पता चला. क्लब में, मुझे एक जैसे विचार रखने वाले ऐसे पार्टनर मिले जिन्हें कोडिंग पसंद है. साल 2023 की शुरुआत में, मुझे इनसे Google Summer of Code के बारे में पता चला. Google के इस ग्लोबल प्रोग्राम में, छात्र-छात्राओं को ओपन-सोर्स संगठनों से जोड़ा जाता है. साथ ही, उन्हें ओपन-सोर्स गतिविधियों में हिस्सा लेकर, गर्मी की छुट्टियों का सदुपयोग करने के बारे में बताया जाता है.

मैंने अपना आवेदन सबमिट कर दिया है. सौभाग्य से, मुझे स्वीकार कर लिया गया. गर्मियों की छुट्टियों में, मैंने Chrome एक्सटेंशन के सैंपल वाले रिपॉज़िटरी में योगदान दिया. यह मेरे लिए यादगार और अहम अनुभव रहा. मुझे बहुत कुछ सीखने को मिला है. जैसे, असरदार तरीके से बातचीत करना, कोडिंग की स्किल, और प्लान बनाने की क्षमता.

GSoC 2023 खत्म होने वाला है. ऐसे में, GSoC में अपने कुछ अनुभव शेयर करना मेरे लिए फ़ायदेमंद होगा. इस पोस्ट में, जीएसओसी में मेरी भागीदारी के आधार पर, इस प्रोग्राम की सामान्य प्रोसेस के बारे में कम शब्दों में बताया गया है. हमें उम्मीद है कि इससे आपको मदद मिलेगी!

GSoC में योगदान देने की मेरी कहानी

मैंने Chromium GSoC 2023 प्रोजेक्ट के लिए आवेदन किया है. इसमें मेरा मुख्य काम, मौजूदा Chrome एक्सटेंशन के सैंपल को अपग्रेड करना होगा, ताकि वे मेनिफ़ेस्ट V3 में काम कर सकें. इसमें कुछ मिलती-जुलती स्क्रिप्ट और दस्तावेज़ भी शामिल हैं.

शुरुआत में

मुझे पहली बार फ़रवरी 2023 में जीएसओसी के बारे में पता चला था. हालांकि, मुझे नहीं पता था कि मुझे आवेदन करना है या नहीं. उस समय मुझे कुछ समस्याएं थीं:

  • मैं शर्मीली हूं और अंग्रेज़ी मेरी मातृभाषा नहीं है. इसलिए, मेंटर से बातचीत करना मेरे लिए मुश्किल हो सकता है.
  • जीएसओसी की कम्यूनिटी दुनिया भर से आती हैं. ऐसे में, टाइम ज़ोन के अंतर को मैनेज करना मुश्किल हो सकता है.
  • जीएसओसी एक ऐसा मशहूर प्रोग्राम है जिसमें कई लोग हिस्सा लेते हैं. इसलिए, मुझे लगता है कि मेरे चुने जाने की संभावना कम है.

हालांकि, हम भरोसे के साथ कह सकते हैं कि इनमें से कोई भी समस्या नहीं थी.

अपनी कहानी बताने से पहले, मुझे साल 2022 की शुरुआत में हुई एक घटना के बारे में बताना है. इस घटना की वजह से, मुझे जीएसओसी में हिस्सा लेने का मौका भी मिला. मुझे मेनिफ़ेस्ट V2 पर आधारित ब्राउज़र एक्सटेंशन को मेनिफ़ेस्ट V3 पर माइग्रेट करना था. माइग्रेशन पूरा करने के लिए, मुझे दस्तावेज़ देखना पड़ा और एपीआई में हुए हर बदलाव को समझना पड़ा. मुझे यह भी देखना था कि रेफ़रंस के लिए काम के सैंपल उपलब्ध हैं या नहीं. मेरे लिए नए एपीआई को समझना और कोड को ट्रांसफ़र करना काफ़ी मुश्किल है.

इसलिए, जब मुझे GSoC प्रोजेक्ट की सूची ब्राउज़ करने और MV3 से जुड़ा आइडिया मिला, तो मैं काफ़ी उत्साहित हो गया. मुझे मेनिफ़ेस्ट V3 एक्सटेंशन के सैंपल को बेहतर बनाने और आने वाले समय में डेवलपर के लिए सुविधाएं उपलब्ध कराने में दिलचस्पी थी.

मार्च में, मैंने अपने मकसद के बारे में कम शब्दों में ईमेल करके, इस प्रोग्राम के एक मेंटर, ओलिवर को बताया:

जीएसओसी प्रोजेक्ट में हिस्सा लेने के लिए आवेदन

नमस्ते,

मैं चीन में रहने वाला/वाली, कंप्यूटर साइंस का अंडरग्रेजुएट छात्र/छात्रा हूं. मुझे जीएसओसी में, Chrome एक्सटेंशन के सैंपल से जुड़े प्रोजेक्ट के बारे में पता चला. मुझे मेनिफ़ेस्ट V3 के सैंपल को बेहतर बनाने में दिलचस्पी थी. मेरे पास एपीआई सैंपल पर काम करने का ज़्यादा अनुभव नहीं है. हालांकि, मेरे पास वेब डेवलपमेंट और MV3 एक्सटेंशन डेवलपमेंट (https://github.com/daidr/paimon-webext) का अनुभव है. इससे मुझे MV3 एपीआई सैंपल की अहमियत का पता चला है. इसलिए, मुझे इस बारे में सीखना और इसमें योगदान देना है. क्या अब भी इस प्रोजेक्ट के लिए आवेदन किया जा सकता है?

धन्यवाद.

कुछ समय बाद, मुझे ओलिवर और अली (ओलिवर के बॉस) से जवाब मिला. उन्होंने मेरे सवालों के जवाब दिए और जीएसओसी के खास नियमों और टाइमलाइन के बारे में पूरी जानकारी दी. उन्होंने मेरे साथ कई काम के रेफ़रंस भी शेयर किए.

यह मेरे लिए एक बहुत बड़ी उपलब्धि थी. इससे मुझे आगे बढ़ने का ज़्यादा जोश मिला. अगर आपको आने वाले समय में होने वाले ओपन-सोर्स इवेंट में हिस्सा लेना है, तो पहला कदम उठाना ज़रूरी है. भले ही, वह GSoC 2024 हो या कोई और इवेंट. कभी भी हिचकिचाए बिना, हिम्मत से कोशिश करें.

आवेदन करने से पहले, मैंने प्रोजेक्ट का कोड देखा और दस्तावेज़ों को पढ़ा. जीएसओसी में, हिस्सा लेने वाले लोगों को कम्यूनिटी से जुड़ने के लिए करीब एक महीने का समय दिया जाता है. हालांकि, पहले से इस बारे में जानने से, मुझे कम्यूनिटी के बारे में ज़्यादा जानकारी मिली और ज़्यादा टारगेट किए गए प्रपोज़ल को लिखने में मदद मिली.

मैंने प्रोजेक्ट में दिए गए शुरुआती गड़बड़ियों को ठीक करने की कोशिश की. ये समस्याएं आसान थीं और इनकी मदद से मुझे प्रोजेक्ट को तुरंत समझने में मदद मिली. मैं अपने मेंटर ओलिवर का आभारी हूं. हालांकि, तब वह मेरे मेंटर नहीं थे. जब भी मुझे किसी बात के बारे में जानकारी चाहिए होती थी, तो वह तुरंत मेरे ईमेल का जवाब देते थे. साथ ही, मेरी समस्याओं को धैर्य से हल करते थे. अगर आपको प्रस्ताव लिखने में समस्याएं आ रही हैं, तो उसे अपने मेंटर को भेजें. इससे आपको यह पता चलेगा कि इसमें सुधार की ज़रूरत है या नहीं.

आवेदन स्वीकार होना

आवेदन करने से पहले, आपको एक प्रस्ताव लिखना होगा. आवेदन फ़ॉर्म के अलावा, प्रस्ताव में आइडिया, लक्ष्य, और शेड्यूल शामिल होने चाहिए. जिस प्रोजेक्ट पर आपको काम करना है उसके आधार पर, आपको प्रस्ताव के लिए एक और टेंप्लेट दिया जा सकता है. रेफ़रंस के लिए, पहले से तैयार किए गए कई प्रस्ताव ऑनलाइन उपलब्ध हैं.

ड्राफ़्ट पूरा करने के बाद, मैंने उसे सुझाव, राय या शिकायत पाने के लिए अपने मेंटर को भेजा. आवेदन सबमिट करने के बाद, आपको लंबे समय तक इंतज़ार करना पड़ता है. मई की शुरुआत में, मुझे सूचना मिली कि मुझे स्वीकार कर लिया गया है.

Code Work

शुरुआती बॉन्डिंग पीरियड के दौरान, मैंने सबसे पहले स्टार्टर बग को ठीक किया. साथ ही, यह भी देखा कि क्या मुझे कोई नई स्किल सीखनी है. बाकी समय, मैं दस्तावेज़ पढ़ने में बिताता हूं.

अपने मेंटर से बातचीत करने के बाद, हमने कुछ लक्ष्यों में बदलाव किया, ताकि टास्क के लिए तय किया गया समय ज़्यादा सही हो. हमने developer.chrome.com पर एक नया पेज बनाने के बारे में भी बातचीत की. इस पेज पर सभी एपीआई सैंपल की सूची होगी. साथ ही, डेवलपर को ज़रूरी सैंपल तुरंत ढूंढने में मदद करने के लिए, बुनियादी फ़िल्टर भी उपलब्ध कराए जाएंगे. यह मेरे लिए काफ़ी मुश्किल काम था. प्रोजेक्ट के बारे में बताने और प्रॉडक्ट की ज़रूरी शर्तों का दस्तावेज़ (पीआरडी) लिखने में, मुझे और मेरे मेंटर को काफ़ी समय लगा.

इस बड़े काम के लिए, हमने तय किया कि हमें सैंपल रिपॉज़िटरी में ऑटोमेटेड स्क्रिप्ट की ज़रूरत है, ताकि रिपॉज़िटरी को ट्रैवर्स किया जा सके और एक JSON फ़ाइल जनरेट की जा सके. इस फ़ाइल में, एक्सटेंशन के सैंपल और उनके इस्तेमाल किए जाने वाले एपीआई की सूची शामिल होगी. developer.chrome.com का दस्तावेज़ रिपॉज़िटरी, अब पेज बनाने के लिए इस फ़ाइल का इस्तेमाल करता है.

मैंने सबसे पहले, सैंपल कोड के अब्स्ट्रैक्ट सिंटैक्स ट्री का विश्लेषण करने और इस्तेमाल किए गए एपीआई की पहचान करने के लिए, Babel का इस्तेमाल करने पर विचार किया. अपने मेंटर के साथ यह आइडिया शेयर करने के बाद, मुझे पता चला कि उन्होंने पहले भी कुछ इसी तरह का काम किया था. इससे मुझे यह पक्का करने में मदद मिली कि इस तरीके से काम किया जा सकता है. कोड पूरा करने के बाद, मेरे मेंटर और उनकी टीम के अन्य सदस्यों ने मुझे अहम सुझाव दिए. इनमें कोड सेगमेंटेशन पर ध्यान देने, कोड स्टाइल को स्टैंडर्ड बनाने, और फ़ंक्शन को सही तरीके से दस्तावेज़ में शामिल करने के बारे में बताया गया.

कई बड़ी और छोटी समीक्षाओं के बाद, कोड को मर्ज कर दिया गया. पूरी थ्रेड को GitHub पर देखा जा सकता है या लाइव पेज देखा जा सकता है.

आखिर में खास जानकारी

अगर आपसे पूछा जाए कि जीएसओसी से मुझे क्या मिला है, तो सबसे पहले, मुझे ब्राउज़र एक्सटेंशन एपीआई से जुड़ी जानकारी मिली है. दस्तावेज़ पढ़ने और नए सैंपल लिखने से, मुझे ब्राउज़र एक्सटेंशन के अलग-अलग एपीआई के बारे में पूरी जानकारी मिली.

इसके अलावा, मैंने कई ऐसी स्किल हासिल की हैं जिनके बारे में मुझे GSoC में शामिल होने से पहले काफ़ी कम पता था. जैसे, कोड की पूरी समीक्षा की प्रक्रिया और पीआरडी बनाना. मैंने वर्कफ़्लो को ऑटोमेट करने के लिए, GitHub ऐक्शन का इस्तेमाल भी शुरू किया है. साथ ही, सभी एक्सटेंशन सैंपल को ट्रैवर्स करने और इस्तेमाल किए गए एपीआई को ट्रैक करने के लिए, Babel का इस्तेमाल करने का तरीका भी सीखा है. इसके अलावा, मुझे Nunjucks टेंप्लेट इंजन का इस्तेमाल करने का पहला मौका मिला. प्रोग्रामिंग के लिए ये स्किल ज़रूरी हैं. मुझे खुशी है कि मैंने इन्हें सीखा है. ओपन-सोर्स कम्यूनिटी में हिस्सा लेना मुझे अच्छा लगता है.

इस गर्मी में मुझे कई यादें मिली हैं. मुझे कोडिंग करना बहुत पसंद है. मुझे ऐसे मेन्टर मिले हैं जिन्होंने मुझे धीरज से मार्गदर्शन किया और दिलचस्प जानकारी दी. इससे मुझे बहुत फ़ायदा हुआ.

कंप्यूटर साइंस के क्षेत्र में जानकारी का कोई अंत नहीं है. जब मैंने दूसरों से अपनी तुलना की, तो मुझे पता चला कि ओपन सोर्स के बारे में मेरी समझ सिर्फ़ एक हिस्सा है. हालांकि, वीडियो से जुड़ी किसी भी तरह की जानकारी काफ़ी मदद कर सकती है. मेरा मानना है कि ओपन सोर्स प्रोजेक्ट में हिस्सा लेने के लिए, जीएसओसी एक बेहतरीन शुरुआत है.

मुझे उम्मीद है कि आने वाले समय में, ओपन-सोर्स गतिविधियों में हिस्सा लेने के लिए, मेरे अनुभव से आपको कुछ मदद मिलेगी.

Google Summer of Code में हिस्सा लेने वाले लोगों के लिए, यहां कुछ सुझाव दिए गए हैं:

  1. अपने हिसाब से कोई आइडिया चुनें: मेरा मानना है कि आइडिया ढूंढते समय, आपकी प्राथमिकता आपकी पसंद होनी चाहिए. इसके बाद, आपकी स्किल होनी चाहिए. इस रणनीति से, योगदान देने की पूरी प्रोसेस के दौरान आपका उत्साह बना रहेगा.
  2. क्वालिटी पर ध्यान दें, न कि संख्या पर: GSoC में शामिल होने के अपने मौके बढ़ाने के लिए, कई प्रस्ताव सबमिट किए जा सकते हैं. हालांकि, मेरा मानना है कि क्वालिटी ज़्यादा अहम है, क्योंकि इंसान की ऊर्जा सीमित होती है. आखिर में, दो या तीन आइडिया पर फ़ोकस करना ज़्यादा मददगार हो सकता है.
  3. नई चीज़ों से न घबराएं: ऐसी टेक्नोलॉजी आज़माने में न झिझकें जिनका इस्तेमाल आपने किसी प्रोजेक्ट में नहीं किया है. आपको नई टेक्नोलॉजी के बारे में जानने के लिए, कम्यूनिटी से जुड़ने का करीब एक महीना और उन्हें लागू करने के लिए पूरी गर्मी मिलेगी. बस आगे बढ़ें!
  4. प्रोजेक्ट के बारे में पहले से जान लें: उदाहरण के लिए, डेवलपमेंट से जुड़े दस्तावेज़ पढ़ें, पहले किए गए बदलावों का इतिहास और समस्याएं देखें, और पिछले पुल रिक्वेस्ट को स्किम करें. प्रोजेक्ट के बारे में पहले से पूरी जानकारी होने पर, आपको ज़्यादा बेहतर प्रस्ताव तैयार करने में मदद मिलेगी.
  5. लगातार संपर्क बनाए रखें: अपने मेंटर से नियमित तौर पर संपर्क करें. साथ ही, समस्याओं का सामना करते समय बेझिझक सवाल पूछें. भले ही, आपने आवेदन करने से पहले या स्वीकार किए जाने के बाद ऐसा किया हो. ज़्यादातर मेंटर, समस्याओं को हल करने में आपकी मदद करने के लिए तैयार रहते हैं. इससे वे आपकी प्रोग्रेस पर भी नज़र रख पाते हैं.

पढ़ने के लिए धन्यवाद.