Dokumen Desain

Laporkan masalah Lihat sumber {/18/}{/1/}

Jika Anda berencana menambah, mengubah, atau menghapus fitur yang ditampilkan kepada pengguna, atau membuat perubahan arsitektur yang signifikan pada Bazel, Anda harus menulis dokumen desain dan meninjaunya sebelum dapat mengirimkan perubahan.

Berikut beberapa contoh perubahan signifikan:

  • Penambahan atau penghapusan aturan build native
  • Perubahan yang dapat menyebabkan gangguan pada aturan native
  • Perubahan pada semantik aturan build native yang memengaruhi perilaku lebih dari satu aturan
  • Perubahan pada API definisi aturan Bazel
  • Perubahan pada API yang digunakan Bazel untuk terhubung ke sistem lain
  • Perubahan pada bahasa, semantik, atau API Starlark
  • Perubahan yang dapat berdampak signifikan pada performa Bazel atau penggunaan memori (baik atau buruk)
  • Perubahan pada API internal yang banyak digunakan
  • Perubahan pada flag dan antarmuka command line.

Alasan peninjauan desain

Saat menulis dokumen desain, Anda dapat berkoordinasi dengan developer Bazel lainnya dan meminta panduan dari tim inti Bazel. Misalnya, saat proposal menambahkan, menghapus, atau mengubah fungsi atau objek apa pun yang tersedia di file BUILD, WORKSPACE, atau bzl, tambahkan tim Starlark sebagai peninjau. Dokumen desain ditinjau sebelum diserahkan karena:

  • Bazel adalah sistem yang sangat kompleks; perubahan lokal yang tampaknya tidak berbahaya dapat memiliki konsekuensi global yang signifikan.
  • Tim ini menerima banyak permintaan fitur dari pengguna; permintaan tersebut perlu dievaluasi tidak hanya untuk kelayakan teknis tetapi kepentingan sehubungan dengan permintaan fitur lainnya.
  • Fitur Bazel sering diterapkan oleh orang di luar tim inti; kontributor tersebut memiliki berbagai tingkat keahlian Bazel.
  • Tim Bazel sendiri memiliki berbagai tingkat keahlian; tidak ada satu pun anggota tim yang dapat memahami setiap sudut pandang Bazel.
  • Perubahan pada Bazel harus memperhitungkan kompatibilitas mundur dan menghindari perubahan yang dapat menyebabkan gangguan.

Kebijakan tinjauan desain Bazel membantu memaksimalkan kemungkinan bahwa:

  • semua permintaan fitur mendapatkan tingkat pengawasan dasar.
  • orang yang tepat akan mempertimbangkan desain sebelum kita berinvestasi pada implementasi yang mungkin tidak berhasil.

Untuk membantu Anda memulai, lihat dokumen desain di Repositori Proposal Bazel. Desain sedang dalam proses, sehingga detail implementasi dapat berubah dari waktu ke waktu dan dengan masukan. Dokumen desain yang dipublikasikan merekam desain awal, dan bukan perubahan berkelanjutan saat desain diterapkan. Selalu buka dokumentasi untuk mengetahui deskripsi fungsi Bazel saat ini.

Alur Kerja Kontributor

Sebagai kontributor, Anda dapat menulis dokumen desain, mengirim permintaan pull, dan meminta peninjau untuk proposal Anda.

Menulis dokumen desain

Semua dokumen desain harus memiliki header yang menyertakan:

  • author
  • tanggal perubahan besar terakhir
  • daftar peninjau, termasuk satu (dan hanya satu) peninjau prospek
  • status saat ini (draf, sedang ditinjau, disetujui, ditolak, sedang diterapkan, diterapkan)
  • link ke rangkaian diskusi (akan ditambahkan setelah pengumuman)

Dokumen dapat ditulis sebagai Dokumen Google yang dapat dibaca semua orang atau menggunakan Markdown. Baca informasi tentang perbandingan Markdown / Google Dokumen di bawah ini.

