Google Summer of Code dan Ekstensi Chrome

Saya adalah mahasiswa tahun kedua dari China yang tertarik dengan pengembangan web. Pada tahun pertama, saya bergabung dengan klub teknis di kampus. Klub ini adalah pengenalan saya terhadap coding dan open source. Di klub tersebut, saya bertemu dengan sekelompok partner yang berpikiran sama dan menyukai coding. Dari merekalah saya mengetahui tentang Google Summer of Code pada awal tahun 2023. Program global yang diselenggarakan Google ini menghubungkan siswa dengan organisasi open source dan memandu mereka untuk memanfaatkan musim panas dengan baik dengan berpartisipasi dalam aktivitas open source.

Saya mencoba mengirimkan permohonan. Untungnya, saya diterima. Musim panas yang saya habiskan untuk berkontribusi pada repo Contoh Ekstensi Chrome sangat berkesan dan berharga. Tentu saja, saya juga telah belajar banyak hal: komunikasi yang efektif, keterampilan coding, dan kemampuan perencanaan, di antara hal-hal lainnya.

Seiring GSoC 2023 akan segera berakhir, ada baiknya saya membagikan beberapa pengalaman saya di GSoC. Postingan ini akan memperkenalkan proses umum GSoC secara singkat melalui partisipasi saya sendiri, semoga bermanfaat bagi Anda.

Kisah tentang kontribusi saya di GSoC

Saya melamar Project Chromium GSoC 2023, dengan tugas utama saya adalah mengupgrade contoh ekstensi Chrome yang ada agar berfungsi di Manifes V3, termasuk beberapa skrip dan dokumen terkait.

Di Awal

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

  • Saya introvert, dan bahasa Inggris bukan bahasa ibu saya, sehingga komunikasi dengan mentor mungkin menjadi tantangan.
  • Komunitas GSoC berasal dari seluruh dunia, dan perbedaan zona waktu dapat menjadi hal yang sulit.
  • GSoC adalah program yang sangat terkenal sehingga dapat menjadi kompetitif, sehingga peluang saya tampaknya tipis.

Namun, saya dapat dengan yakin mengatakan bahwa tidak ada satu pun dari hal tersebut yang menjadi masalah.

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

Itulah sebabnya saya sangat antusias saat menjelajahi daftar project GSoC dan mendapatkan ide terkait MV3. Saya ingin berkontribusi untuk meningkatkan kualitas contoh ekstensi Manifes V3 dan memberikan fasilitas bagi developer di masa mendatang.

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

Permohonan untuk berpartisipasi dalam project GSoC

Pelanggan yang terhormat,

