İster bir kayıp işlevi ekliyor olun, ister test kapsamını geliştirin, ister büyük bir tasarım değişikliği için RFC yazıyor olun, katkıda bulunan kılavuzunun bu bölümü başlamanıza yardımcı olacaktır. TensorFlow'u iyileştirmeye yönelik çalışmalarınız ve ilginiz için teşekkür ederiz.
Başlamadan önce
Bir TensorFlow projesine kaynak koduyla katkıda bulunmadan önce lütfen projenin GitHub deposundaki CONTRIBUTING.md
dosyasını inceleyin. Örneğin, çekirdek TensorFlow deposundaki CONTRIBUTING.md dosyasına bakın. Tüm kod katkıda bulunanların bir Katılımcı Lisans Sözleşmesi (CLA) imzalaması gerekir.
İşin kopyalanmasını önlemek için lütfen mevcut veya önerilen RFC'leri inceleyin ve önemsiz olmayan bir özellik üzerinde çalışmaya başlamadan önce TensorFlow forumlarındaki ( geliştiriciler@tensorflow.org ) geliştiricilerle iletişime geçin. Yeni işlevsellik eklemeye karar verirken biraz seçici davranıyoruz ve projeye katkıda bulunmanın ve yardım etmenin en iyi yolu bilinen sorunlar üzerinde çalışmaktır.
Yeni katkıda bulunanlar için sorunlar
Yeni katkıda bulunanlar, TensorFlow kod tabanına ilk katkıyı ararken aşağıdaki etiketleri aramalıdır. Yeni katkıda bulunanların öncelikle "iyi bir ilk sayı" ve "katkıların memnuniyetle karşılanacağı" projelerle ilgilenmelerini şiddetle tavsiye ediyoruz; bu, katkıda bulunanın katkı iş akışına aşina olmasına ve temel geliştiricilerin katkıda bulunanı tanımasına yardımcı olur.
Büyük ölçekli bir sorunun veya yeni bir özelliğin üstesinden gelmeye yardımcı olacak bir ekip görevlendirmekle ilgileniyorsanız, lütfen geliştiriciler@ grubuna e-posta gönderin ve mevcut RFC listemizi inceleyin.
Kod incelemesi
Yeni özellikler, hata düzeltmeleri ve kod tabanındaki diğer değişiklikler kod incelemesine tabidir.
Çekme istekleri olarak projeye katkıda bulunan kodun gözden geçirilmesi, TensorFlow geliştirmenin çok önemli bir bileşenidir. Herkesin, özellikle de bu özellik muhtemelen kullanacağınız bir özellikse, diğer geliştiriciler tarafından gönderilen kodu incelemeye başlamasını öneririz.
Kod inceleme sürecinde akılda tutulması gereken bazı sorular şunlardır:
- Bunu TensorFlow'da istiyor muyuz? Kullanılma ihtimali var mı? Bir TensorFlow kullanıcısı olarak bu değişikliği beğendiniz mi ve kullanmayı düşünüyor musunuz? Bu değişiklik TensorFlow kapsamında mı? Yeni bir özelliği sürdürmenin maliyeti faydalarına değecek mi?
- Kod TensorFlow API ile tutarlı mı? Genel işlevler, sınıflar ve parametreler iyi adlandırılmış ve sezgisel olarak tasarlanmış mı?
Belgeleri içeriyor mu? Tüm genel işlevler, sınıflar, parametreler, dönüş türleri ve saklanan nitelikler TensorFlow kurallarına göre adlandırılmış ve açıkça belgelenmiş mi? Yeni işlevsellik TensorFlow'un belgelerinde açıklanıyor ve mümkün olduğunda örneklerle gösteriliyor mu? Belgeler düzgün bir şekilde işleniyor mu?
Kod insan tarafından okunabilir mi? Yedeklilik oranı düşük mü? Değişken adları netlik veya tutarlılık açısından geliştirilmeli mi? Yorumlar eklenmeli mi? Yararsız veya konu dışı olduğu gerekçesiyle herhangi bir yorum kaldırılmalı mı?
Kod verimli mi? Daha verimli çalışması için kolayca yeniden yazılabilir mi?
Kod, TensorFlow'un önceki sürümleriyle geriye doğru uyumlu mu?
Yeni kod diğer kütüphanelere yeni bağımlılıklar ekleyecek mi?
Test kapsamını test edin ve iyileştirin
Yüksek kaliteli birim testi, TensorFlow geliştirme sürecinin temel taşıdır. Bu amaçla Docker görsellerini kullanıyoruz. Test fonksiyonları uygun şekilde adlandırılmıştır ve algoritmaların geçerliliğinin yanı sıra kodun farklı seçeneklerinin kontrol edilmesinden sorumludur.
Tüm yeni özellikler ve hata düzeltmeleri yeterli test kapsamını içermelidir . Ayrıca yeni test senaryolarının katkılarını veya mevcut testlere yapılan iyileştirmeleri de memnuniyetle karşılıyoruz. Mevcut testlerimizin tamamlanmadığını fark ederseniz (bu durum şu anda bir hataya neden olmasa bile) lütfen bir sorun bildirin ve mümkünse bir çekme isteğinde bulunun.
Her TensorFlow projesindeki test prosedürlerinin özel ayrıntıları için GitHub'daki proje deposundaki README.md
ve CONTRIBUTING.md
dosyalarına bakın.
Yeterli testlerle ilgili özellikle endişe edilenler:
- Her genel işlev ve sınıf test ediliyor mu?
- Makul bir parametre kümesi , değerleri, değer türleri ve kombinasyonları test ediliyor mu?
- Testler kodun doğru olduğunu ve belgelerde kodun yapmak istediğini yaptığını doğruluyor mu?
- Değişiklik bir hata düzeltmesiyse regresyon olmayan bir test dahil mi?
- Testler sürekli entegrasyon yapısını geçiyor mu?
- Testler kodun her satırını kapsıyor mu? Değilse, istisnalar makul ve açık mıdır?
Herhangi bir sorunla karşılaşırsanız, lütfen katkıda bulunan kişinin bu sorunları anlamasına ve çözmesine yardımcı olmayı düşünün.
Hata mesajlarını veya günlükleri iyileştirin
Hata mesajlarını ve günlük kaydını geliştiren katkıları memnuniyetle karşılıyoruz.
Katkı iş akışı
Kod katkıları (hata düzeltmeleri, yeni geliştirme, test iyileştirmeleri) tümü GitHub merkezli bir iş akışını takip eder. TensorFlow geliştirmeye katılmak için bir GitHub hesabı oluşturun. Daha sonra:
Üzerinde çalışmayı planladığınız depoyu çatallayın. Proje deposu sayfasına gidin ve Çatal düğmesini kullanın. Bu, kullanıcı adınız altında reponun bir kopyasını oluşturacaktır. (Bir deponun nasıl çatallanacağına ilişkin daha fazla ayrıntı için bu kılavuza bakın.)
Repoyu yerel sisteminize kopyalayın.
$ git clone git@github.com:your-user-name/project-name.git
Çalışmanızı sürdürmek için yeni bir şube oluşturun.
$ git checkout -b new-branch-name
Yeni kodunuz üzerinde çalışın. Testleri yazın ve çalıştırın.
Değişikliklerinizi kaydedin.
$ git add -A
$ git commit -m "commit message here"
Değişikliklerinizi GitHub deponuza aktarın.
$ git push origin branch-name
Bir Çekme İsteği (PR) açın. GitHub'daki orijinal proje deposuna gidin. Yakın zamanda itilen şubeniz hakkında, çekme isteği açmak isteyip istemediğinizi soran bir mesaj gelecektir. İstemleri izleyin, depolar arasında karşılaştırma yapın ve PR'yi gönderin. Bu, taahhüt edenlere bir e-posta gönderecektir. Daha fazla görünürlük için posta listesine bir e-posta göndermeyi düşünebilirsiniz. (Daha fazla ayrıntı için Halkla İlişkiler hakkındaki GitHub kılavuzuna bakın.
Bakımcılar ve diğer katkıda bulunanlar PR'nizi inceleyeceklerdir . Lütfen konuşmaya katılın ve istenen değişiklikleri yapmaya çalışın. PR onaylandıktan sonra kod birleştirilecektir.
Bir sonraki katkınız üzerinde çalışmaya başlamadan önce yerel veri havuzunuzun güncel olduğundan emin olun.
Yukarı akış uzaktan kumandasını ayarlayın. (Bunu her proje için değil, yalnızca bir kez yapmanız gerekir.)
$ git remote add upstream git@github.com:tensorflow/project-repo-name
Yerel ana şubeye geçin.
$ git checkout master
Değişiklikleri yukarı yönde aşağı çekin.
$ git pull upstream master
Değişiklikleri GitHub hesabınıza aktarın. (İsteğe bağlı, ancak iyi bir uygulamadır.)
$ git push origin master
Yeni işe başlıyorsanız yeni bir şube oluşturun.
$ git checkout -b branch-name
Ek git
ve GitHub kaynakları:
Katılımcı kontrol listesi
- Katkıda bulunma yönergelerini okuyun.
- Davranış Kurallarını okuyun.
- Katılımcı Lisans Sözleşmesini (CLA) imzaladığınızdan emin olun.
- Değişikliklerinizin yönergelerle tutarlı olup olmadığını kontrol edin.
- Değişikliklerinizin TensorFlow kodlama stiliyle tutarlı olup olmadığını kontrol edin.
- Birim testlerini çalıştırın .