Proposal yang memiliki dampak yang terlihat oleh pengguna harus memiliki bagian yang mendokumentasikan dampak terhadap kompatibilitas mundur (dan rencana peluncuran jika diperlukan).

Membuat Permintaan Pull

Bagikan dokumen desain Anda dengan membuat permintaan pull (PR) untuk menambahkan dokumen tersebut ke indeks desain. Tambahkan {i>file<i} {i>markdown<i} atau tautan dokumen ke PR Anda.

Jika memungkinkan, pilih peninjau utama, dan Cc peninjau lainnya. Jika Anda tidak memilih peninjau utama, pengelola Bazel akan menugaskannya untuk Humas Anda.

Setelah Anda membuat Humas, peninjau dapat membuat komentar awal selama peninjauan kode. Misalnya, peninjau utama dapat menyarankan peninjau tambahan, atau menunjukkan informasi yang tidak lengkap. Peninjau utama menyetujui PR ketika mereka yakin bahwa proses peninjauan dapat dimulai. Hal ini tidak berarti proposal sempurna atau akan disetujui; ini berarti proposal berisi cukup informasi untuk memulai diskusi.

Mengumumkan proposal baru

Kirim pengumuman ke bazel-dev saat PR dikirim.

Anda dapat menyalin grup lain (misalnya, bazel-discuss, untuk mendapatkan masukan dari pengguna akhir Bazel).

Melakukan iterasi dengan peninjau

Siapa pun yang tertarik dapat mengomentari proposal Anda. Cobalah untuk menjawab pertanyaan, klarifikasi proposal, dan atasi masalah.

Diskusi harus dilakukan di rangkaian pesan pengumuman. Jika proposal ada di Dokumen Google, komentar dapat digunakan sebagai gantinya (Perhatikan bahwa komentar anonim diizinkan).

Memperbarui status

Buat Humas baru untuk memperbarui status proposal, setelah iterasi selesai. Kirim PR ke peninjau utama yang sama dan Cc peninjau lainnya.

Untuk menerima proposal secara resmi, peninjau utama menyetujui Humas setelah memastikan bahwa peninjau lainnya menyetujui keputusan tersebut.

Harus ada waktu setidaknya 1 minggu antara pengumuman pertama dan persetujuan proposal. Hal ini memastikan bahwa pengguna memiliki cukup waktu untuk membaca dokumen dan menyampaikan kekhawatiran mereka.

Penerapan dapat dimulai sebelum proposal diterima, misalnya sebagai bukti konsep atau eksperimen. Namun, Anda tidak dapat mengirimkan perubahan sebelum peninjauan selesai.

Memilih peninjau prospek

Peninjau prospek harus merupakan pakar domain yang:

  • Memiliki pengetahuan tentang subsistem yang relevan
  • Bersifat objektif dan mampu memberikan umpan balik yang konstruktif
  • Tersedia untuk seluruh periode peninjauan guna memimpin proses

Pertimbangkan untuk memeriksa kontak untuk menemukan berbagai label tim.

Markdown vs Google Dokumen

Putuskan mana yang paling sesuai untuk Anda, karena keduanya diterima.

Manfaat menggunakan Google Dokumen:

  • Efektif untuk {i>brainstorming<i}, karena mudah untuk memulainya.
  • Pengeditan kolaboratif.
  • Iterasi cepat.
  • Cara mudah untuk menyarankan pengeditan.

Manfaat menggunakan {i>file<i} Markdown:

  • Bersihkan URL untuk penautan.
  • Rekaman revisi eksplisit.
  • Jangan lupa untuk menyiapkan hak akses sebelum memublikasikan link.
  • Mudah ditelusuri dengan mesin telusur.
  • Siap menghadapi masa depan: Teks biasa tidak dapat digunakan dengan alat tertentu dan tidak memerlukan koneksi Internet.
  • Anda dapat memperbaruinya meskipun penulisnya sudah tidak ada lagi.
  • Link tersebut dapat diproses secara otomatis (memperbarui/mendeteksi link yang tidak aktif, mengambil daftar penulis, dll.).

