Google Summer of Code و Chrome Extensions

من دانشجوی سال دوم از چین هستم و علاقه زیادی به توسعه وب دارم. در سال اول به یک باشگاه فنی در دانشکده ما پیوستم. این باشگاه مقدمه من برای کدنویسی و متن باز بود. در باشگاه، با گروهی از شرکای همفکر که عاشق کدنویسی هستند آشنا شدم. و از آنها بود که در آغاز سال 2023 درباره Google Summer of Code یاد گرفتم. این برنامه جهانی سازماندهی شده توسط Google دانش آموزان را با سازمان های منبع باز مرتبط می کند و آنها را در استفاده مناسب از تابستان خود با شرکت در فعالیت های منبع باز راهنمایی می کند.

با امتحان کردن، درخواستم را ارسال کردم. خوشبختانه قبول شدم. تابستانی که برای مشارکت در مخزن نمونه های افزودنی کروم گذراندم خاطره انگیز و ارزشمند بود. البته، من چیزهای زیادی نیز یاد گرفته ام: ارتباط موثر، مهارت های کدنویسی، و توانایی های برنامه ریزی، در میان چیزهای دیگر.

از آنجایی که GSoC 2023 رو به پایان است، ارزش به اشتراک گذاشتن برخی از تجربیات من در GSoC را دارد. این پست به طور خلاصه روند کلی GSoC را از طریق مشارکت خودم معرفی می کند، امیدوارم برای شما مفید باشد!

داستان نحوه مشارکت من در GSoC

من برای پروژه Chromium GSoC 2023 درخواست دادم، جایی که وظیفه اصلی من ارتقاء نمونه های افزونه موجود Chrome برای کار در Manifest V3، از جمله برخی از اسکریپت ها و اسناد مرتبط است.

در همان ابتدا

من برای اولین بار در فوریه 2023 با GSoC آشنا شدم اما هنوز مطمئن نبودم که بخواهم درخواست بدهم. من در آن زمان چند نگرانی داشتم:

  • من درونگرا هستم و انگلیسی زبان مادری من نیست، بنابراین ارتباط با مربیان ممکن است چالش برانگیز باشد.
  • جوامع GSoC از سرتاسر جهان می آیند و مقابله با تفاوت های منطقه زمانی می تواند دشوار باشد.
  • GSoC آنقدر برنامه مشهور است که می تواند رقابتی باشد و شانس من را کم به نظر برساند.

با این حال، می توانم با اطمینان بگویم که هیچ کدام از اینها مشکلی نداشتند.

قبل از اینکه داستانم را بگویم، می‌خواهم در مورد اتفاقی که در ابتدای سال 2022 برایم رخ داد صحبت کنم. این حادثه همچنین فرصتی برای من بود تا در GSoC شرکت کنم. من می خواستم یک برنامه افزودنی مرورگر مبتنی بر Manifest V2 را به Manifest V3 منتقل کنم. برای تکمیل مهاجرت، باید به مستندات مراجعه می کردم و هر تغییر API را درک می کردم. همچنین باید جستجو می کردم که آیا نمونه های مربوطه برای مرجع وجود دارد یا خیر. درک API جدید و انتقال کد برای من بسیار چالش برانگیز است.

به همین دلیل است که هنگام مرور لیست پروژه GSoC و دریافت ایده مربوط به MV3 بسیار هیجان زده شدم. من مشتاق بودم که در بهبود نمونه‌های برنامه افزودنی Manifest V3 مشارکت کنم و امکاناتی را برای توسعه‌دهندگان آینده فراهم کنم.

در ماه مارس، من به الیور، یکی از مربیان مسئول، ایمیل کوتاهی در مورد قصد خود ارسال کردم:

درخواست شرکت در پروژه GSoC

سلام،

