본문으로 건너뛰기
피드

MS는 Petzold 이후로 일관된 GUI 전략이 없었다 — 30년간의 프레임워크 혼란사

frontend 약 9분
vote
0
댓글
북마크

1988년 Petzold의 Programming Windows 이후 MS는 MFC, WPF, Silverlight, Metro, UWP, WinUI 3까지 30년간 GUI 전략을 14번 바꿨음. 모든 실패의 원인은 기술이 아니라 Windows 팀 vs .NET 팀 내전, 컨퍼런스 주도 미성숙 플랫폼 베팅, 사업 전략 피벗이었음.

  • 1

    MS 내부 회의에서 '새 Windows 앱에 어떤 프레임워크 쓰지?'에 아무도 답 못 함

  • 2

    Longhorn 실패 → Windows 팀의 매니지드 코드 불신 → 13년 내전의 시작

  • 3

    Silverlight, Metro, UWP 모두 기술적 실패가 아닌 조직적/정치적 실패

  • 4

    현재 Windows에서 작동하는 GUI 기술이 17개, 5개 언어, 3개 렌더링 철학

  • "Windows 데스크톱 앱을 만들려면 어떤 프레임워크를 써야 하나요?" — 이 질문에 MS 내부 회의에서 아무도 대답 못 하고 정적이 흘렀다는 게 이 글의 출발점
    • 누구는 WPF, 누구는 WinUI 3, 누구는 Electron을 제안. 회의는 산으로 갔고 결론은 안 남
    • 플랫폼이 "UI를 어떻게 만들어야 하나?"에 10초 안에 답 못 하면, 그건 실패한 거라는 게 글쓴이 주장

마지막으로 명확했던 시절 (1988)

  • Charles Petzold의 Programming Windows — 이게 마지막 "전략"이었음
    • Win16 API, C 언어. 852페이지지만 하나의 일관된 답을 제공
    • Win32도 마찬가지. 메시지 루프, 윈도우 프로시저, GDI. 정신 모델이 좀 이상하긴 했지만 하나의 정신 모델
    • "하나의 OS, 하나의 API, 하나의 언어, 하나의 책" — 이후로 이런 명쾌함은 다시 없었음

30년간의 Boof-a-rama

  • MFC → OLE → COM → ActiveX (1992~2000) — GUI 프레임워크가 아니라 컴포넌트 아키텍처인데 Windows 개발 전체를 감염시킴

    • "OLE 문서, COM 객체, ActiveX 컨트롤의 차이"를 설명하는 컨퍼런스 세션을 듣는데 발표자가 외계어를 하는 것 같았다는 회고
    • MS가 일관된 스토리를 판 게 아니라 기술 프리미티브를 던져놓고 "알아서 조합하세요" 한 셈
  • PDC 2003 Longhorn 비전 → 역대급 리셋

    • WinFS(관계형 파일시스템) + Indigo(통합 통신) + Avalon(후에 WPF) — 개발자들 열광
    • 2004년 1월 내부 메모: "돼지(a pig)다". 8월에 전면 리셋 발표. Server 2003 코드베이스에서 재시작
    • 결정적인 지시: "Windows에 매니지드 코드 쓰지 마라. 전부 C++로"
    • 이때 생긴 Windows 팀 vs .NET 팀의 원한이 13년간 내전으로 이어짐
  • Silverlight (2007~2010) — "패턴의 확립"

    • WPF 기반 브라우저 플러그인. Flash 대항마. 기술적으로 훌륭했음
    • MIX 2010 Q&A에서 MS 임원이 "Silverlight는 크로스 플랫폼 전략이 아니라 Windows Phone용" 발언
    • Silverlight 팀은 이 발표를 사전에 전달받지 못함. LOB 앱을 Silverlight에 베팅한 개발자들은 컨퍼런스 Q&A로 이 사실을 알게 됨
    • 기술적 실패가 아니라 사업 전략 결정에 의한 사망. 개발자는 항상 마지막에 통보받음
  • Metro / WinRT (2012) — 두 팀의 전쟁이 표면화

    • iPhone 2억대, iPad가 PC 잠식 → MS의 답은 Windows 8 + Metro
    • WinRT는 .NET 위가 아닌 네이티브 C++ 런타임. Windows 팀의 .NET 원한이 여기서 폭발
    • //Build 2012에서 개발자가 들은 메시지: "미래는 WinRT, 그리고 HTML+JS도 일급, .NET도 여전히 OK, C++도 부활, Metro 앱 만들어라, WPF도 잘 돌아감" → 이건 전략이 아니라 헝거 게임
    • 엔터프라이즈 개발자들은 UWP 샌드박싱 + 스토어 배포 강제 + Win32 API 누락 보고 바로 떠남
  • UWP → WinUI 2 → WinUI 3 → Project Reunion → Windows App SDK (2015~현재)

    • "한 번 작성, PC/폰/Xbox/HoloLens에서 실행" — 그런데 Windows Phone은 죽어가고 있었고, MS 자체 앱(Office, VS)도 UWP 안 쓰고 있었음
    • 공식 답변이 "it depends"가 됨. UWP 쓰세요, 기존 건 WPF 유지하세요, XAML Islands로 모던 API 추가하세요, WinUI 3 기다리세요...
    • 한 개발자의 2024년 후기: "UAP, UWP, C++/CX → C++/WinRT, XAML Islands, XAML Direct, Project Reunion, WinAppSDK, WinUI 2→3... 14년간 14번의 피벗"

