पब्लिश होने की तारीख: 28 अक्टूबर, 2025
मैं हर्ष सिंह हूँ. मैं आईआईटी (आईएसएम) धनबाद में केमिकल इंजीनियरिंग के फ़ाइनल ईयर का छात्र हूँ. साथ ही, साल 2025 में मैंने Google Summer of Code (GSOC) में हिस्सा लिया था. इस पोस्ट में, GSoC में शामिल होने के मेरे सफ़र के बारे में बताया गया है. साथ ही, इसमें कुछ ऐसी चीज़ों के बारे में बताया गया है जो मैंने इस दौरान सीखीं.
GSoC से पहले: एक्सटेंशन डेवलपमेंट के बारे में जानना
कॉलेज के पहले साल में, मेरी तरह कई और छात्र-छात्राओं को भी हमारे कॉलेज के आधिकारिक टेक क्लब, CyberLabs में शामिल होने की इच्छा थी. तैयारी करने के लिए, मैंने एक सीनियर से बात की. उसने मुझे एक Chrome एक्सटेंशन दिखाया, जिसे उसने क्लब में शामिल होने के लिए बनाया था. यह वेब डेवलपमेंट के उस स्टैंडर्ड तरीके से बिलकुल अलग था जिसके बारे में मुझे पता था. यह स्क्रिप्ट इंजेक्ट करने और अपने ब्राउज़र पर वेबसाइटों में बदलाव करने का एक शानदार तरीका लगता था.
मैंने कई एक्सटेंशन एपीआई का इस्तेमाल किया है. साथ ही, मेनिफ़ेस्ट V2 से V3 में ट्रांज़िशन होते हुए भी देखा है. मैंने इनका इस्तेमाल करके एक छोटा प्रोजेक्ट बनाया. इसके बाद, मुझे CyberLabs में शामिल होने का मौका मिला. फिर, मैं कॉलेज की पढ़ाई में व्यस्त हो गया और मैंने कुछ समय के लिए एक्सटेंशन डेवलपमेंट को छोड़ दिया.
हाल ही में, Google Summer of Code (GSoC) के लिए आवेदन करने के बारे में सोचते समय, मुझे Chrome एक्सटेंशन एपीआई पर एक प्रोजेक्ट मिला. मुझे पुरानी यादें ताज़ा हो गईं–"क्या यह अच्छा नहीं होगा कि इस बार हम एक ऐसा एपीआई बनाएं जिसका इस्तेमाल आने वाले समय में कोई छात्र CyberLabs में शामिल होने के लिए करे? यह सबसे अच्छा फ़्लेक्स होगा." मुझे एक्सटेंशन से जुड़ी ज़्यादातर शब्दावली के बारे में पहले से पता है. इसलिए, मुझे लगता है कि यह प्रोजेक्ट मेरे लिए सही है.
लागू करने के लिए तैयार हो रहा है
मैंने अचानक Chrome एक्सटेंशन टीम के डेवलपर रिलेशन इंजीनियर, ओलिवर से संपर्क करने का फ़ैसला किया. मैंने उनसे पूछा कि Chromium के GSoC प्रोग्राम में आवेदन करने वाले व्यक्ति को क्या करना चाहिए, ताकि उसका आवेदन स्वीकार कर लिया जाए. उन्होंने कुछ ही दिनों में जवाब दे दिया! उसका ईमेल बहुत अच्छा था. उसने कहा कि वे सिर्फ़ यह देखना चाहते हैं कि मैं कोडबेस को एक्सप्लोर कर सकता हूँ या नहीं और कुछ C++ लिख सकता हूँ या नहीं.
मैंने अपने कंप्यूटर पर Chromium को सेट अप करके शुरुआत की. यह बहुत मुश्किल था. मुझे पूरे चार दिन लगे और अनगिनत बार कोशिश करने के बाद, आखिरकार मैंने बड़े कोडबेस को सेट अप किया और एक सफल बिल्ड तैयार किया. मुझे ऑनलाइन एक सामान्य समस्या मिली. यह समस्या, उपयोगकर्ता के जेस्चर के बिना sidePanel.open() के बारे में थी. मैंने इसे ठीक करने के लिए एक पैच सबमिट किया. (अब लगता है कि यह एक छोटा सा बदलाव था 🙂). मैंने ओलिवर को अपनी प्रोग्रेस के बारे में ईमेल किया. उन्होंने बताया कि वे इस सुविधा को उपलब्ध कराने का प्लान नहीं कर रहे हैं. हालांकि, उन्होंने यह भी कहा कि मैंने जो काम किया है उससे यह पता चलता है कि मैं इस सुविधा को लेकर गंभीर हूँ. इसके बाद, उन्होंने मुझे साइड पैनल के लिए getPosition तरीके का इस्तेमाल करने का सुझाव दिया. मैंने समस्या का पता लगाया और उन्हें फिर से ईमेल किया. वे बहुत खुश हुए और उन्होंने कहा कि मेरा तरीका, उनकी टीम की चर्चा के मुताबिक था. इससे मुझे प्रोजेक्ट पर आगे बढ़ने का भरोसा मिला. मुझे पता था कि मैं कोड को समझ सकता हूं और उसमें बदलाव कर सकता हूं.
GSoC के लिए मेरा प्रस्ताव
इसके बाद, GSoC का प्रस्ताव तैयार करना था. प्रोजेक्ट के शुरुआती ब्यौरे, "SidePanel API और DNR API" में बहुत ज़्यादा जानकारी दी गई थी. इसलिए, मुझे यह नहीं पता था कि मुझे कौनसे टास्क शामिल करने चाहिए या अपने प्रस्ताव में टाइमलाइन कैसे बनानी चाहिए. मैंने इस बारे में ओलिवर को ईमेल किया था. उसने जवाब दिया कि उसने प्रोजेक्ट के ब्यौरे को अपडेट कर दिया है. मुझे यह देखकर खुशी हुई कि उन्होंने कई एपीआई जोड़े थे. इनमें sidePanel.getPosition एपीआई भी शामिल था, जिस पर मैं पहले से काम कर रहा था.
मेरे प्रस्ताव के मुख्य कॉम्पोनेंट ये थे: प्रोजेक्ट की जानकारी, डिज़ाइन के आइडिया, प्रस्ताव से पहले का काम, और डिलीवर किए जाने वाले आइटम का शेड्यूल. मैंने अपने टास्क के साइज़ का सटीक अनुमान लगाया, क्योंकि इससे पता चलता है कि मुझे काम की पूरी जानकारी है. मैंने अपना प्रस्ताव तैयार कर लिया है और इसकी दो बार समीक्षा हो चुकी है.
मुझे इस बात का अफ़सोस है कि मैंने उन सुविधाओं के लिए डिज़ाइन की खास जानकारी शामिल नहीं की जिन्हें मुझे बनाना था. यह आने वाले समय में आवेदन करने वालों के लिए एक अहम सलाह है. उदाहरण के लिए, साइड पैनल बंद करने के लिए एपीआई का सुझाव देते समय, मुझे पैरामीटर के बारे में बताना चाहिए था. साथ ही, अपने विकल्पों के बारे में सही वजहें देनी चाहिए थीं. इसके अलावा, मुझे यह भी बताना चाहिए था कि मैं मुश्किल मामलों को कैसे हैंडल करूंगा और सभी ब्राउज़र के लिए एपीआई को स्टैंडर्ड कैसे बनाया जा सकता है. इससे, विषय के बारे में ज़्यादा जानकारी मिलती.
Chromium एक्सटेंशन प्रोजेक्ट के संदर्भ में, WECG (WebExtensions Community Group, जिसे "वी-सी-जी" कहा जाता है) एक अहम संस्था है. यहां नए एपीआई डिज़ाइन पर औपचारिक तौर पर चर्चा की जाती है. GSoC की अवधि के दौरान, योगदान देने वालों को इस ग्रुप में अपने एपीआई के सुझाव देने पड़ सकते हैं. इसलिए, GSoC के प्रस्ताव में डिज़ाइन का आइडिया तैयार रखना बहुत फ़ायदेमंद होता है. इससे मेंटर को पता चलता है कि आप इस अहम चरण के लिए तैयार हैं और GSoC की अवधि के दौरान अच्छा काम कर सकते हैं.
मई की शुरुआत में, मुझे ईमेल मिला. इसमें बताया गया था कि मुझे स्वीकार कर लिया गया है! 🙂
GSoC के दौरान मेरे योगदान
GSoC की अवधि बहुत शानदार थी. मेरे मेंटर, सोलोमन बहुत अच्छे थे. हमारी हर हफ़्ते होने वाली मीटिंग बहुत फ़ायदेमंद होती थी. इससे मुझे अपने काम को सही तरीके से पूरा करने में मदद मिलती थी. मुझे अमित पी के बारे में भी पता चला, जो एक योगदानकर्ता हैं. जब भी मुझे कोई समस्या हुई, उन्होंने मेरी बहुत मदद की. WECG की मीटिंग में शामिल होने से मुझे बहुत कुछ सीखने को मिला. मैंने देखा कि उस लेवल पर चीज़ें कैसे काम करती हैं और यह समझा कि अनुभव इतना मायने क्यों रखता है. मैंने वहां अपने एपीआई के सुझावों पर चर्चा की और मुझे दूसरे ब्राउज़र वेंडर से मंज़ूरी मिल गई.
मैंने शुरुआत में कई सीएल (बदलावों की सूची) खोलीं. कोड की समीक्षाओं की वजह से, बाद में मेरी प्रोग्रेस धीमी हो गई. हालांकि, मुझे इस पर काम करने में खुशी हुई. मैंने Side Panel API में ये मुख्य योगदान दिए हैं:
sidePanel.getLayout()एपीआईsidePanel.close()एपीआईsidePanel.onOpened()औरsidePanel.onClosed()इवेंट (ये Microsoft के लाइफ़साइकल के सुझाव पर आधारित थे)
Commands API के लिए मेरी अन्य सीएल पर अब भी काम चल रहा है. यह इस बात पर निर्भर करता है कि GSoC के बाद मैं कितना सक्रिय रहता हूं 🙂. मेरी फ़ाइनल रिपोर्ट में, आपको इसकी पूरी जानकारी मिल सकती है. यह रिपोर्ट, मेरे GSoC प्रोजेक्ट पेज पर "कोड देखें" लिंक में उपलब्ध है.
ओलिवर डंक, सोलोमन किनार्ड, केल्विन जियांग, डेवलिन क्रोनिन, टॉम लुकाज़ेविक़्ज़, और एंड्रिया ओरू का खास धन्यवाद. इन्होंने मेरे लगभग सभी सीएल की समीक्षा की. मुझे बहुत खुशी हो रही है कि मेरा कोड Chrome का हिस्सा बन गया है. मेरे मेंटर ने कहा कि मेरे अंदर "ज़िम्मेदारी" की भावना बहुत ज़्यादा है. यह मेरे लिए बहुत बड़ी तारीफ़ थी.
रैप अप
अगर आप मुझसे पूछें कि GSoC ने मुझे क्या दिया, तो यह सिर्फ़ तकनीकी ज्ञान से ज़्यादा था. इससे मुझे एक अहम मीटिंग में शामिल होने का मौका मिला. इस मीटिंग में, एक्सटेंशन डेवलपर के लिए ज़रूरी विषयों पर चर्चा हुई. यह मेरा पहला काम था, जिसे किसी ऐप्लिकेशन में इस्तेमाल किया गया था. मुझे मरीज़ों के मेंटर मिले. उन्होंने मेरा मार्गदर्शन किया और मुझे बहुत कुछ सिखाया. इससे मुझे बहुत कुछ सीखने को मिला.
हमें उम्मीद है कि हमारी कहानी, Chromium में योगदान देने या Google Summer of Code में शामिल होने के इच्छुक लोगों के लिए मददगार साबित होगी.
GSoC के लिए आवेदन करने वाले लोगों के लिए सलाह
- ऐसा आइडिया चुनें जो आपको वाकई पसंद हो. आपकी सबसे पहली प्राथमिकता, लोगों की दिलचस्पी होनी चाहिए. अपने कौशल को हमेशा बेहतर बनाया जा सकता है. हालांकि, जब चीज़ें मुश्किल हो जाती हैं, तब जुनून ही आपको आगे बढ़ने में मदद करता है. मैंने दोनों तरह के काम किए हैं. मेरा भरोसा करो: जब आपको किसी काम में दिलचस्पी नहीं होती है, तो गड़बड़ी होने पर आप दूसरों को ज़िम्मेदार ठहराते हैं. हालांकि, अगर आपको काम पसंद है, तो आप इसे एक चुनौती के तौर पर देखेंगे.
- मुकाबले से न डरें. मैंने देखा है कि कम्यूनिटी चैनलों में आवेदन करने वाले अन्य लोगों की जानकारी देखने के बाद, कई लोग निराश हो जाते हैं. हर अच्छे प्रोजेक्ट के लिए, आपको प्रतिस्पर्धा का सामना करना पड़ेगा. अपनी ताक़तों पर फ़ोकस करें. अगर आपने पहले किसी लाइब्रेरी के साथ काम किया है, तो उस लाइब्रेरी का इस्तेमाल करने वाला कोई प्रोजेक्ट ढूंढें. आपके पास एक खास फ़ायदा होगा, क्योंकि आपके पास अपने अनुभव के आधार पर कुछ नया करने का मौका होगा.
- अपनी किस्मत को स्वीकार करें और कम्यूनिकेशन पर ध्यान दें. मान लेते हैं कि GSoC में शामिल होने के लिए, किस्मत का साथ मिलना ज़रूरी है. कुछ लोकप्रिय प्रोजेक्ट के लिए, एक या दो स्लॉट के लिए 300 से ज़्यादा प्रपोज़ल मिलते हैं. मुझे नहीं लगता कि मेंटर, हर सवाल को पूरी जानकारी के साथ पढ़ सकते हैं. इसलिए, शुरुआत में ही कम्यूनिकेट करना ज़रूरी है. प्रोजेक्ट में पहले से शामिल हों. साथ ही, पक्का करें कि आपका प्रस्ताव दमदार हो और उसमें ज़रूरी जानकारी शामिल हो.
- अगर आपको नहीं चुना जाता है, तो इसका मतलब यह नहीं है कि आपको कभी नहीं चुना जाएगा. अब आपके रेज़्यूमे में, ओपन सोर्स में किए गए अहम योगदान शामिल हैं. इसका इस्तेमाल करके, गर्मियों में मिलने वाले अन्य मौकों के लिए आवेदन करें. आपने पहले ही काफ़ी मेहनत कर ली है!
आखिरी मगर ज़रूरी बात:
"हर व्यक्ति को किसी खास काम के लिए बनाया गया है और उस काम को करने की इच्छा हर व्यक्ति के दिल में डाली गई है." — रूमी
पढ़ने के लिए धन्यवाद.