مبادرة Summer of Code من Google وإضافات Chrome

أنا طالبة في السنة الثانية من الصين ولديها شغف بتطوير الويب. في سنتي الأولى، انضممت إلى نادٍ تقني في كليتنا. كان هذا النادي بمثابة مقدمة عن البرمجة والبرامج المفتوحة المصدر. وفي هذا النادي، قابلت مجموعة من الشركاء المتشابهين في التفكير الذين يحبون الترميز. ومنهم، تعرّفت على برنامج Summer of Code من Google في بداية عام 2023. يربط هذا البرنامج العالمي الذي تنظمه Google الطلاب بمؤسسات مفتوحة المصدر ويوجههم للاستفادة من فصل الصيف من خلال المشاركة في أنشطة مفتوحة المصدر.

لقد أرسلتُ طلبي لتجربة الميزة. ولحسن الحظ، تم قبولي. لقد كان الصيف الذي أمضيته في المساهمة في مستودع "عيّنات إضافات Chrome" قيّمًا ولا يُنسى. بالطبع، تعلمت الكثير أيضًا: التواصل الفعال، ومهارات الترميز، وقدرات التخطيط، من بين أشياء أخرى.

مع اقتراب موعد اختتام GSoC لعام 2023، يمكنني مشاركة بعض تجاربي مع Google Cloud. ستقدم هذه المشاركة بإيجاز العملية العامة لـ GSoC من خلال مشاركتي، آمل أن أكون مفيدة لك!

قصة كيف ساهمت في GSoC

لقد قدّمتُ طلبًا للاشتراك في مشروع Chromium GSoC لعام 2023، حيث ستكون مهمتي الرئيسية هي ترقية نماذج إضافات Chrome الحالية للعمل في إصدار Manifest V3، بما في ذلك بعض النصوص البرمجية والمستندات ذات الصلة.

في البداية

بدأتُ التعرّف على GSoC في فبراير 2023، ولكنني لم أكن متأكدًا بعد من أنّني أريد تقديم الطلب. كانت لدي بعض المخاوف حينها:

  • أنا انطوائي، واللغة الإنجليزية ليست لغتي الأم، لذا قد يكون التواصل مع الموجّهين أمرًا صعبًا.
  • تأتي مجتمعات GSoC من جميع أنحاء العالم، وقد يكون التعامل مع الاختلافات في المناطق الزمنية أمرًا صعبًا.
  • GSoC برنامج شهير لدرجة أنه يمكن أن يكون تنافسيًا، مما يجعل فرصي تبدو ضئيلة.

مع ذلك، يمكنني أن أقول بثقة أنّ أيًّا من هذه الخيارات لم يكن مشكلة.

قبل أن أحكي قصتي، أودّ التحدّث عن حدث حدث لي في بداية العام 2022. كانت هذه الحادثة أيضًا فرصة لي للمشاركة في GSoC. أردتُ نقل بيانات إضافة متصفّح مستندة إلى إصدار Manifest V2 إلى إصدار Manifest V3. لإكمال عملية النقل، كان عليّ الرجوع إلى الوثائق وفهم كل تغيير في واجهة برمجة التطبيقات. كما اضطررت إلى البحث عما إذا كانت هناك عينات ذات صلة للرجوع إليها. كان فهم واجهة برمجة التطبيقات الجديدة ونقل الرمز تحديًا كبيرًا بالنسبة إليّ.

لذلك كنتُ متحمسة للغاية عند تصفُّح قائمة مشاريع GSoC وفهم الفكرة المتعلقة بالإصدار MV3. كنت حريصًا على المساهمة في تحسين نماذج الإضافات المستنِدة إلى إصدار Manifest V3 وتوفير وسائل راحة للمطوّرين في المستقبل.

في آذار (مارس)، أرسلت بريدًا إلكترونيًا إلى أوليفر، أحد المعلمين المسؤولين، رسالة بريد إلكتروني موجزة عن نيتي:

طلب المشاركة في مشروع GSoC

مرحبًا،

