GitHub'dan Codeberg'e: Deneyimim
(eldred.fr)- Kendi projelerimi ve web sitemi GitHub'dan Codeberg'e taşırken izlediğim süreç ve sonucu ayrıntılı olarak anlatıyorum
- Forgejo'nun “migrate from GitHub” özelliğini kullanarak depoları, issue'ları, PR'ları, wiki'leri ve release'leri tamamen taşıdım
- Taşıma olgusunu net biçimde göstermek için link yeniden yönlendirmesini ve GitHub depo stub'larının işlenmesini otomatik betikler ile yaptım
- CI/CD geçişinde Codeberg'in Forgejo Actions'ını kullandım ve ortam kısıtlarına göre hafif bir iş akışı kurdum
- Web sitesi git-pages ve Grebedoc ile kesintisiz taşındı; tüm geçişi bir hafta sonu içinde tamamladım
Geçiş özeti
- GitHub Pages'de barındırılan bir siteyi ve 45 depoyu Codeberg'e taşıdım
- Tek bir tıklamayla bitmedi ve birden fazla manuel adım gerekiyordu
- Tüm süreç bir hafta sonu içinde tamamlandı ve sorunsuz gitti
- Bu süreçle diğer geliştiricilerin de kolayca geçiş yapabileceğini göstermeyi hedefledim
1. Aşama: Depo Taşıma
- Codeberg, Forgejo tabanlı bir platformdur ve “migrate from GitHub” özelliği sunar
- GitHub'da Personal Access Token (PAT) oluşturarak issue'lar gibi meta veriler de alınabiliyor
- GitHub API'deki rate limit nedeniyle aynı anda birden fazla depoyu taşımaya çalışınca hata oluşabiliyordu
- Issue'lar, PR'lar, wiki ve release'ler eksiksiz taşındığından GitHub referanslarına gerek kalmadı
2. Aşama: Link Yeniden Yönlendirme
- Yerel depolardaki GitHub bağlantılarını Codeberg adreslerine toplu olarak dönüştürdüm
sedvefindkomutlarını kullanarak metin tabanlı otomatik bir değişim yaptım
- Her deponun
git remoteURL'sini Codeberg olarak değiştirip tüm depolara push ettim
3. Aşama: GitHub Depo Stub Yönetimi
- GitHub depolarına taşıma duyurusu için README ekledim ve açıklamayı ile ana sayfa bağlantısını Codeberg'e çevirdim
- Bu işlemi birden fazla depoya toplu uygulamak için otomasyon betiği yazdım
gh repo archivekomutuyla depoları arşivledim
4. Aşama: CI/CD Geçişi
- Codeberg'in CI dokümanında enerji tüketimini minimumda tutma prensibi vurgulanıyor
- Bu nedenle yalnızca gerçekten gerekli projelerde (web sitesi, dokümantasyon derleme vb.) CI tutuyorum
- Codeberg iki CI seçeneği sunuyor: Woodpecker ve Forgejo Actions
- GitHub Actions'a benzediği için Forgejo Actions'ı seçtim
- Başlıca farklar
- Çoğu Action olduğu gibi çalışıyor
- Yalnızca Linux özelinde runner var, macOS ve Windows sunulmuyor
- Kurulu yazılım az ve kaynaklar kısıtlı
- lazy runners ile yük dengelemesi yapıp daha çevreci çalıştırma mümkün
- CI performansını artırmak için önceden kurulmuş LaTeX içeren bir Docker imajı kullandım ancak sürüm sorunu nedeniyle temel Ubuntu imajına döndüm
5. Aşama: Web Sitesi Yeniden Barındırma
- GitHub Pages'den çalışan siteyi Codeberg Pages'e taşımayı planladım ama bu özellik bakım modundaydı
- Karmaşıklık ve performans sorunları nedeniyle güncellemeler gecikiyor
- Alternatif olarak git-pages ve Grebedoc bulundu ve kullanıldı
- DNS değişikliği öncesi yükleme desteği ile kesintisiz geçiş mümkün oldu
- Sunucu tarafı yönlendirme ve özel başlık desteği
- Mevcut bağlantıyı (
eldred.fr/fortISSimO) koruyarak geçiş tamamlandı
- Codeberg ileride git-pages'e kademeli geçiş planlıyor
- GitHub Pages'ten daha memnunum, bu yüzden git-pages geliştiricisine Patreon'dan destek olmaya başladım
Harcanan Süre
- Depo geçişi (1-3. aşama): Yarım gün
- CI geçişi (4. aşama): Yarım gün
- Web sitesi geçişi (5. aşama): Teknik borç temizliği dahil birkaç gün
- Genel olarak bir hafta sonu içinde tamamlandı, beklenenden daha basit bir iş oldu
Geçiş Sonrası
- Web sitesi işlevlerinde sorun yok, yalnızca GitHub'daki master dalı daraltıldı
- Kalıcı linkler (permalink) hala çalışıyor
- GitHub depolarını silme işlemi, yönlendirme olmaması nedeniyle beklemede
- GitHub hesabı, diğer projelere katkı için tutuluyor
- Codeberg'e taşınırken katkıda bulunan sayısında azalma yaşanabilir; ancak bazı kullanıcılar zaten Codeberg hesabı açıp katkı vermeyi sürdürüyor
Teşekkür
- Catherine ‘whitequark’: git-pages ve Grebedoc operasyonu
- SERVFAIL network ekibi: DNS sağlama
- Codeberg ve Forgejo katılımcıları: geçiş altyapısı sağlama
1 yorum
Hacker News yorumu
Bu geçiş hikâyesinde dikkat çeken şey teknik taraf değil, asıl engelin gerçekten ‘özellik eşdeğerliği (feature parity)’ olmaması
Codeberg günlük iş akışları için yeterli, ama GitHub’ın yıllar içinde biriktirdiği ağ etkisi ve atalete sahip değil
Bluesky benzeri protokoller temel alınarak, Git nerede barındırılırsa barındırılsın kimlik ve bağlantılılığın korunması hedefleniyor
Daha önce kesin gördüğüm bir issue’yu yeniden bulmak zor oluyor. Performans son zamanlarda düzelmiş gibi, ama yüzlerce issue’su olan bir projeyse önce bir test geçişi yapmak iyi olur
CI/CD gibi şeyleri ekibin tamamının bilmesi gerekmiyor, bir kişinin iyi bilmesi bile yeterli
Codeberg, Gitea’nın bir fork’u; Gitea da Gogs’un fork’u
Her iki fork da teknik nedenlerden çok felsefi nedenlerle başladı ve Gogs’u yapan Joe Chen’in büyük katkısı oldu
Gitea, bir geliştiricinin depo yetkilerini tekeline alması nedeniyle fork’lanmıştı; Forgejo ise Gitea’nın marka haklarıyla ilgili sorunları aşmak için ortaya çıkan bir fork
Codeberg ile F-Droid’u birlikte kullanan biri var mı merak ediyorum
GitHub’daki gibi sürümleri otomatik algılayıp algılayamadığını bilmek istiyorum
Artık bir eşik etkisine (threshold effect) ulaşılmış gibi görünüyor
Son birkaç gündür çeşitli projelerin GitHub’dan ayrıldığını görüyorum
Bunun arkasında bir olay ya da bir trend mi var diye merak ediyorum
Açık kaynak topluluğundaki memnuniyetsizlik birikerek sınır noktasına ulaşmış gibi görünüyor
Microsoft genelindeki AI ve reklamlaşma tartışmaları ile Windows 10 desteğinin sona ermesi de etkili oluyor gibi
İlgili kavram ilk kez bu Twitter flood’unda ortaya atılmıştı
Rails tabanlı olduğu eski dönem daha iyiydi gibi geliyor
Gerçekte olduğundan fazla ilgi gören geçici bir durum da olabilir
GitHub alternatifleri içinde küçük ekipler veya bireysel geliştiriciler için uygun olan var mı merak ediyorum
Codeberg FOSS odaklı olduğu için ticari kullanım için pek uygun görünmüyor
GitLab çok özellikli ama bakım yükü ağır
Bunun dışında Gitea, Gogs, Phorge gibi çeşitli FOSS forge’lar da var
GitHub arayüzünü kopyalamaması ve yerel bir uygulama gibi hızlı, anında tepki veren arayüzü hoşuma gidiyor
Sırf “Microsoft’tan hoşlanmıyorum” diye taşınmak gerekmiyor
Sonunda yeni projeyi Codeberg’e koydum, bazılarını da GCP üzerinde özel ayna olarak tutuyorum
Bununla ilgili Ask HN başlığı açtım ama yanıt gelmedi
eldred.fr’nin blog yazısına bakınca yazarın gerekçeleri makul, ama kullanıcı açısından hissedilen iyileşme neredeyse yok
Codeberg’i kullanınca
Örnek: https://codeberg.org/dnkl/foot
README’nin ana sayfada olması daha iyi olurdu
Ücretli sürümde görsel özelleştirme de yapılabiliyor
Fazla farklı yapılırsa tam tersine tepki çekebiliyor
GitHub giriş düğmesinin gizlenmesi de topluluk odaklı bir karar; istenirse PR ile öneri sunulabilir
Amaç, GitHub’la benzer işlevleri sunan etik bir alternatif bulmaktı
GitHub’daki AI taraması sorun değilse, siyasi olmayan nedenlerle taşınmak için yeterli gerekçe var mı merak ediyorum
Codeberg’in ücretsiz CI runner sağlayıp sağlamadığını merak ediyorum
GitHub’ın yılda 100 milyon dolardan fazla CI harcaması yaptığı tahmin ediliyor
Ama çevresel maliyetten söz etmek, aksine kullanıcı katılımını caydırabilir
Teknik kişiler için buna performans optimizasyonu problemi olarak yaklaşmak daha etkili olur
Codeberg’in geçmişte bir spam olayını “aşırı sağ nefret kampanyası” diye abartıp kendini övmesi beni hayal kırıklığına uğratmıştı
Basitçe önleme konusunda başarısız olduklarını kabul etmeleri yeterliydi, ama bunu siyasi bir çerçeveye oturttular
İlgili bağlantılar: issue, HN tartışması, blog yazısı
Bu yüzden saygı kaybettiyseniz, sorun projede değil o bakış açısında olabilir
Ben de bir dönem Codeberg’e depolarımı taşıyıp sonra yeniden GitHub’a dönmüştüm
GitHub’daki pek çok özelliği sevmiyor olsam da, Codeberg’de işbirliğini kendine çeken güç eksik
Tek başına bakım yapan biri olarak görünürlük ve ağ etkisine gerçekten ihtiyaç duyuyorum