İster bir kayıp fonksiyonu ekliyor olun, ister test kapsamını iyileştiriyor olun, ister büyük bir tasarım değişikliği için bir RFC yazıyor olun, katkıda bulunanlar kılavuzunun bu bölümü başlamanıza yardımcı olacaktır. TensorFlow'u geliştirmeye yönelik çalışmalarınız ve ilginiz için teşekkür ederiz.
Başlamadan önce
TensorFlow projesine kaynak kod katkısında bulunmadan önce, lütfen projenin GitHub deposundaki CONTRIBUTING.md dosyasını inceleyin. Örneğin, TensorFlow ana deposundaki CONTRIBUTING.md dosyasına bakın. Tüm kod katkıda bulunanların Katkıda Bulunan Lisans Sözleşmesi'ni (CLA) imzalaması gerekmektedir.
Tekrarlanan işlerden kaçınmak için, lütfen önemli bir özellik üzerinde çalışmaya başlamadan önce mevcut veya önerilen RFC'leri inceleyin ve TensorFlow forumlarında ( developers@tensorflow.org ) geliştiricilerle iletişime geçin. Yeni işlevsellik ekleme konusunda biraz seçiciyiz ve projeye katkıda bulunmanın ve yardımcı olmanın en iyi yolu bilinen sorunlar üzerinde çalışmaktır.
Yeni yazarlar için sorunlar
Yeni katkıda bulunanlar, TensorFlow kod tabanına ilk katkılarını ararken aşağıdaki etiketlere bakmalıdır. Yeni katkıda bulunanların öncelikle "iyi bir ilk sorun" ve "katkıya açık" projelerle ilgilenmelerini şiddetle tavsiye ederiz; 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 sorunu çözmek veya yeni bir özellik geliştirmek için bir ekip kurmakla ilgileniyorsanız, lütfen developers@ grubuna 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.
Projeye pull request olarak gönderilen kodları incelemek, TensorFlow geliştirmenin önemli bir bileşenidir. Özellikle kullanma olasılığınız yüksek olan özellikler söz konusu olduğunda, diğer geliştiriciler tarafından gönderilen kodları incelemeye başlamanızı teşvik ediyoruz.
Kod inceleme sürecinde aklınızda bulundurmanız gereken bazı sorular şunlardır:
- TensorFlow'da bunu istiyor muyuz? Kullanılma olasılığı yüksek mi? Bir TensorFlow kullanıcısı olarak bu değişikliği beğeniyor ve kullanmayı düşünüyor musunuz? Bu değişiklik TensorFlow'un kapsamı dahilinde mi? Yeni bir özelliğin sürdürülmesinin maliyeti, sağlayacağı faydalara değecek mi?
- Kod, TensorFlow API'siyle 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 fonksiyonlar, sınıflar, parametreler, dönüş tipleri ve saklanan öznitelikler TensorFlow kurallarına göre adlandırılmış ve açıkça belgelenmiş mi? Yeni işlevsellik TensorFlow dokümanında açıklanmış ve mümkün olduğunca örneklerle gösterilmiş mi? Dokümantasyon düzgün bir şekilde görüntüleniyor mu?
Kod insan tarafından okunabilir mi? Gereksiz tekrarlardan arındırılmış mı? Değişken adları açıklık veya tutarlılık için iyileştirilmeli mi? Yorumlar eklenmeli mi? Yararsız veya gereksiz olan yorumlar kaldırılmalı mı?
Kod verimli mi? Daha verimli çalışacak şekilde kolayca yeniden yazılabilir mi?
Bu kod, TensorFlow'un önceki sürümleriyle geriye dönük 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 testleri, TensorFlow geliştirme sürecinin temel taşlarından biridir. Bu amaçla Docker imajları kullanıyoruz. Test fonksiyonları uygun şekilde adlandırılmıştır ve algoritmaların geçerliliğini ve kodun farklı seçeneklerini kontrol etmekten sorumludur.
Tüm yeni özellikler ve hata düzeltmeleri yeterli test kapsamı içermelidir . Ayrıca yeni test senaryoları veya mevcut testlerdeki iyileştirmeler için katkılarınızı da memnuniyetle karşılıyoruz. Mevcut testlerimizin eksik olduğunu keşfederseniz (şu anda bir hataya neden olmasa bile), lütfen bir sorun bildirin ve mümkünse bir çekme isteği gönderin.
Her TensorFlow projesindeki test prosedürlerinin ayrıntıları için, GitHub'daki proje deposunda bulunan README.md ve CONTRIBUTING.md dosyalarına bakın.
Yeterli test yapılmasında özellikle dikkat edilmesi gereken hususlar:
- Her genel fonksiyon ve sınıf test ediliyor mu?
- Makul sayıda parametre , bunların değerleri, değer türleri ve kombinasyonları test edildi mi?
- Testler, kodun doğru olduğunu ve dokümantasyonda belirtilen işlevi yerine getirdiğini doğruluyor mu?
- Değişiklik bir hata düzeltmesi ise, geriye dönük uyumluluk testi de dahil ediliyor mu?
- Sürekli entegrasyon derlemesi testlerden geçiyor mu?
- Testler kodun her satırını kapsıyor mu? Değilse, istisnalar makul ve açık bir şekilde belirtilmiş mi?
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üklerini iyileştirin
Hata mesajlarını ve kayıt tutma işlemlerini iyileştiren katkıları memnuniyetle karşılıyoruz.
Katkı iş akışı
Kod katkıları—hata düzeltmeleri, yeni geliştirmeler, test iyileştirmeleri—tümü GitHub merkezli bir iş akışını takip eder. TensorFlow geliştirmesine katılmak için bir GitHub hesabı oluşturun. Ardından:
Üzerinde çalışmayı planladığınız depoyu çatallayın (fork edin). Proje deposu sayfasına gidin ve Çatalla (Fork) düğmesini kullanın. Bu, kullanıcı adınız altında deponun bir kopyasını oluşturacaktır. (Bir depoyu nasıl çatallayacağınız hakkında daha fazla bilgi için bu kılavuza bakın.)
Depoyu yerel sisteminize klonlayın.
$ git clone git@github.com:your-user-name/project-name.gitÇalışmalarınızı saklamak için yeni bir dal oluşturun.
$ git checkout -b new-branch-nameYeni kodunuz üzerinde çalışın. Testler 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 gönderin.
$ git push origin branch-nameBir Çekme İsteği (PR) açın. GitHub'daki orijinal proje deposuna gidin. Yakın zamanda gönderdiğiniz dal hakkında, bir çekme isteği açmak isteyip istemediğinizi soran bir mesaj göreceksiniz. Talimatları izleyin, depolar arasında karşılaştırma yapın ve PR'ı gönderin. Bu, katkıda bulunanlara 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 GitHub'ın PR'lar hakkındaki kılavuzuna bakın.)
Proje yöneticileri ve diğer katkıda bulunanlar gönderdiğiniz çekme isteğini inceleyecekler . Lütfen sohbete katılın ve istenen değişiklikleri yapmaya çalışın. Çekme isteği 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ış uzak bağlantısını ayarlayın. (Bunu her proje için yalnızca bir kez yapmanız yeterlidir, her seferinde yapmanıza gerek yoktur.)
$ git remote add upstream git@github.com:tensorflow/project-repo-nameYerel ana dala geçin.
$ git checkout masterYukarı akıştan değişiklikleri aşağı çekin.
$ git pull upstream masterDeğişiklikleri GitHub hesabınıza gönderin. (İsteğe bağlı, ancak iyi bir uygulama.)
$ git push origin masterYeni bir işe başlıyorsanız yeni bir dal 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.
- Katkıda Bulunan Lisans Sözleşmesini (CLA) imzaladığınızdan emin olun.
- Yaptığınız değişikliklerin yönergelerle uyumlu olup olmadığını kontrol edin.
- Yaptığınız değişikliklerin TensorFlow kodlama stiliyle uyumlu olup olmadığını kontrol edin.
- Birim testlerini çalıştırın .