पब्लिश होने की तारीख: 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 से ज़्यादा प्रपोज़ल मिलते हैं. मुझे नहीं लगता कि मेंटर, हर सवाल को पूरी जानकारी के साथ पढ़ सकते हैं. इसलिए, शुरुआत में ही कम्यूनिकेट करना ज़रूरी है. प्रोजेक्ट में पहले से शामिल हों. साथ ही, पक्का करें कि आपका प्रस्ताव दमदार हो और उसमें ज़रूरी जानकारी शामिल हो.
- अगर आपको नहीं चुना जाता है, तो इसका मतलब यह नहीं है कि सब कुछ खत्म हो गया. अब आपके रेज़्यूमे में, ओपन सोर्स में किए गए अहम योगदान शामिल हैं. इसका इस्तेमाल, गर्मियों में मिलने वाले अन्य मौकों के लिए आवेदन करने के लिए करें. आपने पहले ही काफ़ी मेहनत कर ली है!
आखिरी मगर ज़रूरी बात:
"हर व्यक्ति को किसी खास काम के लिए बनाया गया है और उस काम को करने की इच्छा हर व्यक्ति के दिल में डाली गई है." — रूमी
पढ़ने के लिए धन्यवाद.