Berkontribusi pada kode TensorFlow

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 inti TensorFlow. Semua kontributor kode diharuskan menandatangani Perjanjian Lisensi Kontributor (CLA).

Untuk menghindari duplikasi pekerjaan, harap tinjau RFC saat ini atau yang diusulkan dan hubungi pengembang di forum TensorFlow ( developer@tensorflow.org ) sebelum Anda mulai mengerjakan fitur yang tidak sepele. Kami agak selektif ketika memutuskan untuk menambahkan fungsionalitas baru, dan cara terbaik untuk berkontribusi dan membantu proyek ini adalah dengan mengatasi 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 para pengembang inti untuk mengenal kontributor.

Jika Anda tertarik untuk merekrut tim untuk membantu mengatasi masalah berskala besar atau fitur baru, silakan kirim email ke grup pengembang@ dan tinjau daftar RFC kami saat ini.

Tinjauan kode

Fitur baru, perbaikan bug, dan perubahan apa pun lainnya pada basis kode tunduk pada tinjauan kode.

Meninjau kode yang berkontribusi pada proyek karena permintaan pull merupakan komponen penting dalam pengembangan TensorFlow. Kami mendorong siapa pun untuk mulai meninjau kode yang dikirimkan oleh pengembang lain, terutama jika fitur tersebut adalah sesuatu yang kemungkinan besar Anda gunakan.

Berikut beberapa pertanyaan yang perlu diingat selama proses peninjauan kode:

  • Apakah kita menginginkan ini di TensorFlow? Apakah mungkin untuk digunakan? Apakah Anda, sebagai pengguna TensorFlow, menyukai perubahan tersebut dan berniat menggunakannya? Apakah perubahan ini terjadi pada cakupan TensorFlow? Akankah biaya pemeliharaan fitur baru sebanding dengan manfaatnya?
  • Apakah kodenya konsisten dengan TensorFlow API? Apakah fungsi publik, kelas, dan parameter diberi nama dengan baik dan dirancang secara intuitif?
  • Apakah itu termasuk dokumentasi? Apakah semua fungsi publik, kelas, parameter, tipe kembalian, dan atribut tersimpan diberi nama sesuai dengan konvensi TensorFlow dan didokumentasikan dengan jelas? Apakah fungsi baru dijelaskan dalam dokumentasi TensorFlow dan diilustrasikan dengan contoh, jika memungkinkan? Apakah dokumentasi ditampilkan dengan benar?

  • Apakah kodenya dapat dibaca manusia? Apakah redundansinya rendah? Haruskah nama variabel diperbaiki agar lebih jelas atau konsisten? Haruskah komentar ditambahkan? Haruskah ada komentar yang dihapus karena tidak membantu atau tidak relevan?

  • Apakah kodenya efisien? Bisakah itu ditulis ulang dengan mudah agar berjalan lebih efisien?

  • Apakah kode tersebut kompatibel dengan versi TensorFlow sebelumnya?

  • Apakah kode baru akan menambah ketergantungan baru pada perpustakaan lain?

Uji dan tingkatkan cakupan tes

Pengujian unit berkualitas tinggi adalah landasan proses pengembangan TensorFlow. Untuk tujuan ini, kami menggunakan image Docker. Fungsi pengujian diberi nama yang sesuai, dan bertanggung jawab untuk memeriksa validitas algoritme serta berbagai opsi kode.

Semua fitur baru dan perbaikan bug harus mencakup cakupan pengujian yang memadai. Kami juga menyambut baik kontribusi kasus uji baru atau penyempurnaan pada pengujian yang sudah ada. Jika Anda menemukan bahwa pengujian kami yang ada tidak selesai — meskipun pengujian tersebut saat ini tidak menyebabkan bug — harap ajukan masalah dan, jika memungkinkan, lakukan permintaan penarikan.

Untuk detail spesifik prosedur pengujian di setiap proyek TensorFlow, lihat file README.md dan CONTRIBUTING.md di repo proyek di GitHub.

Yang menjadi 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 pengujian memvalidasi bahwa kode tersebut benar , dan melakukan apa yang menurut dokumentasi dimaksudkan untuk dilakukan oleh kode tersebut?
  • Jika perubahan tersebut merupakan perbaikan bug, apakah pengujian non-regresi disertakan?
  • Apakah pengujian tersebut lolos dari build integrasi berkelanjutan ?
  • Apakah pengujian mencakup setiap baris kode? Jika tidak, apakah pengecualian tersebut masuk akal dan eksplisit?

Jika Anda menemukan masalah apa pun, harap pertimbangkan untuk membantu kontributor memahami masalah tersebut dan menyelesaikannya.

Perbaiki pesan kesalahan atau log

Kami menyambut baik 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:

  1. Fork repo yang ingin Anda kerjakan. Buka halaman repo proyek dan gunakan tombol Fork . Ini akan membuat salinan repo, dengan nama pengguna Anda. (Untuk detail lebih lanjut tentang cara melakukan fork pada repositori, lihat panduan ini .)

  2. Kloning repo ke sistem lokal Anda.

    $ git clone git@github.com:your-user-name/project-name.git

  3. Buat cabang baru untuk menampung pekerjaan Anda.

    $ git checkout -b new-branch-name

  4. Kerjakan kode baru Anda. Menulis dan menjalankan tes.

  5. Komit perubahan Anda.

    $ git add -A

    $ git commit -m "commit message here"

  6. Dorong perubahan Anda ke repo GitHub Anda.

    $ git push origin branch-name

  7. 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 penarikan. Ikuti petunjuknya, bandingkan seluruh repositori , dan kirimkan PR. Ini akan mengirim email ke pelaku. Anda mungkin ingin mempertimbangkan untuk mengirim email ke milis agar lebih terlihat. (Untuk lebih jelasnya, lihat panduan GitHub tentang PR .

  8. Pengelola dan kontributor lainnya akan meninjau PR Anda . Silakan berpartisipasi dalam percakapan, dan coba lakukan perubahan apa pun yang diminta . Setelah PR disetujui, kode tersebut akan digabungkan.

Sebelum mengerjakan kontribusi Anda berikutnya , pastikan repositori lokal Anda sudah yang terbaru.

  1. Atur remote hulu. (Anda hanya perlu melakukan ini sekali per proyek, tidak setiap waktu.)

    $ git remote add upstream git@github.com:tensorflow/project-repo-name

  2. Beralih ke cabang master lokal.

    $ git checkout master

  3. Tarik ke bawah perubahan dari hulu.

    $ git pull upstream master

  4. Dorong perubahan ke akun GitHub Anda. (Opsional, tapi praktik yang bagus.)

    $ git push origin master

  5. Buat cabang baru jika Anda memulai pekerjaan baru.

    $ git checkout -b branch-name

Sumber daya tambahan git dan GitHub:

Daftar periksa kontributor