1 puan yazan GN⁺ 2024-01-23 | 1 yorum | WhatsApp'ta paylaş
  • Diversion, bulut çağındaki büyük ölçekli depoları ve iş birliğini hedefleyen bir sürüm kontrol sistemi; ilk kullanıcıları ise basitlik ve ölçeklenebilirlik isteyen oyun geliştiricileri
  • Git’in 2005’teki yavaş ağlar, küçük projeler ve bulutun olmadığı ortam için geliştirildiği; günümüzdeki depo ve dosya boyutları ile eşzamanlı kullanıcı ölçeğinde sınırları olduğu düşünülüyor
  • Google ve Meta’nın kendi sürüm kontrol sistemleri ile bazı oyun geliştirme, yarı iletken ve finansal hizmetler şirketlerinin SVN ve Perforce kullanması, Git’in her kuruluşa uygun olmadığının kanıtı olarak gösteriliyor
  • Diversion, dağıtık depolama, veritabanları, REST API ve sunucusuz bulut altyapısı üzerinde commit, branch ve merge gibi depo işlemlerini API çağrılarıyla yürütüyor
  • Şu anda açık beta olarak sunuluyor; küçük ekipler ücretsiz başlayabiliyor, hız iyileştirmeleri, CI entegrasyonu, IDE ve oyun motoru eklentileri ile kullanılabilirlik iyileştirmeleri üzerinde çalışılıyor

Diversion’ın hedef aldığı Git sınırlamaları

  • Diversion, diversion.dev üzerinden sunulan bulut yerel sürüm kontrol sistemidir
    • Hızlı demo YouTube videosu olarak mevcut
    • İlk kullanıcıları oyun geliştiricileri; basitlik ve ölçeklenebilirliği avantaj olarak görüyorlar
  • Git, son 18 yılda yazılım geliştirmenin ilerlemesinde büyük rol oynadı; ancak 2005’in koşullarına göre tasarlandığı için herkes için kusursuz bir araç değil
  • En büyük dezavantajı, depo boyutu, dosya boyutu ve eşzamanlı kullanıcı sayısında ortaya çıkan sınırlı ölçeklenebilirlik
    • Google ve Meta bu nedenle kendi sürüm kontrol sistemlerini geliştirdi
    • Oyun geliştirme, yarı iletken ve finansal hizmetler alanındaki bazı büyük şirketler SVN ve Perforce gibi eski araçları kullanmaya devam ediyor
  • Git’in karmaşıklığı gerçek iş kaybına da yol açabilir
    • Önceki bir startup’ta, bir veri bilimcinin yanlış Git komutu kullanması sonucu ekibin bir aylık çalışmasını kaybettiği bir örnek yaşanmıştı
    • Birkaç saat sonra güncellenmemiş bir depo klonundan kurtarılabilmişti
  • Bununla birlikte Git’in branch ve merge özellikleri, feature branch ve CI/CD gibi modern geliştirme yöntemlerine ve geliştirici hızının artmasına büyük katkı sağladı

Bulut tabanlı çalışma şekli

  • Diversion, Git’in branch özelliğini korurken daha kolay, hızlı ve ölçeklenebilir bir sürüm kontrol sistemi olmayı hedefliyor
  • Modern bulut araçlarının gerçek zamanlı iş birliği kavramını sürüm kontrolüne uyguluyor
    • Google Docs ve Figma’da olduğu gibi çalışma sırasındaki durumu paylaşmak mümkün
    • Geliştiriciler her zaman üzerinde çalıştıkları şeyi açığa çıkarmak istemeyebilir; ancak commit öncesi geri bildirim almak, merge çatışmalarını tespit etmek ve önlemek ya da başkalarının kod tabanının hangi bölümünü değiştirdiğini görmek için yararlı olabilir
  • İç mimarisi dağıtık depolama ve veritabanları, REST API ve sunucusuz bulut altyapısına dayanıyor
    • commit, branch, merge gibi tüm depo işlemleri API çağrıları olarak yürütülüyor
    • Masaüstü istemcisi, commit öncesindeki çalışma durumunu bile gerçek zamanlı olarak buluta senkronize ediyor
    • Kullanıcılar etkileşimli CLI, Web UI ve IDE eklentileri üzerinden erişebiliyor
    • Mevcut IDE eklentisi JetBrains’i destekliyor; daha fazlası eklenecek
    • Web UI, masaüstü istemcisi kurulmadan da temel işlemlerin çoğunu yapabiliyor
  • Git ile uyumlu ve mevcut Git depolarıyla senkronize olabiliyor
    • Diversion’daki yeni commit’ler Git’e, Git’teki yeni commit’ler de Diversion’a aktarılıyor

Yayın planı ve beta kullanım koşulları

  • Kod tabanı olgunlaştığında ve web sitesinde açık kaynak depo dizini uygulandığında açık kaynak olarak yayımlamayı planlıyorlar
    • Diversion’ın kodu da Diversion üzerinde yönetiliyor
  • Şu anda açık beta olarak kullanılabiliyor; Get Started’a tıklayarak self servis şekilde başlanabiliyor
    • Kimseyle konuşmaya gerek kalmadan kullanılabiliyor
    • Küçük ekipler için ücretsiz; fiyat bilgileri pricing sayfasında
  • Üzerinde çalışılan iyileştirmeler hız, CI entegrasyonu, IDE ve oyun motoru eklentileri ile diğer kullanılabilirlik geliştirmeleri

