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

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

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

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

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

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

בהתחלה

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

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

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

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

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

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

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

שלום,

אני סטודנט לתואר ראשון במדעי המחשב מסין. ב-GSoC שמעתי על הפרויקט הקשור לדוגמאות של תוספים ל-Chrome, ורציתי לשפר את הדוגמאות של Manifest V3. אין לי הרבה ניסיון קודם בעבודה על דוגמאות ל-API, אבל יש לי ניסיון בפיתוח אינטרנט ובפיתוח תוספים ל-MV3‏ (https://github.com/daidr/paimon-webext), ובעקבות זאת הבנתי את החשיבות של דוגמאות ל-MV3 API. לכן, אני רוצה גם ללמוד וגם לתרום לפרויקט. האם עדיין אפשר להגיש בקשה לפרויקט הזה?

תודה.

זמן קצר לאחר מכן קיבלתי תשובה מ-Oliver ומ-Ali (הבוס של Oliver). הם ענו על השאלות שלי וסיפקנו מידע מפורט על הכללים הספציפיים ועל לוח הזמנים של GSoC. הם גם שיתפו איתי הרבה חומרים מועילים.

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

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

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

קבלת אישור

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

אחרי שסיימתי את הטיוטה, שלחתי אותה למנטור שלי לקבלת משוב. אחרי שליחת הבקשה, צריך להמתין זמן רב. בתחילת מאי קיבלתי הודעה על אישור הבקשה.

Code Work

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

אחרי שיחה עם המנטור שלי, שינינו כמה יעדים כדי שהזמן שהוקצה למשימות יהיה סביר יותר. דיברנו גם על רעיון ליצירת דף חדש בכתובת 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. כדאי להכיר את הפרויקט מראש: לדוגמה, כדאי לקרוא את מסמכי התיעוד למפתחים, לעיין בהיסטוריית ההתחייבויות הקודמות ובבעיות קודמות ולעיין בבקשות קודמות ל-pull. הבנה כללית של הפרויקט מראש תעזור לכם לכתוב הצעה מקיפה יותר.
  5. קשר שוטף: חשוב לשמור על קשר שוטף עם המנטור/ית, ולא להסס לשאול שאלות כשנתקלים בבעיות, בין אם לפני שליחת הבקשה ובין אם אחרי שהיא אושרה. רוב המנטורים מוכנים לעזור לכם לפתור בעיות, וכך הם יכולים גם לעקוב אחרי ההתקדמות שלכם.

תודה שקראת.