Lompat ke konten
dokumentasi.id
Commit a27b09d
v1
Star11 rb

Kamu membaca versi lama. Halaman ini hanya bisa dibaca.

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

BerkasYang diaturRujukan
code-of-conduct.mdPerilaku yang diharapkan dan yang tidak dapat diterimacode-of-conduct.md:10-26
code-of-conduct.mdWewenang maintainer dan kanal pelaporancode-of-conduct.md:30-59
.github/workflows/stale.ymlJadwal dan ambang penandaan usang.github/workflows/stale.yml:1-21
.editorconfigCharset, line ending, dan indentasi.editorconfig:1-9
.gitattributesNormalisasi line ending dan merge Markdown.gitattributes:1-5
.github/dependabot.ymlPembaruan dependensi npm harian.github/dependabot.yml:1-10

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-16, code-of-conduct.md:20-26).

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-40). Cakupan aturan ini adalah GitHub issues, pull requests, dan discussions, serta interaksi lain yang terkait proyek (code-of-conduct.md:44-49).

Laporan pelanggaran dikirim ke alamat surel yang tercantum, ditangani dengan diskresi, lalu ditinjau berdasarkan konteks dan tingkat keparahan (code-of-conduct.md:53-59).

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.
Fig. 1: Jalur laporan pelanggaran sampai tindakan maintainerLaporan 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-5). 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-16).

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-21).

ParameterNilaiEfek
cron59 23 * * *Job berjalan sekali sehari (.github/workflows/stale.yml:3-5)
days-before-stale20Aktivitas kosong selama 20 hari memicu label usang (.github/workflows/stale.yml:13-16)
days-before-close1Penutupan terjadi satu hari setelah label usang terpasang (.github/workflows/stale.yml:13-16)
stale-issue-labelno-issue-activityPenanda pada issue (.github/workflows/stale.yml:18-21)
stale-pr-labelno-pr-activityPenanda pada pull request (.github/workflows/stale.yml:18-21)

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.
Fig. 2: Siklus issue dan pull request sampai ditutupIssue 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-6).

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).

AturanNilaiDampak
*text=auto eol=lfLine ending dinormalkan ke LF di semua berkas (.gitattributes:1-2)
*.mdmerge=unionPerubahan dari kedua sisi branch digabung, bukan dipilih salah satu (.gitattributes:5-5)
*.yml, *.yaml, *.jsontextBerkas konfigurasi tetap diperlakukan sebagai teks (.gitattributes:7-10)
*.png, *.jpg, *.jpeg, *.gif, *.svgbinaryGambar tidak menjalani normalisasi teks (.gitattributes:12-17)

⚠️ Dengan merge=union pada *.md, git menggabungkan baris dari kedua sisi merge. Pada README yang berupa daftar panjang, hasilnya bisa memuat entri ganda atau urutan yang tidak lagi alfabetis, jadi hasil merge perlu 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-10). 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.