Mùa hè mã và tiện ích của Chrome

Tôi là sinh viên năm hai đến từ Trung Quốc, đam mê phát triển web. Trong năm đầu tiên, tôi đã tham gia một câu lạc bộ kỹ thuật tại trường đại học. Câu lạc bộ này là nơi tôi bắt đầu làm quen với lập trình và nguồn mở. Trong câu lạc bộ, tôi gặp một nhóm đối tác có cùng chí hướng và yêu thích lập trình. Và chính từ họ, tôi đã biết đến chương trình Google Summer of Code vào đầu năm 2023. Chương trình toàn cầu do Google tổ chức này kết nối sinh viên với các tổ chức nguồn mở và hướng dẫn họ tận dụng mùa hè bằng cách tham gia các hoạt động nguồn mở.

Tôi đã thử và gửi đơn đăng ký. May mắn là tôi đã được chấp nhận. Mùa hè tôi dành để đóng góp cho kho lưu trữ Mẫu tiện ích Chrome thật đáng nhớ và quý giá. Tất nhiên, tôi cũng học được nhiều điều: kỹ năng giao tiếp hiệu quả, kỹ năng lập trình và khả năng lập kế hoạch, cùng nhiều điều khác.

GSoC 2023 sắp kết thúc, tôi muốn chia sẻ một số trải nghiệm của mình trong chương trình này. Bài đăng này sẽ giới thiệu ngắn gọn về quy trình chung của GSoC thông qua quá trình tham gia của tôi. Hy vọng bài đăng này sẽ hữu ích cho bạn!

Câu chuyện về cách tôi đóng góp cho GSoC

Tôi đã đăng ký Dự án Chromium GSoC 2023, trong đó nhiệm vụ chính của tôi là nâng cấp các mẫu tiện ích Chrome hiện có để hoạt động trong Manifest V3, bao gồm một số tập lệnh và tài liệu liên quan.

Ngay từ đầu

Tôi biết đến GSoC lần đầu tiên vào tháng 2 năm 2023 nhưng chưa chắc chắn mình có muốn đăng ký tham gia hay không. Khi đó, tôi có một vài mối lo ngại:

  • Tôi là người hướng nội và tiếng Anh không phải là ngôn ngữ mẹ đẻ của tôi, vì vậy, việc giao tiếp với người cố vấn có thể sẽ gặp khó khăn.
  • Cộng đồng GSoC đến từ khắp nơi trên thế giới và việc giải quyết sự khác biệt về múi giờ có thể gặp khó khăn.
  • GSoC là một chương trình nổi tiếng nên có thể có sự cạnh tranh, khiến cơ hội của tôi có vẻ mong manh.

Tuy nhiên, tôi có thể tự tin nói rằng không có vấn đề nào trong số này.

Trước khi kể câu chuyện của mình, tôi muốn nói về một sự việc đã xảy ra với tôi vào đầu năm 2022. Sự cố này cũng là cơ hội để tôi tham gia GSoC. Tôi muốn di chuyển một tiện ích trình duyệt dựa trên Manifest V2 sang Manifest V3. Để hoàn tất quá trình di chuyển, tôi phải tham khảo tài liệu và hiểu rõ mọi thay đổi về API. Tôi cũng phải tìm xem có mẫu nào liên quan để tham khảo hay không. Tôi gặp khá nhiều khó khăn trong việc tìm hiểu API mới và chuyển mã.

Đó là lý do tôi rất hào hứng khi duyệt qua danh sách dự án GSoC và bắt gặp ý tưởng liên quan đến MV3. Tôi rất muốn đóng góp vào việc cải thiện các mẫu tiện ích Manifest V3 và cung cấp một tiện ích cho các nhà phát triển trong tương lai.

Vào tháng 3, tôi đã gửi email ngắn cho Oliver, một trong những người cố vấn phụ trách, về ý định của mình:

Đơn đăng ký tham gia dự án GSoC

Chào bạn!

