- Avalonia tabanlı arka uç sayesinde .NET MAUI uygulamaları artık Linux masaüstünde ve tarayıcıda (WebAssembly) çalışabiliyor
- Mevcut MAUI kod tabanı korunurken render katmanı Avalonia ile değiştirilerek aynı anda hem performans artışı hem de platform genişlemesi sağlanıyor
- Ubuntu, Debian, Fedora gibi masaüstü Linux ile gömülü Linux ve WebAssembly ortamlarında aynı render motoruyla çalışıyor
- Windows ve macOS'ta da 2 katın üzerinde performans artışı gözlemlenirken, platform farkı olmadan tutarlı bir UI sunuluyor
- MAUI geliştiricilerine Linux·web desteği ve öngörülebilir geliştirme döngüsü sunarken, Avalonia ekosisteminin genişlemesi için temel oluşturan bir proje
Avalonia MAUI Backend genel bakış
- Avalonia MAUI Backend, MAUI kod tabanını koruyup render katmanını Avalonia ile değiştiren bir yapı
- Mevcut MAUI uygulamalarını Linux, tarayıcı gibi ek platformlara genişletmeyi mümkün kılıyor
- Masaüstü performansını artırıyor ve platform tutarlılığı sağlıyor
- Gerçek demoda WebAssembly tabanlı bir MAUI uygulaması yer alıyor ve tarayıcıda eklenti olmadan çalışabiliyor
- İlk derleme olsa da MAUI'nin başlıca masaüstü işletim sistemleri ve tarayıcıda çalışabildiğini kanıtlıyor
Başlıca platform desteği
- Masaüstü Linux desteği
- Ubuntu, Debian, Fedora gibi dağıtımlarda birinci sınıf masaüstü uygulaması olarak çalışıyor
- Avalonia renderer'ı kullanarak yüksek performanslı masaüstü uygulaması düzeyinde kalite sunuyor
- Gömülü Linux desteği
- Raspberry Pi panelleri, endüstriyel HMI gibi gömülü cihazlarda Avalonia ile aynı arka uçla çalışıyor
- WebAssembly desteği
- Tarayıcıda yerel bağımlılık olmadan çalışan MAUI uygulamaları mümkün oluyor
- İleride tarayıcı dağıtımına uygun bir seviyeye ulaşması planlanıyor
- Windows ve macOS desteği
- Avalonia'nın olgun masaüstü render mimarisiyle entegre oluyor
- macOS'ta Mac Catalyst'e kıyasla 2 katın üzerinde performans artışı gözlemleniyor
Geliştirme verimliliği ve tutarlılık
- Avalonia ekibi yalnızca tek bir platformu (Avalonia) hedefleyerek geliştiriyor
- iOS, Android, Windows, macOS, Linux ve WebAssembly için ayrı ayrı implementasyon gerekmiyor
- Platforma özgü hatalar ve render farklılıkları azalıyor
- Aynı render motoru kullanıldığı için tüm platformlarda aynı UI görünümü sağlanıyor
- Özellik ekleme veya hata düzeltmeleri tüm platformlara anında yansıyor
- Geliştirme döngüsü kısalıyor ve öngörülebilir kalite elde ediliyor
Avalonia neden MAUI arka ucu geliştiriyor?
- Öncelik .NET istemci geliştiricilerini desteklemek ve MAUI kullanıcılarının Linux·tarayıcı desteği ile performans iyileştirmeleri elde etmesini sağlamak
- Bu proje sayesinde Avalonia; mobil uyumluluk, API sorunları ve araç geliştirme alanları hakkında öğrenim kazanıyor
- MAUI geliştiricilerinin Avalonia renderer'ını ve özelliklerini deneyimlemesiyle ekosisteme giriş etkisi bekleniyor
- Amaç MAUI'nin yerini almak değil, mevcut MAUI geliştiricilerine daha geniş seçenekler sunmak
MAUI geliştiricileri için anlamı
- MAUI geliştiricilerinin uzun süredir talep ettiği Linux desteği ve tutarlı çizim tabanlı UI modeli sağlanıyor
- Avalonia şu yetenekleri sunuyor
- Donanım hızlandırmalı render
- Tutarlı yerleşim ve stil sistemi
- Yüksek yenileme hızlı animasyonlar
- Özel render ve görsel efektler
- Geniş platform kapsamı
- Sürekli yatırım yapılan ve desteklenen bir platform
- Unity, JetBrains, Schneider Electric gibi şirketlerde ticari ortamlarda zaten kullanılıyor
- Mevcut MAUI kodunu korurken Linux·web·masaüstü performans iyileştirmelerini aynı anda sağlıyor
Performans ve yeni nesil render
- GPU dostu çizim tabanlı UI yığını ile yerel toolkit'lerden daha yüksek performans sağlanıyor
- Google Flutter ekibiyle iş birliği içinde Impeller GPU renderer'ı .NET'e getiriliyor
- Bu teknoloji uygulandığında MAUI arka ucu da daha hızlı render, daha düşük pil tüketimi ve daha akıcı animasyonlar kazanacak
Gelecek planları
- MAUI mühendisleriyle iş birliği içinde arka uç kalitesi sürekli iyileştirilecek
- Linux ve tarayıcı desteği olgunluk seviyesine ulaştığında, MAUI gerçek bir çok platformlu UI framework'ü haline gelecek
- Stabilizasyondan sonra MIT lisansıyla açık kaynak olarak yayımlanması planlanıyor
- Geliştirme durumu, benchmark'lar ve önizlemeler düzenli olarak paylaşılacak
1 yorum
Hacker News görüşleri
Bu işlevselliğin web'e getirilmiş olması gerçekten ilgi çekici
Ama demoyu deneyince “web gibi” hissettirmiyor
Ctrl+F ile arama yapılamıyor, metin seçilemiyor ve bağlantı adresi kopyalanamıyor
Mobilde görsele uzun basıp paylaşmak da olmuyor, ekran okuyucu da çalışmıyor
Bunlar üst üste gelince insanda “bu gerçekten web değil” izlenimi bırakıyor
90'ların sonundaki Java applet'leri, 2000'lerin başındaki Flash veya Silverlight gibi tarayıcıdan kopuk, ada gibi duran zengin içerik hissi veriyor
Bu tür özellikler yoksa tanım gereği buna ‘gerçek web’ denemez
Sonunda mesele “web nedir” gibi felsefi bir soruya gidiyor
Sadece bir medya aktarım aracı mı, yoksa daha büyük bir şey mi diye düşündürüyor
Bugünlerde uygulamalaştırılmış (app-lification) web'den yorulan çok kişi var ve eski açık web'i özlüyorlar
Demoyu ekran okuyucuyla denedim, hiç çalışmadı
Microsoft'un amaçladığı yön de bu değil
Avalonia WASM'i desteklediği için, MAUI onun üstüne konulunca çalışıyor sadece
Ama bu, aslında masaüstü GUI araç takımını WASM ile render etmekten farksız
Havalı görünüyor ama web uygulamasından çok Silverlight'ın modern bir sürümü gibi
Yine de Linux masaüstünü hedefleyebilmek büyük bir avantaj
MAUI'nin her platformun yerel kontrollerini kullanması yerine, Avalonia gibi görünümü tutarlı bir render yaklaşımını tercih eden de çok olur
Modern tarayıcıların CSS/JS/HTML yetenekleriyle zaten çoğu şey yapılabiliyor
XAML'i seviyorum ama JSX de benzer bir fikir ve sonuçta gerçek HTML'e derleniyor
Silverlight döneminde de aynı şeyi düşünüyordum — neden sürekli Flash'ı yeniden yapmaya çalışıyoruz, anlamıyorum
Unity Web build zaten daha iyi bir “C# Flash”
Bu tür temel özellikler yoksa benim için baştan elenme sebebi (non-starter)
Linux masaüstünü desteklemeyen bir MAUI, en baştan değerlendirme dışıydı
Bu ekleme ile biraz daha iyi oldu ama yine de doğrudan Avalonia kullanmanın daha mantıklı olduğunu düşünüyorum
Yine de mevcut projeler için böyle bir seçeneğin gelmesi sevindirici
Sonunda Kotlin Multiplatform veya Electron dışında, yavaş ve tuhaf animasyonlara sahip “telefon tarzı UX” uygulamaları Linux'ta da yapabileceğiz
Ama widget setinin düğme ve onay kutusundan öteye gitmemesi hayal kırıklığı yaratıyor
Bugünün UI toolkit demoları neden Delphi 1 dönemindeki demolardan bile daha kötü, merak ediyorum
Zaten Windows/Mac/Linux/WASM desteği var
Bu çalışma daha çok mevcut MAUI uygulamalarını Linux/WASM'e genişletmek isteyenlere yönelik gibi görünüyor
İlerleme durumunu Avalonia blogunda görebilirsiniz
.NET ekosisteminde insanların MAUI'den uzak durmasının nedenlerinden biri de Microsoft'un kendisinin kullanmaması
Teams bile Electron tabanlı
“MS bile kullanmıyorsa biz neden kullanalım?” sorusu doğuyor
Windows ekibi WinUI/Win32'den, Office React'ten, geliştirici ekibi ise WPF ve MAUI'den sorumlu
Her ekip kendi başına hareket edince UI araç takımları parçalanmış oldu
Sonuç olarak tüm araç takımları ancak yarım yamalak destek alabildi
Teams de Angular'dan React'e geçerken bunu yaptı
Yine de MAUI kullanmadıkları doğru
Avalonia veya WinForms gibi kendini kanıtlamış teknolojileri tercih ediyor gibiler
MS'in uzun vadede neyi destekleyeceği belirsiz
Blazor da var ama o daha çok React alternatifi olmaktan ziyade şirket içi uygulama geliştirmeye yakın
Bu arada Google'ın da Flutter'ı kendi uygulamalarında ne kadar aktif kullandığı soru işareti
Teams 2017'de çıktı, MAUI ise 2022'de duyuruldu
React'e geçiş de MAUI'den önceydi
Ama MS'in MAUI'yi yeterince dogfooding yapmaması yine de endişe verici
Son zamanlarda MAUI ile ilgili ekip küçültme haberleri de vardı; içeride güven zayıf görünüyor
Flutter'ın 5 yıl önce başlamış olduğunu da hesaba katmak gerekir
Yine de MS'in MAUI'ye gerçekten odaklanmadığı izlenimini silmek zor
Sonu hep destek sonlandırma ile bitiyor
Ruh sağlığı için standart web teknolojilerini kullanmak daha iyi
(Bu, MAUI'yi savunduğum anlamına gelmiyor)
Karışıklık olmasın diye özetleyeyim
.NET MAUI aslında Android, iOS, macOS ve Windows için tek kod tabanıyla uygulama geliştirme çatısı
Bu kez buna Linux ve tarayıcı eklenmiş oldu
Mac'te bir Hello World uygulaması yapmayı denedim, kurulum epey karmaşıktı
Yine de uzun zamandır sonra XAML yazmak hoşuma gitti
Geliştirme amaçlı yazılım yaparken çapraz platform bir GUI arıyordum
İlk başta MAUI'yi denedim ama kurulumdan itibaren tam bir kâbustu
Temel UI özellikleri bile desteklenmiyordu
Sonra AvaloniaUI denedim ve tamamen zıt bir deneyim yaşadım
Kurulum basitti, biraz araştırmayla şeffaf çerçevesiz pencere gibi şeyleri bile kolayca yaptım
Visual Studio entegrasyonu biraz zayıf ama MAUI'den çok daha ileride
Silverlight'ın geri dönüşü gibi duruyor
Not: Microsoft Silverlight wiki
Demo Chrome'da neredeyse hiç çalışmıyor
Kaydırmalı yapboz yavaş tepki veriyor, geri oku takılı kalıyor
Sayfayı yenileyince ilk ekrana dönüyor
Saat seçici ve tarih seçici de hizasız ve kullanımı zor
Genel olarak oldukça kötü
İlgili başlık
“Launch MAUI in your browser” bölümündeki “Word puzzle” demosunu çalıştırdım
‘Randomize’a basınca taşlar karışıyor, sonra üstteki okla geri dönünce ekran tamamen kilitleniyor
Arka planda yapboz kalıyor, menü üstüne biniyor ve hiçbir şeye tıklanamıyor
Aynı durum birden fazla tarayıcıda da oluyor
Demo bağlantısı
Tıkla-sürükle kararsız, görsel geri bildirim yok
Taşlar hareket etmiyor, bir anda başka yere ışınlanıyor
Tek tıkla hareket veya animasyonlu geçiş daha iyi olurdu
Başka bir kullanıcı da aynı sorunu dile getirmiş
RPN hesap makinesinde sayıları stack'e koymak bile mümkün değil
Gerçekten CAD programı yapılabilecek bir UI toolkit ihtiyacı büyük
WebView gibi görünen uygulamalardan artık bıktım
Son 10 yıldaki web UI trendlerinden nefret ediyorum
Her şey dokunmatik odaklı büyüdü, boşluklar arttı, gereksiz animasyonlar her yere yayıldı
Bilgi yoğunluğu ve kullanılabilirlik merkezli eski arayüzlere dönmek istiyorum
Japon web sitelerinde bu yönü seviyorum
Avalonia'nın demo reels'ine bakınca .NET GUI yığınıyla bile video editörü veya harita analiz aracı gibi şeyler yapılabildiği görülüyor
Avalonia Showcase
Sadece hava durumu ya da yapılacaklar uygulaması çıkarabiliyorsa pek anlamı yok
WPF ve WinForms da hâlâ var