Bir kayıp işlevi ekliyor, test kapsamını iyileştiriyor veya büyük bir tasarım değişikliği için bir RFC yazıyor olun, katılımcı kılavuzunun bu bölümü başlamanıza yardımcı olacaktır. TensorFlow'u iyileştirmeye çalıştığınız ve gösterdiğiniz ilgiden dolayı teşekkür ederiz.
Başlamadan önce
Bir TensorFlow projesine kaynak koduna katkıda bulunmadan önce, lütfen projenin GitHub deposundaki
CONTRIBUTING.md dosyasını gözden geçirin. (Örneğin , çekirdek TensorFlow deposu için CONTRIBUTING.md dosyasına bakın.) Tüm koda katkıda bulunanların bir Katılımcı Lisans Sözleşmesi (CLA) imzalaması gerekir.
Çalışmayı tekrarlamaktan kaçınmak için, önemsiz olmayan bir özellik üzerinde çalışmaya başlamadan önce lütfen mevcut veya önerilen RFC'leri inceleyin ve TensorFlow forumlarında ( firstname.lastname@example.org ) geliştiricilerle iletişime geçin. Yeni işlevler 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ı ararken aşağıdaki etiketleri aramalıdır. Katkıda bulunanların önce "iyi ilk konu" ile ilgilenmelerini ve projeleri "katkılar hoş karşılamasını" şiddetle tavsiye ediyoruz; bu, katkıda bulunan kişinin katkı iş akışına aşina olmasına ve çekirdek geliştiricilerin katkıda bulunanla 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 oluşturmakla ilgileniyorsanız, lütfen developer @ group'a e-posta gönderin ve mevcut RFC listemizi inceleyin.
Kod incelemesi
Yeni özellikler, hata düzeltmeleri ve kod tabanındaki diğer tüm değişiklikler kod incelemesine tabidir.
Çekme istekleri, TensorFlow geliştirmesinin çok önemli bir bileşeni olduğundan projeye katkıda bulunan kodun gözden geçirilmesi. Diğer geliştiriciler tarafından gönderilen kodu, özellikle de bu özelliği kullanma olasılığınız olan bir şeyse, incelemeye başlamak için herkesi öneririz.
Kod inceleme sürecinde aklınızda bulundurmanız gereken bazı sorular şunlardır:
- Bunu TensorFlow'da istiyor muyuz? Kullanılması muhtemel mi? Bir TensorFlow kullanıcısı olarak, değişikliği seviyor ve onu kullanmayı düşünüyor musunuz? Bu değişiklik TensorFlow kapsamında mı? Yeni bir özelliği sürdürmenin maliyeti faydalarına değer mi?
- Kod, TensorFlow API ile tutarlı mı? Genel işlevler, sınıflar ve parametreler iyi adlandırılmış ve sezgisel olarak tasarlanmış mı?
Dokümantasyon içeriyor mu? Tüm genel işlevler, sınıflar, parametreler, dönüş türleri ve depolanan öznitelikler TensorFlow kurallarına göre adlandırılmış ve açıkça belgelenmiş mi? Yeni işlevler TensorFlow'un belgelerinde açıklanıyor ve mümkün olduğunda örneklerle gösteriliyor mu? Dokümantasyon düzgün işliyor mu?
Kod insan tarafından okunabilir mi? Yedeklilik düşük mü? Açıklık veya tutarlılık için değişken isimleri iyileştirilmeli mi? Yorumlar eklenmeli mi? Yararsız veya gereksiz yorumlardan herhangi biri 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 kitaplıklara 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şlarından biridir. Bu amaçla Docker imajlarını kullanıyoruz. Test fonksiyonları uygun şekilde adlandırılır ve algoritmaların geçerliliğinin yanı sıra farklı kod seçeneklerinin kontrolünden sorumludur.
Tüm yeni özellikler ve hata düzeltmeleri yeterli test kapsamı 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 şu anda bir hataya neden olmasa bile - lütfen bir sorun ve mümkünse bir çekme talebinde bulunun.
Her TensorFlow projesindeki test prosedürlerinin belirli ayrıntıları için GitHub'daki proje
README.md ve
CONTRIBUTING.md dosyalarına bakın.
Yeterli testte özellikle endişeler:
- Her kamusal işlev ve sınıf test edildi mi?
- Makul bir parametre seti, değerleri, değer türleri ve kombinasyonları test ediliyor mu?
- Testler, kodun doğru olduğunu ve belgelerin kodun amaçladığını söylediği şeyi yaptığını onaylıyor mu?
- Değişiklik bir hata düzeltmesiyse, regresyon dışı bir test dahil mi?
- Testler sürekli entegrasyon yapısını geçiyor mu?
- Testler her kod satırını kapsıyor mu? Değilse, istisnalar makul ve açık mı?
Herhangi bir sorun bulursanı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ı iyileştiren katkıları memnuniyetle karşılıyoruz.
Katkı iş akışı
Kod katkıları - hata düzeltmeleri, yeni geliştirme, test iyileştirme - tümü GitHub merkezli bir iş akışını takip eder. TensorFlow geliştirmeye katılmak için GitHub hesabı oluşturun. 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 deponun bir kopyasını oluşturacaktır. (Bir deponun nasıl çatallanacağıyla ilgili daha fazla ayrıntı için bu kılavuza bakın.)
Depoyu yerel sisteminize kopyalayın.
$ git clone email@example.com:your-user-name/project-name.git
Çalışmanızı tutmak 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 taahhüt edin.
$ 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 gönderilen şubeniz hakkında bir çekme isteği açmak isteyip istemediğinizi soran bir mesaj olacaktır. Komut istemlerini izleyin, depolar arasında karşılaştırı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, PR'larla ilgili GitHub kılavuzuna bakın.
Bakımcılar ve diğer katkıda bulunanlar sizin PR'nuzu gözden geçireceklerdir. Lütfen sohbete 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 deponuzun güncel olduğundan emin olun.
Yukarı akışlı uzaktan kumandayı ayarlayın. (Bunu her seferinde değil, proje başına yalnızca bir kez yapmanız gerekir.)
$ git remote add upstream firstname.lastname@example.org:tensorflow/project-repo-name
Yerel ana şubeye geçin.
$ git checkout master
Değişiklikleri yukarı akıştan aşağı çekin.
$ git pull upstream master
Değişiklikleri GitHub hesabınıza aktarın. (İsteğe bağlı, ancak iyi bir uygulama.)
$ 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ı:
Katkıda bulunan kontrol listesi
- Katkıda bulunan yönergeleri okuyun.
- Davranış Kurallarını okuyun.
- Katılımcı Lisans Sözleşmesini (CLA) imzaladığınızdan emin olun.
- Değişikliklerinizin yönergelere uygun olup olmadığını kontrol edin.
- Değişikliklerinizin TensorFlow kodlama stiliyle tutarlı olup olmadığını kontrol edin.
- Birim testlerini çalıştırın .