Team Foundation Server vs Subversion

Başlığı bu şekilde attım ama sadece dikkatinizi çekmek için. Subtext developer e-posta listemizde bir kaç gündür süren bir tartışmayı aktarmak ve konu hakkında sizleri bilgilendirmek istiyorum.

Nedir Team Foundation Server? TFS kurumsal projeler için tasarlanmış yazılım sürecinde oluşabilecek her türlü (sadece kod değil, döküman, hata kayıtları, istekler, görevler vs. gibi) içeriği sürüm kontrolünde tutacak sistemin adıdır. Arka planda MS SQL Server üzerinde verileri tutar ve TFS Client (indir) programı ile (VS2005 veya Expres sürümleri ile de kullanılabilir) erişilir. Kurumsal terimini kullandım çünkü tamamı ile firma içinde geliştirilen projeler düşünülerek üretilmiş bir üründür. Her ne kadar CodePlex gibi siteler mevcutsa da OSS felsefesine uymayan yönleri vardır. TFS firma içinde kullanıldığında gerçek gücünü gösterir ve proje ekibine her türlü içeriği paylaşabilecekleri bir ortam sunar. Hem yazılım üretmeyi kolaylaştırır hemde pek çok külfetli işi otomatize ederek kaliteyi arttırır.

Subversion ise açık kaynak yazılım üretenlerin kullandığı Concurrent Versioning System denilen CVS temel alınarak üretilmiş bir sürüm yönetimi sistemidir. CVS’in aksayan yada beğenilmeyen yönlerinin değiştirilmesi ve pek çok gerekli özelliğin eklenmesi ile bugünkü halini almıştır. Subversion her türlü içeriği (belge, kod, resim vb. gibi) diğer proje elemanları ile paylaşmanızı ve ortak çalışabilmenizi sağlar. Fakat TFS gibi bir ortam istiyorsak Subversion’a ek olarak bir kaç yazılım daha kurmamız gerekir (wiki, hata ve istek yönetimi, kodun online görülebilmesini sağlayacak araçlar vs.). Bu da Subversion tabanlı olarak kurulan bir sürüm yönetimi sisteminin bakımını ve kurulumunu zorlaştırabilir. Trac gibi komple bir paketide kurabilirsiniz ve gerçekten firma içinde işlerinizi kolaylaştırabilir. Birde Trac gibi C# ile yazılmış SharpForge var. Benim yazdığım bir kaç yazıya da bakınız:

  1. Subversion ile Depo Oluşturma
  2. Cruise Control Kurulum ve Entegrasyon
  3. Subversion’dan RSS

Şimdi görüyorsunuz ki elma ile armutu karşılaştırmaya çalışıyoruz. TFS bir firmada oluşabilecek her türlü senaryoyu kapsıyor. Shelving gibi yeni bir özelliği de var. Shelving nedir? Örneğin uygulamaya yeni bir özellik ekledim fakat bu işi bırakıp elimdeki hataları düzeltmem gerekiyor. Yazdığım kodu da kaybetmek istemiyorum. Bu durumda kodu rafa kaldırıyorum (shelving) ve ana kodu tekrar indirip hatalarımı düzeltmeye devam ediyorum. Diğer yazılım uzmanları benim rafa kaldırdığım kodu indirip kendi lokal sürümlerine entegre edebilir ve kod teftişi veya test yapmaya başlayabilir. Shelving ana kod damarını etkilemeden başka görevler veya aklınıza gelen geliştirmeler için ideal bir yöntem. Subversion’da da branching var tabii ki. Tam olarak karşılaştırmadım ama TFS Shelving biraz daha esnek bir yapıya sahip.

TFS yönetimi altındaki bir projede çalışırken sürekli online olmanız gerekiyor yani VS2005 TFS’e hep bir bağlantı istiyor. Buda kopuk çalışmayı engelliyor.

CodePlex’de bir projeye katkıda bulunmak isterseniz o projenin bir üyesi olmanız ve sürüm yönetimine “yazma” erişimi almanız gerekiyor. Yani Subversion’da olduğu gibi anonymous indirdiğiniz bir projeye yama göndererek katkıda bulunmak zor. Codeplex’den anonymous olarak kaynak kodunu indirebilirsiniz fakat eklentilerinizi proje yöneticisine gönderdiğinizde bu eklentilerin manual olarak koda eklenmesi gerekiyor ve zahmetli bir iş olduğunu söylememe gerek yok herhalde.

Codeplex tabii ki MS araçlarını kullanarak geliştirme yapan yazılım uzmanlarına zaten tanıdık oldukları araçlar ile sürüm kontrolü hizmeti vermek için oluşturulmuştur. Fakat Codeplex üzerinde herhangi bir dille yazılmış ve herhangi bir işletim sistemine yönelik uygulamayı tutabilirsiniz, yani bir kısıtlama yok. Codeplex’in Subversion desteği vermesi için bir workitem da açılmış. Eğer bu desteği görmek istiyorsanız oyunuzu kullanın.

TFS altındaki bir projeye offline iken dosya eklemek de bir dert. Ben genelde CodePlex üzerindeki projemi akşam indiriyorum ve iş yerinde kimse görmeden takılıyorum. Ama eğer iş yerinde offline iken dosya eklersem akşam eve geldiğimde bu dosyayı TFS’e göndermek zorlaşıyor. Önce projeden çıkartıp tekrar eklemek gerekiyor ve ayrıca dosyanın bir yedeğini almak gerekiyor.

Eskiden VSS kullanan yazılım uzmanları şimdi TFS’den kod indirirken “exclusive lock” yapıyorlar ve buda aynı anda iki yazılım uzmanının aynı dosya üzerinde çalışmasını engelliyor. Halbu ki TFS “değiştir, birleştir (edit, merge)” mantığını destekliyor. Ama tabii alışkanlıkları değiştirmek zor.

Öte yandan TFS ile Subversion arasındaki fiyat farkı karar verme aşamasında önemli bir etken gibi görünebilir fakat Açık Kaynak ta olsa ücretli de olsa bu ürünlerin bakımı ve ayakta tutulması için harcanacak para aynıdır.

TFS’in raporlama yetenekleri de çok güzel bir artı puan kazandırıyor. Subversion ile bu özelliği isterseniz ek yazılımlar kurmak gerekiyor.

TFS kurumsal bir firmada BT departmanının yaptığı her işi kontrol altına almak ve bütçelendirmelerde dahi yardımınıza koşacak bir araç. Eğer 10 kişiden fazla yazılım uzmanı varsa ve en az iki proje üzerinde çalışıyorsanız TFS’i kesinlikle tavsiye ederim. Öğrenme eğrisi olarak biraz zaman istiyor tabii ama bir kere özelliklerine alıştıktan sonra artık geriye dönüş çok zor olacaktır.

Seçim yapmak zorunda kalırsanız ve finansal olarak sorununuz yoksa TFS için yapılacak yatırım kendini hızlı bir biçimde ödeyecektir. Bir de unutmayın ki bu ürünün daha ik sürümü var karşımızda ve gelecek sürümlerinde eminim ki burada yazdığım bir kaç dezavantaj temizlenecektir. Eminim çünkü MS’in müşterilerini nasıl dinlediğini ve ürünlerinde ki geliştirmeleri bu doğrultuda yaptığına şahit oldum. Tabii siz blogunuzda bu sorunları dile getirmezseniz hiç kimse sesinizi duymaz.

Posted in Bilişim, English.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.