WebKit, 왜 개발자들을 힘들게 하는가? Tauri 개발자의 솔직한 고백

by DD
4개월 전
조회수 22

Tauri 기반 원격 페어 프로그래밍 앱 Hopp 개발자가 WebKit의 문제점을 지적하며, 호환성, 성능, 기능 지원 부족을 구체적인 사례와 함께 설명함.

SVG 그림자 효과(SVG Shadows), iOS에서의 예기치 않은 오류(Unexpected Errors), 오래된 User Agent(Stale User Agent) 등 WebKit의 다양한 문제점을 언급하며 개발의 어려움을 토로함.

WebRTC 지원 부족(Lack of WebRTC Support)AV1 코덱(AV1 Codec) 지원 제한으로 인해 Linux 지원에 어려움을 겪고 있으며, Chrome과의 차이점을 비교함.

Tauri의 CEF(Chromium Embedded Framework) 지원 부재Electron으로의 전환 대신, Rust 기반 윈도우(Rust-based Window)로 전환하여 문제 해결 및 성능 향상을 모색함.

WebKit의 호환성 문제와 개발 생산성 저하

Hopp 개발자는 WebKit의 SVG 그림자 효과(SVG Shadows) 렌더링 문제와 iOS에서의 예측 불가능한 오류(Unpredictable Errors)를 겪으며 개발 생산성 저하를 경험했다. 특히, iOS에서 3개의 GIF 이미지를 로드하는 것만으로 웹 페이지가 충돌하는 문제를 겪었으며, 이는 WebKit의 호환성 문제로 인한 것이다. 이러한 문제 해결을 위해 IntersectionObserver를 사용하여 렌더링을 제어하는 등 추가적인 노력이 필요했다.

User Agent 문제와 기능 지원의 어려움

WebKit의 User Agent(사용자 에이전트)가 항상 오래된 버전으로 고정되어 있어, 특정 기능의 지원 여부를 판단하는 데 어려움을 겪었다. 특히, LiveKit의 Krisp 통합 시 WebKit의 오래된 버전으로 인해 기능 지원 여부를 정확하게 파악할 수 없었다. 이러한 문제를 해결하기 위해 EAFP(Easier to Ask Forgiveness than Permission) 접근 방식을 사용하여 LiveKit SDK를 수정해야 했다. 이는 WebKit의 구현 일관성 부족(Inconsistent Implementation)으로 인한 문제이다.

WebRTC 및 코덱 지원의 한계

WebKitGTK는 기본적으로 WebRTC를 지원하지 않아 Linux 지원에 어려움을 겪었으며, AV1 코덱 지원 또한 제한적이다. Chrome은 하드웨어 가속이 불가능할 경우 소프트웨어 구현으로 대체하여 AV1 코덱을 지원하지만, WebKit은 그렇지 않다. 이러한 코덱 지원의 차이(Codec Support Differences)는 개발자가 다양한 환경에서 일관된 사용자 경험을 제공하는 데 어려움을 준다.

Rust 기반 윈도우 전환의 기술적 이점

Hopp 개발자는 WebKit의 문제점을 해결하고, WebRTC 관련 로직(WebRTC Logic)을 백엔드로 이동하기 위해 Rust 기반 윈도우로 전환하기로 결정했다. Rust를 사용하면 여러 WebKit 윈도우와 별도의 백엔드 간의 데이터 동기화(Data Synchronization) 문제를 해결하고, 단일 참여자(Single Participant) 기반의 통신을 구현할 수 있다. 또한, 백엔드에서 코덱을 제어함으로써 브라우저의 제약에서 벗어나 다양한 코덱 지원(Diverse Codec Support)이 가능해진다.

Why I hate WebKit: A (non) love letter from a Tauri developer