Banyak perubahan, termasuk perbaikan bug dan peningkatan dokumentasi dapat diterapkan dan ditinjau melalui alur kerja permintaan tarik GitHub yang normal.
Namun beberapa perubahan bersifat "substansial", dan kami meminta agar perubahan ini dilakukan melalui sedikit proses desain dan menghasilkan konsensus di antara tim inti React.
Proses "RFC" (permintaan komentar) dimaksudkan untuk memberikan jalur yang konsisten dan terkendali bagi fitur-fitur baru untuk memasuki proyek.
Daftar RFC Aktif
Untuk menerima permintaan penarikan Anda, kami ingin Anda mengirimkan CLA. Anda hanya perlu melakukan ini sekali, jadi jika Anda telah melakukan ini untuk proyek sumber terbuka Facebook lainnya, Anda siap melakukannya. Jika Anda mengirimkan permintaan penarikan untuk pertama kalinya, beri tahu kami bahwa Anda telah menyelesaikan CLA dan kami dapat memeriksa ulang dengan nama pengguna GitHub Anda.
Lengkapi CLA Anda di sini.
Anda harus mempertimbangkan untuk menggunakan proses ini jika Anda ingin membuat perubahan "substansial" pada React atau dokumentasinya. Beberapa contoh yang mendapat manfaat dari RFC adalah:
Fitur baru yang menciptakan area permukaan API baru, dan memerlukan tanda fitur jika diperkenalkan.
Penghapusan fitur yang sudah dikirimkan sebagai bagian dari saluran rilis.
Pengenalan penggunaan atau konvensi idiomatik baru, meskipun tidak menyertakan perubahan kode pada React itu sendiri.
Beberapa perubahan tidak memerlukan RFC:
Mengungkapkan ulang, mengatur ulang, atau memfaktorkan ulang
Penambahan atau penghapusan peringatan
Penambahan yang secara ketat meningkatkan kriteria kualitas obyektif dan numerik (percepatan, dukungan browser yang lebih baik)
Penambahan hanya mungkin diperhatikan oleh pelaksana React lainnya, tidak terlihat oleh pengguna React.
Sulit untuk menulis RFC yang bisa diterima. Namun demikian, hal ini tidak boleh menyurutkan semangat Anda untuk menulisnya.
React memiliki area permukaan API yang sangat terbatas, dan setiap fitur harus bekerja secara lancar dengan semua fitur lainnya. Bahkan di antara anggota tim yang bekerja penuh waktu di React setiap hari, meningkatkan dan mendapatkan konteks yang cukup untuk menulis RFC yang baik membutuhkan waktu lebih dari satu tahun.
Dalam praktiknya, React RFC memiliki dua tujuan:
RFC React Team dikirimkan oleh anggota React Team setelah desain, diskusi, dan eksperimen ekstensif (terkadang, multi-bulan atau multi-tahun). Dalam praktiknya, mereka merupakan mayoritas RFC yang telah digabungkan sejauh ini. Tujuan dari RFC ini adalah untuk meninjau desain untuk komunitas dan memberikan kesempatan untuk memberikan masukan. Kami membaca setiap komentar pada RFC yang kami terbitkan, menanggapi pertanyaan, dan terkadang memasukkan masukan tersebut ke dalam proposal. Karena waktu kami terbatas, kami cenderung tidak menulis RFC untuk fitur React kecuali kami sangat yakin bahwa fitur tersebut sesuai dengan desainnya. Meskipun sepertinya sebagian besar React Team RFC mudah diterima, dalam praktiknya hal ini terjadi karena 98% ide tertinggal di ruang pemotongan. 2% sisanya yang kami rasa sangat percaya diri dan memiliki konsensus tim adalah yang kami umumkan sebagai RFC untuk mendapatkan masukan dari komunitas.
RFC Komunitas dapat dikirimkan oleh siapa saja. Dalam praktiknya, sebagian besar RFC komunitas tidak digabungkan. Alasan paling umum mengapa kami menolak RFC adalah karena RFC memiliki kesenjangan atau kekurangan desain yang signifikan, tidak berfungsi secara kohesif dengan semua fitur lainnya, atau tidak termasuk dalam cakupan React. Namun, penggabungan bukanlah satu-satunya kriteria keberhasilan RFC. Meskipun desain API tidak sesuai dengan arah yang ingin kami ambil, kami menganggap diskusi RFC sangat berharga untuk penelitian dan inspirasi. Kami tidak selalu meninjau RFC komunitas secara tepat waktu, namun setiap kali kami mulai mengerjakan area terkait, kami memeriksa RFC di area tersebut, dan meninjau kasus penggunaan dan kekhawatiran yang diposting oleh anggota komunitas. Saat Anda mengirimkan RFC, tujuan utama Anda bukanlah menggabungkannya ke dalam React sebagaimana adanya, namun untuk menghasilkan diskusi yang kaya dengan anggota komunitas. Jika lamaran Anda kemudian diterima, itu bagus. Namun kalaupun tidak, tidak akan sia-sia. Diskusi yang dihasilkan sering kali menjadi masukan bagi proposal berikutnya dalam ruang permasalahan yang sama, baik itu berasal dari komunitas atau dari Tim React. Banyak penulis perpustakaan yang membaca diskusi, sehingga RFC sering kali mengarah pada eksperimen komunitas dan solusi lahan pengguna.
Kami menerapkan tingkat ketelitian yang sama pada RFC Tim React dan RFC Komunitas. Perbedaan utama di antara keduanya terletak pada tahap desain: RFC Tim React cenderung dikirimkan pada akhir proses desain sedangkan RFC Komunitas cenderung dikirimkan di awal sebagai cara untuk memulainya.
Singkatnya, untuk menambahkan fitur utama ke React, biasanya RFC pertama kali digabungkan ke dalam repo RFC sebagai file penurunan harga. Pada saat itu RFC sedang 'aktif' dan dapat diimplementasikan dengan tujuan untuk dimasukkan ke dalam React.
Garpu repo RFC http://github.com/reactjs/rfcs
Salin 0000-template.md
ke text/0000-my-feature.md
(dengan 'my-feature' bersifat deskriptif. Jangan tetapkan nomor RFC dulu).
Isi RFCnya. Berhati-hatilah pada detailnya: RFC yang tidak memberikan motivasi yang meyakinkan, menunjukkan pemahaman tentang dampak desain, atau tidak jujur tentang kelemahan atau alternatifnya cenderung kurang diterima .
Kirimkan permintaan tarik. Sebagai permintaan tarik, RFC akan menerima masukan desain dari komunitas yang lebih luas, dan penulis harus siap untuk merevisinya sebagai tanggapan.
Membangun konsensus dan mengintegrasikan umpan balik. RFC yang mendapat dukungan luas kemungkinan besar akan mencapai kemajuan dibandingkan RFC yang tidak menerima komentar apa pun.
Pada akhirnya, tim akan memutuskan apakah RFC merupakan kandidat untuk dimasukkan dalam React. Perhatikan bahwa peninjauan tim mungkin memerlukan waktu lama, dan kami menyarankan Anda meminta anggota komunitas untuk meninjaunya terlebih dahulu.
RFC yang menjadi kandidat untuk disertakan dalam React akan memasuki "periode komentar akhir" yang berlangsung selama 3 hari kalender. Awal periode ini akan ditandai dengan komentar dan tag pada permintaan penarikan RFC.
RFC dapat dimodifikasi berdasarkan masukan dari tim dan komunitas. Modifikasi yang signifikan dapat memicu periode komentar akhir yang baru.
RFC dapat ditolak oleh tim setelah diskusi publik selesai dan komentar telah dibuat untuk merangkum alasan penolakan. Seorang anggota tim kemudian harus menutup permintaan penarikan terkait RFC.
RFC dapat diterima pada akhir periode komentar terakhirnya. Seorang anggota tim akan menggabungkan permintaan penarikan yang terkait dengan RFC, dan pada saat itu RFC akan menjadi 'aktif'.
Setelah RFC menjadi aktif, penulis dapat mengimplementasikannya dan mengirimkan fitur tersebut sebagai permintaan tarik ke repo React. Menjadi 'aktif' bukanlah suatu hal yang mudah, dan khususnya tidak berarti fitur tersebut pada akhirnya akan digabungkan; hal ini berarti bahwa tim inti pada prinsipnya telah menyetujuinya dan bersedia untuk menggabungkannya.
Selain itu, fakta bahwa RFC tertentu telah diterima dan 'aktif' tidak menyiratkan apa pun tentang prioritas apa yang diberikan pada implementasinya, atau apakah ada orang yang sedang mengerjakannya.
Modifikasi RFC aktif dapat dilakukan di PR lanjutan. Kami berusaha keras untuk menulis setiap RFC sedemikian rupa sehingga mencerminkan desain akhir fitur; namun sifat prosesnya berarti bahwa kita tidak dapat mengharapkan setiap RFC yang digabungkan benar-benar mencerminkan hasil akhir pada rilis besar berikutnya; oleh karena itu kami mencoba untuk menjaga setiap dokumen RFC tetap sinkron dengan fitur bahasa sesuai rencana, melacak perubahan tersebut melalui permintaan penarikan tindak lanjut ke dokumen.
Penulis RFC tidak berkewajiban untuk mengimplementasikannya. Tentu saja, penulis RFC (seperti pengembang lainnya) dipersilakan memposting implementasi untuk ditinjau setelah RFC diterima.
Jika Anda tertarik untuk mengerjakan implementasi RFC 'aktif', namun tidak dapat menentukan apakah orang lain sudah mengerjakannya, silakan bertanya (misalnya dengan memberikan komentar tentang masalah terkait).
Saat ini, Tim React tidak dapat berkomitmen untuk meninjau RFC secara tepat waktu. Saat Anda mengirimkan RFC, tujuan utama Anda adalah mengumpulkan masukan dari komunitas dan menghasilkan diskusi yang kaya. Tim React mengevaluasi kembali daftar proyek dan prioritas saat ini setiap beberapa bulan. Meskipun RFC dirancang dengan baik, sering kali kita tidak dapat berkomitmen untuk segera mengintegrasikannya. Namun, kami merasa sangat berharga untuk meninjau kembali RFC terbuka setiap beberapa bulan, dan melihat apakah ada yang menarik perhatian kami. Setiap kali kami mulai mengerjakan ruang masalah baru, kami juga memastikan untuk memeriksa pekerjaan sebelumnya dan diskusi di RFC terkait, dan terlibat dengan mereka.
Kami membaca semua RFC dalam beberapa minggu setelah penyerahan. Jika menurut kami desainnya cocok dengan React, dan jika kami siap untuk mengevaluasinya, kami akan mencoba meninjaunya lebih awal. Jika kami ragu dengan desainnya atau jika kami tidak memiliki cukup informasi untuk mengevaluasinya, kami akan membiarkannya terbuka hingga menerima masukan yang cukup dari komunitas. Kami menyadari betapa frustrasinya jika tidak menerima peninjauan tepat waktu, namun Anda dapat yakin bahwa tidak ada upaya yang Anda lakukan untuk RFC yang sia-sia.
Proses RFC React mendapatkan inspirasinya dari proses Yarn RFC, proses Rust RFC, dan proses Ember RFC.
Kami telah mengubahnya di masa lalu sebagai respons terhadap masukan, dan kami terbuka untuk mengubahnya lagi jika diperlukan.