من یک دانشجوی کارشناسی ارشد CS از چین هستم. من در مورد پروژه مربوط به Chrome Extensions Samples در GSoC یاد گرفتم و علاقه مند به بهبود Manifest V3 Samples بودم. من تجربه قبلی زیادی در کار بر روی نمونه های API ندارم، با این حال، تجربه توسعه وب و توسعه برنامه افزودنی MV3 (https://github.com/daidr/paimon-webext) را دارم که باعث شده به اهمیت نمونه‌های Api MV3، بنابراین می‌خواهم هم یاد بگیرم و هم در آن مشارکت کنم. آیا هنوز هم می توانم برای این پروژه اقدام کنم؟

با تشکر.

مدتی نگذشت که از الیور و علی (رئیس الیور) پاسخی دریافت کردم. آنها به سوالات من پاسخ دادند و اطلاعات دقیقی در مورد قوانین خاص و جدول زمانی GSoC ارائه کردند. آنها همچنین بسیاری از مطالب مرجع ارزشمند را با من به اشتراک گذاشتند.

مثل شلیک گلوله ای بود که عزمم را برای حرکت به جلو تقویت می کرد. اگر علاقه مند به شرکت در رویدادهای متن باز آینده، چه GSoC 2024 یا هر چیز دیگری هستید، برداشتن اولین قدم بسیار مهم است. هرگز تردید نکنید و شجاعانه آن را امتحان کنید.

قبل از درخواست، کد پروژه را بررسی کردم و اسناد را بررسی کردم. اگرچه GSoC یک دوره پیوند اجتماعی نزدیک به یک ماه را برای شرکت کنندگان فراهم می کند تا با جامعه آشنا شوند، دانش قبلی فشار را کاهش داد و به من اجازه داد تا پیشنهاد هدفمندتری بنویسم.

من سعی کردم باگ های استارت ارائه شده توسط پروژه را حل کنم. این مسائل نسبتاً ساده بودند و به من کمک کردند تا پروژه را به سرعت درک کنم. من از مربی ام الیور سپاسگزارم (اگرچه او در آن زمان مربی من نبود). او هر زمان که نیاز به توضیح داشتم به سرعت به ایمیل های من پاسخ می داد و با صبر و حوصله مشکلاتم را حل می کرد. هنگامی که هنگام نوشتن یک پروپوزال با مشکلاتی روبرو می شوید، می توانید آن را برای مربی خود ارسال کنید تا ببینید آیا هر زمینه ای نیاز به بهبود دارد یا خیر.

پذیرفته شدن

نوشتن پروپوزال آخرین کاری است که باید قبل از درخواست انجام دهید. پروپوزال علاوه بر فرم درخواست باید شامل ایده ها، اهداف و برنامه باشد. بسته به پروژه ای که امیدوارید روی آن کار کنید، ممکن است یک الگوی اضافی برای پروپوزال به شما ارائه شود. بسیاری از نمونه های پیشنهادی آماده به صورت آنلاین برای مرجع در دسترس هستند.

پس از تکمیل پیش نویس، آن را برای بازخورد به استادم فرستادم. پس از ارسال درخواست، انتظار طولانی وجود دارد. و در اوایل اردیبهشت اخطاریه ای مبنی بر پذیرش دریافت کردم.

کد کار

در طول دوره اولیه پیوند، ابتدا با اشکالات اولیه باقی مانده برخورد کردم و بررسی کردم که آیا مهارت های جدیدی وجود دارد که باید یاد بگیرم. و بقیه زمان را صرف خواندن اسناد می کنم.

پس از بحث با استاد من، ما برخی از اهداف را تنظیم کردیم تا زمان اختصاص داده شده به وظایف معقول تر شود. همچنین درباره ایده ایجاد یک صفحه developer.chrome.com جدید که تمام نمونه‌های API را فهرست می‌کند و فیلترهای اساسی برای کمک به توسعه‌دهندگان برای یافتن سریع نمونه‌های مورد نیاز ارائه می‌کند، بحث کردیم. این یک کار نسبتاً پیچیده برای من بود، و من و مربیم مدت زیادی طول کشید تا پروژه را تعریف کنیم و یک سند الزامات محصول (PRD) بنویسیم.

برای این کار بزرگ‌تر، تصمیم گرفتیم که به یک اسکریپت خودکار در مخزن نمونه‌ها نیاز داشته باشیم تا از مخزن عبور کنیم و یک فایل JSON حاوی لیستی از نمونه‌های پسوند و APIهایی که آنها استفاده می‌کنند تولید کنیم. مخزن اسناد developer.chrome.com اکنون از این فایل برای ایجاد یک صفحه استفاده می کند.

من ابتدا استفاده از Babel را برای تجزیه و تحلیل درخت نحوی انتزاعی کد نمونه و شناسایی APIهایی که استفاده می‌کند در نظر گرفتم. پس از به اشتراک گذاشتن این ایده با مربیم، متوجه شدم که آنها قبلاً روی چیزی مشابه کار کرده بودند که امکان سنجی این رویکرد را تأیید می کرد. پس از تکمیل کد، مربی من و سایر اعضای تیمش پیشنهادهای ارزشمندی از جمله توجه به بخش بندی کد، استانداردسازی سبک کد و مستندسازی صحیح عملکردها را ارائه کردند.

پس از چندین بررسی بزرگ و کوچک، کد با موفقیت ادغام شد. می توانید کل موضوع را در GitHub پیدا کنید یا صفحه زنده را مشاهده کنید .

بسته بندی

اگر از من بپرسید GSoC چه چیزی برای من به ارمغان آورده است: اول از همه، البته، درک دانش مربوط به APIهای افزونه مرورگر است. با خواندن مستندات و نوشتن نمونه‌های جدید، به درک دقیقی از APIهای افزونه مرورگرهای مختلف دست یافتم.

به‌علاوه، مهارت‌های زیادی را کسب کرده‌ام که قبل از پذیرش در GSoC با آن‌ها آشنا نبودم، مانند دنبال کردن فرآیند بررسی کد جامع و ایجاد یک PRD. من همچنین شروع به استفاده از اقدامات GitHub برای خودکار کردن گردش کار کردم و یاد گرفتم که چگونه از Babel برای عبور از همه نمونه های برنامه افزودنی و ردیابی API های استفاده شده استفاده کنم. علاوه بر این، من اولین تجربه خود را با موتور قالب Nunjucks داشتم. این توانایی ها برای برنامه نویسی ضروری هستند و من خوشحالم که آنها را یاد گرفتم. شرکت در جوامع منبع باز برای من خوشحال کننده است.

این تابستان خاطرات فراموش نشدنی زیادی را برایم رقم زد. کدنویسی باعث می شود که من بسیار راضی باشم. من با مربیان صبور مواجه شده ام که مرا راهنمایی کرده و دانش جالبی را به من آموخته اند و تجربه من را غنی می سازند.

دانش در زمینه علوم کامپیوتر بی پایان است. وقتی خودم را با دیگران مقایسه کردم، متوجه شدم که درک من از منبع باز تنها نوک کوه یخ است. با این حال، هر ذره ای کمک می کند. من معتقدم GSoC یک نقطه شروع عالی برای شرکت در متن باز است.

همچنین امیدوارم تجربه من بتواند مرجعی برای مشارکت آینده در فعالیت های منبع باز باشد.

در اینجا برخی از پیشنهادات من برای هر کسی که مایل به شرکت در Google Summer of Code است آورده شده است:

  1. ایده ای را انتخاب کنید که مناسب شما باشد: به نظر من، هنگام جستجوی ایده، علاقه باید اولویت شما باشد و به دنبال آن مهارت. این استراتژی به شما این امکان را می دهد که در طول فرآیند مشارکت، اشتیاق خود را حفظ کنید.
  2. کیفیت بر کمیت: برای افزایش شانس پذیرش برای GSoC می توانید پیشنهادهای زیادی ارائه دهید. با این حال، من معتقدم که کیفیت احتمالاً مهم تر است زیرا انرژی انسان محدود است. تمرکز بر دو یا سه ایده ممکن است در نهایت مفیدتر باشد.
  3. از چیزهای جدید نترسید: از امتحان فناوری هایی که در پروژه ای با آنها کار نکرده اید تردید نکنید. شما نزدیک به یک ماه پیوند اجتماعی برای آشنایی با فناوری های ناآشنا و یک تابستان کامل برای اجرای آنها دارید. فقط به دنبال آن بروید!
  4. از قبل با پروژه آشنا شوید: به عنوان مثال، اسناد توسعه را بخوانید، به تاریخچه تعهدات قبلی و مسائل نگاه کنید، و درخواست‌های کشش گذشته را مرور کنید. دریافت یک درک کلی از پروژه از قبل به شما کمک می کند تا یک پروپوزال جامع تری بنویسید.
  5. ارتباط را حفظ کنید: به طور منظم با مربی خود ارتباط برقرار کنید و در هنگام مواجهه با مشکلات، چه قبل از درخواست یا پس از پذیرش، از پرسیدن سوال دریغ نکنید. اکثر مربیان مایلند به شما در حل مشکلات کمک کنند. به این ترتیب، آنها همچنین می توانند پیشرفت شما را پیگیری کنند.

ممنون که خواندید.