أنا طالب جامعي في علوم الكمبيوتر من الصين. اطّلعت على المشروع ذي الصلة بنماذج إضافات Chrome في GSoC، وكنت مهتمًا بتحسين نماذج Manifest V3. ليس لديّ خبرة سابقة في العمل على نماذج واجهة برمجة التطبيقات، ولكن لديّ خبرة في تطوير الويب وتطوير إضافات MV3 (https://github.com/daidr/paimon-webext)، ما جعلني أدرك أهمية نماذج واجهة برمجة التطبيقات MV3، لذا أودّ التعلّم والمساهمة في ذلك. هل لا يزال بإمكاني التقدم بطلب للحصول على هذا المشروع؟

شكرًا.

ولم يمض وقت طويل على تلقي رد من عصام وعلي (مديره). وقد أجابوا عن أسئلتي وقدّموا معلومات تفصيلية حول القواعد المحددة والجدول الزمني لشركة GSoC. كما شاركوا معي العديد من المواد المرجعية القيّمة.

كان الأمر بمثابة ضربة في الذراع، ما عزّزي إصراري على المضي قدمًا. إنّ اتّخاذ الخطوة الأولى هو أمر مهم للغاية إذا كنت مهتمًا بالمشاركة في الفعاليات القادمة المفتوحة المصدر، سواء كان مؤتمر GSoC 2024 أو غير ذلك. لا تتردد في تجربة ذلك.

قبل التقديم، راجعت كود المشروع وتصفحت الوثائق. توفّر شركة GSoC فترة ترابط مجتمعية مدتها شهر واحد تقريبًا لتعريف المشاركين على المجتمع، إلا أنّ المعرفة المسبقة خفّفت من الضغط وأتاحت لي كتابة اقتراح أكثر استهدافًا.

حاولت حل أخطاء البداية التي قدمها المشروع. كانت هذه المشكلات بسيطة نسبيًا وساعدتني في فهم المشروع بسرعة. أشعر بالامتنان تجاه مرشدي "أوليفر" (على الرغم من أنّه لم يكن مرشدي في ذلك الوقت). وقد ردّ على رسائلي الإلكترونية على الفور كلما احتجت إلى توضيح، وحلّ مشاكلي بصبر. عند مواجهة مشكلات أثناء كتابة اقتراح، يمكنك أيضًا إرساله إلى مرشدك لمعرفة ما إذا كانت هناك أي مجالات بحاجة إلى تحسين.

القبول

كتابة الاقتراح هي آخر شيء يجب القيام به قبل التقديم. يجب أن يتضمن الاقتراح أفكارًا وأهدافًا وجدولاً زمنيًا بالإضافة إلى نموذج الطلب. اعتمادًا على المشروع الذي تأمل في العمل عليه، قد يتم تزويدك بقالب إضافي للاقتراح. يتوفر العديد من أمثلة العروض الجاهزة عبر الإنترنت للرجوع إليها.

بعد الانتهاء من المسودة، أرسلتها إلى مرشدي للحصول على ملاحظات. عليك الانتظار لفترة طويلة بعد تقديم طلبك. وفي أوائل شهر أيار (مايو)، تلقّيت إشعارًا بقبول طلبي.

عمل Code Work

خلال فترة الربط الأولية، تعاملت أولاً مع الأخطاء الأولية المتبقية وتحققت مما إذا كانت هناك أي مهارات جديدة يجب أن أتعلمها. وأقضي بقية الوقت في قراءة الوثائق.

بعد مناقشة مع مرشدي، قمنا بتعديل بعض الأهداف لجعل الوقت المخصص للمهام أكثر معقولاً. ناقشنا أيضًا فكرة إنشاء صفحة developer.chrome.com جديدة تعرض جميع نماذج واجهة برمجة التطبيقات مع توفير الفلاتر الأساسية لمساعدة المطوّرين في العثور على النماذج المطلوبة بسرعة. لقد كانت مَهمّة معقدة إلى حدّ ما بالنسبة إليّ، واستغرقت أنا ومرشدي بعض الوقت لتحديد المشروع وكتابة مستند متطلبات المنتج (PRD).

في ما يتعلّق بهذه المهمة الأكبر حجمًا، قرّرنا أنّنا بحاجة إلى نص برمجي مُبرمَج في مستودع النماذج لاجتياز المستودع وإنشاء ملف JSON يحتوي على قائمة بعيّنات الإضافات وواجهات برمجة التطبيقات التي تستخدمها. يستخدم repo مستند developer.chrome.com هذا الملف الآن لإنشاء صفحة.

فكّرتُ أولاً في استخدام Babel لتحليل شجرة البنية المجرّدة للرمز النموذجي وتحديد واجهات برمجة التطبيقات التي يستخدمها. بعد مشاركة هذه الفكرة مع مرشدي، اكتشفتُ أنّه سبق له العمل على شيء مشابه، ما يؤكّد جدوى هذا النهج. وبعد إكمال التعليمات البرمجية، قدّم مرشدي وأعضاء آخرون من فريقه اقتراحات قيّمة شملت الاهتمام بتصنيف التعليمات البرمجية وتوحيد نمط التعليمات البرمجية وتوثيق الوظائف بشكل صحيح.

بعد عدة مراجعات كبيرة وصغيرة، تم دمج التعليمة البرمجية بنجاح. يمكنك العثور على سلسلة المحادثات كاملةً على GitHub، أو الاطّلاع على الصفحة المنشورة.

تقديم تقرير ملخّص

إذا سألتني عن الفوائد التي قدمتها لي GSoC، يُرجى العلم أولاً بالطبع فهم المعرفة ذات الصلة بواجهات برمجة تطبيقات إضافات المتصفح. ومن خلال قراءة المستندات وكتابة نماذج جديدة، حصلتُ على فهم تفصيلي لمختلف واجهات برمجة التطبيقات الخاصة بإضافات المتصفِّح.

بالإضافة إلى ذلك، اكتسبتُ العديد من المهارات التي لم أطّلع عليها قبل قبولي في شركة GSoC، مثل اتّباع عملية مراجعة شاملة للرموز وإنشاء "مستند متطلبات المنتج" (PRD). لقد بدأت أيضًا في استخدام إجراءات GitHub لبرمجة سير العمل وتعلّمت كيفية استخدام Babel لاجتياز جميع عيّنات الإضافات وتتبُّع واجهات برمجة التطبيقات المستخدمة. علاوة على ذلك، كانت تجربتي الأولى مع محرك النماذج Nunjucks. إنّ هذه القدرات ضرورية للبرمجة، ويسرّني أن أتعلّمها. أشعر بالسعادة عند المشاركة في منتديات مفتوحة المصدر.

لقد منحني هذا الصيف الكثير من الذكريات التي لا يمكن محوها. يساعدني الترميز في زيادة المحتوى الذي تقدّمه. تعرّفت على مرشدين من المرضى وجّهواني وعلّموني معلومات مثيرة للاهتمام، ما ساهم في إثراء خبرتي.

معرفة مجال علوم الكمبيوتر لا حصر لها. عندما قارنت نفسي بالآخرين، أدركت أن فهمي للبرامج مفتوحة المصدر لم يكن سوى غيض من فيض. ومع ذلك، فإن كل القليل مفيد. أعتقد أن GSoC هي نقطة انطلاق رائعة للمشاركة في البرامج المفتوحة المصدر.

وأتمنى أيضًا أن توفر خبرتي بعض المراجع للمشاركة المستقبلية في أنشطة مفتوحة المصدر.

في ما يلي بعض الاقتراحات لأي شخص يرغب في المشاركة في برنامج Google Summer of Code:

  1. اختر فكرة تناسبك: برأيي، عند البحث عن أفكار، يجب أن يكون الاهتمام على رأس أولوياتك، متبوعًا بالمهارات. تتيح لك هذه الاستراتيجية الحفاظ على حماسك طوال عملية تقديم المساهمات.
  2. الجودة تفوق الكمية: يمكنك تقديم العديد من المقترحات لزيادة فرص قبول GSoC. ومع ذلك، أعتقد أن الجودة قد تكون أكثر أهمية لأن طاقة الإنسان محدودة. قد يكون التركيز على فكرتين أو ثلاث أفكار أكثر فائدة في النهاية.
  3. لا تخف من أشياء جديدة: لا تتردد في تجربة التقنيات التي لم تتعاون معها في أي مشروع. لديك قرابة شهر من الترابط بين أفراد المنتدى من أجل التعرّف على التكنولوجيات غير المألوفة وقضاء صيف كامل في تنفيذها. ما عليك سوى البدء بذلك!
  4. التعرف على المشروع مقدمًا: على سبيل المثال، اقرأ وثائق التطوير، واطلع على سجل الالتزامات السابقة والمشكلات، وتصفح طلبات السحب السابقة. سيساعدك الحصول على فهم عام للمشروع مقدمًا في كتابة اقتراح أكثر شمولاً.
  5. الحفاظ على التواصل: تواصل بانتظام مع مرشدك، ولا تتردد في طرح الأسئلة عند مواجهة المشكلات، سواء قبل التقديم أو بعد القبول. معظم المرشدين على استعداد لمساعدتك في حل المشكلات؛ بهذه الطريقة، يمكنهم أيضًا تتبع تقدمك.

نشكرك على القراءة.