.NET MAUI가 Avalonia 기반으로 Linux와 브라우저에 지원 확대
(avaloniaui.net)- Avalonia 기반 백엔드를 통해 .NET MAUI 애플리케이션이 Linux 데스크톱과 브라우저(WebAssembly)에서 실행 가능해짐
- 기존 MAUI 코드베이스를 유지하면서 렌더링 계층을 Avalonia로 교체하여 성능 향상과 플랫폼 확장을 동시에 달성
- Ubuntu, Debian, Fedora 등 데스크톱 Linux와 임베디드 Linux, WebAssembly 환경에서 동일한 렌더링 엔진으로 동작
- Windows와 macOS에서도 성능 2배 이상 향상이 관찰되며, 플랫폼별 차이 없이 일관된 UI 제공
- MAUI 개발자에게 Linux·웹 지원과 예측 가능한 개발 사이클을 제공하며, Avalonia 생태계 확장의 기반이 되는 프로젝트
Avalonia MAUI Backend 개요
- Avalonia MAUI Backend는 MAUI 코드베이스를 유지한 채 Avalonia 렌더링 계층으로 대체하는 구조
- 기존 MAUI 앱을 Linux, 브라우저 등 추가 플랫폼으로 확장 가능
- 데스크톱 성능 향상과 플랫폼 일관성 확보
- 실제 데모는 WebAssembly 기반 MAUI 앱으로, 브라우저에서 플러그인 없이 실행 가능
- 초기 빌드이지만 MAUI가 주요 데스크톱 OS와 브라우저에서 동작함을 입증
주요 플랫폼 지원
-
데스크톱 Linux 지원
- Ubuntu, Debian, Fedora 등에서 1급 데스크톱 앱으로 실행
- Avalonia 렌더러를 사용해 고성능 데스크톱 앱 수준의 품질 제공
-
임베디드 Linux 지원
- Raspberry Pi 패널, 산업용 HMI 등 임베디드 장치에서 Avalonia와 동일한 백엔드로 실행
-
WebAssembly 지원
- 브라우저에서 네이티브 종속성 없이 실행되는 MAUI 앱 구현
- 향후 브라우저 배포가 가능한 수준으로 발전 예정
-
Windows 및 macOS 지원
- Avalonia의 성숙한 데스크톱 렌더링 구조와 통합
- macOS에서는 Mac Catalyst 대비 2배 이상 성능 향상 관찰
개발 효율성과 일관성
- Avalonia 팀은 단일 플랫폼(Avalonia) 만을 대상으로 개발
- iOS, Android, Windows, macOS, Linux, WebAssembly 각각의 별도 구현 불필요
- 플랫폼별 버그나 렌더링 차이 감소
- 동일한 렌더링 엔진을 사용하므로 모든 플랫폼에서 동일한 UI 표현
- 기능 추가나 버그 수정 시 모든 플랫폼에 즉시 반영
- 개발 주기 단축과 예측 가능한 품질 확보
Avalonia가 MAUI 백엔드를 구축하는 이유
- .NET 클라이언트 개발자 지원을 우선시하며, MAUI 사용자가 리눅스·브라우저 지원과 성능 개선을 얻을 수 있도록 함
- 이 프로젝트를 통해 Avalonia는 모바일 친화성, API 문제, 툴링 개선점을 학습
- MAUI 개발자가 Avalonia 렌더러와 기능을 경험함으로써 생태계 유입 효과 기대
- 목표는 MAUI를 대체하는 것이 아니라, 기존 MAUI 개발자에게 더 넓은 선택지 제공
MAUI 개발자에게의 의미
- MAUI 개발자들이 지속적으로 요청해온 Linux 지원과 일관된 드로잉 기반 UI 모델을 제공
- Avalonia는 다음과 같은 기능을 제공
- 하드웨어 가속 렌더링
- 일관된 레이아웃·스타일 시스템
- 고주사율 애니메이션
- 커스텀 렌더링 및 시각 효과
- 광범위한 플랫폼 커버리지
- 지속적 투자와 지원을 받는 플랫폼
- Unity, JetBrains, Schneider Electric 등 상용 환경에서 이미 사용 중
- 기존 MAUI 코드를 유지하면서 Linux·웹·데스크톱 성능 개선을 동시에 달성
성능 및 차세대 렌더링
- GPU 친화적 드로잉 UI 스택으로 네이티브 툴킷보다 높은 성능 확보
- Google Flutter 팀과 협력하여 Impeller GPU 렌더러를 .NET에 도입 중
- 이 기술이 적용되면 MAUI 백엔드도 렌더링 속도 향상, 배터리 절감, 부드러운 애니메이션을 상속받게 됨
향후 계획
- MAUI 엔지니어들과의 협업을 통해 백엔드 품질 개선 지속
- Linux와 브라우저 지원이 성숙 단계에 도달하면, MAUI가 진정한 멀티플랫폼 UI 프레임워크로 완성
- 안정화 이후 MIT 라이선스로 오픈소스 공개 예정
- 개발 진행 상황과 벤치마크, 프리뷰를 지속적으로 공유 예정
Hacker News 의견
-
웹에 이런 기능을 가져온 건 정말 흥미로움
하지만 데모를 써보면 ‘웹 같다’는 느낌이 없음
Ctrl+F로 검색도 안 되고, 텍스트 선택이나 링크 주소 복사도 불가능함
모바일에서는 이미지 길게 눌러 공유도 안 되고, 스크린리더도 작동 안 함
이런 점들이 쌓여서 “이건 진짜 웹이 아니다”라는 인상을 줌
90년대 말 Java applet, 2000년대 초 Flash나 Silverlight처럼 브라우저와 단절된 섬 같은 리치 콘텐츠로 느껴짐- 전혀 사소한 문제가 아님
이런 기능이 없으면 정의상 ‘진짜 웹’이라고 할 수 없음
결국 “웹이란 무엇인가”라는 철학적 질문으로 이어짐
단순한 미디어 전송 수단인지, 아니면 더 큰 무언가인지 고민하게 됨
요즘 앱화(app-lification) 된 웹에 지친 사람들이 많고, 예전의 열린 웹을 그리워함 - 표준 웹 기능을 쓰지 않으면 접근성 악몽이 됨
스크린리더로 데모를 시도했는데 전혀 작동하지 않았음 - MAUI는 원래 웹용이 아님
Microsoft가 의도한 방향도 아님
Avalonia가 WASM을 지원하니까 MAUI를 그 위에 올리면 돌아가는 것뿐임
하지만 그건 그냥 데스크톱 GUI 툴킷을 WASM으로 렌더링하는 것과 같음
멋지긴 하지만 웹앱이라기보단 Silverlight의 현대판 느낌임
그래도 Linux 데스크톱을 타깃으로 할 수 있게 된 건 큰 장점임
MAUI가 각 플랫폼의 네이티브 컨트롤을 쓰는 대신 Avalonia처럼 모양이 통일된 렌더링을 선호하는 사람도 많을 것임 - 20년 경력의 .NET 개발자로서, 지금 이 시점에 이런 시도를 왜 하는지 모르겠음
현대 브라우저의 CSS/JS/HTML만으로도 대부분 가능함
XAML을 좋아하지만 JSX도 비슷한 개념이고, 실제 HTML로 컴파일됨
Silverlight 때도 같은 생각이었음 — 왜 계속 Flash를 다시 만들려 하는지 이해가 안 됨
Unity Web 빌드가 이미 더 나은 “C# Flash”임 - Ctrl+F나 텍스트 선택이 안 된다는 걸 보고 흥미가 확 식었음
이런 기본 기능이 안 되면 나에게는 비출발점(non-starter) 임
- 전혀 사소한 문제가 아님
-
Linux 데스크톱을 지원하지 않는 MAUI는 처음부터 고려 대상이 아니었음
이번 추가로 그나마 나아졌지만, 여전히 Avalonia를 직접 쓰는 게 낫다고 생각함
그래도 기존 프로젝트를 위해 이런 옵션이 생긴 건 반가움 -
드디어 Kotlin Multiplatform이나 Electron 말고도 느리고 이상한 애니메이션이 있는 “폰 스타일 UX” 앱을 Linux에서 만들 수 있게 됨
하지만 위젯 세트는 버튼과 체크박스 정도뿐이라 실망스러움
요즘 UI 툴킷 데모들이 왜 Delphi 1 시절 데모보다 못한지 의문임- 사실 Avalonia를 그냥 네이티브로 쓰면 됨
이미 Windows/Mac/Linux/WASM을 지원함
이번 작업은 기존 MAUI 앱을 Linux/WASM으로 확장하려는 사람들을 위한 것 같음 - Avalonia는 아직 Wayland 백엔드가 없지만, 우선순위로 개발 중임
진행 상황은 Avalonia 블로그에서 볼 수 있음
- 사실 Avalonia를 그냥 네이티브로 쓰면 됨
-
.NET 생태계에서 사람들이 MAUI를 꺼리는 이유 중 하나는 Microsoft 자신이 쓰지 않기 때문임
Teams조차 Electron 기반임
“MS도 안 쓰는 걸 왜 우리가 써야 하나”는 의문이 생김- 그건 역사적 이유임
Windows 부서는 WinUI/Win32를, Office는 React를, 개발자 부서는 WPF와 MAUI를 담당함
각 부서가 따로 움직이면서 UI 툴킷이 분산된 결과임
결국 모든 툴킷이 반쪽짜리 지원만 받게 됨 - 요즘 MS의 데스크톱 앱은 Electron 대신 WebView2를 직접 쓰는 경우가 많음
Teams도 Angular에서 React로 옮기며 그렇게 됨
그래도 MAUI를 안 쓰는 건 사실임
Avalonia나 WinForms 같은 검증된 기술을 선호하는 분위기임
MS가 장기적으로 뭘 밀어줄지 불확실함
Blazor도 있지만, 그건 React 대체보다는 내부용 앱 제작용에 가까움
참고로 Google도 Flutter를 자사 앱에 적극 쓰는지는 의문임 - Teams가 Electron 기반인 건 단순히 MAUI보다 먼저 나왔기 때문임
Teams는 2017년 출시, MAUI는 2022년 공개
React로 전환한 시점도 MAUI 이전임
다만 MS가 MAUI에 충분히 ‘dogfooding’ 하지 않는 건 우려스러움
최근 MAUI 관련 인력 감축 소식도 있었고, 내부 신뢰가 약해 보임
Flutter가 5년 먼저 출발한 점도 감안해야 함
그래도 MS가 MAUI에 전념하지 않는다는 인상은 지울 수 없음 - .NET 프론트엔드로는 절대 만들지 않음
항상 지원 중단으로 끝남
표준 웹 기술을 쓰는 게 정신 건강에 좋음 - 요즘 MS가 뭘 쓰는지는 참고할 가치가 별로 없음
(MAUI를 옹호하는 건 아님)
- 그건 역사적 이유임
-
혹시 헷갈릴까 봐 정리함
.NET MAUI는 원래 Android, iOS, macOS, Windows용 앱을 하나의 코드베이스로 만드는 프레임워크임
이번에 Linux와 브라우저가 추가된 것임
Mac에서 Hello World 앱을 만들어봤는데 설정이 꽤 복잡했음
그래도 오랜만에 XAML을 써보니 반가웠음- Flutter랑 비슷한가요?
-
개발용 소프트웨어를 만들면서 크로스플랫폼 GUI를 찾고 있었음
처음엔 MAUI를 시도했는데 설치부터 악몽이었음
기본 UI 기능조차 지원 안 됨
그다음 AvaloniaUI를 써봤는데 완전히 반대 경험이었음
설치도 간단하고, 약간의 검색만으로 투명한 무테 창 같은 것도 쉽게 구현했음
Visual Studio 통합은 조금 아쉽지만, MAUI보다 훨씬 앞서 있음 -
Silverlight의 부활 같음
참고: Microsoft Silverlight 위키 -
Chrome에서 데모가 거의 작동하지 않음
슬라이딩 퍼즐은 반응이 느리고, 뒤로가기 화살표가 멈춤
새로고침하면 처음 화면으로 돌아감
시간 선택기와 날짜 선택기도 정렬이 어긋나고 조작이 불편함
전반적으로 형편없음- 셔플 중에 뒤로가기를 누르면 앱 전체가 멈춤
관련 스레드
- 셔플 중에 뒤로가기를 누르면 앱 전체가 멈춤
-
“Launch MAUI in your browser” 섹션의 “Word puzzle” 데모를 실행했는데
‘Randomize’를 누르면 타일이 섞이다가, 상단 화살표로 돌아가면 화면이 완전히 잠김
배경엔 퍼즐이 남고, 메뉴는 위에 겹쳐서 아무것도 클릭 안 됨
여러 브라우저에서 동일하게 발생함
데모 링크- 셔플이 끝날 때까지 기다리면 돌아가긴 하지만, 마우스 조작감이 이상함
클릭-드래그가 불안정하고 시각적 피드백도 없음
타일이 움직이지 않고 순간이동함
차라리 클릭 한 번이나 애니메이션 이동이 나았을 것임
다른 사용자도 같은 문제 제기 - 계산기를 써봤는데 7/9 = 1로 나옴
RPN 계산기는 숫자를 스택에 넣을 수조차 없음
- 셔플이 끝날 때까지 기다리면 돌아가긴 하지만, 마우스 조작감이 이상함
-
진짜 CAD 프로그램을 만들 수 있는 UI 툴킷이 절실함
웹뷰처럼 보이는 앱은 이제 지겨움- 완전 공감함
지난 10년간의 웹 UI 트렌드가 너무 싫음
터치 중심으로 커지고, 여백 많고, 쓸데없는 애니메이션이 넘침
정보 밀도와 사용성 중심의 예전 UI로 돌아가고 싶음
일본 웹사이트들을 보면 그 점이 좋음 - 사실 CAD 같은 것도 GPU 렌더링 표면만 있으면 어떤 툴킷으로도 가능함
Avalonia 데모 릴을 보면 .NET GUI 스택으로도 비디오 편집기나 지도 분석 도구 같은 걸 만들 수 있음
Avalonia Showcase - 내 GUI 툴킷의 기준은 Photoshop급 소프트웨어를 만들 수 있는가임
단순한 날씨나 할 일 앱만 가능한 수준이면 의미 없음 - QT는 어떤가?
WPF와 WinForms도 여전히 존재함
- 완전 공감함