Google Summer of Code dan Ekstensi Chrome

Saya adalah mahasiswa tingkat dua dari China yang sangat menyukai pengembangan web. Pada tahun pertama, saya bergabung dengan klub teknik di kampus kami. Klub ini adalah pengenalan saya pada {i>coding<i} dan {i>open source<i}. Di klub, saya bertemu sekelompok mitra yang sepemikiran yang menyukai {i>coding<i}. Dari merekalah saya belajar tentang Google Summer of Code pada awal tahun 2023. Program global yang diselenggarakan Google ini menghubungkan siswa dengan organisasi open source serta memandu mereka memanfaatkan musim panas dengan baik melalui partisipasi dalam aktivitas open source.

Mencobanya, saya mengirimkan lamaran saya. Untungnya, saya diterima. Musim panas yang saya habiskan untuk berkontribusi pada repo Contoh Ekstensi Chrome sungguh berkesan dan berharga. Tentu saja, saya juga telah belajar banyak: komunikasi yang efektif, keterampilan {i>coding<i}, kemampuan perencanaan, di antara hal-hal lainnya.

Menjelang berakhirnya GSoC 2023, ada baiknya berbagi beberapa pengalaman saya di GSoC. Postingan ini akan memperkenalkan secara singkat proses umum GSoC melalui partisipasi saya sendiri, yang diharapkan dapat membantu Anda.

Kisah bagaimana saya berkontribusi pada GSoC

Saya mendaftar ke Project Chromium GSoC 2023. Tugas utama saya adalah mengupgrade sampel ekstensi Chrome yang ada agar berfungsi di Manifes V3, termasuk beberapa skrip dan dokumen terkait.

Pada Awal

Saya pertama kali mempelajari GSoC pada Februari 2023, tetapi belum yakin ingin mendaftar. Saat itu saya memiliki beberapa kekhawatiran:

  • Saya seorang introvert, dan bahasa Inggris bukanlah bahasa asli saya, jadi komunikasi dengan mentor mungkin sulit.
  • Komunitas GSoC berasal dari seluruh dunia, dan menghadapi perbedaan zona waktu bisa jadi sulit.
  • GSoC adalah program terkenal yang bersifat kompetitif, sehingga peluang saya tampak tipis.

Namun, saya yakin tidak ada satu pun dari masalah yang disebutkan di atas.

Sebelum menceritakan kisah saya, saya ingin menceritakan sesuatu yang terjadi pada saya pada awal tahun 2022. Kejadian ini juga merupakan kesempatan bagi saya untuk berpartisipasi dalam GSoC. Saya ingin memigrasikan ekstensi browser berdasarkan Manifest V2 ke Manifest V3. Untuk menyelesaikan migrasi, saya harus melihat dokumentasi dan memahami setiap perubahan API. Saya juga harus mencari apakah ada sampel yang relevan untuk referensi. Memahami API baru dan mentransfer kode cukup menantang bagi saya.

Itulah sebabnya saya sangat bersemangat saat melihat-lihat daftar project GSoC dan mengetahui ide terkait MV3. Saya ingin berkontribusi untuk meningkatkan contoh ekstensi Manifes V3 dan memberikan fasilitas bagi developer mendatang.

Pada bulan Maret, saya mengirimkan email kepada Oliver, salah satu mentor yang bertanggung jawab, sebuah email singkat tentang niat saya:

Permohonan untuk berpartisipasi dalam proyek GSoC

Pelanggan yang terhormat,

