আমার GSoC যাত্রা: Chrome এক্সটেনশনে অবদান রাখা

হর্ষ সিং
Harsh Singh

প্রকাশিত: ২৮ অক্টোবর, ২০২৫

আমি হর্ষ সিং, ধানবাদের আইআইটি (আইএসএম) তে কেমিক্যাল ইঞ্জিনিয়ারিংয়ে বি.টেকের শেষ বর্ষের ছাত্র এবং ২০২৫ সালে আমি গুগল সামার অফ কোড (জিএসওসি) তে অংশগ্রহণ করেছিলাম। এই পোস্টে জিএসওসিতে ভর্তি হওয়ার আমার যাত্রা এবং জড়িত থাকার সময় আমি কী শিখেছি তা ভাগ করে নেওয়া হয়েছে।

GSoC-এর আগে: এক্সটেনশন ডেভেলপমেন্ট আবিষ্কার করা

প্রথম বর্ষে, অন্য অনেকের মতো, আমিও আমাদের কলেজের অফিসিয়াল টেক ক্লাব, সাইবারল্যাবসে যোগদান করতে আগ্রহী ছিলাম। প্রস্তুতির জন্য, আমি একজন সিনিয়রের কাছে গেলাম যিনি আমাকে ক্লাবে প্রবেশের জন্য তৈরি করা একটি ক্রোম এক্সটেনশন দেখালেন। এটি আমার পরিচিত স্ট্যান্ডার্ড ওয়েব ডেভেলপমেন্ট থেকে সম্পূর্ণ আলাদা ছিল। এটি আপনার নিজস্ব ব্রাউজারে স্ক্রিপ্ট ইনজেক্ট করার এবং ওয়েবসাইট পরিবর্তন করার একটি দুর্দান্ত উপায় বলে মনে হয়েছিল।

আমি অনেক এক্সটেনশন API ব্যবহার করেছি, এমনকি ম্যানিফেস্ট V2 থেকে V3 তে রূপান্তর প্রত্যক্ষ করেছি। আমি সেগুলি ব্যবহার করে একটি ছোট প্রকল্প তৈরি করতে সক্ষম হয়েছি, সাইবারল্যাবসে প্রবেশ করেছি এবং তারপর কলেজ জীবনে ব্যস্ত হয়ে পড়েছি, কিছু সময়ের জন্য এক্সটেনশন ডেভেলপমেন্ট পিছনে ফেলে রেখেছি।

সম্প্রতি, গুগল সামার অফ কোড (GSoC) এর জন্য আবেদন করার কথা ভাবছিলাম, তখন আমি Chrome Extensions API গুলির উপর একটি প্রকল্পের কথা ভেবেছিলাম। স্মৃতিচারণটি আমাকে খুব কষ্ট দিয়েছিল - "এবার কি এমন একটি API তৈরি করা ভালো হবে না যা ভবিষ্যতে কোনও দ্বিতীয় বর্ষের শিক্ষার্থী সাইবারল্যাবসে প্রবেশের জন্য ব্যবহার করবে? এটাই হবে সেরা ফ্লেক্স।" যেহেতু আমি আমার পূর্ববর্তী কাজের বেশিরভাগ এক্সটেনশন পরিভাষা ইতিমধ্যেই বুঝতে পেরেছি, তাই প্রকল্পটি আমার জন্য উপযুক্ত বলে মনে হচ্ছে।

আবেদনের প্রস্তুতি নিচ্ছেন

একান্ত ইচ্ছায়, আমি ক্রোম এক্সটেনশন টিমের ডেভেলপার রিলেশনস ইঞ্জিনিয়ার অলিভারের সাথে যোগাযোগ করার সিদ্ধান্ত নিলাম। আমি তাকে জিজ্ঞাসা করলাম ক্রোমিয়ামের GSoC প্রোগ্রামের জন্য একজন সফল আবেদনকারী হতে কী কী লাগবে। সে কয়েক দিনের মধ্যেই উত্তর দিল! তার ইমেলটি খুবই উৎসাহব্যঞ্জক ছিল; সে বলল যে তারা শুধু দেখতে চায় যে আমি কোডবেসটি অন্বেষণ করতে পারি এবং কিছু C++ লিখতে পারি।

