Berkontribusi pada kode TensorFlow

Baik Anda menambahkan fungsi kerugian, meningkatkan cakupan pengujian, atau menulis RFC untuk perubahan desain utama, bagian panduan kontributor ini akan membantu Anda memulai. Terima kasih atas kerja keras dan minat Anda dalam meningkatkan TensorFlow.

Sebelum Anda mulai

Sebelum Anda menyumbangkan kode sumber ke proyek TensorFlow, harap tinjau file CONTRIBUTING.md di repositori GitHub proyek tersebut. Misalnya, lihat file CONTRIBUTING.md di repositori inti TensorFlow. Semua kontributor kode wajib menandatangani Perjanjian Lisensi Kontributor (CLA).

Untuk menghindari duplikasi pekerjaan, harap tinjau RFC yang ada atau yang diusulkan dan hubungi pengembang di forum TensorFlow ( developers@tensorflow.org ) sebelum Anda mulai mengerjakan fitur yang tidak sepele. Kami agak selektif dalam memutuskan untuk menambahkan fungsionalitas baru, dan cara terbaik untuk berkontribusi dan membantu proyek ini adalah dengan mengerjakan masalah yang sudah diketahui.

Masalah bagi kontributor baru

Kontributor baru sebaiknya mencari tag berikut saat mencari kontribusi pertama untuk basis kode TensorFlow. Kami sangat menyarankan agar kontributor baru mengerjakan proyek "good first issue" dan "contribution welcome" terlebih dahulu; ini membantu kontributor untuk terbiasa dengan alur kerja kontribusi, dan agar pengembang inti dapat mengenal kontributor tersebut.

Jika Anda tertarik merekrut tim untuk membantu mengatasi masalah berskala 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 akan melalui proses peninjauan kode.

Meninjau kode yang disumbangkan ke proyek sebagai permintaan tarik (pull request) adalah komponen penting dalam 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 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 ini dan berniat untuk menggunakannya? Apakah perubahan ini sesuai dengan ruang lingkup TensorFlow? Apakah biaya pemeliharaan fitur baru sebanding dengan manfaatnya?
  • Apakah kode tersebut konsisten dengan API TensorFlow? Apakah fungsi publik, kelas, dan parameter diberi nama dengan baik dan dirancang secara intuitif?
  • Apakah menyertakan dokumentasi? Apakah semua fungsi publik, kelas, parameter, tipe pengembalian, dan atribut tersimpan 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 mudah dibaca manusia? Apakah kode tersebut minim redundansi? Apakah nama variabel perlu diperbaiki agar lebih jelas atau konsisten? Apakah perlu ditambahkan komentar? Apakah ada komentar yang perlu dihapus karena tidak membantu atau berlebihan?

  • Apakah kode tersebut efisien? Bisakah kode tersebut ditulis ulang dengan mudah agar berjalan lebih efisien?

  • Apakah kode tersebut kompatibel dengan versi TensorFlow sebelumnya?

  • Apakah kode baru tersebut akan menambah ketergantungan pada pustaka lain?

Uji dan tingkatkan cakupan pengujian.

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

Semua fitur baru dan perbaikan bug harus menyertakan cakupan pengujian yang memadai. Kami juga menerima kontribusi berupa kasus uji baru atau peningkatan pada pengujian yang sudah ada. Jika Anda menemukan bahwa pengujian kami yang ada belum lengkap — meskipun saat ini tidak menyebabkan bug — harap ajukan masalah dan, jika memungkinkan, ajukan permintaan pull request.

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

Hal-hal yang menjadi perhatian khusus dalam pengujian yang memadai adalah:

  • Apakah setiap fungsi dan kelas publik diuji?
  • Apakah serangkaian parameter yang wajar , nilai-nilainya, jenis nilainya, dan kombinasinya telah diuji?
  • Apakah pengujian tersebut memvalidasi bahwa kode tersebut benar , dan bahwa kode tersebut melakukan apa yang seharusnya dilakukan sesuai dengan yang dijelaskan dalam dokumentasi ?
  • Jika perubahannya adalah perbaikan bug, apakah disertakan pengujian non-regresi ?
  • Apakah pengujian berhasil dalam proses integrasi berkelanjutan ?
  • Apakah pengujian mencakup setiap baris kode? Jika tidak, apakah pengecualiannya masuk akal dan eksplisit?

Jika Anda menemukan masalah, mohon pertimbangkan untuk membantu kontributor memahami masalah tersebut dan menyelesaikannya.

Perbaiki pesan kesalahan atau log

Kami menerima kontribusi yang dapat meningkatkan pesan kesalahan dan pencatatan log.

Alur kerja kontribusi

Kontribusi kode—perbaikan bug, pengembangan baru, peningkatan pengujian—semuanya mengikuti alur kerja yang berpusat pada GitHub. Untuk berpartisipasi dalam pengembangan TensorFlow, buat akun GitHub. Kemudian:

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

  2. Salin repositori ke sistem lokal Anda.

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

  3. Buat cabang baru untuk menyimpan pekerjaan Anda.

    $ git checkout -b new-branch-name

  4. Kerjakan kode baru Anda. Tulis dan jalankan pengujian.

  5. Simpan perubahan Anda.

    $ git add -A

    $ git commit -m "commit message here"

  6. Unggah perubahan Anda ke repositori GitHub Anda.

    $ git push origin branch-name

  7. Buka Pull Request (PR). Buka repositori proyek asli di GitHub. Akan ada pesan tentang cabang yang baru saja Anda unggah, menanyakan apakah Anda ingin membuka pull request. Ikuti petunjuknya, bandingkan di seluruh repositori , dan kirimkan PR. Ini akan mengirimkan email ke para kontributor. Anda mungkin ingin mempertimbangkan untuk mengirim email ke milis agar lebih terlihat. (Untuk detail lebih lanjut, lihat panduan GitHub tentang PR .)

  8. Pengelola dan kontributor lainnya akan meninjau PR Anda . Silakan berpartisipasi dalam percakapan, dan cobalah untuk melakukan perubahan yang diminta . Setelah PR disetujui, kode akan digabungkan.

Sebelum mengerjakan kontribusi Anda berikutnya , pastikan repositori lokal Anda sudah diperbarui.

  1. Atur remote upstream. (Anda hanya perlu melakukan ini sekali per proyek, bukan setiap kali.)

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

  2. Beralihlah ke cabang master lokal.

    $ git checkout master

  3. Unduh perubahan dari sumber utama.

    $ git pull upstream master

  4. Unggah perubahan ke akun GitHub Anda. (Opsional, tetapi merupakan praktik yang baik.)

    $ 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