ซัมเมอร์แห่งโค้ดและส่วนขยายของ 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 และอำนวยความสะดวกให้กับนักพัฒนาซอฟต์แวร์ในอนาคต

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

การสมัครเข้าร่วมโครงการ GSoC

สวัสดี

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

ขอขอบคุณ

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

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

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

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

ได้รับการยอมรับ

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

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

การเขียนโค้ด

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

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

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