私は中国出身のウェブ開発に情熱を注ぐ 2 年生です。最初の年に、私は大学の技術クラブに参加しました。このクラブは、私にコーディングとオープンソースの世界を紹介してくれました。クラブでは、コーディングを愛する同じ志を持つ仲間たちに出会いました。そして、2023 年の初めに彼らから Google Summer of Code について知りました。この Google が主催するグローバルプログラムは、学生とオープンソースの組織をつなぎ、オープンソース活動に参加することで夏を有意義に過ごす手助けをします。
挑戦してみることにし、応募しました。幸運にも、私は受け入れられました。Chrome Extension Samples リポジトリに貢献した夏は、思い出深く貴重なものでした。もちろん、多くのことも学びました:効果的なコミュニケーション、コーディングスキル、計画能力などです。
GSoC 2023 が終わりに近づいている今、私の GSoC での経験を共有する価値があります。この投稿では、私自身の参加を通じて GSoC の一般的なプロセスを簡単に紹介し、皆さんの参考になればと思います!
GSoC への貢献の物語#
私は Chromium GSoC 2023 プロジェクトに応募しました。私の主なタスクは、既存の Chrome 拡張機能のサンプルを Manifest V3 に対応させることでした。その中には、関連するスクリプトやドキュメントも含まれていました。
最初の始まり#
私は 2023 年 2 月に GSoC のことを初めて知りましたが、応募するかどうかはまだ決めかねていました。その時、いくつかの懸念がありました:
- 私は内向的で、英語は母国語ではないため、メンターとのコミュニケーションが難しいかもしれません。
- GSoC のコミュニティは世界中から集まっており、タイムゾーンの違いに対処するのが難しいかもしれません。
- GSoC は非常に有名なプログラムであり、競争が激しいため、私のチャンスは薄いように思えました。
しかし、これらの問題は全く問題ではなかったと言えます。
私の話をする前に、2022 年の初めに私に起こった出来事について話したいと思います。この出来事も、私が GSoC に参加する機会となりました。私は Manifest V2 に基づくブラウザ拡張機能を Manifest V3 に移行したいと考えていました。移行を完了するためには、ドキュメントを参照し、すべての API の変更を理解する必要がありました。また、参考にするための関連サンプルがあるかどうかを調べる必要もありました。新しい API を理解し、コードを移行するのは私にとって非常に難しいことでした。
だからこそ、GSoC のプロジェクトリストを見て MV3 に関連するアイデアを見つけたとき、私は非常に興奮しました。Manifest V3 の拡張機能サンプルを改善し、将来の開発者のための便利なものを提供したいと強く思いました。
3 月に、担当メンターの一人であるオリバーに、私の意向について簡単なメールを送りました:
GSoC プロジェクトへの参加申請
こんにちは、
私は中国出身の CS 学部の学部生です。GSoC に関連する Chrome Extensions Samples プロジェクトについて知り、Manifest V3 Samples の改善に興味があります。API Samples に関する経験はあまりありませんが、ウェブ開発や MV3 拡張機能の開発(https://github.com/daidr/paimon-webext)に経験があり、MV3 API サンプルの重要性を実感しましたので、学びながら貢献したいと思っています。このプロジェクトに応募することはまだ可能でしょうか?
ありがとうございます。
しばらくして、オリバーと彼の上司であるアリから返信がありました。彼らは私の質問に答え、GSoC の具体的なルールやタイムラインについて詳細な情報を提供してくれました。また、多くの貴重な参考資料も共有してくれました。
それはまるで活力を与えられたようで、前進する決意を強めてくれました。GSoC 2024 や他のオープンソースイベントに参加したいと思っているなら、第一歩を踏み出すことが最も重要です。ためらわず、勇気を持って挑戦してください。
応募する前に、私はプロジェクトのコードを確認し、ドキュメントをざっと読みました。GSoC は参加者がコミュニティに慣れるための約 1 か月のコミュニティボンディング期間を提供していますが、事前の知識がプレッシャーを軽減し、よりターゲットを絞った提案を書くことを可能にしました。
私はプロジェクトが提供するスターターバグを解決しようとしました。これらの問題は比較的簡単で、プロジェクトを迅速に理解するのに役立ちました。私はメンターのオリバーに感謝しています(当時は私のメンターではありませんでしたが)。彼は私が明確さを求めるときに、迅速にメールに返信してくれ、私の問題を忍耐強く解決してくれました。提案を書く際に問題に直面した場合は、メンターに送信して改善が必要な部分があるかどうかを確認することもできます。
受け入れられる#
提案を書くことは、応募する前に行う最後の作業です。提案には、アイデア、目標、スケジュールを含める必要があります。希望するプロジェクトによっては、提案のための追加のテンプレートが提供されることもあります。オンラインには多くの既製の提案例が参考用にあります。
ドラフトを完成させた後、私はメンターにフィードバックを求めて送りました。応募が提出されると、長い待機期間があります。そして、5 月の初めに、私は受け入れられたという通知を受け取りました。
コード作業#
最初のボンディング期間中、私はまず残りのスターターバグに対処し、学ぶ必要がある新しいスキルがあるかどうかを確認しました。そして、残りの時間はドキュメントを読むことに費やしました。
メンターとの話し合いの後、私たちはいくつかの目標を調整し、タスクに割り当てられた時間をより合理的にしました。また、すべての API サンプルをリストし、開発者が必要なサンプルを迅速に見つけられるように基本的なフィルターを提供する新しい developer.chrome.com ページを作成するアイデアについても話し合いました。これは私にとってかなり複雑なタスクであり、プロジェクトを定義し、製品要件文書(PRD)を書くのに、メンターと私の両方にかなりの時間がかかりました。
この大きなタスクのために、私たちはサンプルリポジトリに自動化スクリプトが必要だと決定し、リポジトリを横断して拡張機能サンプルとそれが使用する API のリストを含む JSON ファイルを生成することにしました。developer.chrome.com のドキュメントリポジトリは、現在このファイルを使用してページを構築しています。
私は最初に Babel を使用してサンプルコードの抽象構文木を分析し、使用されている API を特定することを考えました。このアイデアをメンターと共有した後、彼らが以前に似たようなことに取り組んでいたことを知り、このアプローチの実現可能性が確認されました。コードを完成させた後、メンターや彼のチームの他のメンバーから、コードのセグメンテーションに注意を払い、コードスタイルを標準化し、関数を適切に文書化することを含む貴重な提案を受けました。
いくつかの大きなレビューと小さなレビューを経て、コードは無事にマージされました。全体のスレッドはGitHubで見ることができますし、ライブページを見ることもできます。
まとめ#
GSoC が私にもたらしたものを尋ねられたら:まず第一に、もちろん、ブラウザ拡張機能 API に関連する知識を理解することです。ドキュメントを読み、新しいサンプルを書くことで、さまざまなブラウザ拡張機能 API について詳細に理解しました。
さらに、GSoC に受け入れられる前にはほとんど触れたことのない多くのスキルを身につけました。包括的なコードレビューのプロセスに従うことや、PRD を作成することなどです。また、GitHub Actions を使用してワークフローを自動化し、Babel を使用してすべての拡張機能サンプルを横断し、使用されている API を追跡する方法も学びました。さらに、Nunjucks テンプレートエンジンを初めて体験しました。これらの能力はプログラミングにとって不可欠であり、私はそれを学べたことを嬉しく思っています。オープンソースコミュニティに参加することは私に喜びをもたらします。
この夏は、私に多くの忘れられない思い出を与えてくれました。コーディングは私を非常に満足させます。私は、私を導き、興味深い知識を教えてくれた忍耐強いメンターに出会い、私の経験を豊かにしました。
コンピュータサイエンスの分野の知識は無限です。他の人と自分を比較したとき、私はオープンソースに対する理解が氷山の一角に過ぎないことを実感しました。しかし、少しずつでも役立ちます。私は GSoC がオープンソースに参加するための素晴らしい出発点だと信じています。
私の経験が、将来のオープンソース活動への参加に参考になることを願っています。
Google Summer of Code に参加したい人へのいくつかの提案を以下に示します:
- 自分に合ったアイデアを選ぶ:私の意見では、アイデアを探す際には、興味を最優先し、次にスキルを考慮すべきです。この戦略により、貢献プロセス全体で熱意を維持できます。
- 数より質:GSoC に受け入れられる可能性を高めるために多くの提案を提出できます。しかし、私は質がより重要であると信じています。人間のエネルギーは限られているため、2 つまたは 3 つのアイデアに集中する方が最終的には役立つかもしれません。
- 新しいことを恐れない:プロジェクトでまだ取り組んだことのない技術を試すことをためらわないでください。約 1 か月のコミュニティボンディング期間があり、慣れない技術に慣れることができ、実装するための夏全体があります。思い切って挑戦してください!
- プロジェクトに事前に慣れる:たとえば、開発ドキュメントを読み、以前のコミット履歴や問題を確認し、過去のプルリクエストをざっと見ることです。事前にプロジェクトの全体像を理解することで、より包括的な提案を書くのに役立ちます。
- コミュニケーションを維持する:メンターと定期的にコミュニケーションを取り、問題に直面したときは、応募前でも受け入れられた後でも、質問をためらわずにしてください。ほとんどのメンターは、問題を解決する手助けを喜んでしてくれます。このようにして、彼らもあなたの進捗を把握できます。
お読みいただきありがとうございます。