Tôi là sinh viên đại học chuyên ngành Khoa học máy tính ở Trung Quốc. Tôi đã tìm hiểu về dự án liên quan đến Mẫu tiện ích Chrome tại GSoC và tôi muốn cải thiện Mẫu tệp kê khai V3. Tôi không có nhiều kinh nghiệm trước đây trong việc làm việc với Mẫu API, tuy nhiên, tôi có kinh nghiệm trong việc phát triển web và phát triển tiện ích MV3 (https://github.com/daidr/paimon-webext). Điều này đã giúp tôi nhận ra tầm quan trọng của các mẫu API MV3, vì vậy, tôi muốn vừa học vừa đóng góp cho các mẫu này. Tôi vẫn có thể đăng ký dự án này không?

Cảm ơn bạn.

Không lâu sau đó, tôi nhận được thư trả lời của Oliver và Ali (sếp của Oliver). Họ đã trả lời các câu hỏi của tôi và cung cấp thông tin chi tiết về các quy tắc và tiến trình cụ thể của GSoC. Họ cũng chia sẻ với tôi nhiều tài liệu tham khảo có giá trị.

Điều này giống như một liều thuốc kích thích, giúp tôi thêm quyết tâm để tiến lên. Việc thực hiện bước đầu tiên là quan trọng nhất nếu bạn muốn tham gia các sự kiện nguồn mở sắp tới, cho dù đó là GSoC 2024 hay bất kỳ sự kiện nào khác; đừng ngần ngại và hãy dũng cảm thử sức.

Trước khi đăng ký, tôi đã kiểm tra mã của dự án và lướt qua tài liệu. Mặc dù GSoC cung cấp khoảng thời gian gần một tháng để các học viên làm quen với cộng đồng, nhưng kiến thức trước đó đã giúp tôi giảm bớt áp lực và có thể viết một đề xuất phù hợp hơn.

Tôi đã cố gắng giải quyết các lỗi khởi động do dự án cung cấp. Những vấn đề này tương đối đơn giản và giúp tôi nhanh chóng hiểu được dự án. Tôi rất cảm ơn người cố vấn Oliver (mặc dù lúc đó anh chưa phải là cố vấn của tôi). Anh luôn nhanh chóng trả lời email của tôi mỗi khi tôi cần làm rõ và kiên nhẫn giải quyết các vấn đề của tôi. Khi gặp vấn đề trong khi viết đề xuất, bạn cũng có thể gửi đề xuất đó cho người cố vấn để xem có khía cạnh nào cần cải thiện hay không.

Đã được chấp nhận

Viết đề xuất là việc cuối cùng cần làm trước khi đăng ký. Ngoài biểu mẫu đăng ký, đề xuất phải bao gồm các ý tưởng, mục tiêu và lịch trình. Tuỳ thuộc vào dự án mà bạn muốn làm việc, bạn có thể được cung cấp thêm một mẫu cho đề xuất. Có nhiều ví dụ về đề xuất tạo sẵn trên mạng để bạn tham khảo.

Sau khi hoàn tất bản nháp, tôi đã gửi bản nháp đó cho người cố vấn để nhận ý kiến phản hồi. Sau khi gửi đơn đăng ký, bạn sẽ phải chờ rất lâu. Vào đầu tháng 5, tôi nhận được thông báo rằng tôi đã được chấp nhận.

Công việc mã

Trong giai đoạn làm quen ban đầu, trước tiên, tôi đã xử lý các lỗi còn lại của trình khởi động và kiểm tra xem có kỹ năng mới nào mà tôi phải học hay không. Và tôi dành thời gian còn lại để đọc tài liệu.

Sau khi thảo luận với người cố vấn, chúng tôi đã điều chỉnh một số mục tiêu để thời gian dành cho các nhiệm vụ trở nên hợp lý hơn. Chúng tôi cũng đã thảo luận về ý tưởng tạo một trang mới trên developer.chrome.com liệt kê tất cả các mẫu API và cung cấp các bộ lọc cơ bản để giúp nhà phát triển nhanh chóng tìm thấy các mẫu cần thiết. Đây là một nhiệm vụ khá phức tạp đối với tôi. Tôi và người cố vấn đã mất khá nhiều thời gian để xác định dự án và viết tài liệu yêu cầu sản phẩm (PRD).

Đối với nhiệm vụ lớn hơn này, chúng tôi quyết định cần có một tập lệnh tự động trong kho lưu trữ mẫu để duyệt qua kho lưu trữ và tạo một tệp JSON chứa danh sách các mẫu tiện ích và API mà các mẫu đó sử dụng. Kho lưu trữ tài liệu developer.chrome.com hiện sử dụng tệp này để tạo một trang.

Trước tiên, tôi cân nhắc sử dụng Babel để phân tích Cây cú pháp trừu tượng của mã mẫu và xác định các API mà mã mẫu sử dụng. Sau khi chia sẻ ý tưởng này với người cố vấn, tôi phát hiện ra rằng họ từng làm việc về một vấn đề tương tự, xác nhận tính khả thi của phương pháp này. Sau khi tôi hoàn thành mã, người cố vấn và các thành viên khác trong nhóm của anh ấy đã đưa ra những đề xuất có giá trị, bao gồm việc chú ý đến việc phân đoạn mã, chuẩn hoá kiểu mã và ghi lại các hàm đúng cách.

Sau một số bài đánh giá lớn và nhỏ, mã đã được hợp nhất thành công. Bạn có thể tìm thấy toàn bộ chuỗi tin nhắn trên GitHub hoặc xem trang trực tiếp.

Kết thúc

Nếu bạn hỏi tôi GSoC mang lại cho tôi điều gì, trước tiên, tất nhiên là kiến thức liên quan đến API tiện ích trình duyệt. Bằng cách đọc tài liệu và viết các mẫu mới, tôi đã hiểu rõ về nhiều API tiện ích trình duyệt.

Ngoài ra, tôi đã có được nhiều kỹ năng mà trước khi được chấp nhận tham gia GSoC, tôi chưa từng tiếp xúc, chẳng hạn như tuân theo quy trình xem xét mã toàn diện và tạo PRD. Tôi cũng đã bắt đầu sử dụng các hành động trên GitHub để tự động hoá quy trình làm việc và tìm hiểu cách sử dụng Babel để duyệt qua tất cả các mẫu tiện ích cũng như theo dõi các API được sử dụng. Hơn nữa, tôi đã có trải nghiệm đầu tiên với công cụ tạo mẫu Nunjucks. Đây là những kỹ năng thiết yếu để lập trình và tôi rất vui khi đã học được những kỹ năng này. Tôi rất vui khi được tham gia các cộng đồng nguồn mở.

Mùa hè này đã mang đến cho tôi nhiều kỷ niệm khó phai. Tôi rất thích lập trình. Tôi đã gặp những người cố vấn kiên nhẫn, hướng dẫn và dạy tôi những kiến thức thú vị, làm phong phú thêm kinh nghiệm của tôi.

Kiến thức trong lĩnh vực khoa học máy tính là vô tận. Khi so sánh bản thân với những người khác, tôi nhận ra rằng kiến thức của mình về nguồn mở chỉ là phần nổi của tảng băng. Tuy nhiên, dù ít dù nhiều, sự đóng góp của bạn đều có ích. Tôi tin rằng GSoC là một điểm khởi đầu tuyệt vời để tham gia vào nguồn mở.

Tôi cũng hy vọng kinh nghiệm của mình có thể cung cấp một số thông tin tham khảo cho những người tham gia các hoạt động nguồn mở trong tương lai.

Dưới đây là một số đề xuất của tôi dành cho những ai muốn tham gia Google Summer of Code:

  1. Chọn một ý tưởng phù hợp với bạn: Theo tôi, khi tìm ý tưởng, bạn nên ưu tiên mối quan tâm, sau đó là kỹ năng. Chiến lược này sẽ giúp bạn duy trì sự nhiệt tình trong suốt quá trình đóng góp.
  2. Chất lượng hơn số lượng: Bạn có thể gửi nhiều đề xuất để tăng cơ hội được chấp nhận tham gia GSoC. Tuy nhiên, tôi cho rằng chất lượng có thể quan trọng hơn vì năng lượng của con người là có hạn. Cuối cùng, việc tập trung vào 2 hoặc 3 ý tưởng có thể hữu ích hơn.
  3. Đừng ngại thử những điều mới: Đừng ngần ngại thử các công nghệ mà bạn chưa từng sử dụng trong một dự án. Bạn có gần một tháng để làm quen với các công nghệ mới và cả mùa hè để triển khai các công nghệ đó. Hãy cứ thử!
  4. Làm quen trước với dự án: Ví dụ: đọc tài liệu phát triển, xem nhật ký thay đổi và vấn đề trước đó, cũng như xem qua các yêu cầu kéo trước đây. Việc tìm hiểu tổng thể về dự án trước sẽ giúp bạn viết một đề xuất toàn diện hơn.
  5. Duy trì liên lạc: Thường xuyên trao đổi với người cố vấn và đừng ngại đặt câu hỏi khi gặp vấn đề, cho dù là trước khi đăng ký hay sau khi được chấp nhận. Hầu hết các cố vấn đều sẵn sàng giúp bạn giải quyết vấn đề; nhờ đó, họ cũng có thể theo dõi tiến trình của bạn.

Cảm ơn bạn đã đọc thư.