ซัมเมอร์แห่งโค้ดและส่วนขยายของ Chrome ใน Google

ฉันเป็นนักศึกษาปี 2 จากประเทศจีนที่หลงใหลในเว็บพัฒนาเว็บ ในช่วงปีแรกๆ ของการเรียน ฉันได้เข้าร่วมชมรมเทคนิคของวิทยาลัย ชมรมนี้ทำให้ฉันได้รู้จักการเขียนโค้ดและโอเพนซอร์ส ในชมรมนี้ ฉันได้พบกับกลุ่มพาร์ทเนอร์ที่มีแนวคิดคล้ายกันซึ่งชื่นชอบการเขียนโค้ด และจากพวกเขานี่เองที่ทำให้ฉันได้รู้จัก Google Summer of Code เมื่อต้นปี 2023 โปรแกรมระดับโลกที่จัดโดย Google นี้จะช่วยให้นักเรียนได้รู้จักองค์กรโอเพนซอร์สและแนะแนวทางให้นักเรียนใช้เวลาช่วงปิดเทอมให้เป็นประโยชน์ด้วยการเข้าร่วมกิจกรรมโอเพนซอร์ส

ฉันลองส่งใบสมัครแล้ว โชคดีที่ฉันได้รับเลือก ช่วงฤดูร้อนที่ฉันได้มีส่วนร่วมกับรีโพซิทอรีตัวอย่างส่วนขยาย Chrome เป็นช่วงเวลาที่น่าจดจําและมีค่า และแน่นอน ฉันยังได้เรียนรู้สิ่งต่างๆ มากมาย เช่น การสื่อสารที่มีประสิทธิภาพ ทักษะการเขียนโค้ด และความสามารถในการวางแผน เป็นต้น

เมื่อ GSoC 2023 ใกล้จะสิ้นสุดลงแล้ว เราจึงอยากแชร์ประสบการณ์บางส่วนใน GSoC โพสต์นี้จะแนะนำกระบวนการทั่วไปของ GSoC คร่าวๆ ผ่านการเข้าร่วมของฉันเอง หวังว่าจะเป็นประโยชน์สำหรับคุณ

เรื่องราวการมีส่วนร่วมของฉันใน GSoC

ฉันสมัครเข้าร่วมโปรเจ็กต์ Chromium GSoC 2023 ซึ่งงานหลักของฉันคือการอัปเกรดตัวอย่างส่วนขยาย Chrome ที่มีอยู่ให้ทำงานใน Manifest V3 รวมถึงสคริปต์และเอกสารที่เกี่ยวข้อง

ในช่วงเริ่มต้น

ฉันได้ทราบเกี่ยวกับ GSoC ครั้งแรกเมื่อเดือนกุมภาพันธ์ 2023 แต่ยังไม่แน่ใจว่าต้องการสมัครเข้าร่วมหรือไม่ ฉันมีข้อกังวล 2-3 ข้อในตอนนั้น

  • ฉันเป็นคนเก็บตัวและภาษาอังกฤษไม่ใช่ภาษาแม่ของฉัน การสื่อสารกับพี่เลี้ยงจึงอาจเป็นเรื่องยาก
  • ชุมชน GSoC มาจากทั่วทุกมุมโลก และการจัดการกับเขตเวลาที่ต่างกันอาจเป็นเรื่องยาก
  • GSoC เป็นโปรแกรมที่มีชื่อเสียงมากและมีผู้สมัครเข้าร่วมจำนวนมาก ทำให้โอกาสของฉันดูจะน้อยนิด

อย่างไรก็ตาม เรามั่นใจว่าปัญหาไม่ได้เกิดจากสาเหตุเหล่านี้