Saya adalah mahasiswa sarjana Ilmu Komputer dari China. Saya mempelajari project terkait Contoh Ekstensi Chrome di GSoC dan tertarik untuk meningkatkan Contoh Manifes V3. Saya tidak memiliki banyak pengalaman sebelumnya dalam mengerjakan Contoh API, tetapi saya memiliki pengalaman dalam pengembangan web dan pengembangan ekstensi MV3 (https://github.com/daidr/paimon-webext), yang telah membuat saya menyadari pentingnya contoh API MV3, jadi saya ingin belajar dan berkontribusi pada contoh API tersebut. Can I still apply for this project?

Terima kasih.

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

Hal ini seperti suntikan semangat, yang memperkuat tekad saya untuk maju. Mengambil langkah pertama sangatlah penting jika Anda tertarik untuk berpartisipasi dalam acara open source mendatang, baik GSoC 2024 maupun acara lainnya; jangan pernah ragu dan cobalah dengan berani.

Sebelum melamar, saya memeriksa kode project dan membaca sekilas dokumentasi. Meskipun GSoC menyediakan periode ikatan komunitas selama hampir satu bulan bagi peserta untuk memahami komunitas, pengetahuan sebelumnya mengurangi tekanan dan memungkinkan saya menulis proposal yang lebih tepat sasaran.

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

Mendapatkan persetujuan

Menulis proposal adalah hal terakhir yang harus dilakukan sebelum mendaftar. Proposal harus menyertakan ide, sasaran, dan jadwal selain formulir permohonan. Bergantung pada project yang ingin Anda kerjakan, Anda mungkin akan diberi template tambahan untuk proposal. Banyak contoh proposal siap pakai yang tersedia secara online untuk referensi.

Setelah menyelesaikan draf, saya mengirimkannya kepada mentor untuk mendapatkan masukan. Setelah permohonan dikirim, Anda harus menunggu lama. Dan pada awal Mei, saya menerima notifikasi bahwa saya diterima.

Pekerjaan Kode

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

Setelah berdiskusi dengan mentor, kami menyesuaikan beberapa sasaran agar waktu yang dialokasikan untuk tugas lebih wajar. Kami juga membahas ide untuk membuat halaman developer.chrome.com baru yang mencantumkan semua contoh API dan menyediakan filter dasar untuk membantu developer menemukan contoh yang diperlukan dengan cepat. Ini adalah tugas yang cukup rumit bagi saya, dan saya serta mentor saya memerlukan waktu yang cukup lama untuk menentukan project dan menulis dokumen persyaratan produk (PRD).

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

Pertama-tama, saya mempertimbangkan untuk menggunakan Babel guna menganalisis Abstract Syntax Tree kode contoh dan mengidentifikasi API yang digunakannya. Setelah membagikan ide ini kepada mentor saya, saya mendapati bahwa ia sebelumnya telah mengerjakan sesuatu yang serupa, yang mengonfirmasi kelayakan pendekatan ini. Setelah saya menyelesaikan kode, mentor saya dan anggota timnya yang lain 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 rangkaian pesan di GitHub, atau melihat halaman aktif.

Menyelesaikan

Jika Anda bertanya apa yang saya dapatkan dari GSoC: pertama-tama, tentu saja, saya mendapatkan pengetahuan terkait API ekstensi browser. Dengan membaca dokumentasi dan menulis contoh baru, saya mendapatkan pemahaman mendetail tentang berbagai API ekstensi browser.

Selain itu, saya telah memperoleh banyak keterampilan yang sebelumnya tidak saya miliki sebelum diterima di GSoC, seperti mengikuti proses peninjauan kode yang komprehensif dan membuat PRD. Saya juga 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 mendapatkan pengalaman pertama dengan mesin template Nunjucks. Kemampuan ini sangat penting untuk pemrograman, dan saya senang telah mempelajarinya. Berpartisipasi dalam komunitas open source membuat saya senang.

Musim panas ini telah memberi saya banyak kenangan yang tak terlupakan. Saya sangat puas dengan coding. Saya telah bertemu dengan mentor yang sabar yang membimbing dan mengajarkan pengetahuan menarik, sehingga memperkaya pengalaman saya.

Pengetahuan di bidang ilmu komputer tidak terbatas. Saat membandingkan diri dengan orang lain, saya menyadari bahwa pemahaman saya tentang open source hanyalah puncak gunung es. Namun, setiap bagian kecil akan membantu. Saya yakin GSoC adalah titik awal yang bagus untuk berpartisipasi dalam open source.

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

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

  1. Pilih ide yang sesuai dengan Anda: Menurut saya, saat mencari ide, minat harus menjadi prioritas Anda, diikuti dengan keterampilan. Strategi ini akan memungkinkan Anda mempertahankan antusiasme selama proses kontribusi.
  2. Kualitas lebih penting daripada kuantitas: Anda dapat mengirimkan banyak proposal untuk meningkatkan peluang diterima di GSoC. Namun, saya percaya bahwa kualitas mungkin lebih penting karena energi manusia terbatas. Pada akhirnya, berfokus pada dua atau tiga ide mungkin lebih membantu.
  3. Jangan takut dengan hal baru: Jangan ragu untuk mencoba teknologi yang belum pernah Anda gunakan dalam project. Anda memiliki hampir sebulan waktu untuk berinteraksi dengan komunitas guna membiasakan diri dengan teknologi yang tidak dikenal dan sepanjang musim panas untuk menerapkannya. Lakukan saja.
  4. Pelajari project terlebih dahulu: Misalnya, baca dokumentasi pengembangan, lihat histori dan masalah commit sebelumnya, serta baca sekilas permintaan pull sebelumnya. Memahami keseluruhan project terlebih dahulu akan membantu Anda menulis proposal yang lebih komprehensif.
  5. Pertahankan komunikasi: Berkomunikasilah secara rutin dengan mentor Anda, dan jangan ragu untuk mengajukan pertanyaan saat menghadapi masalah, baik sebelum mendaftar maupun setelah diterima. Sebagian besar mentor bersedia membantu Anda memecahkan masalah; dengan demikian, mereka juga dapat memantau progres Anda.

Terima kasih telah membaca.