Saya adalah mahasiswa S1 Ilmu Komputer dari China. Saya mempelajari project terkait Contoh Ekstensi Chrome di GSoC dan saya tertarik untuk meningkatkan Sample Manifest V3. Saya tidak memiliki banyak pengalaman sebelumnya dalam mengerjakan Sampel API, namun, saya memiliki pengalaman dalam pengembangan web dan pengembangan ekstensi MV3 (https://github.com/daidr/paimon-webext), yang membuat saya menyadari pentingnya sampel MV3 api, jadi saya ingin belajar dan berkontribusi padanya. Apakah saya masih bisa mengajukan permohonan untuk proyek ini?

Terima kasih.

Tidak lama kemudian, saya menerima balasan dari Oliver dan Ali (bos Oliver). Mereka menjawab pertanyaan saya dan memberikan informasi mendetail tentang aturan spesifik dan rentang waktu GSoC. Mereka juga membagikan banyak materi referensi yang berharga kepada saya.

Rasanya seperti tembakan di lengan, memperkuat tekad saya untuk bergerak maju. Langkah pertama sangat penting jika Anda tertarik untuk berpartisipasi dalam acara open source yang akan datang, baik GSoC 2024 atau yang lainnya; jangan pernah ragu dan mencobanya dengan berani.

Sebelum mendaftar, saya memeriksa kode proyek dan membaca sekilas dokumentasinya. Meskipun GSoC memberikan periode ikatan komunitas hampir satu bulan bagi peserta untuk membiasakan diri dengan komunitas, pengetahuan sebelumnya mengurangi tekanan dan memungkinkan saya untuk menulis proposal yang lebih bertarget.

Saya mencoba memecahkan bug awal yang disediakan oleh project. Masalah-masalah ini relatif sederhana dan membantu saya memahami proyek dengan cepat. Saya berterima kasih kepada mentor saya, Oliver (meskipun dia bukan mentor saya saat itu). Dia segera membalas email saya setiap kali saya memerlukan klarifikasi dan dengan sabar menyelesaikan masalah saya. Ketika menghadapi masalah saat menulis proposal, Anda juga dapat mengirimkannya kepada mentor Anda untuk melihat apakah ada area yang perlu diperbaiki.

Disetujui

Menulis proposal adalah hal terakhir yang harus dilakukan sebelum mendaftar. Proposal harus mencakup ide, tujuan, dan jadwal selain formulir permohonan. Bergantung pada project yang ingin dikerjakan, Anda mungkin akan diberi template tambahan untuk proposal tersebut. Banyak contoh proposal siap pakai yang tersedia secara {i>online<i} untuk referensi.

Setelah menyelesaikan draf tersebut, saya mengirimkannya kepada mentor saya untuk meminta masukan. Setelah permohonan dikirim, tunggu lama. Dan pada awal bulan Mei, saya menerima notifikasi bahwa saya diterima.

Kerja Kode

Selama periode bonding awal, pertama-tama saya menangani bug pemula yang tersisa dan memeriksa apakah ada keterampilan baru yang harus saya pelajari. Dan saya menghabiskan sisa waktu untuk membaca dokumentasi.

Setelah berdiskusi dengan mentor saya, kami menyesuaikan beberapa tujuan agar waktu yang dialokasikan untuk tugas-tugas menjadi lebih masuk akal. Kita juga membahas ide untuk membuat halaman developer.chrome.com baru yang mencantumkan semua contoh API dan menyediakan filter dasar untuk membantu developer menemukan sampel yang dibutuhkan dengan cepat. Ini adalah tugas yang cukup rumit bagi saya, dan saya juga butuh waktu untuk mendefinisikan project dan menulis dokumen persyaratan produk (PRD).

Untuk tugas yang lebih besar ini, kami memutuskan bahwa kami memerlukan skrip otomatis dalam repo contoh untuk menjelajahi repositori dan membuat file JSON yang berisi daftar contoh ekstensi dan API yang mereka gunakan. Repositori dokumentasi developer.chrome.com kini menggunakan file ini untuk membuat halaman.

Saya pertama kali mempertimbangkan penggunaan Babel untuk menganalisis Abstract Syntax Tree kode contoh dan mengidentifikasi API yang digunakannya. Setelah berbagi ide ini dengan mentor saya, saya mendapati bahwa mereka sebelumnya telah mengerjakan sesuatu yang serupa, yang memastikan kelayakan pendekatan ini. Setelah saya menyelesaikan coding, mentor saya dan anggota timnya memberikan saran berharga, termasuk memperhatikan segmentasi kode, menstandarkan gaya kode, dan mendokumentasikan fungsi dengan benar.

Setelah beberapa peninjauan besar dan kecil, kode berhasil digabungkan. Anda dapat menemukan seluruh thread di GitHub, atau melihat halaman live.

Menyelesaikan

Jika Anda bertanya apa yang telah diberikan GSoC: yang pertama, tentu saja, adalah memahami pengetahuan yang terkait dengan API ekstensi browser. Dengan membaca dokumentasi dan menulis contoh baru, saya memperoleh pemahaman terperinci tentang berbagai API ekstensi browser.

Selain itu, saya memperoleh banyak keterampilan yang sedikit saya ketahui sebelum diterima di GSoC, seperti mengikuti proses peninjauan kode yang komprehensif dan membuat PRD. Saya juga sudah mulai menggunakan tindakan GitHub untuk mengotomatiskan alur kerja dan mempelajari cara menggunakan Babel untuk menjelajahi semua contoh ekstensi dan melacak API yang digunakan. Selain itu, saya memiliki pengalaman pertama dengan mesin template Nunjucks. Kemampuan ini sangat penting untuk pemrograman, dan saya senang karena saya mempelajarinya. Berpartisipasi dalam komunitas open source membuat saya gembira.

Musim panas ini memberi saya banyak kenangan yang tak terhapuskan. Pengkodean membuat saya sangat puas. Saya telah bertemu dengan para mentor pasien yang membimbing saya dan mengajari saya pengetahuan yang menarik, sehingga memperkaya pengalaman saya.

Pengetahuan di bidang ilmu komputer tidak terbatas. Ketika saya membandingkan diri saya dengan orang lain, saya menyadari bahwa pemahaman saya tentang {i>open source<i} hanyalah permulaan. Namun, setiap sedikit membantu. Saya percaya GSoC adalah titik awal yang bagus untuk berpartisipasi dalam {i>open source<i}.

Saya juga berharap pengalaman saya dapat memberikan beberapa referensi untuk partisipasi di masa mendatang dalam aktivitas sumber terbuka.

Berikut beberapa saran saya untuk siapa saja yang ingin berpartisipasi dalam Google Summer of Code:

  1. Pilih ide yang sesuai untuk Anda: Menurut saya, ketika mencari ide, minat harus menjadi prioritas Anda, diikuti dengan keterampilan. Strategi ini akan memungkinkan Anda menjaga antusiasme selama proses kontribusi.
  2. Kualitas di atas kuantitas: Anda dapat mengirimkan banyak proposal untuk meningkatkan peluang diterima di GSoC. Namun, saya percaya bahwa kualitas mungkin lebih penting karena energi manusia terbatas. Fokus pada dua atau tiga ide mungkin akan lebih membantu pada akhirnya.
  3. Jangan takut dengan hal-hal baru: Jangan ragu untuk mencoba teknologi yang belum pernah Anda kerjakan dalam sebuah proyek. Anda memiliki ikatan komunitas selama hampir satu bulan untuk mengenal teknologi asing dan menghabiskan satu bulan penuh untuk menerapkannya. Lakukan saja!
  4. Berkenalan dengan project terlebih dahulu: Misalnya, baca dokumentasi pengembangan secara menyeluruh, lihat histori dan masalah commit sebelumnya, dan baca sekilas permintaan pull sebelumnya. Mendapatkan pemahaman keseluruhan tentang proyek terlebih dahulu akan membantu Anda menulis proposal yang lebih komprehensif.
  5. Menjaga komunikasi: Berkomunikasilah secara teratur dengan mentor Anda, dan jangan ragu untuk mengajukan pertanyaan saat menghadapi masalah, baik sebelum melamar atau setelah diterima. Sebagian besar mentor bersedia membantu Anda memecahkan masalah; dengan cara ini, mereka juga dapat melacak kemajuan Anda.

Terima kasih sudah membaca.