.NET MAUI को Avalonia के आधार पर Linux और ब्राउज़र तक समर्थन विस्तार
(avaloniaui.net)- Avalonia-आधारित बैकएंड के ज़रिये .NET MAUI एप्लिकेशन अब Linux डेस्कटॉप और ब्राउज़र (WebAssembly) पर चल सकते हैं
- मौजूदा MAUI कोडबेस को बनाए रखते हुए rendering layer को Avalonia से बदलकर performance सुधार और platform विस्तार दोनों हासिल किए गए
- Ubuntu, Debian, Fedora जैसे desktop Linux, साथ ही embedded Linux और WebAssembly वातावरण में एक ही rendering engine के साथ काम करता है
- Windows और macOS पर भी 2 गुना से अधिक performance सुधार देखा गया है, और platform-अंतर के बिना एकसमान UI मिलता है
- MAUI डेवलपर्स को Linux और web support के साथ अधिक अनुमानित development cycle देता है, और Avalonia ecosystem के विस्तार की बुनियाद बनता है
Avalonia MAUI Backend का अवलोकन
- Avalonia MAUI Backend ऐसी संरचना है जो MAUI codebase को बनाए रखते हुए rendering layer को Avalonia से बदलती है
- मौजूदा MAUI ऐप्स को Linux, ब्राउज़र जैसे अतिरिक्त platforms तक विस्तारित किया जा सकता है
- डेस्कटॉप performance में सुधार और platform consistency सुनिश्चित होती है
- वास्तविक डेमो WebAssembly-आधारित MAUI ऐप है, जो ब्राउज़र में बिना plugin के चल सकता है
- यह शुरुआती build है, लेकिन इससे साबित होता है कि MAUI प्रमुख desktop OS और ब्राउज़र पर काम कर सकता है
प्रमुख platform support
- Desktop Linux support
- Ubuntu, Debian, Fedora आदि पर first-class desktop app की तरह चलता है
- Avalonia renderer का उपयोग करके high-performance desktop app स्तर की quality देता है
- Embedded Linux support
- Raspberry Pi panel, industrial HMI जैसे embedded devices पर Avalonia के समान backend के साथ चलता है
- WebAssembly support
- ब्राउज़र में native dependency के बिना चलने वाले MAUI ऐप्स संभव बनाता है
- आगे चलकर इसे ब्राउज़र deployment के लिए और परिपक्व किया जाएगा
- Windows और macOS support
- Avalonia की mature desktop rendering architecture के साथ integration
- macOS पर Mac Catalyst की तुलना में 2 गुना से अधिक performance सुधार देखा गया
development efficiency और consistency
- Avalonia टीम एकल platform (Avalonia) को लक्ष्य बनाकर development करती है
- iOS, Android, Windows, macOS, Linux, WebAssembly के लिए अलग-अलग implementation की ज़रूरत नहीं
- platform-specific bugs और rendering differences कम होते हैं
- एक ही rendering engine के उपयोग से सभी platforms पर एक जैसा UI rendering मिलता है
- feature addition या bug fix होने पर सभी platforms पर तुरंत लागू किया जा सकता है
- development cycle छोटा होता है और quality अधिक अनुमानित रहती है
Avalonia, MAUI backend क्यों बना रहा है
- प्राथमिकता .NET client developers को support करना है, ताकि MAUI उपयोगकर्ताओं को Linux, ब्राउज़र support और performance improvement मिल सके
- इस project के माध्यम से Avalonia, mobile friendliness, API issues, tooling improvements के बारे में सीख रहा है
- MAUI डेवलपर्स Avalonia renderer और features का अनुभव करेंगे, जिससे ecosystem adoption की उम्मीद है
- लक्ष्य MAUI को replace करना नहीं, बल्कि मौजूदा MAUI डेवलपर्स को अधिक व्यापक विकल्प देना है
MAUI डेवलपर्स के लिए इसका मतलब
- MAUI डेवलपर्स की लगातार मांग रही Linux support और consistent drawing-based UI model यह प्रदान करता है
- Avalonia निम्नलिखित सुविधाएँ देता है
- hardware-accelerated rendering
- consistent layout और style system
- high refresh rate animation
- custom rendering और visual effects
- व्यापक platform coverage
- ऐसा platform जिस पर लगातार निवेश और support मिल रहा है
- Unity, JetBrains, Schneider Electric जैसे नामों द्वारा commercial environments में पहले से उपयोग किया जा रहा है
- मौजूदा MAUI code को बनाए रखते हुए Linux, web और desktop performance improvement एक साथ हासिल किया जा सकता है
performance और next-generation rendering
- GPU-friendly drawing UI stack के ज़रिये native toolkit की तुलना में अधिक performance मिलती है
- Google Flutter टीम के साथ मिलकर Impeller GPU renderer को .NET में लाया जा रहा है
- यह तकनीक लागू होने पर MAUI backend को भी तेज़ rendering, कम battery use और smoother animation का लाभ मिलेगा
आगे की योजना
- MAUI engineers के साथ सहयोग के ज़रिये backend quality में लगातार सुधार जारी रहेगा
- जब Linux और ब्राउज़र support परिपक्व अवस्था तक पहुँच जाएगा, तब MAUI सचमुच एक multi-platform UI framework के रूप में पूर्ण होगा
- स्थिरता के बाद इसे MIT license के तहत open source किया जाएगा
- development progress, benchmarks और previews लगातार साझा किए जाएँगे
1 टिप्पणियां
Hacker News राय
वेब पर इस तरह की चीज़ लाना वाकई दिलचस्प है
लेकिन डेमो इस्तेमाल करने पर ‘वेब जैसा’ महसूस ही नहीं होता
Ctrl+F से खोज भी नहीं होती, टेक्स्ट चुनना या लिंक पता कॉपी करना भी संभव नहीं है
मोबाइल पर इमेज को लंबा दबाकर शेयर भी नहीं कर सकते, और screen reader भी काम नहीं करता
ये सारी बातें मिलकर यह एहसास देती हैं कि “यह असली वेब नहीं है”
यह 90 के दशक के आखिर के Java applet, 2000 के शुरुआती दौर के Flash या Silverlight जैसी ब्राउज़र से कटी हुई द्वीप-जैसी rich content लगती है
अगर ये सुविधाएँ नहीं हैं, तो परिभाषा के हिसाब से इसे ‘असली वेब’ नहीं कहा जा सकता
आखिरकार यह “वेब आखिर है क्या” जैसे दार्शनिक सवाल तक पहुँचता है
क्या यह सिर्फ मीडिया पहुँचाने का साधन है, या इससे भी बड़ा कुछ?
आजकल बहुत से लोग app-lification हो चुके वेब से थक चुके हैं, और पुराने खुले वेब को याद करते हैं
मैंने screen reader से डेमो चलाने की कोशिश की, लेकिन वह बिल्कुल काम नहीं किया
Microsoft की भी यही मंशा नहीं थी
Avalonia WASM को support करता है, इसलिए MAUI को उसके ऊपर रखा जाए तो वह चल जाता है
लेकिन वह बस desktop GUI toolkit को WASM में render करने जैसा है
यह अच्छा ज़रूर है, लेकिन web app से ज़्यादा Silverlight का आधुनिक संस्करण लगता है
फिर भी Linux desktop को target कर पाना एक बड़ा फ़ायदा है
MAUI हर प्लेटफ़ॉर्म के native controls इस्तेमाल करने के बजाय Avalonia की तरह एकसमान rendering पसंद करने वाले लोग भी काफ़ी होंगे
आधुनिक ब्राउज़र के CSS/JS/HTML से ही ज़्यादातर चीज़ें संभव हैं
मुझे XAML पसंद है, लेकिन JSX भी काफ़ी मिलता-जुलता विचार है, और असली HTML में compile होता है
Silverlight के समय भी मेरा यही विचार था — समझ नहीं आता कि Flash को बार-बार फिर से क्यों बनाया जा रहा है
Unity Web build पहले से ही बेहतर “C# Flash” है
अगर ऐसी बुनियादी चीज़ें नहीं चलतीं, तो मेरे लिए यह non-starter है
Linux desktop को support न करने वाला MAUI शुरू से ही विचार करने लायक नहीं था
इस जोड़ के बाद स्थिति कुछ बेहतर हुई है, लेकिन मुझे अब भी लगता है कि सीधे Avalonia इस्तेमाल करना बेहतर है
फिर भी मौजूदा projects के लिए ऐसा विकल्प आना अच्छा है
आखिरकार अब Kotlin Multiplatform या Electron के अलावा भी धीमे और अजीब animation वाले “phone-style UX” ऐप Linux पर बनाए जा सकेंगे
लेकिन widget set में बस button और checkbox जैसी चीज़ें ही हैं, इसलिए निराशा होती है
समझ नहीं आता कि आजकल UI toolkit demos Delphi 1 के दौर के demos से भी बदतर क्यों लगते हैं
यह पहले से Windows/Mac/Linux/WASM को support करता है
यह काम शायद उन लोगों के लिए है जो मौजूदा MAUI apps को Linux/WASM तक बढ़ाना चाहते हैं
प्रगति Avalonia ब्लॉग में देखी जा सकती है
.NET ecosystem में लोग MAUI से बचते हैं, उसके कारणों में से एक यह है कि Microsoft खुद इसका इस्तेमाल नहीं करता
Teams तक Electron आधारित है
तब सवाल उठता है, “जब MS खुद नहीं इस्तेमाल करता, तो हम क्यों करें?”
Windows डिविज़न WinUI/Win32 संभालता है, Office React, और developer division WPF और MAUI
हर डिविज़न के अलग-अलग चलने का नतीजा यह हुआ कि UI toolkits बिखर गईं
अंत में हर toolkit को अधूरा support ही मिलता है
Teams भी Angular से React पर जाते हुए उसी दिशा में गया
फिर भी यह सच है कि MAUI का इस्तेमाल नहीं हो रहा
Avalonia या WinForms जैसी परखी हुई तकनीकों को प्राथमिकता देने वाला माहौल है
MS लंबे समय में किसे आगे बढ़ाएगा, यह अनिश्चित है
Blazor भी है, लेकिन वह React के विकल्प से ज़्यादा internal apps बनाने के लिए लगता है
वैसे Google भी Flutter को अपने apps में कितनी सक्रियता से इस्तेमाल करता है, इस पर सवाल है
Teams 2017 में आया, MAUI 2022 में घोषित हुआ
React पर जाने का समय भी MAUI से पहले का था
लेकिन MS का MAUI को पर्याप्त dogfooding न करना चिंता की बात है
हाल में MAUI से जुड़ी टीम में कटौती की ख़बरें भी थीं, और अंदरूनी भरोसा कमज़ोर दिखता है
Flutter के 5 साल पहले शुरू होने की बात भी ध्यान में रखनी चाहिए
फिर भी यह धारणा मिटती नहीं कि MS MAUI पर पूरी तरह केंद्रित नहीं है
आखिर में हमेशा support बंद हो जाता है
मानक web technologies इस्तेमाल करना मानसिक शांति के लिए बेहतर है
(यह MAUI का बचाव नहीं है)
अगर किसी को भ्रम हो तो साफ़ कर दूँ
.NET MAUI मूल रूप से Android, iOS, macOS, Windows के लिए एक ही codebase से apps बनाने का framework है
इस बार इसमें Linux और browser जोड़े गए हैं
मैंने Mac पर Hello World app बनाकर देखा, और setup काफ़ी जटिल था
फिर भी इतने समय बाद XAML इस्तेमाल करना अच्छा लगा
मैं development software बना रहा था और cross-platform GUI ढूँढ़ रहा था
पहले MAUI आज़माया, लेकिन installation से ही दुःस्वप्न शुरू हो गया
बुनियादी UI features तक support नहीं थे
फिर AvaloniaUI इस्तेमाल किया, और अनुभव बिल्कुल उल्टा था
installation आसान था, और थोड़ा-सा search करके transparent borderless window जैसी चीज़ भी आसानी से बना ली
Visual Studio integration थोड़ी कमज़ोर है, लेकिन MAUI से बहुत आगे है
यह Silverlight की वापसी जैसा लगता है
संदर्भ: Microsoft Silverlight wiki
Chrome में डेमो लगभग काम ही नहीं करता
sliding puzzle की प्रतिक्रिया धीमी है, और back arrow अटक जाता है
refresh करने पर फिर शुरुआती स्क्रीन पर लौट आता है
time picker और date picker भी सही align नहीं हैं और इस्तेमाल में असुविधाजनक हैं
कुल मिलाकर बहुत खराब है
संबंधित थ्रेड
मैंने “Launch MAUI in your browser” सेक्शन में “Word puzzle” डेमो चलाया
‘Randomize’ दबाते ही tiles shuffle होने लगती हैं, और ऊपर वाले arrow से वापस जाने पर स्क्रीन पूरी तरह फ्रीज़ हो जाती है
पीछे puzzle दिखता रहता है, menu उसके ऊपर चढ़ा रहता है, और कुछ भी क्लिक नहीं होता
कई ब्राउज़रों में यही हुआ
डेमो लिंक
click-drag अस्थिर है और कोई visual feedback नहीं है
tiles चलती नहीं, सीधे कूद जाती हैं
एक साधारण click या animated movement बेहतर होता
दूसरे उपयोगकर्ता ने भी वही समस्या उठाई
RPN calculator में तो stack में numbers डालना भी संभव नहीं है
सच में एक ऐसे UI toolkit की ज़रूरत है जिससे असली CAD program बनाया जा सके
webview जैसे दिखने वाले apps से अब ऊब हो गई है
पिछले 10 साल के web UI trends मुझे बहुत नापसंद हैं
सब कुछ touch-केंद्रित, बड़ा, ज़्यादा खाली जगह वाला, और बेकार animations से भरा हो गया है
मैं फिर से information density और usability पर केंद्रित पुराने UI चाहता हूँ
जापानी websites में वह बात अभी भी अच्छी लगती है
Avalonia demo reel देखें तो .NET GUI stack से भी video editor या map analysis tool जैसी चीज़ें बनाई जा सकती हैं
Avalonia Showcase
अगर वह सिर्फ साधारण weather या to-do app तक सीमित है, तो उसका कोई मतलब नहीं
WPF और WinForms भी अब भी मौजूद हैं