İster bir kayıp işlevi ekliyor, test kapsamını iyileştiriyor, ister büyük bir tasarım değişikliği için bir RFC yazıyor olun, katkıda bulunan kılavuzunun bu bölümü başlamanıza yardımcı olacaktır. Çalışmanız ve TensorFlow'u iyileştirme konusundaki ilginiz için teşekkür ederiz.
Başlamadan önce
Bir TensorFlow projesine kaynak kodu eklemeden ö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.
Çalışmaları tekrar etmekten kaçınmak için, önemsiz olmayan bir özellik üzerinde çalışmaya başlamadan önce lütfen mevcut veya önerilen RFC'leri inceleyin ve geliştiricilerle TensorFlow forumlarında ( firstname.lastname@example.org ) iletişime geçin. Yeni işlevler eklemeye karar verirken biraz seçiciyiz ve projeye katkıda bulunmanın ve projeye yardımcı olmanın 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 "ilk sayı iyi" ve "katkıları memnuniyetle karşılıyoruz" projelerini ele almalarını şiddetle tavsiye ediyoruz; bu, katkıda bulunanın katkı iş akışına aşina olmasına ve çekirdek geliştiricilerin katkıda bulunanı tanımasına yardımcı olur.
Büyük ölçekli bir sorunun veya yeni bir özelliğin üstesinden gelinmesine yardımcı olacak bir ekip kurmakla ilgileniyorsanız, lütfen geliştiriciler@ grubuna e-posta gönderin ve mevcut RFC listemizi gözden geçirin.
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. Özellikle de özellik muhtemelen kullanacağınız bir şeyse, herkesin 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 değişikliği beğendiniz 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 depolanan öznitelikler TensorFlow kurallarına göre adlandırılmış ve açıkça belgelenmiş mi? Yeni işlevler mümkün olduğunda TensorFlow'un belgelerinde açıklanıyor ve örneklerle gösteriliyor mu? Belgeler düzgün bir şekilde işleniyor mu?
Kod insan tarafından okunabilir mi? Fazlalık düşük mü? Açıklık veya tutarlılık için değişken adları iyileştirilmeli mi? Yorumlar eklenmeli mi? Herhangi bir yorum yararsız veya gereksiz olarak 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 dönük olarak 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şıdır. Bu amaçla Docker görüntüleri kullanıyoruz. Test işlevleri uygun şekilde adlandırılmıştır ve kodun farklı seçeneklerinin yanı sıra algoritmaların geçerliliğini kontrol etmekten 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 testlerde 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 talebi gönderin.
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 genel 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 yapmayı amaçladığını söylediği şeyi yaptığını doğruluyor mu?
- Değişiklik bir hata düzeltmesiyse, regresyon olmayan bir test dahil mi?
- Testler sürekli entegrasyon derlemesini 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 katılımcının 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üğe kaydetmeyi iyileştiren katkıları memnuniyetle karşılıyoruz.
Katkı iş akışı
Kod katkıları (hata düzeltmeleri, yeni geliştirme, test iyileştirmesi) GitHub merkezli bir iş akışını takip eder. TensorFlow geliştirmesine katılmak için bir GitHub hesabı oluşturun. O zamanlar:
Ü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ın altında deponun bir kopyasını oluşturacaktır. (Bir havuzun nasıl çatallanacağı hakkında daha fazla ayrıntı için bu kılavuza bakın.)
Depoyu yerel sisteminize klonlayı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. En son gönderilen şubeniz hakkında bir çekme isteği açmak isteyip istemediğinizi soran bir mesaj olacaktır. Komutları 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'lerle ilgili GitHub kılavuzuna bakın.
Bakımcılar ve diğer katkıda bulunanlar PR'nizi gözden geçirecektir. 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ış uzaktan kumandasını ayarlayın. (Bunu her zaman 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 bir 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 bulunan yönergeleri okuyun.
- Davranış Kurallarını okuyun.
- Katılımcı Lisans Sözleşmesi'ni (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 .