- Ana süreçte Bun, yerel bağlamalarda Zig kullanan TypeScript tabanlı masaüstü uygulama çatısı
- macOS, Windows, Ubuntu desteği sunar; yükleyici, otomatik güncelleme ve diferansiyel yama artifact'lerini otomatik üretir
- Pencere denetimi, menüler, kısayollar, pano, iletişim kutuları, oturum depolaması gibi eksiksiz bir masaüstü özellik seti sunar ve OOPIF tabanlı kararlı bir webview uygular
- İç yapı, Bun'ın FFI ve paylaşımlı bellek modelini kullanarak çok süreçli ortamlarda da verimliliği korur
- Electron ve Tauri'nin sınırlarını deneyimleyen bir geliştirici tarafından, Zig, C, C++, Objective-C iki yıl boyunca öğrenilerek doğrudan geliştirildi
- Amaç, 5 dakika içinde kod yazmaya başlayıp 10 dakika içinde dağıtıma çıkılabilen entegre bir iş akışı sunmak
Electrobun proje özeti ve hedefleri
- Ana süreci Bun ile çalıştıran, webview TypeScript'ini paketleyen ve yerel bağlamaları Zig ile yazan bir yapı
- Hem ana süreç hem de webview TypeScript ile yazılır; süreçler arası yalıtım (isolation) korunurken hızlı ve tipli RPC iletişimi sağlar
- Kendi kendine çıkarılan uygulama paketi boyutu yaklaşık 12MB'tır (sistem webview kullanıldığında, bunun büyük kısmı Bun çalışma zamanıdır)
- bsdiff tabanlı diferansiyel güncellemelerle yama boyutu en az 14KB seviyesine kadar indirilebilir
- 5 dakika içinde kod yazmaya başlayıp 10 dakika içinde dağıtımı tamamlatan tek bir entegre iş akışı sunmak hedefleniyor
npx electrobun init komutuyla şablon tabanlı bir proje başlatılabilir
Geliştirilme arka planı
- Visual Basic 6 döneminden beri masaüstü uygulamaları geliştiriyor; Adobe AIR döneminde çeşitli startup ürünlerini binlerce kişiye dağıtmış olması bu işin çıkış noktası
- 20 yıldan uzun süredir erken aşama startup'larda mühendis olarak unicorn ölçeğinde ürünler kurup büyütmüş olsa da masaüstü geliştirme ortamı tersine geriledi
- Hibrit bir web tarayıcısı + kod editörü + PTY terminali olan co(lab) üzerinde çalışırken çok fazla zorlukla karşılaşıp çatıyı bizzat yapmaya karar verdi
- İlk sürüm Electron ile geliştirildi ancak kod imzalama, notarization, dağıtım ve güncelleme süreçleri uygulama geliştirmekten çok çatının kendisiyle mücadele etmeye benziyordu
- Web'deki gibi sürekli dağıtım (continuous shipping) istendi ancak mevcut araç zinciri bunu gereğinden fazla zorlaştırıyordu
- Tauri de denendi fakat Rust'ın her geliştirici için uygun olmadığı düşünüldü; o sırada Bun henüz 1.0'dan birkaç ay uzaktaydı ve doğrudan geliştirmeye başlandı
macOS'tan çapraz platforma
- Başlangıçta yalnızca macOS uygulamaları derlenebiliyordu; bugün ise macOS, Windows, Ubuntu üzerinde derleme ve dağıtım birinci sınıf destekleniyor
- Yükleyiciler, otomatik güncelleme artifact'leri ve diferansiyel yamalar (differential patches) otomatik oluşturuluyor
- Yalnızca statik bir host (R2, S3, GitHub Releases) bağlamak dağıtım için yeterli
- Diferansiyel güncellemeler, C'den Zig'e taşınıp SIMD ve zstd ile optimize edilen zig-bsdiff tarafından sağlanıyor
- Bun'ın FFI'si olgunlaştıkça daha önce yazılan Zig FFI katmanının büyük bölümü Bun ile değiştirildi
- Mimari olumlu yönde evrildi; Bun worker oluştururken paylaşımlı bellek kullandığı için çok süreçli yapıda da verimlilik korunuyor
Yayınlanan özellikler
- Şu anda tam teşekküllü bir çatı olarak çapraz platform pencere denetimleri, menüler, kısayollar (accelerators), global kısayollar, pano, iletişim kutuları, webview partition'ları, session storage, sayfa içinde arama (find-in-page), paketleme ve güncelleme araçları sunuyor
- OOPIF (Out-of-Process Iframe) uygulaması gerçekten çalışır seviyeye ulaştı
- Electron'un
<webview> etiketi Chromium'da deprecated oldu ancak hâlâ yerine geçen bir alternatif yok
<electrobun-webview>, DOM konumlandırması, süreç yalıtımı ve katmanlamanın düzgün çalıştığı gerçek bir "super iframe"
- İmleç titremesi (cursor flicker) sorunu olmadan ve tarayıcı motoru patch'lenmeden çapraz platform çalışıyor
Platform destek durumu
- macOS 14+: Resmî destek
- Windows 11+: Resmî destek
- Ubuntu 22.04+: Resmî destek
- Diğer Linux dağıtımları (gtk3, webkit2gtk-4.1): Topluluk desteği
Gelecek planları
- co(lab), Electrobun üzerinde baştan sona yeniden yazıldı; v1 istikrarı temel alınarak artık co(lab) geliştirmesine tam odaklanılacak
- Temel hedef, çatının platform churn karşısında sarsılmadan iddialı uzun vadeli ürünler inşa etmeye yetecek kadar istikrarlı hale gelmesi
- Discord topluluğu büyüyor; beta testleri, issue bildirimleri ve geri bildirimlerle katkı veren kullanıcılar çatıya yön verdi
- Electrobun, Blackboard tarafından yayımlanan ilk büyük ürün
5 yorum
"co(lab) baştan sona yeniden yazıldı" ifadesini görünce, bunun Google ile birlikte ipynb çalıştırma için bulut kararlılığını iyileştiren bir şey olduğunu sanmıştım ama bununla hiç ilgisi olmayan, Blackboard ekibinin bir geliştirme projesiymiş
Yine de OOPIF'in
npxile kurulup erişilebilir olması önemli bir deneyim gibi görünüyor"Kod imzalama, noter tasdiki, dağıtım ve güncelleme süreci uygulama geliştirmekten çok framework ile kavga ediyormuş gibi hissettiriyor"
Metnin arka planında buna benzer bir ifade var ve
gerçekte uygulama geliştirmekten ziyade dağıtıma daha fazla emek harcanan durumlar olabiliyor.
Sırf bu sorunu çözmüş olması bile onu yüksek değerlendirmem için yeterli.
Flutter'a zig eklemek de oldukça kolay ve basit görünüyordu.
Dart/c ffi belgelerinden çok da farklı değil...
> Neden büyük Linux dağıtımlarının varsayılan olarak WebView sunmadığını merak ediyorum. Bu, uygulama ekosisteminin genişlemesinin önündeki büyük bir engel.
GUI ortamına sahip bir işletim sisteminde artık WebView'un temel bir bileşen haline gelmesi gerektiğini düşünüyorum.
Hacker News görüşleri
Merhaba, ben Electrobun'un geliştiricisiyim
Bu kez v1 kararlı sürümü yayımladım. Mimarinin şeklini sabitledim; eğer bir bug bulursanız veya Electron/Tauri'de kullandığınız bir API'ye ihtiyaç varsa GitHub issue açarsanız bunu öncelikli olarak ele alacağım
Geçen ay boyunca 50 bin satır kodu değiştirerek kararlılık çalışmalarını tamamladım
Electrobun ile yapılmış açık kaynak proje Colab'ın (web tarayıcısı + kod editörü + PTY terminali) bir demo videosu da var
Electrobun varsayılan olarak sistem WebView'unu kullanıyor, ancak
bundleCEFseçeneğiyle CEF de dahil edilebiliyor. Yapısal olarak WebView'dan bağımsız olduğu için Servo veya Ladybird hazır olduğunda doğrudan onunla değiştirilebilirAyrıca her sürümde zstd tabanlı otomatik sıkıştırılmış paketler oluşturarak ilk indirme boyutunu azaltabiliyor ve güncellemeleri 14KB seviyesinde küçük tutabiliyor
partitionanahtarı eklenince TypeScript hatası oluşuyorElectrobun çok umut verici görünüyor. Bir sonraki projemi bununla yapmayı planlıyorum
Tam TypeScript yığını içinde üretkenliğin en yüksek olduğu seçenek bu gibi duruyor. Rust veya uzun derleme süreçleri olmadan Electron'dan daha hafif ve daha hızlı bir alternatif elde etmek sevindirici
Discord'da birçok oyun geliştiricisi Electrobun ile masaüstü oyunları deniyor
Steam indie oyun pazarında Electron'un bir kısmının yerini alma potansiyeli olabilir
Özellikle
bun --watch game.tsile anında yeniden yüklenen TypeScript oyun geliştirme deneyimi çok hızlı ve akıcıTauri'nin temel sorunu, sistem WebView kalitesinin işletim sistemine göre değişmesi
Linux'ta resmi bir WebView yok ve Windows 7 ya da erken dönem 10 sürümlerinde Edge WebView kullanılmıyor. Bu farklar yüzünden açılışın 20 saniyeden uzun sürdüğü bile oluyor
100MB tasarruf etmek için bu tür ödünleşimleri kabul etmeye değer mi emin değilim
Kullanıcıların çoğu hızlı internet kullandığı için indirme hızı büyük bir sorun değil
Electrobun'un yerleşik Chromium renderer desteği olup olmadığını merak etmiştim, ancak dokümanlarda net değildi
Keşke başlıkta bunun bir proje retrospektif blog yazısı olduğu belirtilseydi
Asıl projeyi resmî doküman bağlantısından görmek daha uygun
Projenin ana sayfası burada
Arayüz temiz görünüyor ve ben Zig'e aşina olduğum için Rust'a kıyasla daha erişilebilir olabilir
Bu hafta şirkette yeni bir Electron uygulaması dağıtacağız; Electrobun keşke 1 yıl daha erken çıksaymış
Electron Builder güncelleme ve imzalama sürecini bir ölçüde basitleştiriyor ama yine de zahmetli
Bir sonraki kişisel projemde Electrobun'u denemeyi düşünüyorum
Yazıda notarizing ve stapling sorunlarından bahsedilmiş; Xcode kullanmıyorsanız Apple bu süreci gerçekten çok zorlaştırıyor
Windows'ta da CI otomasyonu kolay değil. Electrobun daha iyi bir çözüm sunuyorsa çok ilgimi çeker
notarize: trueile derleme yapmak yeterliElectrobun ile birçok kez imzalama ve noter onayı yaptım, sorun yaşamadım. Daha karmaşık durumlar için bir escape hatch de sunuluyor
Yardım gerekirse Discord'dan DM atabilirsiniz. (Electrobun ile bağlantım yok ama Apple'ın noter onay sistemiyle uğraşmanın ne kadar acı verici olduğunu iyi biliyorum)
Eğer Electron uygulaması 500MB'den büyükse, Electrobun'un 14MB'si gerçekten çok küçük bir boyut gibi geliyor
Ubuntu dışındaki dağıtımların şu anda destek kapsamı dışında olması üzücü
İlgili tartışma issue comment içinde görülebilir