আমি আমার মেশিনে Chromium সেটআপ করে শুরু করেছিলাম। এটা সত্যিই একটা কঠিন কাজ ছিল; অবশেষে বিশাল কোডবেস সেটআপ করতে এবং একটি সফল বিল্ড পেতে আমার পুরো চার দিন এবং অসংখ্য প্রচেষ্টা লেগেছিল। আমি অনলাইনে একটি সহজ সমস্যা খুঁজে পেয়েছি—ব্যবহারকারীর অঙ্গভঙ্গি ছাড়াই sidePanel.open() সম্পর্কে কিছু—এবং এটি ঠিক করার জন্য একটি প্যাচ জমা দিয়েছি। (পিছনে ফিরে তাকালে, এটি একটি ছোট পরিবর্তন ছিল 🙂)। আমি অলিভারকে আমার অগ্রগতি সম্পর্কে ইমেল করেছিলাম। সে আমাকে বলেছিল যে এটি এমন কিছু নয় যা তারা সমর্থন করার পরিকল্পনা করছে, তবে সে আরও বলেছিল যে আমি যে কাজ করেছি তা দেখানোর জন্য যথেষ্ট যে আমি গুরুতর। তারপর সে আমাকে সাইড প্যানেলের জন্য getPosition পদ্ধতিতে কাজ করার পরামর্শ দিয়েছিল। আমি এটি বের করেছিলাম, তাকে আবার মেইল ​​করেছিলাম, এবং সে সত্যিই খুশি হয়েছিল, বলেছিল যে আমার পদ্ধতি তাদের দল যা আলোচনা করছিল তার সাথে সঙ্গতিপূর্ণ ছিল। এটি আমাকে প্রকল্পটি নিয়ে এগিয়ে যাওয়ার আত্মবিশ্বাস দিয়েছে, জেনে যে আমি কোডটি বুঝতে এবং পরিবর্তন করতে পারি।

আমার জিএসওসি প্রস্তাব

এরপর ছিল GSoC প্রস্তাব। প্রাথমিক প্রকল্পের বিবরণ, "SidePanel APIs & DNR APIs," খুবই বিস্তৃত ছিল, তাই আমি নিশ্চিত ছিলাম না যে কোন নির্দিষ্ট কাজগুলি তালিকাভুক্ত করব বা আমার প্রস্তাবে কীভাবে একটি সময়রেখা তৈরি করব। আমি অলিভারকে এই বিষয়ে ইমেল করেছিলাম, এবং সে উত্তর দিয়েছিল যে সে প্রকল্পের বিবরণ আপডেট করেছে। আমার আনন্দের বিষয় হল, সে বেশ কয়েকটি API যোগ করেছে, যার মধ্যে sidePanel.getPosition APIও রয়েছে যার উপর আমি ইতিমধ্যেই কাজ করছিলাম।

আমার প্রস্তাবের মূল উপাদানগুলি ছিল প্রকল্প সম্পর্কে ধারণা, নকশার ধারণা, প্রস্তাব-পূর্ব কাজ এবং প্রদানযোগ্য কাজের সময়সূচী। আমি আমার কাজের আকার সঠিকভাবে নির্ধারণ করেছি, কারণ এটি জড়িত কাজের সম্পূর্ণ বোধগম্যতা প্রদর্শন করে। আমি আমার প্রস্তাবটি খসড়া করেছি এবং এটি দুবার পর্যালোচনা করেছি।

একটি বিষয়ের জন্য আমি দুঃখিত, যা ভবিষ্যতের আবেদনকারীদের জন্য একটি বড় পরামর্শ, আমি যে বৈশিষ্ট্যগুলি তৈরি করার পরিকল্পনা করেছি তার জন্য সঠিক নকশার স্পেসিফিকেশন অন্তর্ভুক্ত না করা। উদাহরণস্বরূপ, সাইড প্যানেল বন্ধ করার জন্য একটি API প্রস্তাব করার সময়, আমার প্যারামিটারগুলি রূপরেখা করা উচিত ছিল, আমার পছন্দগুলিকে ন্যায্যতা দেওয়া উচিত ছিল, আমি কীভাবে এজ কেসগুলি পরিচালনা করব তা ব্যাখ্যা করা উচিত ছিল এবং সমস্ত ব্রাউজারের জন্য API কীভাবে মানসম্মত করা যেতে পারে তা বর্ণনা করা উচিত ছিল। এটি আরও গভীর বোঝাপড়া প্রদর্শন করত।

