7
Tata Kelola dan Pemeliharaan
Setelah sebuah perubahan diterima, repository ini dijaga oleh beberapa berkas kecil yang mengatur perilaku peserta, umur issue dan pull request, serta bentuk berkas yang masuk. Halaman ini membahas keempat mekanisme tersebut sebagai satu sistem pemeliharaan. Aturan format entri dan alur pengajuan tidak diulang di sini; lihat Format Entri dan Pengurutan dan Proses Kontribusi.
Berkas pemeliharaan dan perannya
| Berkas | Yang diatur | Rujukan |
|---|---|---|
code-of-conduct.md | Perilaku yang diharapkan dan yang tidak dapat diterima | code-of-conduct.md:10-261 |
code-of-conduct.md | Wewenang maintainer dan kanal pelaporan | code-of-conduct.md:30-592 |
.github/workflows/stale.yml | Jadwal dan ambang penandaan usang | .github/workflows/stale.yml:1-213 |
.editorconfig | Charset, line ending, dan indentasi | .editorconfig:1-9 |
.gitattributes | Normalisasi line ending dan merge Markdown | .gitattributes:1-5 |
.github/dependabot.yml | Pembaruan dependensi npm harian | .github/dependabot.yml:1-104 |
Code of Conduct dan pelaporan
Tujuan proyek dinyatakan sebagai ruang yang konstruktif, sopan, dan berfokus pada nilai. Perilaku yang diharapkan mencakup fokus pada ide alih-alih individu dan umpan balik yang konstruktif, sedangkan perilaku yang tidak dapat diterima mencakup harassment sampai kontribusi low-quality yang berulang (code-of-conduct.md:10-165, code-of-conduct.md:20-266).
Maintainer memegang tanggung jawab menjaga proyek tetap selaras dengan tujuannya. Tindakan yang tersedia adalah meminta perubahan pada kontribusi, menghapus komentar, issue, atau pull request, serta membatasi atau memblokir partisipasi bila perlu (code-of-conduct.md:30-407). Cakupan aturan ini adalah GitHub issues, pull requests, dan discussions, serta interaksi lain yang terkait proyek (code-of-conduct.md:44-498).
Laporan pelanggaran dikirim ke alamat surel yang tercantum, ditangani dengan diskresi, lalu ditinjau berdasarkan konteks dan tingkat keparahan (code-of-conduct.md:53-599).
graph LR
Report["Laporan pelanggaran"] --> Email["[email protected]"]
Email --> Review["Review berdasarkan konteks dan severity"]
Review --> Request["Requesting changes"]
Review --> Remove["Removing comments, issues, or pull requests"]
Review --> Block["Limiting or blocking participation"]
style Report fill:#f59e0b,color:#000
style Email fill:#336791,color:#fff
style Review fill:#8b5cf6,color:#fff
style Request fill:#2d7d46,color:#fff
style Remove fill:#dc2626,color:#fff
style Block fill:#dc2626,color:#fff
%% fig: Jalur laporan pelanggaran sampai tindakan maintainer
%% desc: Laporan masuk lewat surel, ditinjau berdasarkan konteks dan severity, lalu berujung pada satu dari tiga tindakan maintainer.Kebijakan stale otomatis
Workflow stale dijalankan menurut jadwal cron "59 23 * * *", sehingga pemeriksaan berlangsung sekali sehari pada pukul 23.59 (.github/workflows/stale.yml:3-510). Langkahnya memakai actions/stale@v1 dengan days-before-stale: 20 dan days-before-close: 1, lalu menyuntikkan secrets.GITHUB_TOKEN sebagai repo-token (.github/workflows/stale.yml:13-1611).
Setiap issue yang ditandai usang mendapat label no-issue-activity beserta pesan pengingat, sedangkan pull request mendapat label no-pr-activity dengan pesan yang meminta update, rebase, atau komentar (.github/workflows/stale.yml:18-2112).
| Parameter | Nilai | Efek |
|---|---|---|
cron | 59 23 * * * | Job berjalan sekali sehari (.github/workflows/stale.yml:3-510) |
days-before-stale | 20 | Aktivitas kosong selama 20 hari memicu label usang (.github/workflows/stale.yml:13-1611) |
days-before-close | 1 | Penutupan terjadi satu hari setelah label usang terpasang (.github/workflows/stale.yml:13-1611) |
stale-issue-label | no-issue-activity | Penanda pada issue (.github/workflows/stale.yml:18-2112) |
stale-pr-label | no-pr-activity | Penanda pada pull request (.github/workflows/stale.yml:18-2112) |
Diagram berikut memakai dua ambang di atas sebagai transisi keadaan.
stateDiagram-v2
[*] --> Active
Active --> Stale: 20 hari tanpa aktivitas
Stale --> Active: komentar atau update
Stale --> Closed: 1 hari tanpa respons
Active --> Closed: pull request di-merge
Closed --> [*]
style Active fill:#2d7d46,color:#fff
style Stale fill:#dc2626,color:#fff
style Closed fill:#8b5cf6,color:#fff
%% fig: Siklus issue dan pull request sampai ditutup
%% desc: Issue atau PR yang tidak aktif selama 20 hari diberi label usang, lalu ditutup hanya satu hari kemudian bila tidak ada respons.⚠️ Jendela respons setelah label usang terpasang hanya satu hari (
days-before-close: 1). Komentar atau update harus masuk cepat, karena penutupan otomatis berjalan pada jadwal cron berikutnya.
Konvensi editor dan line ending
.editorconfig menetapkan root = true untuk blok dasar, dengan charset = utf-8, end_of_line = lf, insert_final_newline = true, trim_trailing_whitespace = true, serta indent_style = space dan indent_size = 2 (.editorconfig:1-9). Blok khusus [*.md] mematikan trim_trailing_whitespace, sehingga spasi di akhir baris Markdown tidak dibuang (.editorconfig:11-12). Pengecualian ini masuk akal karena code-of-conduct.md memang mengandalkan dua spasi di akhir baris untuk memisahkan paragraf (code-of-conduct.md:5-613).
Blok berikutnya menetapkan indent_size = 2 untuk berkas *.yml, *.yaml, dan *.json, sejalan dengan indentasi workflow stale (.editorconfig:14-21).
.gitattributes menormalkan line ending lewat * text=auto eol=lf (.gitattributes:1-2). Berkas Markdown memakai merge=union, sedangkan berkas konfigurasi *.yml, *.yaml, dan *.json ditandai sebagai teks (.gitattributes:5-5, .gitattributes:7-10). Berkas gambar *.png, *.jpg, *.jpeg, *.gif, dan *.svg ditandai biner agar tidak ikut diubah (.gitattributes:12-17).
| Aturan | Nilai | Dampak |
|---|---|---|
* | text=auto eol=lf | Line ending dinormalkan ke LF di semua berkas (.gitattributes:1-2) |
*.md | merge=union | Perubahan dari kedua sisi branch digabung, bukan dipilih salah satu (.gitattributes:5-5) |
*.yml, *.yaml, *.json | text | Berkas konfigurasi tetap diperlakukan sebagai teks (.gitattributes:7-10) |
*.png, *.jpg, *.jpeg, *.gif, *.svg | binary | Gambar tidak menjalani normalisasi teks (.gitattributes:12-17) |
⚠️ Dengan
merge=unionpada*.md,gitmenggabungkan baris dari kedua sisimerge. Pada README yang berupa daftar panjang, hasilnya bisa memuat entri ganda atau urutan yang tidak lagi alfabetis, jadi hasilmergeperlu dibaca ulang sebelum membuat commit.
Pemeliharaan dependensi
Pembaruan dependensi ditangani oleh Dependabot versi 2. Ecosystem npm dipindai pada direktori / dengan interval: "daily", dan kristories didaftarkan sebagai reviewers sekaligus assignees (.github/dependabot.yml:1-104). Karena satu-satunya devDependencies adalah awesome-lint, alur pembaruan ini menyentuh package.json dan package-lock.json. Pemeriksaan hasil lint sendiri dibahas di Quality Gate dan CI.