Tartışma çok ayrı yerlere gitmeye başladı. Aslında şöyle bir baktığımda iki tane
farlı noktalar üzerinde tartıştığımız gördüm. Bunlar

1. Gitorious'un neden olması/olmaması gerektiği yönününde.
2. Gitorious/Github/Indefero gibi araçların olması/olmaması yönünde.

Bunları cevaplamaya çalışacağım. Biraz uzun oldu gibi, uyarayım şimdiden.

***************************************************************
* TL;DR                                                       *
*                                                             *
* 1. Gitorious kimse kullanmıyor, bakımı zor, kullanmayalım   *
* 2. Aklın yolu birdir, gitolite/gitweb ikilisi en mantıklısı *
***************************************************************


İlkine gelirsek. Gitorious olmasın diyorum çünkü bir çok büyük proje bile
kullanmayı bırakıp farklı yöntemlere geçmesidir. Şu örnekleri vermiştin sen:

>İyi de Qt, FreeBSD, OpenSuse, bunlar da açık kaynak kodlu projeler ve
>Gitorious kullanıyorlar, genelleme yaparak tüm projelerin KDE'nin
>kaygılarını taşıdığını söyleyemeyiz.

Bir iki proje bunlar. Haklısn QT gibi bir proje'de burada var. Ama bu yine de
Gitorious'un başarılı bir sürüm yönetim sistemi olduğunu göstermez.
OpenSuse'de sadece kendi bir kaç projesini (bildiğim kadarıyla OBS) burada
kullanıyordu). Onlar da, tıpkı KDE'dekiler gibi Gitorious'dan vazgeçtiler:

http://lists.opensuse.org/opensuse-buildservice/2011-10/msg00105.html

Bunun dışında paketleri için kendi OBS sistemlerini kullandıkları için bizden
bir adım öndeler (bu ayrı bir konu gerçi).

Burada genelleme yapmıyorum, aksine şu anki açık-kaynak camiasındaki durumu
anlatmaya çalışıyorum. Gitorious'u adam akıllı kullanan olmadığı gibi, bir sürü
şikayet de bulabilirsin (kullanmamak için). Örneğin yine aynı kaygıları duyan
başka biri şöyle bir şey söylemiş [1]:

    "Gitorious on the other hand is much closer to github but it is, als you
    pointed out, a real pain in the butt to install and also has some really
    nasty assumptions about URLs and SSL in the code that make it even more
    painful than what it is anyways.  Combine that with no real release
    schedule, no integration what so ever into any eventually existing
    authentication infrastructure and very lacking documentation and you'll
    notice that Gitorious just isn't at a point where it's worth investing time
    into just yet."

Başka bir proje'de yine Gitorious sorunları yüzünden Github'a geçmeye karar
vermişler:

    http://lists.pyside.org/pipermail/pyside/2011-June/002575.htmlA

Yukarıdaki iki yorum dışında Google'de Gitorious hakkında yine yüzlerce hayal
kırıklığı görebilirsin. Bunlar bir değil, iki değil. Hemen hemen herkes mutsuz.
Peki neden insanlar Gitorious kullanmıyor ?

Bunun bir çok sebebi olmakla birlikte, KDE raporunda çoğu dile getirilmiş.
KDE raporunda önce çıkan dejavantajlar da şunlar:

1. Kendine has git-daemon'u kullanması. Bunun dejavantajı bizim kendi git
paketimiz değil de, başka bir projenin dahili git kaynaklarını kullanmamızdır.
Bu mantık Linux altında da kullandığımı "shared libraries" mantığına aykırı bir
mantık. Linux'u güçlü kıllan tasarımlardan biri de bu. Yarın birgün güvenlik
açığı çıktığında ne yapacağız mesela ? 

    "The software uses a custom git-daemon, which it uses to control push 
access.
    This means that future features of Git (such as improved compression) are
    unavailable"

