Forking Nedir? Yazılım Geliştirmede Dallandırma Tekniği Detaylı Açıklama
Forking, bir yazılım projesinin bağımsız bir kopyasını oluşturarak kendi kontrolünüz altında geliştirme yapma işlemidir. Genellikle açık kaynak projelerde orijinal kodu değiştirmeden yeni özellikler eklemek veya hataları düzeltmek için kullanılır. Forking, yazılım geliştirme sürecinde merkeziyetsiz işbirliğini mümkün kılar.
Forking, bir yazılım projesinin tamamen bağımsız bir kopyasını oluşturarak kendi kontrolünüz altında geliştirme yapma tekniğidir. Genellikle GitHub, GitLab ve Bitbucket gibi kod yönetim platformlarında karşınıza çıkan forking, açık kaynak yazılım dünyasının temel taşlarından biridir. Bu işlem sayesinde herhangi bir kişi, izin almadan bir projenin tarafından ayrılabilir, kendi versiyonunu oluşturabilir ve tamamen farklı yönde geliştirebilir.
Forking Nasıl Çalışır?
Forking işlemi teknik olarak oldukça basittir. Bir depo (repository) üzerinde "Fork" düğmesine tıkladığınızda, o deponun tüm dosyaları, commit geçmişi ve branch'leri sizin hesabınız altında yeni bir depo olarak kopyalanır. Bu, orijinal depodan tamamen bağımsız bir kopyasıdır.
Örneğin, GitHub'da bir projeyi forklarsanız:
- Projenin tam kopyası sizin hesabınıza geçer
- Orijinal proje üzerinde hiçbir etkiniz olmaz
- Kendi forkunuzda istediğiniz değişiklikleri yapabilirsiniz
- Dilerseniz "Pull Request" (Çekme İsteği) aracılığıyla değişikliklerinizi orijinal projeye sunabilirsiniz
- Orijinal proje güncellenirse, bu güncellemeleri kendi forkunuza almayı seçebilirsiniz
Forking ile Clone Arasındaki Fark
Forking ve clone (klonlama) sık sık karıştırılır, ancak aralarında önemli farklar vardır:
| Özellik | Forking | Clone |
|---|---|---|
| Tanım | Sunucuda yeni bir depo oluşturma | Depoyu yerel makinaya indirme |
| Yer | Uzak sunucuda (GitHub vb.) | Yerel bilgisayarda |
| Bağlantı | Orijinal depodan bağımsız | Orijinal depoyla bağlantılı |
| Amaç | Uzun süreli, bağımsız geliştirme | Yerel üzerinde çalışmak |
| Pull Request | Gönderebilirsiniz | Gönderemezsiniz (izniniz varsa push yapabilirsiniz) |
Forking Nerede ve Ne Zaman Kullanılır?
Forking, özellikle aşağıdaki durumlarda yaygın olarak kullanılır:
- Açık Kaynak Projelere Katkı: Bir açık kaynak projesine hata düzeltmesi veya yeni özellik eklemek istiyorsanız, önce forklarsınız.
- Yazılımı Kustomize Etme: Mevcut bir yazılımı alıp kendi ihtiyaçlarınıza göre uyarlamak.
- Proje Ayrışması: Bir projeden tamamen farklı bir yöne gitmek istediğinizde (bu duruma "fork" olayı da denir).
- Deney Yapma: Riskli değişiklikleri orijinal projeyi etkilemeden deneme fırsatı.
- Bakım Almayan Projeleri Devam Ettirme: Geliştirici tarafından artık bakımı yapılmayan bir projeyi fork edip yeni versiyon yayınlama.
Forking'in Avantajları
- Özgürlük: Orijinal projeyi etkilemeden istediğiniz gibi değişiklik yapabilirsiniz.
- İşbirliği: Çok sayıda geliştirici paralel olarak aynı proje üzerinde çalışabilir.
- Merkeziyetsizlik: Merkezi bir onay mekanizmasına gerek yoktur; herkes kendi versiyonunu yönetebilir.
- Geri Dönüş: Pull Request aracılığıyla en iyi değişiklikler orijinal projeye dönebilir.
- Yedekleme: Bir nevi proje yedeklemesi sağlar.
Forking'in Dezavantajları
- Parçalanma: Aynı projenin birden fazla versiyonu ortaya çıkabilir, bu da kullanıcıları karıştırabilir.
- Bakım Yükü: Forklanan projeler ayrı olarak bakım gerektir.
- Senkronizasyon Sorunu: Orijinal proje güncellenirse, fork versiyonu da güncel tutulmalıdır.
- Topluluk Bölünmesi: Geliştirici gücü ve topluluk, birden fazla fork arasında dağılabilir.
Forking Türleri ve Seviyeleri
Forking, amacına ve kapsamına göre farklı şekillerde yapılabilir:
- Katkı Amaçlı Fork: Orijinal projeye geri katkı vermek amacıyla yapılan forking. En yaygın türüdür.
- Kalıcı Fork: Orijinal projeden tamamen ayrılarak kendi bağımsız projesine dönüştürülen forking (ör. MariaDB'nin MySQL'den ayrılması).
- Deneysel Fork: Test ve deney amaçlı, kısa ömürlü forking.
- Ticari Fork: Açık kaynak yazılımı alıp ticari olarak uyarlamak (lisans terimleri uygunsa).
Forking'in Tarihi ve Önemi
Forking kavramı, Git version control sistemiyle yaygınlaşmıştır. 2000'lerin başında merkeziyetsiz version control sistemlerine ihtiyaç duyulmuş, Git bu ihtiyacı karşılamıştır. Forking, özellikle GitHub'ın 2008 yılında kurulmasından sonra, açık kaynak yazılım geliştirmede devrim yaratmıştır. Bugün, milyonlarca proje fork edilerek farklı versiyonlara dönüştürülmüştür.
"Forking, yazılım geliştirmede gerçek anlamda demokratikleşme sağlamıştır. Herkes, her hangi bir merkezi otoritenin izni olmadan bir projeyi alıp kendi yolunda ilerleyebilir." – Açık Kaynak Yazılım Felsefesi
Pratik Forking Örnekleri
Ünlü Forking Örnekleri:
- MariaDB: MySQL'in fork'lanarak tamamen bağımsız veritabanı sistemine dönüştürülmesi.
- LibreOffice: OpenOffice'in fork'lanarak çok daha başarılı versiyonu haline gelmesi.
- Chromium Tabanlı Tarayıcılar: Microsoft Edge, Opera ve Brave gibi birçok tarayıcı Chromium'u fork ederek yapılmıştır.
- Linux Dağıtımları: Debian, Ubuntu, Fedora gibi dağıtımlar aslında Linux kernel'inin forklandığı ve uyarlandığı örneklerdir.