⚠️주의

> 현재 Windows에서 실제로 작동하는 GUI 기술이 17개. 5개 프로그래밍 언어, 3개 렌더링 철학. Win32(1985), MFC, WinForms, WPF, WinUI 3, MAUI, Blazor Hybrid, WebView2, Electron, Flutter, Tauri, Qt, React Native for Windows, Avalonia, Uno Platform, Delphi, Java Swing/JavaFX.

왜 이렇게 됐나

  • 모든 실패한 GUI 이니셔티브의 원인은 딱 세 가지

    • 내부 팀 정치 (Windows 팀 vs .NET 팀)
    • 개발자 컨퍼런스 발표가 미성숙한 플랫폼 베팅을 몰고 감 (Metro, UWP)
    • 사업 전략 피벗이 개발자를 사전 경고 없이 고아로 만듦 (Silverlight)
    • 기술적 실패는 하나도 없었음. WPF도 좋았고, Silverlight도 좋았고, XAML도 좋았음. 조직적 실패가 제품이 된 것
  • Petzold는 6판까지 쓰다가 Windows 8 WinRT 편을 마지막으로 그만뒀음 (2012)

    • 글쓴이: "그를 탓하지 않는다"

중요

> 글쓴이의 핵심 테제 — "채택, 투자, 유지보수, 마이그레이션을 아우르는 성공의 개연성 있는 이론(Plausible Theory of Success)이 있거나, 아니면 개발자 컨퍼런스 키노트가 있거나. 하나는 전략이고 다른 하나는 30년짜리 삽질이다."


