C3: Bir OSS projesine 1 PR
C3 OSS PR
Bu derste neler öğreneceksin
- Açık bir DE aracı (dbt dlt Bruin Kestra) seçer
- Issue bulur + çözer
- PR açar + review alır
Ebeveyn Notu
Bu capstone gerçek bir GitHub hesabı ve gerçek bir PR içerir. Bir ebeveyn veya öğretmen yanında olsun:
- GitHub hesabı açılırken e-posta ve kullanıcı adı seçiminde yardım.
- Açık kaynak topluluklarının iletişim kuralları (nazik olmak, kod yazarken deneyimli birinin gözden geçirmesi).
- Kişisel bilgi paylaşımı (lokasyon, okul adı, doğum yılı) paylaşılmamalı.
Süreç eğiticidir; katıl, her adımı beraber konuş, “neden böyle yazdık?” diye sor.
Neden Açık Kaynağa PR?
Bir veri mühendisi olarak ilk iş başvurusunda ne diyeceksin? “Kendi başıma 3 proje yaptım” güzel. Ama “bir açık kaynak projeye kabul edilmiş PR’ım var” çok daha güçlü. Çünkü:
- Başkalarının koduna katkı yapabildiğini gösterir.
- Topluluk standartlarına uyum (PR template, lint, test) gösterir.
- GitHub profil timeline’ında görünür — işe alımcı bakar.
Adım 1: Proje Seç (küçük ve davetkar)
İlk PR için küçük, aktif, “good first issue” etiketli bir proje seç. Öneriler:
| Proje | Neden iyi? | Dil |
|---|---|---|
| dbt-utils | ”good first issue” çok, 100+ stars/ay | SQL + Python |
| dlt veri kaynakları | 50+ kaynak, helper PR’ları kolay | Python |
| Bruin | Yeni ama davetkar, “help wanted” var | Go + SQL |
| Kestra | Devasa ama plugin PR’ları küçük | Java + YAML |
Filtre: son 30 günde PR merge edilmiş olsun, “good first issue” etiketi olsun, iletişim dili İngilizce.
Adım 2: Issue Bul
- Repo’ya git, Issues sekmesi.
- Filtrele:
label:"good first issue"+is:open. - İlk 5 issue’yu oku. “Bunu ben yapabilirim” dediğini seç.
- Yorum yaz:
Hi! I'd like to work on this. I'm learning data engineering
and this is my first PR. I'll start with a draft PR soon.
Senior maintainer cevap verirse sabırlı ol, 1-3 gün gecikme normal.
Adım 3: Fork + Branch
# 1) GitHub'da "Fork" butonu ile kendi hesabına kopyala
git clone https://github.com/`<senin-kullanıcı>`/`<repo>`.git
cd `<repo>`
# 2) Yeni branch (ana branch'e dokunma)
git checkout -b fix/issue-1234-add-null-check
# 3) Değişikliği yap
# ... kod düzenle, test ekle ...
# 4) Test'leri çalıştır (repo'nun CONTRIBUTING.md'sinde yazar)
pytest tests/
# veya
make test
Küçük ipucu: değişikliğin mümkün olduğunca küçük olsun. Sadece sorunu çöz, başka şey “iyileştirme”.
Adım 4: PR Aç
PR başlığı: Fix #1234: Add null check to XYZ function (issue numarasıyla).
PR açıklaması:
## What
- Adds a `not_null` check to the `xyz` macro.
- Returns empty string instead of failing silently.
## Why
- Closes #1234
- Without this check, downstream models can break.
## How to test
- `dbt run --select xyz`
- `pytest tests/test_xyz.py`
## Checklist
- [x] Tests added
- [x] Docs updated
- [x] PR is small (< 200 lines diff)
Maintainer muhtemelen 1-3 tur review yapacak: “şu satırı şöyle değiştir, test ekle, doc güncelle”. Her turda yeni commit at. Asla tartışma; sadece “tamam, düzelttim” de.
Adım 5: Merge + Kutlama
PR merge olduktan sonra:
- GitHub profil timeline’ında görünür.
- Maintainer’a teşekkür yorumu yaz.
- Blog yazısı veya LinkedIn postu: “İlk açık kaynak PR’ım merge oldu — dbt-utils’a null check ekledim.”
- Capstone C1’in README’sine bu PR’ın linkini ekle.
Tipik Hatalar
| Hata | Çözüm |
|---|---|
| ”PR çok büyük” | Sadece sorunu çöz, başka şey ekleme |
| ”Test yazmayı unuttum” | Her PR’da en az 1 test |
| ”Lint fail” | Repo’nun .pre-commit-config.yaml’a uy |
| ”Commit mesajı kötü" | "Add null check” değil, “Fix #1234: add null check to xyz" |
| "Review’a cevap vermedim” | 24 saat içinde cevap, uzun sürerse “yarın dönüyorum” yaz |
Ne Öğrendik?
- Açık kaynak proje fork + PR döngüsü.
- Topluluk standartları: test, lint, doc üçlüsü.
- Sabırlı iletişim (maintainer’lar gönüllü, cevap gecikir).
- Profil timeline’ı = sürekli portfolyo.
Sıradaki
Tebrikler! Kursun 3 capstone’unu da tamamladın. Artık bir veri mühendisinin temel beceri setine sahipsin. Bir sonraki adım:
- Kendi projene 1-2 yeni özellik ekle.
- LinkedIn profiline 3 capstone’unu ekle (Featured bölümü).
- DataTalksClub canlı cohort’una (Ocak 2027) katıl.
İyi yolculuklar!