গুগল সামার অফ কোড এবং ক্রোম এক্সটেনশন

আমি ওয়েব ডেভেলপমেন্ট সম্পর্কে উত্সাহী চীন থেকে একজন সোফোমোর। আমার প্রথম বছরে, আমি আমাদের কলেজে একটি টেকনিক্যাল ক্লাবে যোগদান করি। এই ক্লাব কোডিং এবং ওপেন সোর্স আমার পরিচিতি ছিল. ক্লাবে, আমি একদল সমমনা অংশীদারদের সাথে দেখা করেছি যারা কোডিং পছন্দ করে। এবং তাদের কাছ থেকেই আমি 2023 সালের শুরুতে Google Summer of Code সম্পর্কে শিখেছিলাম। Google-এর দ্বারা সংগঠিত এই গ্লোবাল প্রোগ্রামটি শিক্ষার্থীদের ওপেন-সোর্স সংস্থার সাথে সংযুক্ত করে এবং ওপেন-সোর্স কার্যকলাপে অংশগ্রহণের মাধ্যমে তাদের গ্রীষ্মের ভাল ব্যবহার করতে তাদের গাইড করে।

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

যেহেতু GSoC 2023 শেষের দিকে আসছে, GSoC-তে আমার কিছু অভিজ্ঞতা শেয়ার করা মূল্যবান। এই পোস্টটি সংক্ষিপ্তভাবে আমার নিজের অংশগ্রহণের মাধ্যমে GSoC এর সাধারণ প্রক্রিয়ার সাথে পরিচয় করিয়ে দেবে, আশা করছি আপনার জন্য সহায়ক হবে!

আমি কিভাবে GSoC তে অবদান রেখেছিলাম তার গল্প

আমি Chromium GSoC 2023 প্রকল্পের জন্য আবেদন করেছি, যেখানে আমার প্রধান কাজ হবে কিছু সম্পর্কিত স্ক্রিপ্ট এবং নথি সহ ম্যানিফেস্ট V3-তে কাজ করার জন্য বিদ্যমান Chrome এক্সটেনশন নমুনাগুলি আপগ্রেড করা।

একদম প্রারম্ভকালে

আমি 2023 সালের ফেব্রুয়ারিতে প্রথম GSoC সম্বন্ধে শিখেছিলাম কিন্তু এখনও নিশ্চিত ছিলাম না যে আমি আবেদন করতে চাই। তখন আমার কিছু উদ্বেগ ছিল:

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

যাইহোক, আমি আত্মবিশ্বাসের সাথে বলতে পারি যে এর কোনটিই একটি সমস্যা ছিল না।

আমি আমার গল্প বলার আগে, আমি 2022 এর শুরুতে আমার সাথে ঘটেছিল এমন কিছু সম্পর্কে কথা বলতে চাই। এই ঘটনাটি আমার জন্য GSoC-তে অংশগ্রহণ করার একটি সুযোগ ছিল। আমি ম্যানিফেস্ট V2 এর উপর ভিত্তি করে ম্যানিফেস্ট V3 তে একটি ব্রাউজার এক্সটেনশন স্থানান্তর করতে চেয়েছিলাম। মাইগ্রেশন সম্পূর্ণ করতে, আমাকে ডকুমেন্টেশন উল্লেখ করতে হবে এবং প্রতিটি API পরিবর্তন বুঝতে হবে। রেফারেন্সের জন্য প্রাসঙ্গিক নমুনা আছে কিনা তাও আমাকে অনুসন্ধান করতে হয়েছিল। নতুন API বোঝা এবং কোড স্থানান্তর করা আমার জন্য বেশ চ্যালেঞ্জিং।

এই কারণেই আমি GSoC প্রকল্পের তালিকা ব্রাউজ করার সময় এবং MV3 এর সাথে সম্পর্কিত ধারণাটি ধরার সময় অত্যন্ত উত্তেজিত ছিলাম। আমি ম্যানিফেস্ট V3 এক্সটেনশন নমুনাগুলি উন্নত করতে এবং ভবিষ্যতের বিকাশকারীদের জন্য একটি সুবিধা প্রদান করতে অবদান রাখতে আগ্রহী ছিলাম৷

মার্চ মাসে, আমি অলিভারকে ইমেল করেছিলাম, দায়িত্বে থাকা একজন পরামর্শদাতা, আমার উদ্দেশ্য সম্পর্কে একটি সংক্ষিপ্ত ইমেল:

GSoC প্রকল্পে অংশগ্রহণের আবেদন

ওহে,