Anda dapat memilih untuk melakukan iterasi terlebih dahulu di Google Dokumen, lalu mengonversinya menjadi Markdown untuk masa mendatang.

Menggunakan Google Dokumen

Agar konsisten, gunakan template dokumen desain Bazel. Hal ini mencakup header yang diperlukan dan menciptakan konsistensi visual dengan dokumen terkait Bazel lainnya. Untuk melakukannya, klik File > Buat salinan atau klik link ini untuk membuat salinan template dokumen desain.

Agar dokumen dapat dibaca oleh semua orang, klik Share > Advanced > Change..., lalu pilih "On -Anyone with the link". Jika Anda mengizinkan komentar pada dokumen, siapa saja dapat berkomentar secara anonim, bahkan tanpa akun Google.

Menggunakan Markdown

Dokumen disimpan di GitHub dan menggunakan ragam Markdown GitHub (Spesifikasi).

Buat Humas untuk memperbarui dokumen yang ada. Perubahan yang signifikan harus ditinjau oleh peninjau dokumen. Perubahan sepele (seperti kesalahan ketik, pemformatan) dapat disetujui oleh siapa saja.

Alur kerja peninjau

{i>Review<i} memberi komentar, mengulas, dan menyetujui dokumen desain.

Tanggung jawab umum peninjau

Anda bertanggung jawab untuk meninjau dokumen desain, meminta informasi tambahan jika diperlukan, dan menyetujui desain yang lulus proses peninjauan.

Saat Anda menerima proposal baru

  1. Lihat sekilas dokumen tersebut.
  2. Beri komentar jika informasi penting tidak ada, atau jika desain tidak sesuai dengan tujuan project.
  3. Menyarankan peninjau tambahan.
  4. Menyetujui Humas jika sudah siap ditinjau.

Selama proses peninjauan

  1. Berdiskusi dengan penulis desain tentang masalah yang bermasalah atau memerlukan klarifikasi.
  2. Jika memungkinkan, undang komentar dari non-reviewer yang harus mengetahui desain tersebut.
  3. Tentukan komentar mana yang harus ditangani oleh penulis sebagai prasyarat untuk persetujuan.
  4. Tulis "LGTM" (Looks Good To Me) di rangkaian pesan diskusi jika Anda puas dengan status proposal saat ini.

Ikuti proses ini untuk semua permintaan peninjauan desain. Jangan setujui desain yang memengaruhi Bazel jika tidak ada dalam indeks desain.

Tanggung jawab {i>Lead peninjau<i}

Anda bertanggung jawab untuk membuat keputusan go / no-go terkait penerapan desain yang tertunda. Jika tidak dapat melakukannya, Anda harus mengidentifikasi delegasi yang sesuai (menetapkan ulang PR ke delegasi), atau menetapkan ulang bug kepada pengelola Bazel untuk disposisi lebih lanjut.

Selama proses peninjauan

  1. Pastikan proses iterasi komentar dan desain berjalan secara konstruktif.
  2. Sebelum disetujui, pastikan masalah dari peninjau lain telah diselesaikan.

Setelah persetujuan oleh semua peninjau

  1. Pastikan sudah ada minimal 1 minggu sejak pengumuman di milis.
  2. Pastikan PR memperbarui statusnya.
  3. Menyetujui PR yang dikirim oleh penulis proposal.

Menolak desain

  1. Pastikan penulis Humas mengirimkan Humas; atau kirimkan PR kepada mereka.
  2. Humas akan memperbarui status dokumen tersebut.
  3. Tambahkan komentar ke dokumen yang menjelaskan mengapa desain tidak dapat disetujui dengan statusnya saat ini, dan menjelaskan langkah selanjutnya, jika ada (seperti "meninjau kembali asumsi yang tidak valid dan mengirim ulang").