Chromium এক্সটেনশন প্রকল্পের প্রেক্ষাপটে, একটি গুরুত্বপূর্ণ অংশ হল WECG (WebExtensions Community Group, যার উচ্চারণ "wee-CG"), যেখানে নতুন API ডিজাইনগুলি আনুষ্ঠানিকভাবে আলোচনা করা হয়। GSoC সময়কালে, অবদানকারীদের এই গ্রুপে তাদের API প্রস্তাবগুলি পিচ করার প্রয়োজন হতে পারে। অতএব, আপনার GSoC প্রস্তাবে একটি নকশা ধারণা প্রস্তুত থাকা একটি বিশাল সুবিধা, কারণ এটি পরামর্শদাতাদের দেখায় যে আপনি এই গুরুত্বপূর্ণ পদক্ষেপের জন্য প্রস্তুত এবং GSoC সময়কালে ভাল করছেন।

মে মাসের প্রথম দিকে, আমি ইমেলটি পেয়েছিলাম—আমাকে গ্রহণ করা হয়েছিল! 🙂

জিএসওসি চলাকালীন আমার অবদান

GSoC পিরিয়ডটি অসাধারণ ছিল। আমার পরামর্শদাতা, সলোমন, অবিশ্বাস্যভাবে ভালো ছিলেন, এবং আমাদের সাপ্তাহিক উৎপাদনশীল সভাগুলি আমাকে সঠিক পথে রাখতে সাহায্য করেছিল। আমি একজন সহযোগী অবদানকারী, অমিত পি-এর সাথেও পরিচিত হয়েছিলাম, যিনি যখনই আমি হতাশ হয়ে পড়তাম তখনই তিনি আমাকে অনেক সাহায্য করতেন। WECG মিটিংয়ে যোগদান আমার চোখ খুলে দিয়েছিল; আমি দেখেছি কীভাবে সেই স্তরে জিনিসগুলি কাজ করে এবং বুঝতে পেরেছিলাম কেন অভিজ্ঞতা এত গুরুত্বপূর্ণ। আমি সেখানে আমার API প্রস্তাবগুলি নিয়ে আলোচনা করেছি এবং অন্য একটি ব্রাউজার বিক্রেতার কাছ থেকে সবুজ সংকেত পেয়েছি।

আমি শুরুতে বেশ কয়েকটি CL (পরিবর্তনের তালিকা) খুলেছিলাম। কোড পর্যালোচনার কারণে পরে আমার অগ্রগতি ধীর হয়ে যায়, কিন্তু আমি এটি চালিয়ে যেতে পেরে খুশি। আমার প্রধান মার্জ করা অবদানগুলি ছিল সাইড প্যানেল API-তে:

  • sidePanel.getLayout() API
  • sidePanel.close() API
  • sidePanel.onOpened() এবং sidePanel.onClosed() ইভেন্টগুলি (এগুলি মাইক্রোসফ্টের একটি জীবনচক্র প্রস্তাবের উপর ভিত্তি করে তৈরি করা হয়েছিল)

কমান্ডস এপিআই-এর জন্য আমার অন্যান্য সিএলগুলি এখনও কাজ চলছে (জিএসওসি-র পরে আমি কতটা সক্রিয় থাকি তার উপর নির্ভর করে 🙂)। আপনি আমার চূড়ান্ত প্রতিবেদনে বিস্তারিত বিবরণ দেখতে পাবেন, যা আমার জিএসওসি প্রকল্প পৃষ্ঠায় "ভিউ কোড" লিঙ্কের অধীনে পাওয়া যাবে।

অলিভার ডাঙ্ক, সলোমন কিনার্ড, কেলভিন জিয়াং, ডেভলিন ক্রোনিন, টম লুকাসজেউইচ এবং আন্দ্রেয়া ওরুর প্রতি বিশেষ ধন্যবাদ, যারা আমার প্রায় সকল সিএল পর্যালোচনা করেছেন। আমার কোডটি ক্রোমের অংশ হতে দেখে অবাক লাগছে। আমার পরামর্শদাতারা আমাকে "মালিকানা" সম্পর্কে দৃঢ় ধারণা হিসেবে বর্ণনা করেছেন, যা আমার জন্য একটি বিশাল প্রশংসা ছিল।

শেষ করছি

