Rust UI 생태계에서 이건 지금까지 본 것 중 가장 완성도 높은 컴포넌트 컬렉션처럼 보임
아직 사용 사례는 거의 없지만, 문서가 점점 잘 정리되고 있음
비슷하게 완성도가 높은 다른 예로는 fyrox-ui가 있음. 다만 fyrox 엔진 외부에서는 거의 쓰이지 않음
Rust UI는 점점 성숙해지고 있지만, iced, egui, dioxus, slint 같은 인기 프레임워크들이 컴포넌트 완성도 면에서는 아직 부족해 보임
업데이트하자면, 이 프로젝트는 Rust UI 생태계에서 큰 진전을 보여줌.
모든 컴포넌트를 볼 수 있는 위젯 갤러리 앱을 여기서 실행할 수 있음 — cargo run --release로 바로 가능함
gpui는 Zed Editor에서 분리된 프로젝트라, 실제 사용량은 다른 Rust UI 크레이트보다 훨씬 많을 것 같음
Fyrox는 Rust 게임 개발에 대한 회의감을 주는 존재임. 가장 성숙한 엔진인데도 아무도 쓰지 않음. 반면 Bevy의 ECS에만 사람들이 열광함. 결국 시스템 자체에만 흥미가 있었지, 진짜 게임을 만들고 싶었던 건 아닌 듯함
Rust UI 프레임워크들이 아직 빠르게 변화 중이라 완성도가 낮아 보이는 것 같음. 그래도 모멘텀은 확실히 있음. 나 혼자만의 경험이지만, 이미 Rust로 엔터프라이즈급 UI를 만들 수 있었음
Longbridge 앱을 직접 설치해봤는데, 진짜 Mac 네이티브 앱처럼 자연스럽게 동작함. Electron보다 훨씬 부드럽게 실행됨
위젯 갤러리 앱은 인상적이지만, 900개 이상의 의존성이 있다는 점이 조금 걱정됨. GUI 앱에서는 이 정도가 일반적인지는 잘 모르겠음
가장 단순한 예제조차 1000개 이상의 의존성을 가짐. GTK, GDK, pango 같은 툴킷에 의존하고 있음. 다른 툴킷을 또 의존하는 구조가 좀 이상하게 느껴짐
GNOME이 서버 사이드 데코레이션을 구현하지 않아서 libadwaita에 의존해야 함. 이게 GTK 관련 의존성을 다 끌어오는 원인 같음
Linux에서는 이런 구조가 흔함. 상위 윈도우나 메뉴를 그리기 위해 GTK나 Qt를 사용하는 게 일반적임
작고 조합 가능한 의존성 1000개가 낫다고 생각함. 거대한 단일 코드베이스보다 훨씬 감사(audit)하기 쉬움
요즘 Rust 프로젝트들이 점점 이런 식으로 커지는 게 아쉬움
오픈소스의 많은 기반 기술이 트레이딩·크립토 회사에서 만들어지는 게 씁쓸함. 그래도 사회에 뭔가 기여한다는 점은 긍정적임
gpui는 Zed.dev 팀이 유지하고 있고, Longbridge는 Longbridge Pro 앱을 만드는 일반 브로커리지 회사로 보임. 특별히 문제될 건 없어 보임
비트코인 정신이 해커 문화와 닮았다고 생각함. “망가진 걸 고치자”는 태도 말임. 단기적 고통이 장기적 이익으로 이어질 수도 있음
Rust나 OCaml(Jane Street) 같은 일부 생태계에서는 그런 경향이 있지만, 전체적으로는 과장된 주장 같음
React를 만든 Facebook은 Cambridge Analytica 스캔들이나 로힝야 학살 같은 사건에 연루됐음. 그런 점에서 보면, 트레이딩/크립토 회사들이 오픈소스에 기여하는 건 오히려 도덕적으로 나은 일일 수도 있음
요즘 “모던” UI 툴킷들은 시각적 UI 에디터가 없는지 궁금함
Qt는 QtCreator나 QtDesigner 같은 도구로 드래그 앤 드롭만으로 UI를 만들 수 있었음
또, Qt 관련 비교표의 일부 항목이 틀렸음 — 예를 들어 최소 바이너리 크기나 QSyntaxHighlighter 설명 등
Slint 같은 프레임워크는 Figma 통합을 지원해서 Qt Design Studio처럼 쓸 수 있음. 예전 네이티브 GUI 디자이너들이 얼마나 강력했는지 요즘은 잘 모르는 듯함
완성도 높은 컴포넌트 라이브러리를 기반으로 하면 이런 시각적 에디터도 Rust에서 구현 가능함. XML/마크업 기반 구조를 매크로로 연결하고, 실시간 미리보기 앱을 만들면 Glade나 XAML처럼 동작할 수 있음
Qt의 최소 크기는 실제로는 20MB보다 작지만, 일반적으로는 30~40MB 정도임. Core, Gui, QML, Widget 모듈이 각각 8MB 정도라 Hello World도 2~3개는 필요함
Qt Designer는 단순한 UI에는 괜찮지만, 커스텀 스타일링을 적용하면 금방 망가짐. 그래서 결국 수동으로 UI 파일을 작성했음. 훨씬 깔끔하고 작아졌음
Qt6가 테마를 지원하지 않는다는 건 완전히 틀린 주장임
아쉽게도 이건 프레임워크임. 즉, 자체 이벤트 루프를 가져야 함
이미 다른 루프가 있는 환경에서는 통합이 어려움. 반면 egui는 단순히 프레임마다 호출되는 라이브러리형 구조임
시각장애인용 스크린 리더 접근성이 잘 동작하는지 궁금함
직접 실행해보진 않았지만, 공식 문서에 따르면 ARIA 규격을 지원함. 필요한 라벨과 설명만 추가하면 됨
하지만 Zed Editor는 스크린 리더에 완전히 불투명함. 그래서 큰 기대는 하지 않음
새로운 UI 프레임워크를 볼 때마다 내가 제일 먼저 묻는 게 바로 접근성임
“네이티브”라는 게 웹이 아니라는 뜻인지, 아니면 OS의 기본 위젯을 사용하는지 궁금함. Java 진영도 이 차이를 크게 겪었음
macOS만이 진짜 네이티브 앱을 만들 수 있는 플랫폼임. Linux는 GTK/Qt로 나뉘고, Windows는 너무 많은 프레임워크가 섞여 있어서 WebView조차 네이티브처럼 보일 수 있음
여기서 말하는 네이티브는 “웹이 아님”이라는 뜻임. GPU API로 직접 그리는 구조임
즉, 네이티브 실행 파일이지, OS 위젯을 쓰는 건 아님
OS 통합은 없고, 완전히 자체 렌더링 방식임
이 프레임워크가 접근성(a11y) 을 구현했는지 궁금함. Rust UI들은 종종 예쁘지만 접근성 요구가 생기면 전면 재작성해야 함
접근성을 중시한다면 Dioxus를 고려할 만함. 다만 이 정도로 완성된 컴포넌트 라이브러리는 아직 없음
GPUI는 Zed 팀이 만든 기반 위에 있지만, 스크린 리더에는 여전히 불투명함. 접근성이 중요하다면 Slint나 Qt(cxx-qt) 쪽이 낫고, System76이 Iced를 채택했으니 그쪽도 개선될 듯함
접근성은 구현되어 있음
가상화된 리스트와 테이블 기능이 정말 훌륭함. 많은 UI 프레임워크들이 이걸 직접 구현해야 해서 불편했음
Rust에는 GUI 툴킷은 많지만, 재사용 가능한 컴포넌트 컬렉션은 부족함
이 컬렉션은 유용해 보이지만, 대부분 웹 프레임워크의 컴포넌트 목록과 비슷함. 네이티브 특화 요소는 webview 정도뿐임. 파일 열기 대화상자 같은 건 rfd 같은 외부 라이브러리를 써야 해서 스타일 일관성이 깨짐
스타일 일관성이 깨지는 건 오히려 좋은 일임. 사용자는 앱 간의 일관성을 원함. 즉, OS 네이티브 대화상자가 더 익숙함. Blender나 Photoshop 같은 전문 소프트웨어는 예외지만, 일반 앱은 네이티브가 낫다고 봄
대부분의 UI 라이브러리도 최소한의 네이티브 통합은 필요함. 단축키, 시스템 메뉴, 파일 대화상자, 컨텍스트 메뉴 같은 것들 말임. 이런 부분이 사용자 친숙도를 높임
Hacker News 의견
Rust UI 생태계에서 이건 지금까지 본 것 중 가장 완성도 높은 컴포넌트 컬렉션처럼 보임
아직 사용 사례는 거의 없지만, 문서가 점점 잘 정리되고 있음
비슷하게 완성도가 높은 다른 예로는 fyrox-ui가 있음. 다만 fyrox 엔진 외부에서는 거의 쓰이지 않음
Rust UI는 점점 성숙해지고 있지만, iced, egui, dioxus, slint 같은 인기 프레임워크들이 컴포넌트 완성도 면에서는 아직 부족해 보임
업데이트하자면, 이 프로젝트는 Rust UI 생태계에서 큰 진전을 보여줌.
모든 컴포넌트를 볼 수 있는 위젯 갤러리 앱을 여기서 실행할 수 있음 —
cargo run --release로 바로 가능함가장 단순한 예제조차 1000개 이상의 의존성을 가짐. GTK, GDK, pango 같은 툴킷에 의존하고 있음. 다른 툴킷을 또 의존하는 구조가 좀 이상하게 느껴짐
오픈소스의 많은 기반 기술이 트레이딩·크립토 회사에서 만들어지는 게 씁쓸함. 그래도 사회에 뭔가 기여한다는 점은 긍정적임
요즘 “모던” UI 툴킷들은 시각적 UI 에디터가 없는지 궁금함
Qt는 QtCreator나 QtDesigner 같은 도구로 드래그 앤 드롭만으로 UI를 만들 수 있었음
또, Qt 관련 비교표의 일부 항목이 틀렸음 — 예를 들어 최소 바이너리 크기나 QSyntaxHighlighter 설명 등
아쉽게도 이건 프레임워크임. 즉, 자체 이벤트 루프를 가져야 함
이미 다른 루프가 있는 환경에서는 통합이 어려움. 반면 egui는 단순히 프레임마다 호출되는 라이브러리형 구조임
시각장애인용 스크린 리더 접근성이 잘 동작하는지 궁금함
“네이티브”라는 게 웹이 아니라는 뜻인지, 아니면 OS의 기본 위젯을 사용하는지 궁금함. Java 진영도 이 차이를 크게 겪었음
이 프레임워크가 접근성(a11y) 을 구현했는지 궁금함. Rust UI들은 종종 예쁘지만 접근성 요구가 생기면 전면 재작성해야 함
가상화된 리스트와 테이블 기능이 정말 훌륭함. 많은 UI 프레임워크들이 이걸 직접 구현해야 해서 불편했음
Rust에는 GUI 툴킷은 많지만, 재사용 가능한 컴포넌트 컬렉션은 부족함
이 컬렉션은 유용해 보이지만, 대부분 웹 프레임워크의 컴포넌트 목록과 비슷함. 네이티브 특화 요소는 webview 정도뿐임. 파일 열기 대화상자 같은 건 rfd 같은 외부 라이브러리를 써야 해서 스타일 일관성이 깨짐