Baik Anda menambahkan fungsi kerugian, meningkatkan cakupan pengujian, atau menulis RFC untuk perubahan desain besar, bagian panduan kontributor ini akan membantu Anda memulai. Terima kasih atas kerja keras dan minat Anda dalam meningkatkan TensorFlow.
Sebelum Anda memulai
Sebelum Anda menyumbangkan kode sumber ke proyek TensorFlow, harap tinjau file CONTRIBUTING.md
di repo GitHub proyek tersebut. Misalnya, lihat file CONTRIBUTING.md di repo TensorFlow inti. Semua kontributor kode harus menandatangani Perjanjian Lisensi Kontributor (CLA).
Untuk menghindari duplikasi pekerjaan, harap tinjau RFC saat ini atau yang diusulkan dan hubungi pengembang di forum TensorFlow ( developers@tensorflow.org ) sebelum Anda mulai mengerjakan fitur non-sepele. Kami agak selektif saat memutuskan untuk menambahkan fungsionalitas baru, dan cara terbaik untuk berkontribusi dan membantu proyek adalah dengan menangani masalah yang diketahui.
Masalah untuk kontributor baru
Kontributor baru harus mencari tag berikut saat mencari kontribusi pertama ke basis kode TensorFlow. Kami sangat menyarankan agar kontributor baru menangani proyek "masalah pertama yang baik" dan "kontribusi diterima" terlebih dahulu; ini membantu kontributor menjadi akrab dengan alur kerja kontribusi, dan bagi pengembang inti untuk mengenal kontributor.
Jika Anda tertarik untuk merekrut tim untuk membantu mengatasi masalah skala besar atau fitur baru, silakan kirim email ke grup developers@ dan tinjau daftar RFC kami saat ini.
Tinjauan kode
Fitur baru, perbaikan bug, dan perubahan lain pada basis kode tunduk pada tinjauan kode.
Meninjau kode yang dikontribusikan ke proyek karena permintaan tarik adalah komponen penting dari pengembangan TensorFlow. Kami mendorong siapa pun untuk mulai meninjau kode yang dikirimkan oleh pengembang lain, terutama jika fitur tersebut kemungkinan besar akan Anda gunakan.
Berikut adalah beberapa pertanyaan yang perlu diingat selama proses peninjauan kode:
- Apakah kita menginginkan ini di TensorFlow? Apakah kemungkinan akan digunakan? Apakah Anda, sebagai pengguna TensorFlow, menyukai perubahan dan berniat menggunakannya? Apakah perubahan ini dalam cakupan TensorFlow? Apakah biaya pemeliharaan fitur baru sebanding dengan manfaatnya?
- Apakah kodenya konsisten dengan TensorFlow API? Apakah fungsi, kelas, dan parameter publik dinamai dengan baik dan dirancang secara intuitif?
Apakah itu termasuk dokumentasi? Apakah semua fungsi publik, kelas, parameter, tipe pengembalian, dan atribut yang disimpan diberi nama sesuai dengan konvensi TensorFlow dan didokumentasikan dengan jelas? Apakah fungsionalitas baru dijelaskan dalam dokumentasi TensorFlow dan diilustrasikan dengan contoh, jika memungkinkan? Apakah dokumentasi ditampilkan dengan benar?
Apakah kode tersebut dapat dibaca manusia? Apakah redundansinya rendah? Haruskah nama variabel ditingkatkan untuk kejelasan atau konsistensi? Haruskah komentar ditambahkan? Haruskah ada komentar yang dihapus karena tidak membantu atau tidak relevan?
Apakah kodenya efisien? Bisakah itu ditulis ulang dengan mudah untuk berjalan lebih efisien?
Apakah kode kompatibel dengan versi TensorFlow sebelumnya?
Akankah kode baru menambahkan dependensi baru pada perpustakaan lain?
Uji dan tingkatkan cakupan pengujian
Pengujian unit berkualitas tinggi adalah landasan proses pengembangan TensorFlow. Untuk tujuan ini, kami menggunakan gambar Docker. Fungsi pengujian diberi nama yang tepat, dan bertanggung jawab untuk memeriksa validitas algoritme serta berbagai opsi kode.
Semua fitur baru dan perbaikan bug harus menyertakan cakupan pengujian yang memadai. Kami juga menyambut baik kontribusi kasus uji baru atau peningkatan pada pengujian yang ada. Jika Anda menemukan bahwa pengujian kami yang ada tidak selesai — meskipun saat ini tidak menyebabkan bug — harap ajukan masalah dan, jika mungkin, tarik permintaan.
Untuk detail spesifik prosedur pengujian di setiap proyek TensorFlow, lihat file README.md
dan CONTRIBUTING.md
di repo proyek di GitHub.
Perhatian khusus dalam pengujian yang memadai :
- Apakah setiap fungsi publik dan kelas diuji?
- Apakah serangkaian parameter yang masuk akal , nilainya, jenis nilai, dan kombinasinya diuji?
- Apakah tes memvalidasi bahwa kode tersebut benar , dan melakukan apa yang dikatakan oleh dokumentasi yang dimaksudkan untuk dilakukan oleh kode tersebut?
- Jika perubahan tersebut adalah perbaikan bug, apakah termasuk pengujian non-regresi ?
- Apakah pengujian lulus pembangunan integrasi berkelanjutan ?
- Apakah tes mencakup setiap baris kode? Jika tidak, apakah pengecualiannya masuk akal dan eksplisit?
Jika Anda menemukan masalah, harap pertimbangkan untuk membantu kontributor memahami masalah tersebut dan menyelesaikannya.
Tingkatkan pesan kesalahan atau log
Kami menyambut kontribusi yang meningkatkan pesan kesalahan dan logging.
Alur kerja kontribusi
Kontribusi kode—perbaikan bug, pengembangan baru, peningkatan pengujian—semuanya mengikuti alur kerja yang berpusat pada GitHub. Untuk berpartisipasi dalam pengembangan TensorFlow, siapkan akun GitHub. Kemudian:
Garpu repo yang Anda rencanakan untuk dikerjakan. Buka halaman repo proyek dan gunakan tombol Fork . Ini akan membuat salinan repo, di bawah nama pengguna Anda. (Untuk detail lebih lanjut tentang cara melakukan fork repositori, lihat panduan ini .)
Kloning repo ke sistem lokal Anda.
$ git clone git@github.com:your-user-name/project-name.git
Buat cabang baru untuk menampung pekerjaan Anda.
$ git checkout -b new-branch-name
Kerjakan kode baru Anda. Menulis dan menjalankan tes.
Komit perubahan Anda.
$ git add -A
$ git commit -m "commit message here"
Dorong perubahan Anda ke repo GitHub Anda.
$ git push origin branch-name
Buka Permintaan Tarik (PR). Buka repo proyek asli di GitHub. Akan ada pesan tentang cabang Anda yang baru saja didorong, menanyakan apakah Anda ingin membuka permintaan tarik. Ikuti petunjuknya, bandingkan antar repositori , dan kirimkan PR. Ini akan mengirim email ke committer. Anda mungkin ingin mempertimbangkan untuk mengirim email ke milis untuk visibilitas lebih. (Untuk detail selengkapnya, lihat panduan GitHub tentang PR .
Pengelola dan kontributor lainnya akan meninjau PR Anda . Silakan berpartisipasi dalam percakapan, dan coba buat perubahan yang diminta . Setelah PR disetujui, kode akan digabungkan.
Sebelum mengerjakan kontribusi Anda berikutnya , pastikan repositori lokal Anda mutakhir.
Setel remote hulu. (Anda hanya perlu melakukan ini sekali per proyek, tidak setiap waktu.)
$ git remote add upstream git@github.com:tensorflow/project-repo-name
Beralih ke cabang master lokal.
$ git checkout master
Tarik ke bawah perubahan dari hulu.
$ git pull upstream master
Dorong perubahan ke akun GitHub Anda. (Opsional, tetapi praktik yang baik.)
$ git push origin master
Buat cabang baru jika Anda memulai pekerjaan baru.
$ git checkout -b branch-name
Sumber daya git
dan GitHub tambahan:
Daftar periksa kontributor
- Baca panduan kontribusi .
- Baca Kode Etik .
- Pastikan Anda telah menandatangani Contributor License Agreement (CLA) .
- Periksa apakah perubahan Anda sesuai dengan pedoman .
- Periksa apakah perubahan Anda konsisten dengan gaya pengkodean TensorFlow .
- Jalankan tes unit .