ก่อนจะเล่าเรื่องของเราเอง เราขอพูดถึงสิ่งที่เกิดขึ้นกับเราเมื่อต้นปี 2022 เหตุการณ์นี้ยังเป็นโอกาสให้ฉันได้เข้าร่วม GSoC ด้วย ฉันต้องการย้ายข้อมูลส่วนขยายเบราว์เซอร์ที่ใช้ Manifest V2 ไปยัง Manifest V3 ในการย้ายข้อมูลให้เสร็จสมบูรณ์ เราต้องดูเอกสารประกอบและทำความเข้าใจการเปลี่ยนแปลง API ทุกรายการ นอกจากนี้ เรายังต้องค้นหาว่าตัวอย่างที่เกี่ยวข้องมีไว้ให้ใช้อ้างอิงหรือไม่ เราเข้าใจ API ใหม่และโอนโค้ดได้ค่อนข้างยาก

ด้วยเหตุนี้ เราจึงตื่นเต้นมากเมื่อเรียกดูรายการโปรเจ็กต์ GSoC และเห็นแนวคิดที่เกี่ยวข้องกับ MV3 เราอยากมีส่วนร่วมในการปรับปรุงตัวอย่างส่วนขยาย Manifest V3 และมอบสิ่งอำนวยความสะดวกให้กับนักพัฒนาแอปในอนาคต

เมื่อเดือนมีนาคม เราได้ส่งอีเมลสั้นๆ เกี่ยวกับความตั้งใจของเราให้ Oliver ซึ่งเป็นหนึ่งในที่ปรึกษาที่รับผิดชอบ

ใบสมัครเข้าร่วมโปรเจ็กต์ GSoC

สวัสดี