আমি চীন থেকে একজন সিএস স্নাতক ছাত্র। আমি GSoC-তে Chrome এক্সটেনশনের নমুনা সম্পর্কিত প্রকল্প সম্পর্কে শিখেছি এবং আমি ম্যানিফেস্ট V3 নমুনাগুলি উন্নত করতে আগ্রহী ছিলাম। API নমুনাগুলিতে কাজ করার আগে আমার খুব বেশি অভিজ্ঞতা নেই, তবে, আমার ওয়েব ডেভেলপমেন্ট এবং MV3 এক্সটেনশন ডেভেলপমেন্টের অভিজ্ঞতা রয়েছে (https://github.com/daidr/paimon-webext), যা আমাকে এর গুরুত্ব উপলব্ধি করেছে MV3 api নমুনা, তাই আমি শিখতে এবং এতে অবদান রাখতে চাই। আমি কি এখনও এই প্রকল্পের জন্য আবেদন করতে পারি?

ধন্যবাদ

কিছুক্ষণ পরে, আমি অলিভার এবং আলী (অলিভারের বস) এর কাছ থেকে একটি উত্তর পেয়েছি। তারা আমার প্রশ্নের উত্তর দিয়েছেন এবং GSoC-এর নির্দিষ্ট নিয়ম এবং টাইমলাইন সম্পর্কে বিস্তারিত তথ্য দিয়েছেন। তারা আমার সাথে অনেক মূল্যবান রেফারেন্স সামগ্রীও ভাগ করেছে।

এটা বাহুতে একটি শটের মত ছিল, আমার এগিয়ে যাওয়ার দৃঢ় সংকল্পকে শক্তিশালী করেছিল। আপনি যদি আসন্ন ওপেন-সোর্স ইভেন্টগুলিতে অংশগ্রহণ করতে আগ্রহী হন তবে প্রথম পদক্ষেপ নেওয়া সর্বোত্তম, তা GSoC 2024 বা অন্য কিছু হোক না কেন; কখনই দ্বিধা করবেন না এবং সাহসের সাথে চেষ্টা করবেন।

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

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

গ্রহণ করা হচ্ছে

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

খসড়াটি সম্পূর্ণ করার পর, আমি মতামতের জন্য এটি আমার পরামর্শদাতার কাছে পাঠিয়েছি। একবার আবেদন জমা দেওয়ার পরে, দীর্ঘ অপেক্ষা। এবং মে মাসের প্রথম দিকে, আমি একটি বিজ্ঞপ্তি পেয়েছি যে আমাকে গৃহীত হয়েছে।

কোড কাজ

প্রাথমিক বন্ধনের সময়কালে, আমি প্রথমে অবশিষ্ট স্টার্টার বাগগুলির সাথে মোকাবিলা করেছি এবং আমার শিখতে হবে এমন কোন নতুন দক্ষতা আছে কিনা তা পরীক্ষা করেছিলাম। এবং আমি বাকি সময় ডকুমেন্টেশন পড়ে ব্যয় করি।

আমার পরামর্শদাতার সাথে আলোচনার পরে, আমরা কিছু লক্ষ্য সামঞ্জস্য করেছি যাতে কাজের জন্য বরাদ্দ করা সময়কে আরও যুক্তিসঙ্গত করা যায়। আমরা একটি নতুন developer.chrome.com পৃষ্ঠা তৈরি করার জন্য একটি ধারণা নিয়েও আলোচনা করেছি যেখানে সমস্ত API নমুনা তালিকাভুক্ত করা হয়েছে এবং বিকাশকারীদের দ্রুত প্রয়োজনীয় নমুনাগুলি সনাক্ত করতে সহায়তা করার জন্য মৌলিক ফিল্টার প্রদান করা হয়েছে৷ এটি আমার জন্য একটি বরং জটিল কাজ ছিল, এবং প্রকল্পটি সংজ্ঞায়িত করতে এবং একটি পণ্য প্রয়োজনীয়তা ডক (পিআরডি) লিখতে আমার পরামর্শদাতা এবং আমার বেশ কিছু সময় লেগেছিল।

এই বৃহত্তর কাজের জন্য, আমরা সিদ্ধান্ত নিয়েছি যে রিপোজিটরিটি অতিক্রম করার জন্য আমাদের নমুনা রেপোতে একটি স্বয়ংক্রিয় স্ক্রিপ্ট দরকার এবং একটি JSON ফাইল তৈরি করতে হবে যাতে এক্সটেনশন নমুনা এবং তারা যে APIগুলি ব্যবহার করে তার একটি তালিকা রয়েছে৷ developer.chrome.com ডকুমেন্টেশন রেপো এখন একটি পৃষ্ঠা তৈরি করতে এই ফাইলটি ব্যবহার করে৷

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

বেশ কয়েকটি বড় এবং ছোট পর্যালোচনার পরে, কোডটি সফলভাবে মার্জ করা হয়েছে। আপনি GitHub- এ পুরো থ্রেডটি খুঁজে পেতে পারেন বা লাইভ পৃষ্ঠাটি দেখতে পারেন

মোড়ক উম্মচন

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

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

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

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

আমি আশা করি আমার অভিজ্ঞতা ওপেন সোর্স কার্যক্রমে ভবিষ্যতে অংশগ্রহণের জন্য কিছু রেফারেন্স প্রদান করতে পারে।

গুগল সামার অফ কোডে অংশগ্রহণ করতে ইচ্ছুক যে কারো জন্য এখানে আমার কিছু পরামর্শ রয়েছে:

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

পড়ার জন্য আপনাকে ধন্যবাদ.