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

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

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

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

जीएसओसी में योगदान देने के मेरे तरीके की कहानी

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

बहुत शुरुआत में

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

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

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

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

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

मार्च में, मैंने प्रभारी मेंटॉर ऑलिवर को मेरे मकसद के बारे में एक छोटा सा ईमेल भेजा था:

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

नमस्ते,

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

धन्यवाद.

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

यह मेरे हाथ में चोट लगने की तरह था, जिससे आगे बढ़ने का मेरा दृढ़ संकल्प था. अगर आपको आने वाले ओपन-सोर्स इवेंट, जैसे कि जीएसओसी 2024 या किसी अन्य इवेंट में हिस्सा लेना है, तो पहला कदम लेना आपके लिए सबसे अहम है. फिर भी, बिना किसी झिझक और हिम्मत के इसे आज़माएं.

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

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

स्वीकार किया जा रहा है

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

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

कोड वर्क

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

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

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

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

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

रैपिंग अप

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

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

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

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

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

जो लोग 'Google समर ऑफ़ कोड' में हिस्सा लेना चाहते हैं उनके लिए यहां मेरे कुछ सुझाव दिए गए हैं:

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

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