Google Summer of Code ותוספים ל-Chrome

אני תלמידת כיתה י' מסין ואוהבת פיתוח אתרים. בשנה הראשונה הצטרפתי למועדון טכני במכללה שלנו. מועדון זה היה ההיכרות שלי עם תכנות וקוד פתוח. במועדון פגשתי קבוצה של שותפים שגם אוהבים לתכנת. אצלם למדתי על Google Summer of Code בתחילת 2023. תוכנית גלובלית, המאורגנת על ידי Google, מקשרת בין סטודנטים לארגוני קוד פתוח ומדריכה אותם להשתתף בפעילויות של קוד פתוח לניצול מיטבי של הקיץ.

כדי לנסות, הגשתי את הבקשה. לשמחתי התקבלתי. הקיץ שלי תרומתי למאגר דגימות התוספים של Chrome היה יקר ובלתי נשכח. כמובן שלמדתי גם הרבה: תקשורת יעילה, מיומנויות תכנות ויכולות תכנון, ועוד.

שנת GSoC 2023 עומדת להסתיים, ושווה לשתף חלק מהחוויות שלי ב-GSoC. בפוסט הזה נציג בקצרה את התהליך הכללי של GSoC בהשתתפותי, ואני מקווה שאוכל לעזור לכם.

הסיפור על האופן שבו תרמתי ל-GSoC

הגשתי בקשה לפרויקט Chromium GSoC 2023, והמשימה העיקרית שלי היא שדרוג דוגמאות קיימות של תוספים ל-Chrome כך שיעבדו במניפסט V3, כולל כמה סקריפטים ומסמכים קשורים.

ממש בהתחלה

נודע לי לראשונה על GSoC בפברואר 2023, אבל עדיין לא הייתי בטוח שאני רוצה להגיש בקשה. היו לי כמה חששות:

  • אני בבית, ואנגלית היא לא שפת האם שלי, כך שהתקשורת עם מנטורים יכולה להיות מאתגרת.
  • קהילות GSoC מגיעות מכל רחבי העולם, וההתמודדות עם הבדלים באזורי זמן עשויה להיות קשה.
  • GSoC היא תוכנית מפורסמת כל כך עד שהיא יכולה להיות תחרותית, כך שהסיכויים שלי נראים נמוכים.

עם זאת, אני יכול לומר בוודאות שאף אחת מאלה לא היו בעיות.

לפני שאספר את הסיפור שלי, אני רוצה לדבר על משהו שקרה לי בתחילת 2022. האירוע הזה היה גם הזדמנות עבורי להשתתף ב-GSoC. רציתי להעביר תוסף לדפדפן שמבוסס על Manifest V2 למניפסט V3. כדי להשלים את ההעברה, היה עליי לעיין במסמכי התיעוד ולהבין כל שינוי ב-API. היה עליי גם לחפש אם יש דוגמאות רלוונטיות לעיון. קשה לי להבין את ה-API החדש והעברת הקוד.

לכן התרגשתי מאוד כשעיינתי ברשימת הפרויקטים של GSoC וזיהיתי את הרעיון שקשור ל-MV3. רציתי לתרום לשיפור הדוגמאות של תוספי Manifest V3 ולספק שירותים למפתחים עתידיים.

בחודש מרץ שלחתי באימייל לאוליבר, אחד מהחונכים האחראים, אימייל קצר על כוונתי:

הבקשה להשתתפות בפרויקט GSoC

שלום,

אני סטודנט לתואר ראשון למדעי המחשב מסין. למדתי על הפרויקט של 'טעימות' לתוספים ל-Chrome ב-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 כדי לנתח את Abstract Syntax Tree של הקוד לדוגמה ולזהות את ממשקי ה-API שבהם נעשה שימוש. לאחר ששיתפתי את הרעיון הזה עם המדריך שלי, גיליתי שהם עבדו בעבר על משהו דומה, דבר המאשר את הישימות של גישה זו. אחרי שהשלמתי את הקוד, המנטור שלי ושאר חברי הצוות שלו סיפקו הצעות מועילות, כולל לשים לב לפילוח הקוד, לסטנדרטיזציה של סגנון הקוד ולתיעוד תקין של פונקציות.

