본문으로 건너뛰기
피드

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

요즘 픽셀 폰트가 그냥 복고 감성이 아닌 이유

1990년대 기기 화면 느낌을 현대 폰트 시스템으로 재해석한 픽셀 폰트 몇 가지를 소개한 글이다. 핵심은 예쁜 복고풍 글자 모양만이 아니라, 실제 제품에서 쓸 수 있게 기준선, 자간, 메타데이터, 세로 메트릭까지 챙기는지가 중요하다는 점이다.

frontend

HTML의 `<dl>`이 생각보다 쓸모 많은 이유

이 글은 HTML의 description list, 즉 `<dl>`, `<dt>`, `<dd>`가 단순 용어 사전용 태그가 아니라 이름-값 쌍 UI를 표현하는 꽤 강력한 시맨틱 도구라고 설명한다. 숙소 편의시설, 요금 내역, 기술 용어 설명, 게임 능력치표처럼 흔한 패턴을 중첩 `<div>` 대신 의미 있는 HTML로 만들 수 있다는 얘기다.

frontend

HTML을 캔버스 안에 넣는 데모 모음이 등장함

구글 크롬 랩스 저장소에 HTML-in-Canvas 관련 데모와 프레임워크 지원 목록이 정리됐다. Duck Hunt 스타일 폼, 흔들리는 버튼, 셰이더 기반 페이지 전환, 천처럼 매달린 폼 같은 실험적 예제가 포함돼 있고 Three.js와 PlayCanvas 쪽 샘플도 연결돼 있다.

frontend

싱글 페이지 앱이 웹을 너무 비싸게 만들었다는 불평

이 글은 싱글 페이지 앱(SPA)이 사용자 경험을 좋게 만든다는 명분 아래 웹의 초기 로딩 비용, 도구 복잡도, 개발 진입 장벽을 키웠다고 비판한다. 페이스북 로그인 페이지의 CSS 3.8MB, 레딧 몇 개 클릭 후 33MB 다운로드 같은 숫자를 들며, 지금의 프론트엔드 생태계가 사람보다 대기업의 요구에 맞춰져 있다고 주장한다.

frontend

네이티브로 끝까지 가려다 텍스트에서 막힌 macOS 개발자의 고백

20년 가까이 macOS와 iOS 네이티브 개발을 해온 작성자가 SwiftUI, AppKit, TextKit 2로 마크다운 채팅 UI를 만들다 결국 WebKit과 Electron 쪽이 훨씬 낫다는 결론에 도달한 글이다. 문제는 성능 하나가 아니라 선택, 스트리밍, 스크롤, 접근성, 텍스트 상호작용 같은 ‘사용자가 당연히 기대하는 기본기’가 네이티브 조합에서 계속 깨진다는 점이다.