যদি তুমি আমাকে জিজ্ঞাসা করো যে GSoC আমাকে কী দিয়েছে, তাহলে এটা কেবল প্রযুক্তিগত জ্ঞানের চেয়েও বেশি কিছু ছিল। এটা আমাকে টেবিলে বসতে দিয়েছে—যেখানে গুরুত্বপূর্ণ আলোচনা হয়েছিল, এমন আলোচনা যা বিভিন্ন এক্সটেনশন ডেভেলপারদের উপর প্রভাব ফেলবে। এটি ছিল আমার প্রথম কাজ যা বাস্তব-বিশ্বের অ্যাপ্লিকেশনে অবতীর্ণ হয়েছিল। আমি রোগী পরামর্শদাতাদের সাথে দেখা করেছি যারা আমাকে নির্দেশনা দিয়েছিলেন এবং আমাকে অনেক কিছু শিখিয়েছিলেন, যা পুরো অভিজ্ঞতাটিকে অবিশ্বাস্যভাবে সমৃদ্ধ করেছিল।

আমি আশা করি আমার গল্পটি অন্যদের জন্য সহায়ক রেফারেন্স হতে পারে যারা Chromium-এ অবদান রাখতে চান অথবা Google Summer of Code-এর অংশ হতে চান।

GSoC-তে আবেদনকারীদের জন্য টিপস

  1. এমন একটি ধারণা বেছে নিন যা আপনি সত্যিই পছন্দ করেন। আগ্রহ আপনার সর্বোচ্চ অগ্রাধিকার হওয়া উচিত। আপনার দক্ষতা সর্বদা উন্নত করা যেতে পারে, কিন্তু যখন পরিস্থিতি কঠিন হয় তখন আবেগই আপনাকে এগিয়ে যেতে সাহায্য করবে। আমি উভয় পক্ষেরই ছিলাম, এবং বিশ্বাস করুন: যখন আপনি এমন কিছু নিয়ে কাজ করেন যার প্রতি আপনার আগ্রহ নেই, তখন যখন কিছু ভুল হয় তখন আপনি অন্যদের দোষ দেবেন। তবে, যদি আপনি কাজটি ভালোবাসেন, তাহলে আপনি এটিকে একটি চ্যালেঞ্জ হিসেবে দেখবেন যা কাটিয়ে ওঠা সম্ভব।
  2. প্রতিযোগিতায় ভয় পেও না। কমিউনিটি চ্যানেলে আর কে আবেদন করছে তা দেখে আমি অনেক লোককে হতাশ হতে দেখেছি। প্রতিটি ভালো প্রকল্পেই প্রতিযোগিতা থাকবে। তোমার শক্তির উপর মনোযোগ দাও। যদি তুমি আগে কোন লাইব্রেরিতে কাজ করে থাকো, তাহলে এমন একটি প্রকল্প খুঁজে বের করো যেখানে এটি ব্যবহার করা হয়। তোমার একটা সুবিধা থাকবে কারণ তুমি তোমার অনন্য অভিজ্ঞতা কাজে লাগাতে পারো।
  3. ভাগ্যকে স্বীকৃতি দিন এবং যোগাযোগের উপর মনোযোগ দিন। আসুন বাস্তবে বলি, GSoC-তে কিছুটা ভাগ্য জড়িত। কিছু জনপ্রিয় প্রকল্পে ১-২টি স্লটের জন্য ৩০০ টিরও বেশি প্রস্তাব আসে। আমার সন্দেহ আছে যে পরামর্শদাতারা প্রতিটি স্লট বিস্তারিতভাবে পড়তে পারবেন। এই কারণেই প্রাথমিক যোগাযোগ গুরুত্বপূর্ণ। আগে থেকেই প্রকল্পের সাথে জড়িত হন, এবং নিশ্চিত করুন যে আপনার প্রস্তাবটি দৃঢ় এবং মূল বিষয়বস্তুতে পৌঁছায়।
  4. যদি তুমি নির্বাচিত না হও, তাহলে এটাই শেষ নয়। তোমার জীবনবৃত্তান্তে এখন মূল্যবান ওপেন-সোর্স অবদান রয়েছে। গ্রীষ্মকালীন অন্যান্য সুযোগের জন্য আবেদন করার জন্য এটি ব্যবহার করো। তুমি ইতিমধ্যেই কঠোর পরিশ্রম করে ফেলেছো!

শেষ কিন্তু কম গুরুত্বপূর্ণ নয়:

"প্রত্যেককেই কোন না কোন নির্দিষ্ট কাজের জন্য তৈরি করা হয়েছে, এবং সেই কাজের আকাঙ্ক্ষা প্রতিটি হৃদয়ে স্থাপন করা হয়েছে।" - রুমি

পড়ার জন্য ধন্যবাদ।