אחרי כמה בדיקות גדולות וקטנות, הקוד מוזג בהצלחה. אפשר למצוא את השרשור כולו ב-GitHub, או להציג את הדף הפעיל.

סיכום

אם תשאלו אותי מה GSoC הביא לי: דבר ראשון, כמובן, הוא הבנת הידע הקשור לממשקי API של תוספים לדפדפנים. על ידי קריאת התיעוד וכתיבת דוגמאות חדשות, קיבלתי הבנה מפורטת של ממשקי API שונים של תוספים לדפדפן.

בנוסף, רכשתי מיומנויות רבות שנחשפתי אליהן מעט לפני שהתקבלתי ל-GSoC. למשל, ביצוע תהליך מקיף של בדיקת קוד ויצירת PRD. בנוסף, התחלתי להשתמש בפעולות GitHub כדי להפוך תהליכי עבודה לאוטומטיים, ולמדתי כיצד להשתמש ב-Babel כדי לעבור בין כל דוגמאות התוספים ולעקוב אחר ממשקי ה-API שבהם נעשה שימוש. יתר על כן, חוויתי את החוויה הראשונה שלי עם מנוע התבניות של Nunjucks. היכולות האלה חיוניות לתכנות, ואני שמח שלמדתי אותן. ההשתתפות בקהילות קוד פתוח גורמת לי לשמחה.

הקיץ הזה העניק לי הרבה זיכרונות בלתי מוחשיים. התכנות שלי גורם לי להשתעמם מאוד. פגשתי מדריכים של מטופלים שהנחו אותי ולימדו אותי ידע מעניין, והעשיר את החוויה שלי.

הידע בתחום מדעי המחשב הוא אינסופי. כשהשוויתי את עצמי לאחרים, הבנתי שההבנה שלי לגבי קוד פתוח הייתה רק קצה הקרחון. עם זאת, כל פיסת מידע עשויה לעזור. לדעתי GSoC היא נקודת התחלה מצוינת להשתתפות בקוד פתוח.

אני גם מקווה שהניסיון שלי ייתן לך השראה להשתתפות בעתיד בפעילויות של קוד פתוח.

הנה כמה מההצעות שלי לכל מי שרוצה להשתתף ב-Google Summer of Code:

  1. יש לבחור רעיון שמתאים לכם: לדעתי, כשמחפשים רעיונות, העניין צריך להיות בעדיפות העליונה, ואחריו הכישורים. האסטרטגיה הזו תאפשר לכם לשמור על התלהבות לכל אורך התהליך של תרומת התוכן.
  2. איכות על פני כמות: ניתן לשלוח הצעות רבות כדי להגדיל את הסיכויים להתקבל ל-GSoC. עם זאת, אני חושב שהאיכות קריטית יותר כנראה מכיוון שהאנרגיה האנושית מוגבלת. התמקדות בשניים או שלושה רעיונות עשויה להיות מועילה יותר בסופו של דבר.
  3. אל תחששו מדברים חדשים: אתם מוזמנים לנסות טכנולוגיות שלא עבדתם איתן בפרויקט. עומד לרשותכם כמעט חודש של שיתוף פעולה בקהילה כדי להכיר טכנולוגיות לא מוכרות וקיץ שלם ליישום שלהן. לך על זה!
  4. הכינו היכרות עם הפרויקט מראש: לדוגמה, קראו את מסמכי הפיתוח, הציגו את היסטוריית ההתחייבויות והבעיות הקודמות, ועיינו בבקשות משיכה קודמות. הבנה כוללת של הפרויקט מראש תעזור לך לכתוב הצעה מקיפה יותר.
  5. שמור על תקשורת: נהלו תקשורת באופן קבוע עם המנטור שלכם, ואל תהססו לשאול שאלות כאשר אתם נתקלים בבעיות, לפני שאתם מגישים את הבקשה או לאחר מכן. רוב המנטורים מוכנים לעזור לכם לפתור בעיות, כך הם גם יוכלו לעקוב אחרי ההתקדמות שלכם.

תודה על הקריאה.