- Geliştirici, daha önce Mac için Electron uygulaması olan Desktop Docs'u Rust ile yeniden yazdı ve sonuç olarak bunun doğru bir karar olduğunu söylüyor
- Electron ile yapılan ilk uygulama 1GB boyutundaydı ve performans sorunları nedeniyle sık sık çöküyordu
- Özellikle büyük ölçekli görsel/video işleme performansında düşüş sorunu vardı
- Rust + Tauri ile yeniden inşa edildiğinde uygulama boyutu %83 azaldı, indeksleme hızı 3 kattan fazla arttı ve kararlılık da iyileşti
- Uygulama boyutu: 1GB → 172MB (%83 azalma)
- Kurulum dosyası: 232MB → 69.5MB (%70 azalma)
- Video indeksleme: 38 dakikalık video için 10~14 dakika → 3 dakikaya indi
- Kararsız Electron uygulamasına kıyasla çok daha stabil çalışma
- Yeniden inşa süreci ve tercihleri
- Electron uygulamasında arka planda bile Chromium tek başına 200MB'tan fazla bellek kullanıyordu, hatta görüntülü aramalar bile çökme nedeni oluyordu
- Yeni uygulamada da CLIP embedding'leri ve Redis vektör deposu aynen kullanıldı
- Ancak Rust ile görüntü/video işleme ve dosya I/O için tüm pipeline baştan yazıldı
- UI da mevcut kodu taşımak yerine sıfırdan yeniden yazıldı ve sonuçta daha temiz ve sade bir arayüz ortaya çıktı
- Teknik zorluklar
- Rust'ın öğrenme eğrisi yüksek, Tauri topluluğu da hâlâ Electron kadar olgun değil
- Redis'i uygulamaya bundle etme sürecinde izin yönetimi ve dağıtım sorunları yaşandı
- Buna rağmen Electron'a göre genel kontrol ve performans iyileşti
- Sonuç
- Henüz tam özellik eşdeğerliği sağlanmamış olsa da çekirdek özellikler çok daha hızlı ve stabil çalışıyor
- “Çalışıyor ama yanlış yazılmış kod, cesurca çöpe atılmalıdır”
7 yorum
Electron, Chromium’u gömülü olarak içeriyor; Tauri ise işletim sistemine kurulu motoru kullandığı için aralarında fark var.
Tauri (OS WebView), hafif dağıtım ve hızlı performans gerektiğinde avantajlıdır;
ancak güvenlik, güvenilirlik ve özellik kontrolünün önemli olduğu servislerde Electron (gömülü Chromium) yaklaşımı daha uygundur.
Kodun sorununu tam bilmiyorum ama platformun özelliklerinin buna büyük ölçüde yansıdığını düşünüyorum.
Flutter kullanıyorsanız rinf de oldukça iyi.
Electron kullandım ama Tauri ile hiç çalışmadım; sanırım bir ara denemem gerekecek.
Hacker News görüşleri
Rust ve egui ile masaüstü uygulamaları geliştiriyorum, ama hem Rust’a hem de masaüstü geliştirmeye yeni başladığım için aynı anda çok fazla kavram öğrenmek zor geliyor. Benim alanım makine mühendisliği analiz araçları; bu yüzden arka uçta yüksek performans, ön yüzde ise veri görselleştirme gerekiyor. Tauri kullanırken rust, js, html gibi birden fazla stack’i birlikte yönetmek zor oldu mu merak ediyorum
Kısa süre önce bir projeyi Tauri’den Electron’a taşıdım. Farklı platformlarda kullanılan webview’ların render farkları baş ağrıttı. Çapraz platformda UI bug’ları yaşayıp yaşamadığınızı merak ediyorum. UI gereksinimleri basit, hesaplama tarafı karmaşık; bu yüzden QA maliyeti olsa bile buna değeceğini düşünüyorum. Yaşadığım şey sıra dışı bir deneyim miydi, yoksa render farkları gerçekten yaygın bir sorun mu merak ediyorum. Bir de Tauri’yi 1.0 mı 2.0 mı kullandığınızı merak ediyorum. Ben v1’den geçiş yaparken 2.0’ın kararlı sürümü çıkmıştı; migration tam bir kabustu ve dokümantasyon da gerçekten yetersizdi. Şu anda belgeler daha iyi durumda mı onu da merak ediyorum
Ben de benzer bir yoldan geçtim. USB mikroskop için optimize edilmiş basit bir webcam görüntüleyici yaptım; mevcut çözümler yeterince iyi değildi, ben de kendim yazdım. Neredeyse tüm özellikleri renderer tarafında uyguladım. App Store’a göndermeye hazırlanırken 500 MB’lık bir webcam görüntüleyici kulağa yanlış gelmeye başladı, ben de Tauri V2’ye port edip boyutu yaklaşık 15 MB’a indirdim
Bu uygulamanın amacını gerçekten seviyorum. Bu alandaki diğer uygulamalar çoğu zaman fazla hantal ve kullanışsız oluyor, bu yüzden yeniden yazım işi ilgimi çekiyor. Ama ben fotoğrafçıyım ve medyamın büyük kısmı RAW formatında; bunun desteklenip desteklenmediğinden emin değilim (ya da “tüm başlıca görsel ve video formatları” ifadesinde RAW geçmediğine göre muhtemelen desteklenmiyor olabilir). Bu tür ayrıntıları doğrulayabileceğimiz resmi belgeler, kullanıcı forumları ya da başka kanallar var mı merak ediyorum
Ben ne Mac kullanıcısıyım ne de ekibimiz Rust’a yeniden yazmayı düşünüyor, ama bu yazı beni gerçekten sevindirdi. “Show HN”de tam da bu uzunlukta, gerçek dünyadaki sorunları çözmek için gereken teknik trade-off’ları özetleyen yazılar görmek istiyorum. Teşekkürler
Tauri, Flutter, Electron, React Native ve diğer modern çapraz platform framework’leri karşılaştıran güncel benchmark’lar olsa gerçekten harika olurdu. Temel metrikler olarak paket boyutu, bellek kullanımı (RAM), açılış süresi, yük altındaki CPU kullanımı ve disk alanı düşünülebilir. Özellikle Tauri gibi, kullanılan webview sürümüne göre render ve performansı değişebilen framework’lerde, platform bazlı (WebView2, WKWebView vb.) bir uyumluluk matrisi de çok faydalı olurdu. Bu farklar görsel olarak bir tabloda sunulsa geliştiriciler çok daha iyi karar verebilir
Önceki şirketimde Windows ve Mac için masaüstü bir Electron uygulamasının bakımını yapıyordum. Uygulama çok hantaldı ve Squirrel ile güncelleme yapmak tam bir eziyetti.
Sonunda GUI’yi web SPA (Inferno tabanlı) olarak bırakıp, webview yükleme gibi işleri her platform için küçük native uygulamalarla (C# ve Swift) değiştirdik. Sonuç olarak indirme boyutu ve bellek kullanımı yaklaşık %90 azaldı, ayrıca dağıtım ve güncellemeyi her platformun kendi uygulama mağazası üzerinden yapmaya başladık. Bence verdiğimiz en iyi karardı
Onay süreleri ve belirsizlik kaygı verici; Squirrel’den native’e geçince hangi yönleriyle daha iyi oldu merak ediyorum
Son uygulama Mac içinse, neden Rust/Tauri seçildi de Swift/SwiftUI tercih edilmedi gerçekten merak ediyorum
egui yerine Tauri’yi seçmenize neyin yol açtığını merak ediyorum. Bunun nedeni Electron deneyimi miydi? Ben de bir Python Qt uygulamasını Rust’a port etmeyi düşünüyorum ama Rust’ın GUI kütüphaneleri henüz Qt kadar olgun olmadığı için sonunda tıkanıp kalmaktan endişe ediyorum
Ana landing page’deki "Try" butonuna bakınca kullanıcılar bir deneme sürümü olduğunu sanabilir ama pratikte doğrudan satın almaya gidiyor. Kısa da olsa, örneğin 1 haftalık bir deneme sürümü iyi olurdu.
Süresiz kullanım için yedek lisans politikasını beğendim. 99$ giriş bariyeri olarak oldukça yüksek ama hedef kitle yaratıcılar/stüdyolarsa mantıklı; genel tüketici içinse 20$-25$ daha uygun olabilir.
Yazıda performans özellikle vurgulanıyor ama landing page’de bundan hiç bahsedilmiyor. 38 dakikalık videoda olduğu gibi benchmark’lar, paralel işleme, VRAM gereksinimleri gibi bilgiler de önemli. Yüzlerce ya da binlerce saatlik medyada gerçekte nasıl davrandığını merak ediyorum.
Electron’da 10-14 dakika süren bir işin Tauri’de 3 dakikaya düşmesi şaşırtıcı. Electron sadece CLIP ve ffmpeg’i orkestre ettiyse, bu kadar overhead tam olarak nereden geliyor merak ediyorum.
Ben de geçmişte Electron ile video transkripsiyonuna dayalı bir medya arama aracı yaptım ve performans sorunu pek yaşamamıştım.
Genelde Electron veya Tauri’nin tercih edilme nedeni çapraz platform olmalarıdır; o halde neden en başta sadece Mac’e odaklanıldı merak ediyorum (özellikle büyük hacimli medya işleme söz konusuysa nvidia kullanımı da mümkünken).
Ben de yakın zamanda yaklaşık 10 yıl aradan sonra yeniden Swift kullandım ve Tauri ile arasında gidip gelirken Swift’i seçtim (yeni proje için). 2014 civarına kıyasla inanılmaz gelişmişti ve kullanımı neredeyse keyifliydi.
Aktif kullanıcılarla ilgili bölüm doğruysa, görünüşe göre zaten belli bir başarı yakalamışsınız; daha önce stüdyo/yaratıcı sektöründe bir ağınız ya da kitleniz var mıydı merak ediyorum. Pazarlama kısmını da duymak isterim
Benzer bir aracı kendiniz yaptığınızı söylemişsiniz; neden yayımlamadığınızı merak ediyorum.
Windows ve Linux sürümlerini de talep olursa önümüzdeki birkaç ay içinde çıkarmayı planlıyoruz.
Kullanıcıları HN, Reddit lansmanı ve biraz LinkedIn tanıtımıyla kazandık. Çoğu da kulaktan kulağa yayıldı.
Electron ve video işleme performansı konusunda daha derine inersek anlatacak çok şey var. Ben de Electron uzmanı değilim; worker’ları düzgün kullanamadığımız için darboğaz oluşmuş olabilir.
Rust’a geçerken scene detection da ekledik; böylece indekslenecek frame sayısını azaltıp işlem yükünü ciddi biçimde düşürdük. ffmpeg için GPU hızlandırma seçenekleri de ekledik, bu da performansı epey artırdı. Görüntü embedding üretimini de batch processing ile optimize ettik. Ama fazla zorlanırsa model instance’ı çökebiliyor olabilir
HN'de bağlantısı verilen performans karşılaştırma tablosunda, Electron çoğu durumda Tauri'den daha iyi görünüyor....
Yorumdaki performans karşılaştırması içeriğinin, ilgili depodaki değerler arasından Electron lehine olanların seçilip alınmış olduğu izlenimi azımsanmayacak kadar güçlü. Değerler biraz farklılık gösterse de en benzer metrik, "çalıştırmadan önceki boş bellek ile çalıştırdıktan sonraki boş bellek arasındaki fark"ın karşılaştırıldığı kısım. Ancak hemen üstteki maddede, çalışma sırasında ana süreç ile alt süreçlerin toplam bellek kullanımının Electron için 258M olarak kaydedildiği bir durumda, çalıştırma öncesi ve sonrası bellek kullanım değişiminin 91MB olduğu kısmını kabul etmek zor görünüyor. HN'deki bir alt yorumda da, Tauri ile yapılmış uygulamanın açılış süresinin 7 saniyeden fazla çıktığı, bu yüzden depodaki ölçüm değerlerine güvenmenin zor olduğu yönünde bir değerlendirme var.
Hmm, sorunların çoğu Electron ya da Tauri farkından kaynaklanmaktan ziyade daha çok WebView motoru + işletim sistemi/sürücü sorunları gibi görünüyor.