2. Gitorious kocaman monolitic bir yapı. Tıpkı Redmine gibi ruby ile yazılmış ve
ciddi performans sorunları yaşatıyor. Redmine sunucumuz da çoğu zaman kendi
kendine çöküyor ve her seferinde elle başlatmamız gerekiyordu. Aramızda Ruby
bilen hemen hemen hiç yok. Debug yapılmadığı gibi işleri ve özellikle bakımı
zorlaştırıyor. Gitorious çöktüğü an, tüm "git-akışı" çöküyor. Ne commit
edebileceğiz bir şey, ne de arayüzü kullanabileceğiz. Her şey bildiğin donuyor.
Çünkü alt-seviye işlemlerini üst-seviyei işlemleri ile ayıran bir yapı yok.

    "The software is a big monolitic Ruby on Rails application. Although this 
can
    also be seen as an advantage, it has its drawbacks. If the application goes
    down, all push access is cut off, since the custom git-daemon requires
    interfacing with the running Ruby code to determine if a particular person
    should have push rights. No commits can be made unless the app is up and
    running"

3. Olası sorunları çözmeye kalkıştık. Zaten açık kaynak bir proje. O yüzden
tıpkı diğer açık-kaynak prjelerinde olduğu gibi Mail listelerine bununla ilgili
mail attık. Cevap gelecek mi ? Hayır, hatta gelse bile aylar sonra. Sorun şu ki,
Gitorious'dakiler para karşılığı support veren bir ekip. Haliyle parayı veren
düdüğü çalar mantığı ile öncelik her daim kurumsal müşterilerinde. 

    "The mailing list is semi-responsive, the IRC room is not responsive at 
all, and
    merge requests to the software lay dormant for many months (in some cases, 
even
    more than a year)."

4. Gitolite'deki gibi ciddi bir yönetim katmanı bulunmamakta. Kimlerin nereye
yazabileceği, nasıl depo açabileceği, hangi haklara sahip olacağı,vs... Bunlar
bizim gibi projeler için elzem bir şey.

    "It also lacks any way to have repositories only be readable by particular
    people, meaning that any private repositories (for instance, the sysadmin
    repository) would need to be hosted on a different system anyways"

5. Yukarıda değindiğim gibi kocaman monotolik bir yapı. Haliyle kendine has bir
veritabanı da kullanıyor. Herhangi bir değişiklik yapmaya karar verdik. Yapmamız
gereken nedir biliyor musun, gidip veritabanında SQL sorgusu yapmak.
Yineliyorum, bakımı ciddi şekilde zorlaştırıyor bu da.

    "Canges such as renaming groups, deleting users or changing repository 
owners
    requires the use of obscure CLI commands or SQL commands."

6. Alt projeler mümkün değil. Muhtemelen burada kastetikleri şey, "git
submodule" ile normal bir proje altında başka git projelerini barındırmaktır.
Konsol üzerinden bu mümkün olsa bile, arayüze yansıtılmadığından, yazımın en
üstünde HN'deki elemanını dediği gibi olası cansıkıcı sorunlara yol açacaktır

    "Gitorious does not support subprojects or any other form of organisation in
    sections. We can not create a project 'kdepim' and put 'kmail', 'kalarm', 
etc.
    in as seperate subprojects."


>Bunu ilgili projeden sorumlu bir takım oluşturarak çözebiliyorsun,
>codebase'e sadece bu takımdaki geliştiriciler müdahele edebiliyor,
>takım dışındakiler isterlerse klonlayıp istedikleri gibi
>takılabilirler, böyle kısmi izin verme kaygısına gerek yok. Bu tip
>şeyleri çözmek mümkün sonuçta.

4'üncü maddedeki gibi Gitolite kadar esnek değil.


>Gitorious, Shortcut AS adlı bir şirket tarafından profesyonel olarak
>geliştirilen AGPL lisanslı bir proje. Açıkçası böyleyken ve
>gitorious.org orada up iken, neyi düzgün geliştiremediklerini
>anlayamadım.

3'üncü madde

>
>Monolitik yapı kötü bir tasarım şekli değil ki, dökümanda da geçiyor.
>Kötü olduğunu düşünüyorsak Linux çekirdeğini falan da atalım.
>Eleştirdiği nokta her fani sunucu hizmetinin başına gelecek failsafe
>senaryosu. Scalable olmayabilir ama sonuçta KDE'deki gibi ciddi bir
>workload olmayacak biz de, olduğunda da çökecek diye birşey yok.
>Ayrıca gitweb'in high-availability desteği var mu ona da bakmak
>lazım.

2'inci madde.

