Cara Terlibat

Norma kontribusi, saluran komunitas, dan cara mengikuti diskusi desain.

Daftar isi

Topik ini merangkum cara berpartisipasi dalam proyek Carbon sesuai aturan yang ditetapkan repositorinya. Pembahasan mencakup norma dasar kontribusi, saluran komunitas beserta fungsi masing-masing, cara mengikuti diskusi desain yang berlangsung di atas proposal, dan langkah pertama yang realistis bagi pendatang baru. Setelah membacanya, saluran yang tepat untuk setiap jenis keterlibatan dapat dipilih tanpa melanggar norma proyek.

Norma dasar kontribusi#

Dokumen CONTRIBUTING.md pada akar repositori menetapkan dua kewajiban yang berlaku bagi setiap kontributor. Pertama, kode etik pada CODE_OF_CONDUCT.md wajib dibaca dan diikuti, dengan komunitas yang diharapkan bersikap ramah, suka membantu, dan menghargai. Kedua, kontribusi apa pun baru dapat diterima setelah Contributor License Agreement atau CLA ditandatangani, baik versi perorangan maupun versi korporasi. Aturan CLA juga menyebut bahwa hanya konten orisinal dari pihak yang telah menandatanganinya yang diterima, dan cakupannya meliputi GitHub, Google Docs, serta Discord.

Filosofi kontribusinya juga tertulis dengan jelas. Dokumen yang sama menjelaskan bahwa penerimaan dokumentasi atau fitur baru berarti menerima beban pemeliharaannya, sehingga manfaat setiap kontribusi selalu ditimbang terhadap biaya memeliharanya. Code review digunakan untuk memperbaiki ketepatan, kejelasan, dan konsistensi semua kontribusi, sedangkan perubahan substansial pada bahasa wajib melewati proses evolusi lewat proposal. Perbaikan kecil seperti tipografi tidak memerlukan tinjauan formal dan cukup dikirim sebagai pull request biasa, dengan alur kerja berbasis trunk yang menjaga riwayat tetap linear.

Saluran komunitas dan fungsinya#

Setiap saluran pada proyek Carbon memiliki fungsi yang dipisahkan dengan tegas. Dokumen docs/project/faq.md mengarahkan pertanyaan ke GitHub Discussions atau kanal #language-questions pada Discord, sedangkan GitHub Issues dijaga khusus untuk fitur yang hilang, bug, dan hal lain yang dapat diperbaiki melalui pull request. Percakapan sehari-hari berlangsung pada server Discord proyek, dan README menambahkan bahwa sebagian besar diskusi desain memang terjadi di sana.

GitHub Discussions tersusun atas kategori yang masing-masing menyaring topiknya, antara lain Announcements untuk pengumuman, Language design untuk desain bahasa, Toolchain untuk implementasi, serta Getting started untuk pertanyaan awal. Pengumuman rilis besar dipublikasikan sebagai diskusi pada kategori Announcements, sehingga berlangganan diskusi tersebut serta menandai bintang pada repositori menjadi cara termudah mengikuti perkembangan. Tabel berikut meringkas fungsi keempat saluran utamanya.

SaluranFungsi utamaContoh pemakaian yang tepat
Discordpercakapan cepat dan diskusi desain sehari-haribertanya pada kanal #language-questions
GitHub Discussionspertanyaan terstruktur dan pengumuman resmimengikuti kategori Language design
GitHub Issuesbug dan fitur yang hilangmelaporkan error disertai reproducer
GitHub pull requestproposal dan kodemengirim perbaikan dokumentasi

Mengikuti diskusi desain#

Diskusi desain Carbon terpusat pada proposal yang sedang berjalan. Pull request berlabel proposal yang bukan lagi draft berarti sedang dalam masa RFC, yaitu masa permintaan komentar terbuka bagi siapa pun yang tertarik. Partisipasi paling ringan berupa reaksi emoji seperti tanda jempol untuk menunjukkan dukungan atas arah besar proposal, karena reaksi semacam itu menampilkan sentimen komunitas tanpa memenuhi utas dengan ulangan kalimat yang sama. Komentar tertulis diharapkan konstruktif dan ringkas, dengan saran perbaikan bila memungkinkan.