ฉันเป็นนักศึกษาระดับปริญญาตรีสาขาวิทยาการคอมพิวเตอร์จากจีน ฉันได้ทราบเกี่ยวกับโปรเจ็กต์ตัวอย่างส่วนขยาย Chrome ที่ GSoC และสนใจที่จะปรับปรุงตัวอย่างไฟล์ Manifest V3 ฉันไม่มีประสบการณ์มากนักเกี่ยวกับตัวอย่าง API แต่มีประสบการณ์ในการพัฒนาเว็บและการพัฒนาส่วนขยาย MV3 (https://github.com/daidr/paimon-webext) ซึ่งทำให้ฉันตระหนักถึงความสำคัญของตัวอย่าง MV3 API จึงอยากทั้งเรียนรู้และมีส่วนร่วมในเรื่องนี้ ฉันจะยังสมัครเข้าร่วมโปรเจ็กต์นี้ได้ไหม

ขอขอบคุณ

หลังจากนั้นไม่นาน เราได้รับการตอบกลับจาก Oliver และ Ali (เจ้านายของ Oliver) เจ้าหน้าที่ตอบคำถามและให้ข้อมูลโดยละเอียดเกี่ยวกับกฎและลำดับเวลาเฉพาะของ GSoC และแชร์ข้อมูลอ้างอิงที่มีคุณค่ามากมายกับเราด้วย

รางวัลนี้เหมือนเป็นยากระตุ้นให้ฉันมีความมุ่งมั่นที่จะเดินหน้าต่อไป การเริ่มต้นก้าวแรกเป็นสิ่งสำคัญอย่างยิ่งหากคุณสนใจเข้าร่วมกิจกรรมโอเพนซอร์สที่กำลังจะจัดขึ้น ไม่ว่าจะเป็น GSoC 2024 หรือกิจกรรมอื่นๆ ก็ตาม อย่าลังเลและลองทำดู

ก่อนสมัคร เราตรวจสอบโค้ดของโปรเจ็กต์และอ่านเอกสารประกอบคร่าวๆ แม้ว่า GSoC จะมีช่วงทำความรู้จักกับชุมชนเกือบ 1 เดือนเพื่อให้ผู้เข้าร่วมทำความคุ้นเคยกับชุมชน แต่ความรู้ที่มีอยู่ก่อนก็ช่วยลดความกดดันและช่วยให้ฉันเขียนข้อเสนอที่ตรงเป้าหมายมากขึ้น

เราพยายามแก้ปัญหาข้อบกพร่องเริ่มต้นที่โปรเจ็กต์ระบุ ปัญหาเหล่านี้ค่อนข้างง่ายและช่วยให้ฉันเข้าใจโปรเจ็กต์ได้อย่างรวดเร็ว ขอขอบคุณที่ปรึกษาของฉัน Oliver (แม้ว่าเขาจะยังไม่ได้เป็นที่ปรึกษาของฉันในตอนนั้น) เขาตอบกลับอีเมลของฉันทันทีทุกครั้งที่ฉันต้องการคำชี้แจง และแก้ปัญหาให้ฉันอย่างอดทน หากพบปัญหาขณะเขียนข้อเสนอ คุณสามารถส่งข้อเสนอให้ที่ปรึกษาเพื่อดูว่าควรปรับปรุงส่วนใดบ้าง

การได้รับอนุมัติ

เขียนข้อเสนอเป็นขั้นตอนสุดท้ายก่อนสมัคร ข้อเสนอควรมีแนวคิด เป้าหมาย และกำหนดการนอกเหนือจากแบบฟอร์มการสมัคร คุณอาจได้รับเทมเพลตเพิ่มเติมสำหรับข้อเสนอ ทั้งนี้ขึ้นอยู่กับโปรเจ็กต์ที่คุณต้องการทำงาน มีตัวอย่างข้อเสนอสำเร็จรูปมากมายให้ใช้เป็นข้อมูลอ้างอิงทางออนไลน์

หลังจากเขียนร่างเสร็จแล้ว ฉันส่งให้ที่ปรึกษาเพื่อขอความคิดเห็น เมื่อส่งใบสมัครแล้ว คุณจะต้องรอเป็นเวลานาน และในช่วงต้นเดือนพฤษภาคม ฉันได้รับการแจ้งเตือนว่าได้รับเลือก

การทำงานกับโค้ด

ในช่วงเริ่มต้นใช้งาน เราจัดการกับข้อบกพร่องที่เหลืออยู่และตรวจสอบว่ามีทักษะใหม่ๆ ที่ต้องเรียนรู้หรือไม่ และใช้เวลาที่เหลืออ่านเอกสารประกอบ

หลังจากได้พูดคุยกับที่ปรึกษาแล้ว เราปรับเป้าหมายบางอย่างเพื่อให้มีเวลาทำงานที่เหมาะสมมากขึ้น นอกจากนี้ เรายังพูดคุยถึงแนวคิดในการสร้างหน้า 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 อย่างไรก็ตาม เราเชื่อว่าคุณภาพสำคัญกว่า เนื่องจากพลังงานของมนุษย์มีขีดจำกัด การมุ่งเน้นที่แนวคิด 2-3 รายการอาจมีประโยชน์มากกว่าในท้ายที่สุด
  3. อย่ากลัวสิ่งใหม่ๆ: อย่าลังเลที่จะลองใช้เทคโนโลยีที่คุณไม่เคยใช้ในโปรเจ็กต์ คุณมีเวลาเกือบ 1 เดือนในการทำความรู้จักกับเทคโนโลยีที่ไม่คุ้นเคยและทั้งช่วงฤดูร้อนในการใช้งานเทคโนโลยีเหล่านั้น ลุยเลย
  4. ทำความคุ้นเคยกับโปรเจ็กต์ล่วงหน้า เช่น อ่านเอกสารประกอบการพัฒนา ดูประวัติการคอมมิตและปัญหาก่อนหน้านี้ และอ่านผ่านคําขอดึงข้อมูลที่ผ่านมา การทําความเข้าใจภาพรวมของโปรเจ็กต์ล่วงหน้าจะช่วยให้คุณเขียนข้อเสนอที่ครอบคลุมมากขึ้น
  5. สื่อสารอย่างต่อเนื่อง: สื่อสารกับที่ปรึกษาเป็นประจำ และอย่าลังเลที่จะถามคำถามเมื่อพบปัญหา ไม่ว่าจะก่อนสมัครหรือหลังจากได้รับเลือก เมนเทอร์ส่วนใหญ่ยินดีที่จะช่วยเหลือคุณแก้ปัญหา ซึ่งจะช่วยให้เมนเทอร์ติดตามความคืบหน้าของคุณได้ด้วย

ขอขอบคุณที่อ่าน