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

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

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

مع اقتراب نهاية برنامج GSoC لعام 2023، نريد مشاركة بعض تجاربنا في هذا البرنامج. ستقدّم هذه المشاركة لمحة موجزة عن العملية العامة لبرنامج GSoC من خلال مشاركتي الخاصة، آمل أن تكون مفيدة لك.

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

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

في البداية

تعرّفتُ على برنامج GSoC لأول مرة في شباط (فبراير) 2023، ولكنّني لم أكن متأكّدًا بعد من أنّني أريد التقدّم بطلب. كانت لديّ بعض المخاوف في ذلك الوقت:

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

ومع ذلك، يمكنني أن أقول بثقة أنّ أيًا من هذه المشاكل لم يؤثر في الأداء.

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

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

في آذار (مارس)، أرسلتُ رسالة إلكترونية موجزة إلى "أوليفر"، أحد المرشدين المسؤولين، حول رغبتي في الانضمام إلى البرنامج:

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

مرحبًا،

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

شكرًا.

بعد فترة قصيرة، تلقّيتُ ردًا من "أوليفر" و"علي" (رئيس "أوليفر"). وقدّموا إجابات عن أسئلتي وقدّموا معلومات مفصّلة عن القواعد المحدّدة والجدول الزمني لبرنامج GSoC. وشاركوا أيضًا معي العديد من المواد المرجعية القيّمة.

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

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

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

الحصول على الموافقة

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

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

Code Work

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

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

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

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

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

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

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

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

لقد منحني هذا الصيف العديد من الذكريات التي لا تمحى من الذاكرة. أحبّ الترميز كثيرًا. لقد صادفتُ مرشدين صبورين ساعدوني ومنحوني معلومات مثيرة للاهتمام، ما أغنى تجربتي.

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

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

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

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

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