Electrobun – 초고속·초경량 크로스플랫폼 데스크톱 앱 프레임워크

19 hours ago 5

  • 메인 프로세스에 Bun, 네이티브 바인딩에 Zig를 사용하는 TypeScript 기반 데스크톱 앱 프레임워크
  • macOS, Windows, Ubuntu를 모두 지원하며, 인스톨러·자동 업데이트·차등 패치 아티팩트를 자동 생성
  • 창 제어, 메뉴, 단축키, 클립보드, 대화상자, 세션 저장소 등 완전한 데스크톱 기능 세트를 제공하며, OOPIF 기반의 안정적 웹뷰 구현
  • 내부 구조는 Bun의 FFI와 공유 메모리 모델을 활용해 다중 프로세스 환경에서도 효율성을 유지
  • Electron과 Tauri의 한계를 경험한 개발자가 2년간 Zig, C, C++, Objective-C를 학습하며 직접 개발
  • 5분 안에 코드 작성, 10분 안에 배포까지 가능한 통합 워크플로우가 목표

Electrobun 프로젝트 개요 및 목표

  • Bun으로 메인 프로세스를 실행하고 웹뷰 TypeScript를 번들링하며, Zig로 네이티브 바인딩을 작성하는 구조
  • 메인 프로세스와 웹뷰 모두 TypeScript로 작성하되, 프로세스 간 격리(isolation) 를 유지하면서 빠르고 타입이 지정된 RPC 통신 제공
  • 자체 추출 앱 번들 크기 약 12MB(시스템 웹뷰 사용 시, 대부분 Bun 런타임 크기)
  • bsdiff 기반 차등 업데이트로 패치 크기 최소 14KB까지 축소 가능
  • 5분 안에 코드 작성 시작, 10분 안에 배포까지 완료할 수 있는 하나의 통합 워크플로우 제공이 목표
  • npx electrobun init 명령어로 템플릿 기반 프로젝트 시작 가능

제작 배경

  • Visual Basic 6 시절부터 데스크톱 앱을 만들어 왔으며, Adobe AIR 시대에 여러 스타트업 제품을 수천 명에게 배포했던 경험이 원점
  • 20년 이상 스타트업 초기 엔지니어로 유니콘 규모 제품을 구축·확장해 왔지만, 데스크톱 개발 환경은 오히려 퇴보
  • 하이브리드 웹 브라우저+코드 에디터+PTY 터미널인 co(lab) 을 만들다가 너무 많은 불편함에 부딪혀 직접 프레임워크 제작을 결심
  • 첫 버전은 Electron으로 만들었으나, 코드 서명·공증·배포·업데이트 과정이 앱 개발보다 프레임워크와 싸우는 느낌
  • 웹처럼 지속적 배포(continuous shipping) 를 원했지만, 기존 툴체인이 이를 필요 이상으로 어렵게 만듦
  • Tauri도 시도했으나 Rust가 모든 개발자에게 적합하지 않다고 판단했고, 당시 Bun은 1.0 출시 수개월 전 상태여서 직접 개발에 착수

macOS에서 크로스플랫폼으로

  • 초기에는 macOS 앱만 빌드 가능했으나, 현재는 macOS, Windows, Ubuntu 모두에서 빌드·배포를 1급으로 지원
  • 인스톨러, 자동 업데이트 아티팩트, 차등 패치(differential patches) 가 모두 자동 생성됨
  • 정적 호스트(R2, S3, GitHub Releases)만 연결하면 배포 완료
  • 차등 업데이트는 C에서 Zig로 포팅하고 SIMD와 zstd로 최적화한 zig-bsdiff가 담당
  • Bun의 FFI가 안정화되면서 기존에 작성한 Zig FFI 계층 대부분을 Bun으로 대체
  • 아키텍처가 긍정적으로 전환되어, Bun이 워커 생성 시 공유 메모리를 사용하므로 다중 프로세스에서도 효율 유지

출시된 기능

  • 현재 완전한 프레임워크로서 크로스플랫폼 윈도우 컨트롤, 메뉴, 단축키(accelerators), 글로벌 숏컷, 클립보드, 다이얼로그, 웹뷰 파티션, 세션 스토리지, 페이지 내 검색(find-in-page), 번들링·업데이트 툴링 등을 제공
  • OOPIF(Out-of-Process Iframe) 구현이 실제로 동작하는 수준에 도달
    • Electron의 <webview> 태그는 Chromium에서 deprecated되었으나 아직 대안이 마련되지 않은 상태
    • <electrobun-webview> 는 DOM 포지셔닝, 프로세스 격리, 레이어링이 정상 작동하는 진정한 "super iframe"
    • 커서 깜빡임(cursor flicker) 문제 없이, 브라우저 엔진 패치 없이 크로스플랫폼 동작

플랫폼 지원 현황

  • macOS 14+: 공식 지원
  • Windows 11+: 공식 지원
  • Ubuntu 22.04+: 공식 지원
  • 기타 Linux 배포판(gtk3, webkit2gtk-4.1): 커뮤니티 지원

향후 계획

  • co(lab)을 Electrobun 위에 전면 재작성 완료, v1 안정화를 기반으로 co(lab) 개발에 본격 집중
  • 프레임워크가 플랫폼 변동(platform churn) 에 흔들리지 않고 야심찬 장기 프로덕트를 구축할 수 있을 만큼 안정화된 것이 핵심 목표
  • Discord 커뮤니티가 성장 중이며, 베타 테스트·이슈 제출·피드백으로 기여한 사용자들이 프레임워크 형성에 기여
  • Electrobun은 Blackboard 에서 출시하는 첫 번째 주요 프로덕트

Read Entire Article