.NET MAUI memperluas dukungan ke Linux dan browser berbasis Avalonia
(avaloniaui.net)- Melalui backend berbasis Avalonia, aplikasi .NET MAUI kini dapat berjalan di desktop Linux dan browser (WebAssembly)
- Dengan tetap mempertahankan codebase MAUI yang ada, lapisan rendering diganti ke Avalonia untuk sekaligus meningkatkan performa dan memperluas dukungan platform
- Berjalan dengan mesin rendering yang sama di lingkungan desktop Linux seperti Ubuntu, Debian, Fedora, serta embedded Linux dan WebAssembly
- Di Windows dan macOS juga teramati peningkatan performa lebih dari 2x, sekaligus menyediakan UI yang konsisten tanpa perbedaan antarplatform
- Proyek ini memberi pengembang MAUI dukungan Linux·web dan siklus pengembangan yang lebih terprediksi, sekaligus menjadi landasan perluasan ekosistem Avalonia
Gambaran umum Avalonia MAUI Backend
- Avalonia MAUI Backend adalah arsitektur yang mengganti lapisan rendering ke Avalonia sambil tetap mempertahankan codebase MAUI
- Aplikasi MAUI yang ada dapat diperluas ke platform tambahan seperti Linux dan browser
- Meningkatkan performa desktop sekaligus memastikan konsistensi antarplatform
- Demo nyata ditampilkan sebagai aplikasi MAUI berbasis WebAssembly yang dapat berjalan di browser tanpa plugin
- Meski masih build awal, ini membuktikan bahwa MAUI dapat berjalan di OS desktop utama dan browser
Dukungan platform utama
- Dukungan desktop Linux
- Berjalan sebagai aplikasi desktop kelas satu di Ubuntu, Debian, Fedora, dan lainnya
- Menggunakan renderer Avalonia untuk menghadirkan kualitas setara aplikasi desktop berperforma tinggi
- Dukungan embedded Linux
- Berjalan pada perangkat embedded seperti panel Raspberry Pi dan HMI industri dengan backend yang sama seperti Avalonia
- Dukungan WebAssembly
- Mewujudkan aplikasi MAUI yang berjalan di browser tanpa dependensi native
- Ke depan ditargetkan berkembang hingga siap untuk distribusi via browser
- Dukungan Windows dan macOS
- Terintegrasi dengan arsitektur rendering desktop Avalonia yang matang
- Di macOS, teramati peningkatan performa lebih dari 2x dibanding Mac Catalyst
Efisiensi pengembangan dan konsistensi
- Tim Avalonia mengembangkan hanya untuk satu platform (Avalonia)
- Tidak perlu implementasi terpisah untuk iOS, Android, Windows, macOS, Linux, dan WebAssembly
- Mengurangi bug spesifik platform maupun perbedaan rendering
- Karena menggunakan mesin rendering yang sama, tampilan UI identik di semua platform
- Saat fitur ditambahkan atau bug diperbaiki, perubahan langsung tercermin di semua platform
- Memperpendek siklus pengembangan dan menghasilkan kualitas yang lebih terprediksi
Mengapa Avalonia membangun backend untuk MAUI
- Prioritas utamanya adalah mendukung pengembang klien .NET, agar pengguna MAUI bisa memperoleh dukungan Linux·browser dan peningkatan performa
- Melalui proyek ini, Avalonia mempelajari kemampuan ramah mobile, persoalan API, dan area perbaikan tooling
- Dengan memberi pengembang MAUI kesempatan merasakan renderer dan fitur Avalonia, diharapkan ada efek masuknya pengguna ke ekosistem
- Tujuannya bukan menggantikan MAUI, melainkan memberi pilihan yang lebih luas bagi pengembang MAUI yang ada
Maknanya bagi pengembang MAUI
- Menyediakan dukungan Linux dan model UI berbasis drawing yang konsisten yang terus diminta oleh pengembang MAUI
- Avalonia menyediakan fitur-fitur berikut
- Rendering akselerasi hardware
- Sistem layout dan styling yang konsisten
- Animasi refresh rate tinggi
- Rendering kustom dan efek visual
- Cakupan platform yang luas
- Platform yang terus mendapat investasi dan dukungan
- Sudah digunakan di lingkungan komersial seperti Unity, JetBrains, dan Schneider Electric
- Sambil mempertahankan kode MAUI yang ada, pengembang dapat sekaligus memperoleh dukungan Linux·web dan peningkatan performa desktop
Performa dan rendering generasi berikutnya
- Dengan stack UI drawing yang ramah GPU, performa lebih tinggi dapat dicapai dibanding toolkit native
- Bekerja sama dengan tim Google Flutter untuk menghadirkan renderer GPU Impeller ke .NET
- Jika teknologi ini diterapkan, backend MAUI juga akan mewarisi peningkatan kecepatan rendering, penghematan baterai, dan animasi yang lebih mulus
Rencana ke depan
- Terus meningkatkan kualitas backend melalui kolaborasi dengan engineer MAUI
- Saat dukungan Linux dan browser mencapai tahap matang, MAUI akan lengkap sebagai framework UI multiplatform sejati
- Setelah stabil, proyek ini direncanakan dirilis sebagai open source dengan lisensi MIT
- Perkembangan pengembangan, benchmark, dan preview akan terus dibagikan
1 komentar
Komentar Hacker News
Sangat menarik melihat kemampuan seperti ini dibawa ke web
Tapi setelah mencoba demonya, rasanya sama sekali tidak seperti web
Tidak bisa mencari dengan Ctrl+F, tidak bisa memilih teks, dan tidak bisa menyalin alamat tautan
Di mobile juga tidak bisa menekan lama gambar untuk membagikannya, dan screen reader pun tidak berfungsi
Hal-hal seperti ini menumpuk dan memberi kesan bahwa “ini bukan web yang sesungguhnya”
Rasanya seperti konten kaya yang terisolasi dari browser, seperti pulau tersendiri ala Java applet akhir 90-an atau Flash dan Silverlight awal 2000-an
Kalau fitur-fitur seperti ini tidak ada, maka secara definisi ini tidak bisa disebut ‘web sungguhan’
Pada akhirnya ini mengarah ke pertanyaan filosofis: “sebenarnya web itu apa?”
Apakah web hanya media pengiriman konten, atau sesuatu yang lebih besar dari itu?
Sekarang banyak orang lelah dengan web yang teraplikasikan (app-lification) dan merindukan web terbuka seperti dulu
Saya mencoba demo itu dengan screen reader dan sama sekali tidak berfungsi
Itu juga bukan arah yang dimaksud Microsoft
Hanya saja karena Avalonia mendukung WASM, MAUI bisa dijalankan di atasnya
Tapi itu pada dasarnya hanya merender toolkit GUI desktop ke WASM
Memang keren, tapi rasanya lebih seperti Silverlight versi modern daripada web app
Meski begitu, bisa menargetkan desktop Linux adalah keuntungan besar
Banyak juga yang mungkin lebih suka rendering dengan tampilan seragam seperti Avalonia daripada MAUI yang memakai kontrol native tiap platform
Dengan CSS/JS/HTML browser modern saja, sebagian besar hal sudah bisa dilakukan
Saya suka XAML, tapi JSX pun konsepnya mirip dan pada akhirnya dikompilasi menjadi HTML nyata
Saya juga berpikir sama saat era Silverlight — saya tidak paham kenapa orang terus mencoba membuat ulang Flash
Unity Web build sudah menjadi “C# Flash” yang lebih baik
Kalau fitur dasar seperti ini saja tidak ada, buat saya ini bukan opsi sama sekali (non-starter)
MAUI yang tidak mendukung desktop Linux sejak awal memang bukan kandidat yang saya pertimbangkan
Penambahan ini setidaknya membuatnya sedikit lebih baik, tapi saya tetap merasa lebih baik langsung memakai Avalonia
Meski begitu, senang juga ada opsi seperti ini untuk proyek yang sudah ada
Akhirnya, selain Kotlin Multiplatform atau Electron, sekarang kita juga bisa membuat aplikasi Linux dengan UX gaya ponsel yang lambat dan animasinya aneh
Tapi set widget-nya hanya sebatas tombol dan checkbox, jadi mengecewakan
Saya heran kenapa demo toolkit UI zaman sekarang bahkan kalah dari demo era Delphi 1
Sudah mendukung Windows/Mac/Linux/WASM
Pekerjaan kali ini tampaknya ditujukan untuk orang-orang yang ingin memperluas aplikasi MAUI yang sudah ada ke Linux/WASM
Perkembangannya bisa dilihat di blog Avalonia
Salah satu alasan orang enggan memakai MAUI di ekosistem .NET adalah karena Microsoft sendiri tidak memakainya
Bahkan Teams pun berbasis Electron
Jadi muncul pertanyaan, “kalau MS saja tidak pakai, kenapa kita harus pakai?”
Divisi Windows menangani WinUI/Win32, Office memakai React, dan divisi developer menangani WPF serta MAUI
Karena tiap divisi bergerak sendiri-sendiri, hasilnya toolkit UI jadi terpecah-pecah
Pada akhirnya semua toolkit hanya mendapat dukungan setengah-setengah
Teams juga berubah begitu saat pindah dari Angular ke React
Meski begitu, memang benar mereka tidak memakai MAUI
Suasananya adalah lebih memilih teknologi yang sudah terbukti seperti Avalonia atau WinForms
Tidak jelas apa yang akan benar-benar didorong MS dalam jangka panjang
Ada juga Blazor, tapi itu lebih dekat ke pembuatan aplikasi internal daripada pengganti React
Sebagai catatan, saya juga ragu Google benar-benar aktif memakai Flutter di aplikasi mereka sendiri
Teams dirilis pada 2017, sedangkan MAUI diperkenalkan pada 2022
Peralihan ke React juga terjadi sebelum MAUI
Tapi tetap saja mengkhawatirkan bahwa MS tidak cukup banyak melakukan ‘dogfooding’ pada MAUI
Belakangan bahkan ada kabar pengurangan personel terkait MAUI, jadi kepercayaan internal tampak lemah
Perlu juga mempertimbangkan bahwa Flutter memulai 5 tahun lebih awal
Meski begitu, sulit menghilangkan kesan bahwa MS tidak benar-benar berkomitmen pada MAUI
Ujung-ujungnya selalu dihentikan dukungannya
Memakai teknologi web standar jauh lebih baik untuk kesehatan mental
(Bukan berarti saya membela MAUI)
Kalau ada yang bingung, saya rangkum
.NET MAUI pada dasarnya adalah framework untuk membuat aplikasi Android, iOS, macOS, dan Windows dari satu codebase
Kali ini yang ditambahkan adalah Linux dan browser
Saya sempat mencoba membuat aplikasi Hello World di Mac, dan konfigurasinya cukup rumit
Tapi tetap menyenangkan bisa memakai XAML lagi setelah sekian lama
Saya sedang membuat software untuk pengembangan dan mencari GUI lintas platform
Awalnya saya mencoba MAUI, tapi bahkan instalasinya sudah seperti mimpi buruk
Fitur UI dasar saja tidak didukung
Setelah itu saya mencoba AvaloniaUI dan pengalamannya benar-benar kebalikan
Instalasinya sederhana, dan dengan sedikit pencarian saya bisa dengan mudah membuat hal seperti jendela transparan tanpa bingkai
Integrasi dengan Visual Studio memang agak kurang, tapi tetap jauh lebih maju daripada MAUI
Rasanya seperti kebangkitan Silverlight
Referensi: wiki Microsoft Silverlight
Di Chrome, demonya nyaris tidak berfungsi
Puzzle geser responsnya lambat, dan panah kembali macet
Kalau di-refresh, kembali ke layar awal
Pemilih waktu dan pemilih tanggal juga tidak rapi posisinya dan sulit dipakai
Secara keseluruhan, sangat buruk
Thread terkait
Saya menjalankan demo “Word puzzle” di bagian “Launch MAUI in your browser”
Saat menekan ‘Randomize’, ubin mulai diacak, lalu ketika kembali dengan panah atas, layar terkunci sepenuhnya
Puzzle tetap terlihat di latar belakang, menu menumpuk di atasnya, dan tidak ada yang bisa diklik
Hal yang sama terjadi di beberapa browser
Tautan demo
Klik-drag tidak stabil dan tidak ada umpan balik visual
Ubin tidak bergerak, tapi langsung berpindah seketika
Satu kali klik atau perpindahan dengan animasi justru akan lebih baik
Pengguna lain juga mengangkat masalah yang sama
Kalkulator RPN bahkan tidak bisa memasukkan angka ke stack
Saya benar-benar butuh toolkit UI yang bisa dipakai membuat program CAD sungguhan
Saya sudah bosan dengan aplikasi yang tampil seperti webview
Saya sangat tidak suka tren UI web 10 tahun terakhir
Semuanya membesar karena fokus ke sentuhan, ruang kosongnya banyak, dan penuh animasi yang tidak perlu
Saya ingin kembali ke UI lama yang menekankan kepadatan informasi dan kemudahan pakai
Itulah yang saya sukai dari situs web Jepang
Kalau melihat demo reel Avalonia, dengan stack GUI .NET pun bisa dibuat hal seperti editor video atau alat analisis peta
Avalonia Showcase
Kalau cuma cukup untuk aplikasi cuaca atau to-do list, tidak ada artinya
WPF dan WinForms juga masih ada