>
>Gömülü git eksisi, ama bu "çoğu git özellikleri"nden
>faydalanamayacağımız anlamına niye gelsin? Dökümanda da belirtmiş,
>sıkıştırmayı etkin yapamayız belki yani bu minvalde önemsiz
>farklılıklar olabilir.

1'inci madde.

Yukarıda bunlara değindim. Ayrıca bir önceki cevabında neden kimse
kullanmadığını, neden kötü olduğuna dair her türlü soruyu cevapladığımı
düşünüyorum.

Şimdi gelelim yazımın başımdaki ikinci soruna. Yani:

    Gitorious/Github/Indefero gibi araçların olması/olmaması yönünde

Bu noktada teknik bilgilerden ziyade kişisel tecrüblerim/bilgilerim ve
yaşadığımız kültürden yola çıkacağım. O yüzden yazacaklarım "bu kesin doğrudur"
anlamını taşımıyor. Ama ben doğru olduğuna inanıyorum.

İlk etaptda geliştirici adayların ve geliştiricilerin bir araçın saf halini
kullanması gerektiğine inanıyorum. Arada hiç bir katman olmadan, hiç bir sos
olmadan, hiç bir göz boyama olmadan. Çünkü bir araçı ya da bir dili öğrenmenin
yegane yolu onu saf hali yani makyajsız hali ile kullanmaktır. Tıpkı manuel
vitesli bir araba gibi. Otomatik vitesli bir araba her ne kadar işleri
kolayştırsa da, başta manuel kullanmak hem arabanının sürüç kültürünü
öğretecektir hem de diğer otomatik olmayan araçların hepsini kullanmanı
sağlayacaktır. Nitekim hala dünya'da tüm devletler sürücü testini manuel vitesle
verirler.

Burada mantık bizde de aynı olması gerektiğini düşünüyorum. İnsanlara işin
temelini öğretemedikten sonra, hiç öğrenmesin daha iyi diyorum. Gitorious
kullandırtmak işte başta bu alışkanlığı yok edecek ve insanları Gitorious
kullanmalarını teşvik edecektir. Otomatik bir araba varken kimse gidip de Manuel
kullanmaz. Ama yarın bir gün engebeli arazilerde iş yaptığımız vakit adam gibi
git kullanmasını da beklememiz gerekiyor. Ama biz ona ilk başta kolayı
verdiğimiz için diğer işi yapamayacak hale gelecektir. Ben o yüzden bunun kötü
olduğunu düşünüyorum.

Bir diğer konu ise Ahmet, Mehmet için sistem tasarlamktan ziyade kendimiz için
sistemi tasarlamamız yönündedir. Bu sefer farklı bir örnekle yola çıkacağım.
Şimdi hepimiz Vi/Emacs kullanıyorsak, gelen kişilere de ilk başta Kate/Notepad
tarzı bir araç tavsiye etmemiz lazım. Burada önemli olan bu kişilere Vi'nin
avantajlarını, neden daha iyi olduğunu anlatmak ve bunu kullanmaya teşvik
ettirmek. Bir insanın yetenekleri de verdiğin araç ile orantılı olarak gelişir.

Yani önüne 2-3 tane lego taşı ile yapabileceği, kendini geliştirebileceği işler
ortada, ama sen onun önüne 200-300 tane lego taşı verirsen belki ilk başta
bocalar, bu kadar şeyi ne yapacağım der, ama bir süre sonra çok daha şahane
işler yapabilecektir. Önemli olan sadece bizim ona bunu gösterebilmemizdir.

Sonuçlandırıyorum.

Kısaca şu an için Gitolite/Gitweb gibi bir çözümden taraf olma sebeblerim
bunlar. Belirli bir süre geçtikten sonra, ortada Gitorious'dan daha mantıklı ve
güzel araçlar çıkarsa tekrar gözden geçirelim diyorum, ama onun dışında, tıpkı
diğer büyük projelerin ve dağıtımların kullandığı gibi Gitolite/Gitweb ikilisi
en mantıklısı gözüküyor.

Kolay gelsin

-- 
Fatih Arslan
_______________________________________________
Gelistirici mailing list
Gelistirici@pardus.org.tr
http://liste.pardus.org.tr/mailman/listinfo/gelistirici

Cevap