Keputusan akhir berada pada para Carbon lead, yang saat ini terdiri atas chandlerc, KateGregory, dan zygoloid sesuai docs/project/evolution.md. Para lead tersebut meninjau proposal, memutuskan persoalan yang diangkat sebagai issue penghalang dengan konsensus pemblokiran berkuorum dua, dan menyetujui penggabungan apabila komunitas telah mendapat kesempatan menyuarakan keberatan. Label leads question pada GitHub Issues memuat daftar pertanyaan yang memang mencari masukan komunitas sebelum keputusan diambil.

Keputusan yang sudah jatuh berlaku kukuh agar energi komunitas tercurah ke persoalan berikutnya, dan dibuka kembali hanya melalui proposal baru yang membawa informasi baru. FAQ memberi contoh nyatanya, yaitu aturan pemisah digit yang diperbaiki setelah sebuah issue menghadirkan konvensi bidang yang terlewat. Selain hal yang tertulis, rapat mingguan dan sesi diskusi terbuka dijadwalkan pada Google Calendar, sementara draf proposal dibagikan melalui Google Drive yang aksesnya diajukan setelah CLA ditandatangani.

Langkah pertama yang realistis#

Langkah paling ringan adalah mengikuti perkembangan tanpa mengubah apa pun, yaitu menandai repositori dengan bintang, berlangganan diskusi pengumuman rilis pada kategori Announcements, dan membaca peta jalan terbaru. Dari sana, keterlibatan dapat dinaikkan bertahap sesuai minat, mulai dari membaca proposal terbuka hingga mengerjakan kode. Kontribusi pertama yang direkomendasikan CONTRIBUTING.md adalah meninjau dan mengomentari pull request, karena kegiatan itu sekaligus memperkenalkan struktur basis kode.

Untuk kontribusi implementasi, label good first issue menghimpun issue yang dianggap cocok sebagai awal. Proyek sengaja tidak menugaskan issue kepada kontributor baru, sehingga issue yang belum ditangani pull request mana pun boleh langsung dikerjakan. Salinan lokal repositori diperoleh dengan perintah berikut, dengan opsi --depth 1 yang memangkas riwayat menjadi satu komit terbaru agar unduhannya ringkas dan cukup untuk menelusuri kode.

bash
# mengunduh salinan lokal repositori Carbon untuk ditelusuri
git clone --depth 1 https://github.com/carbon-language/carbon-lang.git
text Keluaran
Cloning into 'carbon-lang'...

Saat melaporkan bug, norma yang diharapkan adalah melampirkan program kecil yang memunculkan masalah secara konsisten. Program semacam itu biasanya berukuran belasan baris dan diuji dahulu melalui Compiler Explorer sebelum dilaporkan. Program berikut mencontohkan bentuk reproducer sekecil itu beserta keluarannya.

carbon uji-kecil.carbon
package sample api;

fn Main() -> i32 {
  var nilai: i32 = 7;
  nilai += 1;
  Print("nilai sekarang {0}", nilai);
  return 0;
}
text Keluaran
nilai sekarang 8
result: 0

Keluaran tersebut diperoleh dari eksekusi nyata melalui Compiler Explorer. Baris result: 0 ditambahkan oleh Explorer berisi kode kembalian dari fungsi Main, sehingga angkanya mengikuti nilai return yang ditulis program. Reproducer dengan bentuk seperti ini memudahkan peninjau memastikan perilaku yang dilaporkan, dan kualitas laporan semacam itulah yang paling membantu para maintainer proyek.

Ringkasan#

  • Keterlibatan apa pun menuntut kepatuhan pada kode etik dan tanda tangan CLA sebelum kontribusi dapat diterima.
  • Pertanyaan ditempatkan pada GitHub Discussions dan Discord, sedangkan Issues dijaga untuk bug dan fitur yang hilang yang dapat diperbaiki melalui pull request.
  • Diskusi desain berlangsung pada pull request berlabel proposal yang sedang RFC, dengan keputusan akhir pada para Carbon lead.
  • Langkah pertama yang realistis meliputi berlangganan pengumuman, mengerjakan issue berlabel good first issue, dan melaporkan bug disertai reproducer kecil.

Referensi#