Link to this sectionUltralytics Açık Kaynak Projelerine Katkıda Bulunma#
Hoş geldin! Ultralytics açık kaynak projelerimize katkıda bulunmayı düşündüğün için çok heyecanlıyız. Katılımın, yalnızca depolarımızın kalitesini artırmaya yardımcı olmakla kalmaz, aynı zamanda tüm bilgisayarlı görü topluluğuna da fayda sağlar. Bu kılavuz, başlamana yardımcı olacak net yönergeler ve en iyi uygulamaları sunar.
Watch: How to Contribute to Ultralytics Repository | Ultralytics Models, Datasets and Documentation 🚀
Link to this section⚔️ Davranış Kuralları#
Herkes için kapsayıcı ve davetkar bir ortam sağlamak adına tüm katılımcılar Code of Conduct belgemize uymalıdır. Saygı, nezaket ve profesyonellik topluluğumuzun temelindedir.
Link to this section🚀 Pull Request'ler Aracılığıyla Katkıda Bulunma#
Pull request (PR) şeklindeki katkılarınızı büyük bir memnuniyetle karşılıyoruz. İnceleme sürecini mümkün olduğunca sorunsuz hale getirmek için lütfen şu adımları izle:
- Depoyu forkla: İlgili Ultralytics deposunu (örneğin, ultralytics/ultralytics) GitHub hesabına fork'layarak başla.
- Bir branch oluştur: Fork'ladığın depoda, yaptığın değişiklikleri yansıtan net ve açıklayıcı bir isimle yeni bir branch oluştur (örneğin,
fix-issue-123,add-feature-xyz). - Değişikliklerini yap: İyileştirmelerini veya düzeltmelerini uygula. Kodunun projenin stil yönergelerine uyduğundan ve yeni hata veya uyarılar içermediğinden emin ol.
- Değişikliklerini test et: Göndermeden önce, beklendiği gibi çalıştıklarını ve regresyonlara yol açmadıklarını doğrulamak için değişikliklerini yerel olarak test et. Eğer yeni bir işlevsellik ekliyorsan testler ekle.
- Değişikliklerini commit'le: Değişikliklerini kısa ve açıklayıcı commit mesajlarıyla kaydet. Eğer değişikliklerin belirli bir sorunu ele alıyorsa, sorun numarasını dahil et (örneğin,
Fix #123: Corrected calculation error.). - Bir pull request oluştur: Kendi branch'inden orijinal Ultralytics deposunun
mainbranch'ine bir pull request gönder. Değişikliklerinin amacını ve kapsamını açıklayan net bir başlık ve ayrıntılı bir açıklama ekle.
Link to this section📝 CLA İmzalama#
Pull request isteğini birleştirebilmemiz için Contributor License Agreement (CLA) belgemizi imzalaman gerekir. Bu yasal sözleşme, katkılarının doğru şekilde lisanslanmasını sağlayarak projenin AGPL-3.0 license altında dağıtılmaya devam edilmesine olanak tanır.
Pull request'ini gönderdikten sonra, CLA botu imzalama sürecinde sana rehberlik edecektir. CLA'yı imzalamak için PR'ına sadece şu yorumu ekle:
I have read the CLA Document and I sign the CLA
Link to this section✍️ Google Stili Docstring'ler#
Yeni fonksiyonlar veya sınıflar eklerken, açık ve standartlaştırılmış dokümantasyon için Google-style docstrings ekle. Giriş ve çıkış types değerlerini her zaman parantez içinde (örneğin (bool), (np.ndarray)) belirt.
Bu örnek, standart Google stili docstring formatını gösterir. Maksimum okunabilirlik için fonksiyon açıklamasını, argümanları, dönüş değerini ve örnekleri nasıl net bir şekilde ayırdığına dikkat et.
def example_function(arg1, arg2=4):
"""Example function demonstrating Google-style docstrings.
Args:
arg1 (int): The first argument.
arg2 (int): The second argument.
Returns:
(bool): True if arguments are equal, False otherwise.
Examples:
>>> example_function(4, 4) # True
>>> example_function(1, 2) # False
"""
return arg1 == arg2Link to this section✅ GitHub Actions CI Testleri#
Tüm pull request istekleri, birleştirilmeden önce GitHub Actions Continuous Integration (CI) testlerini geçmelidir. Bu testler, değişikliklerinin projenin kalite standartlarını karşıladığından emin olmak için linting, birim testleri ve diğer kontrolleri içerir. CI çıktısını incele ve ortaya çıkan sorunları gider.
Link to this section✨ Kod Katkıları için En İyi Uygulamalar#
Ultralytics projelerine kod katkısında bulunurken şu en iyi uygulamaları aklında bulundur:
- Kod tekrarından kaçın: Mümkün olan her yerde mevcut kodu yeniden kullan ve gereksiz argümanları en aza indir.
- Daha küçük ve odaklanmış değişiklikler yap: Büyük ölçekli değişiklikler yerine hedefe yönelik modifikasyonlara odaklan.
- Mümkün olduğunda basitleştir: Kodu basitleştirme veya gereksiz parçaları kaldırma fırsatlarını ara.
- Uyumluluğu düşün: Değişiklik yapmadan önce, bunların Ultralytics kullanan mevcut kodu bozup bozmayacağını değerlendir.
- Tutarlı biçimlendirme kullan: Ruff Formatter gibi araçlar stil tutarlılığını korumana yardımcı olabilir.
- Uygun testleri ekle: Yeni özelliklerin beklendiği gibi çalıştığından emin olmak için tests ekle.
Link to this section👀 Pull Request İnceleme#
Pull request'leri incelemek, katkıda bulunmanın bir diğer değerli yoludur. PR'ları incelerken:
- Birim testlerini kontrol et: PR'ın yeni özellikler veya değişiklikler için testler içerdiğini doğrula.
- Dokümantasyon güncellemelerini gözden geçir: dokümantasyonun değişiklikleri yansıttığından emin ol.
- Performans etkisini değerlendir: Değişikliklerinin performansı nasıl etkileyebileceğini düşün.
- CI testlerini doğrula: Tüm Continuous Integration testlerinin geçtiğini onayla.
- Yapıcı geri bildirim sağla: Herhangi bir sorun veya endişe hakkında belirli, net geri bildirimler sun.
- Çabayı takdir et: Olumlu bir işbirliği atmosferini korumak için yazarın çalışmasını takdir et.
Link to this section🐞 Hata Bildirme#
Projelerimizin kalitesini ve güvenilirliğini artırmamıza yardımcı oldukları için hata bildirimlerine büyük değer veriyoruz. GitHub Issues aracılığıyla bir hata bildirirken:
- Mevcut sorunları kontrol et: Hatanın zaten bildirilip bildirilmediğini görmek için önce arama yap.
- Bir Minimum Reproducible Example sağla: Sorunu tutarlı bir şekilde yeniden oluşturan küçük ve kendi kendine yeten bir kod parçacığı oluştur. Bu, verimli hata ayıklama için çok önemlidir.
- Ortamı tanımla: İşletim sistemini, Python sürümünü, ilgili kütüphane sürümlerini (örneğin,
torch,ultralytics) ve donanımını (CPU/GPU) belirt. - Beklenen ve gerçek davranışları açıkla: Ne olmasını beklediğini ve gerçekte ne olduğunu net bir şekilde ifade et. Hata mesajlarını veya traceback'leri dahil et.
Link to this section📜 Lisans#
Ultralytics, depoları için GNU Affero General Public License v3.0 (AGPL-3.0) kullanır. Bu lisans, yazılım geliştirmede açıklığı, şeffaflığı ve işbirlikçi geliştirmeyi teşvik eder. Tüm kullanıcıların yazılımı kullanma, değiştirme ve paylaşma özgürlüğüne sahip olmasını sağlayarak güçlü bir işbirliği ve inovasyon topluluğunu destekler.
Tüm katkıda bulunanları, Ultralytics açık kaynak topluluğuna etkili ve etik bir şekilde katkıda bulunmak için AGPL-3.0 lisansının şartlarını öğrenmeye teşvik ediyoruz.
Link to this section🌍 YOLO Projeni AGPL-3.0 Altında Açık Kaynak Yapma#
Ultralytics YOLO modellerini veya kodunu projende mi kullanıyorsun? AGPL-3.0 lisansı, tüm türev çalışmalarının da AGPL-3.0 altında açık kaynaklı olmasını gerektirir. Bu, açık kaynak temelleri üzerine inşa edilen modifikasyonların ve daha büyük projelerin açık kalmasını sağlar.
Link to this sectionAGPL-3.0 Uyumluluğu Neden Önemlidir#
- Yazılımı Açık Tutar: İyileştirmelerin ve türev çalışmaların topluluğa fayda sağlamasını sağlar.
- Yasal Zorunluluk: AGPL-3.0 lisanslı kod kullanmak, projenin bu şartlara bağlı kalmasını gerektirir.
- İşbirliğini Geliştirir: Paylaşımı ve şeffaflığı teşvik eder.
Projeni açık kaynak yapmak istemiyorsan, bir Kurumsal Lisans almayı düşün.
Link to this sectionAGPL-3.0 ile Nasıl Uyumlu Olunur#
Uyumlu olmak, projenin tam karşılık gelen kaynak kodunu AGPL-3.0 lisansı altında herkese açık hale getirmek demektir.
-
Başlangıç Noktanı Seç:
- Ultralytics YOLO'yu forkla: Eğer üzerine yakından inşa ediyorsan, doğrudan Ultralytics YOLO deposunu forkla.
- Ultralytics Şablonunu kullan: YOLO entegre edilmiş temiz, modüler bir kurulum için Ultralytics şablon deposu ile başla.
-
Projeni Lisansla:
- Add a
LICENSEfile containing the full text of the AGPL-3.0 license. - Her kaynak dosyasının en üstüne lisansı belirten bir not ekle.
- Add a
-
Kaynak Kodunu Yayınla:
- Tüm projenin kaynak kodunu herkese açık hale getir (örneğin, GitHub üzerinde). Buna şunlar dahildir:
- YOLO modelini veya kodunu içeren daha büyük uygulama veya sistem.
- Orijinal Ultralytics YOLO kodunda yapılan tüm değişiklikler.
- Eğitim, doğrulama ve çıkarım için betikler.
- Değiştirilmişse veya ince ayar yapılmışsa model ağırlıkları.
- Configuration files, ortam kurulumları (
requirements.txt,Dockerfiles). - Bir web uygulamasının parçasıysa arka uç ve ön uç kodu.
- Değiştirdiğin herhangi bir üçüncü taraf kütüphanesi.
- Çalıştırmak/yeniden eğitmek için gerekliyse ve yeniden dağıtılabilirse eğitim verileri.
- Tüm projenin kaynak kodunu herkese açık hale getir (örneğin, GitHub üzerinde). Buna şunlar dahildir:
-
Net Bir Şekilde Belgele:
- Projenin AGPL-3.0 altında lisanslandığını belirtmek için
README.mddosyanı güncelle. - Projeyi kaynak kodundan kurmak, oluşturmak ve çalıştırmakla ilgili net talimatlar ekle.
- Ultralytics YOLO'yu uygun şekilde belirt ve orijinal depoya bağlantı ver. Örnek:
This project utilizes code from [Ultralytics YOLO](https://github.com/ultralytics/ultralytics), licensed under AGPL-3.0.
- Projenin AGPL-3.0 altında lisanslandığını belirtmek için
Link to this sectionÖrnek Depo Yapısı#
Pratik bir örnek yapı için Ultralytics Şablon Deposuna başvur:
my-yolo-project/
│
├── LICENSE # Full AGPL-3.0 license text
├── README.md # Project description, setup, usage, license info & attribution
├── pyproject.toml # Dependencies (or requirements.txt)
├── scripts/ # Training/inference scripts
│ └── train.py
├── src/ # Your project's source code
│ ├── __init__.py
│ ├── data_loader.py
│ └── model_wrapper.py # Code interacting with YOLO
├── tests/ # Unit/integration tests
├── configs/ # YAML/JSON config files
├── docker/ # Dockerfiles, if used
│ └── Dockerfile
└── .github/ # GitHub specific files (e.g., workflows for CI)
└── workflows/
└── ci.ymlBu yönergeleri izleyerek, Ultralytics YOLO gibi güçlü araçları mümkün kılan açık kaynak ekosistemini destekleyerek AGPL-3.0 uyumluluğunu sağlarsın.
Link to this sectionSonuç#
Ultralytics açık kaynak YOLO projelerine katkıda bulunmaya gösterdiğin ilgi için teşekkürler. Katılımın, yazılımımızın geleceğini şekillendirmek ve canlı bir inovasyon ve işbirliği topluluğu oluşturmak için çok önemlidir. İster kodu geliştiriyor, ister hataları bildiriyor veya yeni özellikler öneriyor ol, katkıların çok değerlidir.
Fikirlerinin hayata geçtiğini görmekten heyecan duyuyoruz ve nesne algılama teknolojisini ilerletme konusundaki kararlılığını takdir ediyoruz. Bu heyecan verici açık kaynak yolculuğunda büyümeye ve yenilik yapmaya birlikte devam edelim.
Link to this sectionSSS#
Link to this sectionNeden Ultralytics YOLO açık kaynak depolarına katkıda bulunmalıyım?#
Ultralytics YOLO açık kaynak depolarına katkıda bulunmak yazılımı geliştirir, tüm topluluk için daha sağlam ve özellik açısından zengin hale getirir. Katkılar kod iyileştirmelerini, hata düzeltmelerini, belge geliştirmelerini ve yeni özellik uygulamalarını içerebilir. Ayrıca katkıda bulunmak, diğer yetenekli geliştiriciler ve alanındaki uzmanlarla işbirliği yapmanı sağlayarak kendi becerilerini ve itibarını artırır. Nasıl başlayacağına dair ayrıntılar için Pull Request'ler Aracılığıyla Katkıda Bulunma bölümüne başvur.
Link to this sectionUltralytics YOLO için Katkıda Bulunan Lisans Sözleşmesini (CLA) nasıl imzalarım?#
Katkıda Bulunan Lisans Sözleşmesini (CLA) imzalamak için, pull request'ini gönderdikten sonra CLA botu tarafından sağlanan talimatları izle. Bu süreç, katkılarının AGPL-3.0 lisansı altında uygun şekilde lisanslanmasını sağlar ve açık kaynak projesinin yasal bütünlüğünü korur. Pull request'ine şu yorumu ekle:
I have read the CLA Document and I sign the CLA
Daha fazla bilgi için CLA İmzalama bölümüne bak.
Link to this sectionGoogle stili docstring'ler nelerdir ve Ultralytics YOLO katkıları için neden gereklidir?#
Google stili docstring'ler, fonksiyonlar ve sınıflar için net, kısa belgeler sağlar; kod okunabilirliğini ve bakımını geliştirir. Bu docstring'ler, fonksiyonun amacını, argümanlarını ve dönüş değerlerini belirli biçimlendirme kurallarıyla ana hatlarıyla belirtir. Ultralytics YOLO'ya katkıda bulunurken Google stili docstring'leri takip etmek, eklemelerinin iyi belgelenmiş ve kolayca anlaşılabilir olmasını sağlar. Örnekler ve yönergeler için Google Stili Docstring'ler bölümünü ziyaret et.
Link to this sectionDeğişikliklerimin GitHub Actions CI testlerinden geçtiğinden nasıl emin olabilirim?#
Bir pull request birleştirilmeden önce tüm GitHub Actions Continuous Integration (CI) testlerini geçmesi gerekir. Bu testler; linting, birim testleri ve kodun projenin kalite standartlarını karşıladığından emin olmak için yapılan diğer kontrolleri içerir. CI çıktısını incele ve tüm sorunları gider. CI süreci ve sorun giderme ipuçları hakkında ayrıntılı bilgi için GitHub Actions CI Tests bölümüne bak.
Link to this sectionUltralytics YOLO depolarındaki bir hatayı nasıl bildirebilirim?#
Bir hata bildirmek için hata raporunla birlikte net ve kısa bir Minimum Reproducible Example sun. Bu, geliştiricilerin sorunu hızlıca tanımlamasına ve düzeltmesine yardımcı olur. Örneğinin sorunu tekrarlamak için minimal ancak yeterli olduğundan emin ol. Hata bildirme konusunda daha detaylı adımlar için Reporting Bugs bölümüne bak.
Link to this sectionKendi projemde Ultralytics YOLO kullanırsam AGPL-3.0 lisansı ne anlama gelir?#
Projende Ultralytics YOLO kodu veya modelleri (AGPL-3.0 lisanslı) kullanıyorsan, AGPL-3.0 lisansı tüm projenin (türev çalışma) de AGPL-3.0 ile lisanslanmasını ve tüm kaynak kodunun herkese açık hale getirilmesini şart koşar. Bu, yazılımın açık kaynak doğasının türevlerinde de korunmasını sağlar. Bu gereksinimleri karşılayamıyorsan bir Enterprise License almalısın. Ayrıntılar için Open-Sourcing Your Project bölümüne bak.