기술 맥락

  • WPF(Windows Presentation Foundation)가 2006년에 나왔을 때 XAML 선언형 UI + GPU 가속 렌더링 + 데이터 바인딩을 한 번에 들고 왔거든요. 당시로서는 꽤 혁신적이었는데, 문제는 Windows 팀이 Longhorn 실패 트라우마로 매니지드 코드 자체를 불신하게 됐다는 거예요. 기술이 아니라 조직 트라우마가 플랫폼 전략을 좌우한 케이스예요

  • P2P(Point-to-Point) 아키텍처 vs P2MP(Point-to-Multipoint)가 스위스 인터넷 기사에도 나오는데, 여기서의 P2P는 네트워크 토폴로지 얘기가 아니라 MS의 Windows 8 WinRT가 네이티브 C++로 간 건 기술적 판단이 아니라 정치적 판단이었다는 맥락이에요. .NET 팀이 Longhorn에서 매니지드 코드로 OS를 만들려다 실패했고, 그 후유증으로 Windows 팀이 "managed code = 위험"이라는 도그마를 갖게 된 거거든요

  • Electron이 "MS와 아무 상관없이" Windows에서 가장 널리 쓰이는 데스크톱 GUI 기술이 됐다는 게 통렬해요. VS Code, Slack, Discord가 전부 Electron인데, 이건 MS가 30년간 답을 못 내놓은 사이에 웹 기술이 그 자리를 차지해버린 거예요

  • Avalonia나 Uno Platform 같은 커뮤니티 프로젝트가 "MS보다 WinUI에 더 헌신적"이라는 표현도 나오는데, 이건 플랫폼 오너가 자기 플랫폼을 포기하면 서드파티가 대신 짊어지는 패턴이에요. JetBrains, GitHub, Unity가 Avalonia를 쓰고 있다는 건 엔터프라이즈 수준에서 MS 공식 답변을 기다리는 걸 포기했다는 시그널이거든요

기술 선택이 아닌 조직 정치가 플랫폼 전략을 좌우한 30년의 기록. 데스크톱 앱 개발자라면 현재 프레임워크 선택의 맥락을 이해하는 데 필수 읽을거리.

댓글

댓글

댓글을 불러오는 중...

frontend

타입스크립트 7.0, Go 네이티브 포팅으로 빌드가 8~12배 빨라졌다

마이크로소프트가 타입스크립트 7.0을 출시하면서 기존 자바스크립트 기반 구현을 Go로 네이티브 포팅했다. 전체 빌드는 평균 8~12배 빨라졌고, VS코드 빌드는 125.7초에서 10.6초로 줄었으며, 슬랙은 CI 타입 검사 시간을 7.5분에서 1.25분으로 낮췄다.

frontend

타입스크립트 7 공개, 고 포팅으로 빌드가 최대 10배 이상 빨라짐

마이크로소프트가 고(Go)로 네이티브 포팅한 타입스크립트 7을 공개했다. 전체 빌드는 보통 8~12배 빨라지고, VS 코드 코드베이스에서는 125.7초가 10.6초로 줄었으며, 편집기 첫 오류 표시도 17.5초에서 1.3초 미만으로 내려갔다.

frontend

“98% 지원”이 생각보다 별로 안 넉넉한 이유

브라우저 기능 지원률 98%는 얼핏 높아 보이지만, 실제 서비스에서는 2%의 사용자를 깨진 화면 앞에 세우는 숫자일 수 있다는 글이다. 특히 일반 통계와 내 서비스 방문자 분포는 다를 수 있고, 실제 사례로 어떤 사이트는 최신 중첩 CSS 기능 지원 브라우저가 방문자의 약 70%뿐이었다.

frontend

메타, AI가 읽고 쓰는 디자인 시스템 ‘Astryx’ 오픈소스로 공개

메타가 내부 디자인 시스템 Astryx를 오픈소스로 공개했다. React와 StyleX 기반의 150개 이상 접근성 지원 컴포넌트, 디자인 토큰, 테마, 템플릿, CLI를 제공하며, 특히 AI 에이전트가 컴포넌트 구조를 이해하고 UI를 생성·수정할 수 있도록 MCP 서버까지 포함한 점이 핵심이다.

frontend

shadcn/ui, 기본 컴포넌트 라이브러리를 Radix에서 Base UI로 변경

shadcn/ui가 새 프로젝트의 기본 컴포넌트 라이브러리를 Radix가 아니라 Base UI로 바꿨어. Radix 지원은 계속되지만, Base UI가 안정화됐고 주간 다운로드 600만 이상, shadcn/create 신규 프로젝트 선택 비율 2대1이라는 이유로 기본값을 바꾼 거야. 동시에 채팅 UI용 MessageScroller와 관련 컴포넌트, headless 패키지인 @shadcn/react도 공개됐어.