เผยแพร่: 28 ตุลาคม 2025
ฉันชื่อ Harsh Singh เป็นนักศึกษาปีสุดท้ายในหลักสูตร B.Tech สาขาวิศวกรรมเคมีที่ IIT (ISM) Dhanbad และในปี 2025 ฉันได้เข้าร่วม Google Summer of Code (GSOC) โพสต์นี้จะแชร์เส้นทางของฉันในการได้รับการยอมรับให้เข้าร่วม GSoC และสิ่งที่ฉันได้เรียนรู้ขณะเข้าร่วม
ก่อน GSoC: การค้นพบการพัฒนาส่วนขยาย
เมื่อปีแรกที่ฉันเข้าเรียน ฉันก็เหมือนกับคนอื่นๆ ที่อยากเข้าร่วม CyberLabs ซึ่งเป็นชมรมเทคโนโลยีอย่างเป็นทางการของวิทยาลัย เพื่อเตรียมตัว ฉันจึงไปหาผู้สูงอายุที่แสดงส่วนขยาย Chrome ที่เขาสร้างขึ้นเพื่อเข้าสู่สโมสร ซึ่งแตกต่างจากการพัฒนาเว็บมาตรฐานที่ฉันรู้จักโดยสิ้นเชิง ดูเหมือนว่าจะเป็นวิธีที่ยอดเยี่ยมในการแทรกสคริปต์และแก้ไขเว็บไซต์ในเบราว์เซอร์ของคุณเอง
ฉันได้ลองใช้ API ของส่วนขยายมากมาย รวมถึงได้เห็นการเปลี่ยนจาก Manifest V2 เป็น V3 ด้วย ผมสร้างโปรเจ็กต์เล็กๆ โดยใช้เครื่องมือเหล่านั้นได้ เข้าไปใน CyberLabs แล้วก็ยุ่งกับชีวิตในมหาวิทยาลัย ทำให้ไม่ได้พัฒนาส่วนขยายไปสักพัก
เมื่อเร็วๆ นี้ ขณะที่กำลังคิดถึงการสมัครเข้าร่วม Google Summer of Code (GSoC) ฉันได้พบโปรเจ็กต์เกี่ยวกับ Chrome Extensions API ความรู้สึกหวนรำลึกถึงอดีตทำให้ฉันคิดว่า "จะดีไหมนะถ้าเราสร้าง API ในครั้งนี้เพื่อให้นักศึกษาปี 2 ได้ใช้สมัครเข้า CyberLabs ในอนาคต" นั่นคงเป็นสิ่งที่เจ๋งที่สุด" เนื่องจากฉันเข้าใจคำศัพท์ส่วนใหญ่ของส่วนขยายอยู่แล้วจากงานที่ผ่านมา โปรเจ็กต์นี้จึงเหมาะกับฉันเป็นอย่างยิ่ง
เตรียมพร้อมสมัคร
ฉันจึงตัดสินใจติดต่อ Oliver ซึ่งเป็นวิศวกรฝ่ายความสัมพันธ์กับนักพัฒนาแอปในทีมส่วนขยาย Chrome ฉันถามเขาว่าผู้สมัครที่ประสบความสำเร็จในโปรแกรม GSoC ของ Chromium ต้องมีคุณสมบัติอย่างไร เขาตอบกลับภายใน 2-3 วัน อีเมลของเขาให้กำลังใจฉันมาก เขาบอกว่าแค่อยากดูว่าฉันสามารถสำรวจโค้ดเบสและเขียน C++ ได้ไหม
ฉันเริ่มต้นด้วยการตั้งค่า Chromium ในเครื่อง มันเป็นความยากลำบากอย่างแท้จริง ฉันใช้เวลา 4 วันเต็มและพยายามนับครั้งไม่ถ้วนในที่สุดก็ตั้งค่าโค้ดเบสขนาดใหญ่และสร้างสำเร็จ ฉันพบปัญหาเล็กๆ น้อยๆ ทางออนไลน์เกี่ยวกับ sidePanel.open() โดยไม่มีท่าทางของผู้ใช้ จึงส่งแพตช์เพื่อแก้ไข (พอมองย้อนกลับไปก็พบว่าเป็นการเปลี่ยนแปลงเล็กๆ น้อยๆ 🙂) ฉันส่งอีเมลแจ้งความคืบหน้าให้ Oliver ทราบ เขาบอกว่าทางบริษัทไม่มีแผนที่จะรองรับฟีเจอร์นี้ แต่ก็บอกด้วยว่าผลงานที่ฉันทำนั้นเพียงพอที่จะแสดงให้เห็นว่าฉันจริงจังกับเรื่องนี้ จากนั้นเขาก็แนะนำให้ฉันใช้getPositionกับแผงด้านข้าง ฉันจึงหาวิธีแก้ปัญหา ส่งอีเมลไปหาเขาอีกครั้ง และเขาก็ดีใจมากที่บอกว่าแนวทางของฉันสอดคล้องกับสิ่งที่ทีมของเขากำลังพูดคุยกันอยู่ ซึ่งทำให้ฉันมั่นใจที่จะเดินหน้าโปรเจ็กต์ต่อ เพราะรู้ว่าฉันเข้าใจโค้ดและทำการเปลี่ยนแปลงได้
ข้อเสนอ GSoC ของฉัน
ถัดมาคือข้อเสนอ GSoC คำอธิบายโปรเจ็กต์เริ่มต้น "API ของแผงด้านข้างและ API ของ DNR" นั้นกว้างมาก ฉันจึงไม่แน่ใจว่าจะระบุงานใดบ้างหรือจะสร้างไทม์ไลน์ในข้อเสนอของฉันอย่างไร ฉันส่งอีเมลถึงโอลิเวอร์เกี่ยวกับเรื่องนี้ และเขาตอบกลับว่าได้อัปเดตคำอธิบายโปรเจ็กต์แล้ว และฉันก็ดีใจที่เขาได้เพิ่ม API หลายตัว รวมถึง sidePanel.getPosition API ที่ฉันกำลังทำงานอยู่
องค์ประกอบสำคัญของข้อเสนอคือความเข้าใจในโปรเจ็กต์ แนวคิดการออกแบบ งานก่อนการเสนอ และกำหนดเวลาส่งมอบ ฉันกำหนดขอบเขตขนาดของงานได้อย่างถูกต้อง เนื่องจากแสดงให้เห็นถึงความเข้าใจอย่างละเอียดเกี่ยวกับงานที่เกี่ยวข้อง ฉันร่างข้อเสนอและให้ตรวจสอบ 2 ครั้ง
สิ่งหนึ่งที่ฉันเสียใจและเป็นเคล็ดลับสำคัญสำหรับผู้สมัครในอนาคตคือการไม่ระบุข้อกำหนดการออกแบบที่เหมาะสมสำหรับฟีเจอร์ที่ฉันวางแผนจะสร้าง เช่น เมื่อเสนอ API เพื่อปิดแผงด้านข้าง ฉันควรระบุพารามิเตอร์ ให้เหตุผลในการเลือก อธิบายวิธีจัดการกรณีที่พบได้ยาก และอธิบายวิธีกำหนดมาตรฐาน API สำหรับเบราว์เซอร์ทั้งหมด ซึ่งจะแสดงให้เห็นถึงความเข้าใจในระดับที่ลึกซึ้งยิ่งขึ้น
ในบริบทของโปรเจ็กต์ส่วนขยาย Chromium หน่วยงานสำคัญคือ WECG (WebExtensions Community Group ออกเสียงว่า "วี-ซี-จี") ซึ่งเป็นที่ที่ใช้พูดคุยอย่างเป็นทางการเกี่ยวกับการออกแบบ API ใหม่ ในช่วง GSoC ผู้ร่วมให้ข้อมูลอาจต้องเสนอ API ของตนเองต่อกลุ่มนี้ ดังนั้น การเตรียมแนวคิดการออกแบบไว้ในข้อเสนอ GSoC จึงเป็นข้อได้เปรียบอย่างมาก เนื่องจากจะแสดงให้เห็นว่าคุณพร้อมสำหรับขั้นตอนสำคัญนี้และจะทำได้ดีในช่วงระยะเวลา GSoC
ในช่วงต้นเดือนพฤษภาคม ฉันได้รับอีเมลแจ้งว่าได้รับการยอมรับ 🙂
การมีส่วนร่วมของฉันในช่วง GSoC
ช่วง GSoC นั้นยอดเยี่ยมมาก ที่ปรึกษาของฉัน โซโลมอน เป็นคนดีมากๆ และเราได้ประชุมกันทุกสัปดาห์อย่างมีประสิทธิภาพ ซึ่งช่วยให้ฉันทำงานได้ตามแผน นอกจากนี้ ฉันยังได้รู้จักผู้ร่วมให้ข้อมูลอีกคนหนึ่งชื่อ Amit P ซึ่งคอยให้ความช่วยเหลือฉันทุกครั้งที่รู้สึกท้อแท้ การเข้าร่วมการประชุม WECG ทำให้ฉันได้เปิดโลกทัศน์ ได้เห็นว่าสิ่งต่างๆ ทำงานอย่างไรในระดับนั้น และเข้าใจว่าทำไมประสบการณ์จึงสำคัญมาก ฉันได้พูดคุยเรื่องข้อเสนอ API ของฉันที่นั่นและได้รับไฟเขียวจากผู้ให้บริการเบราว์เซอร์รายอื่น
ฉันเปิด CL (รายการการเปลี่ยนแปลง) หลายรายการตั้งแต่แรก ความคืบหน้าของฉันช้าลงในภายหลังเนื่องจากการตรวจสอบโค้ดไปๆ มาๆ แต่ฉันก็ยินดีที่จะทำต่อไป การมีส่วนร่วมหลักที่ฉันผสานรวมคือการมีส่วนร่วมใน Side Panel API
sidePanel.getLayout()APIsidePanel.close()APIsidePanel.onOpened()และเหตุการณ์sidePanel.onClosed()(อิงตามข้อเสนอวงจรจาก Microsoft)
ส่วน CL อื่นๆ สำหรับ Commands API ยังอยู่ระหว่างดำเนินการ (ขึ้นอยู่กับว่าฉันจะยังคงใช้งานอยู่หรือไม่หลังจาก GSoC 🙂) คุณดูรายละเอียดได้ในรายงานฉบับสุดท้ายของฉัน ซึ่งจะอยู่ในลิงก์ "ดูโค้ด" ในหน้าโปรเจ็กต์ GSoC ของฉัน
ขอขอบคุณ Oliver Dunk, Solomon Kinard, Kelvin Jiang, Devlin Cronin, Tom Lukaszewicz และ Andrea Orru ที่ตรวจสอบ CL ของฉันเกือบทั้งหมด การได้เห็นโค้ดของตัวเองกลายเป็นส่วนหนึ่งของ Chrome เป็นเรื่องที่น่าทึ่งมาก ที่ปรึกษาของฉันบอกว่าฉันมีความรู้สึกเป็น "เจ้าของ" อย่างแรงกล้า ซึ่งเป็นคำชมที่ยิ่งใหญ่สำหรับฉัน
สรุป
หากคุณถามว่า GSoC ให้อะไรแก่ฉันบ้าง คำตอบคือมากกว่าความรู้ด้านเทคนิค ซึ่งทำให้ฉันได้เข้าร่วมการประชุมที่สำคัญ ซึ่งเป็นการประชุมที่จะส่งผลกระทบต่อผู้พัฒนาส่วนขยายหลายราย ซึ่งเป็นผลงานแรกของฉันที่ได้นำไปใช้ในแอปพลิเคชันในโลกแห่งความเป็นจริง ฉันได้พบกับผู้ให้คำปรึกษาที่เป็นผู้ป่วยซึ่งคอยให้คำแนะนำและสอนฉันหลายอย่าง ทำให้ประสบการณ์ทั้งหมดเป็นประสบการณ์ที่น่าสนใจอย่างยิ่ง
ฉันหวังว่าเรื่องราวของฉันจะเป็นข้อมูลอ้างอิงที่เป็นประโยชน์สำหรับคนอื่นๆ ที่ต้องการมีส่วนร่วมใน Chromium หรือเข้าร่วม Google Summer of Code
เคล็ดลับสำหรับผู้ที่สมัครเข้าร่วม GSoC
- เลือกไอเดียที่คุณชอบจริงๆ คุณควรให้ความสำคัญกับดอกเบี้ยเป็นอันดับแรก ทักษะของคุณปรับปรุงได้เสมอ แต่ความหลงใหลคือสิ่งที่ช่วยให้คุณก้าวต่อไปได้เมื่อเจออุปสรรค ฉันเคยอยู่ทั้ง 2 ฝั่ง และเชื่อเถอะว่าเมื่อคุณทำงานในสิ่งที่คุณไม่สนใจ คุณจะโทษคนอื่นเมื่อเกิดข้อผิดพลาด แต่หากคุณรักงานนี้ คุณจะมองว่ามันเป็นความท้าทายที่ต้องเอาชนะ
- อย่ากลัวการแข่งขัน ฉันเห็นหลายคนหมดกำลังใจหลังจากเห็นว่าใครสมัครเข้าร่วมช่องชุมชนบ้าง โปรเจ็กต์ที่ดีทุกโปรเจ็กต์จะมีการแข่งขัน มุ่งเน้นไปที่จุดแข็งของคุณ หากคุณเคยใช้ไลบรารีใดมาก่อน ให้ค้นหาโปรเจ็กต์ที่ใช้ไลบรารีนั้น คุณจะมีความได้เปรียบเพราะสามารถนำประสบการณ์เฉพาะตัวมาใช้ได้
- ยอมรับว่าโชคมีส่วนและมุ่งเน้นที่การสื่อสาร มาพูดกันตามจริง GSoC ต้องอาศัยโชคด้วย โปรเจ็กต์ยอดนิยมบางโปรเจ็กต์ได้รับข้อเสนอมากกว่า 300 รายการสำหรับสปอนเซอร์ 1-2 ราย ฉันไม่คิดว่าที่ปรึกษาจะอ่านทุกข้อความอย่างละเอียดได้ ด้วยเหตุนี้ การสื่อสารตั้งแต่เนิ่นๆ จึงเป็นสิ่งสำคัญ มีส่วนร่วมในโปรเจ็กต์ล่วงหน้า และตรวจสอบว่าข้อเสนอของคุณมีความชัดเจนและตรงประเด็น
- หากไม่ได้รับเลือก ก็ไม่ได้หมายความว่าคุณจะไม่มีโอกาสอีก ตอนนี้คุณก็มีผลงานโอเพนซอร์สที่มีคุณค่าในเรซูเม่แล้ว ใช้จดหมายดังกล่าวเพื่อสมัครรับโอกาสอื่นๆ ในช่วงฤดูร้อน คุณได้ทำงานหนักไปแล้ว
สุดท้ายแต่ไม่ท้ายสุด
"ทุกคนถูกสร้างมาเพื่อการทำงานบางอย่าง และความปรารถนาที่จะทำงานนั้นก็ถูกใส่ไว้ในหัวใจของทุกคน" — รูมี
ขอขอบคุณที่อ่าน