1 yorum

 
GN⁺ 2024-01-23
Hacker News görüşleri
  • Cloud-Native Git Alternative

    • Bulut yerelliği bir uygulama ayrıntısıdır; yeni bir sürüm kontrol sistemi (VCS) hizmet yerine paket yazılım olarak satılmayacaksa önemli değildir.
    • Bulut yerelliğinin Git kullanıcılarının günlük sorunlarını nasıl çözdüğü belirsiz.
  • The biggest drawback of Git is its limited scalability

    • Git’in ölçeklenebilirlik sorunlarını yaşayan kullanıcıların oranı merak ediliyor.
    • Yüzlerce ila on binlerce mühendisin olduğu şirketlerde çalıştım ama kişisel olarak hiç Git ölçeklenebilirlik sorunu yaşamadım.
    • Monorepo kullanımı ölçeklenebilirlik sorunlarına yol açabilir, ancak monorepo’nun kendisi de tartışmalıdır.
  • Diversion is built on top of distributed storage and databases, accessible via REST API, and runs on serverless cloud infrastructure. Every repository operation is an API call (commit, branch, merge etc.).

    • Kullanıcı açısından iç protokollere ilgi az.
    • CLI veya UI kullanırken iç protokol önemli değil.
    • Soyut sözdizimi ağacı (AST) tabanlı bir VCS merak uyandırıyor.
  • most notably in games development, semiconductors and financial services are still using legacy tools like SVN and Perforce

    • Odağı Git’in karmaşıklığından çok, büyük ikili varlıkları işlemede Git’in uygun olmamasına kaydırmak gerekir.
    • Git’in büyük dosyaları iyi işleyemediğine dair Linus Torvalds alıntısı.
  • it was built for a very different world in 2005 (slow networks, much smaller projects, no cloud)

    • Git, yavaş ağların, çok daha küçük projelerin ve bulutun olmadığı 2005’ten çok farklı bir dünya için tasarlandı.
    • Git dağıtık olduğundan, bulut ortamında da iyi çalışması gerekir.
    • Bir veri bilimcinin yanlış Git komutuyla bir aylık çalışmayı yok etmesi bir yapılandırma sorunu gibi görünüyor.
  • In our previous startup, a data scientist accidentally destroyed a month’s work of his team by using the wrong Git command

    • Git eleştirisinden çok kendi ürünlerine odaklanmaları gerekir.
    • Git dağıtık bir VCS’dir; yedek olmadan onu merkezi gibi kullanmaya çalışmak asıl sorundur.
  • git is bad we're better

    • Bir oyun geliştiricisi olarak sunulan öneri yeterince ilgi çekici değil.
    • Git LFS kullanılan modern iş akışları sorunsuz çalışıyor.
    • Bulut yerelliği özellik olarak sunulmuş, ancak on-prem ve kendi barındırılan özel bulut desteğine dair ayrıntılar eksik.
    • Sanatçılar dosya kilitlemeyi seviyor, ancak P4 streams ve branch kullanımı kilit kullanımını zorlaştırıyor.
  • File locking across branches - coming soon!

    • Dosya kilitleme özelliği yakında geliyor, ancak önerinin geliştirilmesi gerekiyor.
  • Git cli UX made be not great, but the git datastructure of representing commits, branches, trees and blobs as immutable pointers and merkle trees is a phenomenal invention.

    • Git’in veri yapısı olağanüstü bir icat, ancak tüm komutların REST API üzerinden yapılması fikrine katılım yok.
    • Git’in asıl gücü, çevrimdışıyken kısmi clone ile çalışabilmek ve çevrimiçi olunca commit’leri senkronize edebilmektir.
  • In our previous startup, a data scientist accidentally destroyed a month’s work of his team by using the wrong Git command.

    • Git’in kullanılabilirliğinin iyileştirilmesi gerektiği kabul ediliyor, ancak yaşanan sorun daha çok DevOps başarısızlığı gibi görünüyor.
    • Kod yazmayan kişilere source control’ün faydalarını tanıtırken ileri düzey özellikleri koruyan, öğrenmesi daha kolay bir yaklaşım gerekli.
  • The world needs a git alternative.

    • Dünyanın bir Git alternatifine ihtiyacı var.
    • Birden fazla kişinin her gün aynı depoya commit attığı durumlarda Git’in sınırları var.
    • Git rebase işlemini daha iyi yapsaydı, yazılım geliştirme ekiplerinin çalışma hızı %20 artabilirdi.
  • I get that enterprises will buy anything with "Cloud" or "AI" in the name, but VCS doesn't have anything to do with the cloud.

    • Şirketlerin adında "Cloud" veya "AI" geçen her şeyi satın alacağı düşünülüyor.
    • Teknolojiden çok problem çözmeye odaklanmak önemli.
    • Kullanıcı deneyimi iyi değilse teknik ayrıntıların bir anlamı yok.
    • Geliştirme süresini kısaltan, hataları azaltan ve işbirliğini iyileştiren bir deneyim sunan ürün için buna uygun bir satış stratejisi gerekli.