윈도우, 개발자 플랫폼으로 귀환 선언
마이크로소프트의 윈도우 전략이 달라지고 있다. 한동안 웹 기반 사용자 경험을 강조하던 윈도우 인사이더 빌드가 네이티브 코드 중심으로 방향을 선회했다. 빌드 2026에서는 개발자가 플랫폼을 활용하는 데 도움이 되는 툴과 기능에 초점을 맞춘 여러 발표를 통해 이 방향성을 한층 더 강화했다.
가장 눈에 띄는 부분은 마이크로소프트가 유지 관리하는 러스트 기반 uutils coreutils 패키지의 포크인 윈도우용 코어유틸(Coreutils for Windows)을 통해 표준 핵심 유닉스 유틸리티를 지원한다는 점이다. 윈도우용 코어유틸은 단일 바이너리로 설치되므로 업데이트하고 관리하기가 쉽다. 이 툴은 이름에서 알 수 있듯이 리눅스 가상머신이나 리눅스용 윈도우 하위 시스템(WSL)에서 사용하는 명령을 윈도우에서 구현한다.
코어유틸을 활용한 윈도우 터미널 작업
그동안 윈도우 개발자 환경의 많은 부분이 다시 설계된 윈도우 터미널을 통해 명령줄로 되돌아갔는데, 다양한 개발 환경 전반에 걸친 일관적인 경험의 필요성을 보여준다. WSL 또는 비주얼 스튜디오 원격 터미널을 통해 리눅스 환경과 윈도우 파워셸 및 cmd 환경 사이를 오가는 컨텍스트 전환은 매끄럽지 않고 불편하다.
필자는 윈도우에서 유닉스 명령을 입력하거나 반대로 유닉스에서 윈도우 명령을 입력하고는 오류 메시지가 뜬 다음에야 잘못 입력했음을 깨닫고 제대로 다시 입력하는 경우가 많다. 시간이 낭비되고, 터미널 버퍼에는 쓸데없는 내용이 들어간다.
마이크로소프트 코어유틸은 유닉스 명령을 알아서 처리한다. 동일한 명령 구문을 제공할 뿐만 아니라 출력 형식도 제대로 맞춰준다. 윈도우에서 ls -al을 입력해도 보기 좋게 정리된 디렉터리 목록이 표시되는 광경은 다소 생소하다. 그러나 일단 익숙해지면 모든 시스템에서 동일한 사용 경험을 통해 시간을 절약할 수 있다. 또한 새 터미널 탭을 열거나 SSH 세션에서 되돌아올 때마다 컨텍스트를 전환할 필요도 없다.
윈도우에서 코어유틸을 사용할 때 얻는 또 다른 장점은 유닉스 시스템용으로 작성된 스크립트를 윈도우로 이식할 수 있다는 점이다. 유닉스 스크립트 이식 기능은 빌드와 같은 일반적인 작업이나 맞춤형 함수를 작성하는 데 유용할 것이다.
다만 유의할 점은 윈도우용 코어유틸은 현재 프리뷰 버전이며, 모든 기능이 완전히 구현되지는 않았다는 점이다. 기존 cmd 및 파워셸 명령과의 충돌 가능성도 있는 만큼 예를 들어 익숙한 more나 dir 명령은 제공되지 않는다. 윈도우는 유닉스 시그널 모델을 지원하지 않기 때문에 kill과 같은 명령도 현재로서는 구현할 수 없다. 또한 POSIX에 포함되지만 윈도우에는 없는 그룹, 소유자와 같은 저수준 유닉스 개념을 기반으로 하는 명령도 제공되지 않는다. 마이크로소프트가 제공하는 프로젝트의 깃허브 Readme에서는 이런 문제점과 함께 도움이 될 만한 대안이 정리돼 있다. 예를 들어 윈도우에는 /dev/null이 없으므로 스크립트에서 이를 NUL로 대체할 수 있다.
시작하는 방법은 간단하다. 깃허브에서 최신 릴리즈를 다운로드하거나 winget을 사용해 명령줄에서 다운로드하고 설치할 수 있다. 현재로서는 업데이트 메커니즘과 제거 프로그램을 함께 제공하는 winget을 사용하는 방법을 권장한다. 윈도우 환경에 추가할 만한 가치가 있는 툴이다. 필자도 코어유틸 덕분에 이미 훨씬 더 편하게 작업하고 있다.
윈도우 디벨로퍼 컨피그로 빠른 설정
공개 출시된 또 하나의 중요한 툴은 윈도우 디벨로퍼 컨피그(Windows Developer Config)다. 클라우드에 호스팅되는 마이크로소프트 데브 박스(Dev Box)를 구성하는 데 사용되는 기술을 기반으로 하며, winget과 기타 툴을 사용해 윈도우에서 즉시 사용 가능한 개발 PC를 만들 수 있게 해준다. 리눅스 VM과 WSL에서도 동작하므로 자신의 툴체인과 기타 구성 요소로 코딩 환경을 구성할 수 있다.
디벨로퍼 컨피그 프로세스는 익숙한 툴을 설치하고 윈도우를 튜닝하는 winget 구성, 클라우드 네이티브 개발 시나리오와 워크로드를 활성화하는 스크립트, 그리고 원하는 셸, 홈브루(Homebrew)와 같은 배포 서비스와 사용 중인 배포판의 설치 및 업데이트 메커니즘에 맞춰 WSL을 구성하는 스크립트, 세 가지 요소로 구성된다.
세 가지 옵션은 오픈소스이며 필요한 모든 파일은 깃허브에 있다. 여기서 중요한 점은 이런 툴은 지향성이 뚜렷하지만 강제하지는 않는다는 것이다. 예를 들어 winget 구성을 확장해 코어유틸과 같은 기능을 추가하기를 원한다면 할 수 있다. 기본 구성은 데브 박스 클라우드 PC 가상머신을 가동할 때 제공되는 구성과 동일하며, 기존 툴이 필요에 따라 업데이트되도록 파워셸 기반의 필요 상태 구성(Desired State Configuration)을 포함해서 동일한 방법을 사용한다.
데브 박스와 동일한 환경을 제공하는 서비스는 마이크로소프트 입장에서 충분히 타당하다. 마이크로소프트는 이런 툴을 내부적으로 이미 사용해왔고, 자체 고속 네트워크 덕분에 클라우드 PC를 사용하기도 쉽다. 그러나 모두가 이와 동일한 환경을 갖추고 있지는 않다. 느린 네트워크와 클라우드 지연으로 인해 호스팅되는 가상 환경을 사용하기 어려운 사용자도 있다. 외부에서, 즉 대역폭이 불안정한 기차나 비행기 안에서도 깃 리포지토리를 사용해 작업을 하고자 하는 경우도 있을 것이다.
기본 디벨로퍼 컨피그로 PC를 설정하는 과정은 아주 쉽다. winget의 구성 서비스는 새 PC와 기존 PC에서 모두 동작하며 필요한 애플리케이션을 설치하고 필요한 업데이트를 수행하고 필요한 개발자 설정을 윈도우에 적용한다. 깃허브 리포지토리를 클론하는 방법으로 스크립트를 다운로드하거나(깃이 이미 설치된 경우), zip 아카이브를 다운로드하면 된다. 마이크로소프트는 두 가지 방법을 설명하면서 프로세스 시작에 필요한 명령과 옵션도 함께 정리해뒀다. WSL 설치 과정에서 PC가 재부팅될 수도 있는데, 재부팅이 되면 스크립트도 알아서 다시 시작된다. 또한 멱등적이므로 정기적으로 실행해서 구성 드리프트를 방지할 수 있다.
설치되는 앱에는 최신 파워셸, 깃, 깃허브용 CLI, 깃허브 코파일럿 CLI, 윈도우 앱 SDK, 비주얼 스튜디오 코드, 그리고 Node.js, 파이썬, 닷넷 언어 지원이 포함된다. 개발자 친화적인 글꼴과 윈도우 터미널용 테마 엔진도 함께 설치된다. 그 외에 파일 탐색기와 윈도우 작업 표시줄을 맞춤 설정하는 기능, 작업 집중을 위해 알림을 숨기는 기능도 제공된다.
더 편리하게 WSL 조정하기
WSL을 설치한 후에는 WSL 컴포트(Comfort) 스크립트를 사용해 부가적인 툴을 설치하고 윈도우 터미널을 맞춤 설정할 수 있다. 이 툴은 두 부분으로 구성된다. 윈도우 부분은 WSL과 우분투가 설치돼 있는지 확인하고 글꼴과 터미널 프로필을 설정한다. 이후 리눅스 부분이 WSL 환경을 조정하는데, 이때 zsh로 전환하거나 starship 터미널 디스플레이 툴을 사용할 수 있다. 그런 다음 널리 사용되는 여러 CLI와 홈브루 패키지 설치 프로그램을 추가한다. WSL에 새 리눅스 배포판을 설치할 필요 없이 기존 우분투 인스턴스를 타겟팅할 수 있다.
이렇게 해서 필요한 대다수 구성이 이미 설치된, 개발자에 중심을 둔 WSL 환경과 리눅스 개발 툴체인의 기반을 갖추게 된다(여기에는 필자가 즐겨 사용해서 기본 설치본에 이미 넣어둔 툴도 일부 포함돼 있음). 이 새로운 스크립트 덕분에 이제 수동으로 설치하거나 필요한 apt 리포지토리를 구성할 필요가 없다. 모두 자동으로 처리된다.
기반이 되는 winget 구성 툴을 사용해 특정 워크로드에 맞춰 개발 PC를 준비할 수 있다. 워크로드 디렉터리에 설치되며, 개발자가 선택한 플랫폼에서 작동하도록 환경을 설정해준다. 덕분에 타입스크립트나 자바를 사용하기 위해 필요한 모든 툴이 준비된다. 워크로드 설치 프로그램 중 일부는 많은 리소스를 다운로드한다. 예를 들어 WinUI 3 개발용으로 시스템을 설정하는 경우 몇 GB 용량의 비주얼 스튜디오와 윈도우 애플리케이션 SDK를 다운로드해야 한다. 시간도 걸리고, 저장 공간이 부족한 시스템이나 VM이라면 부담이 될 수 있다.
이미 많은 툴이 있지만 앞으로 더 추가될 예정이다. 로드맵에는 윈도우 파워토이 명령 팔레트용 플러그인도 포함돼 있으므로 나중에는 윈도우 디벨로퍼 컨피그를 아주 간단히 실행할 수 있게 될 것이다. 마이크로소프트는 그동안 윈도우에 부족했던 요소 중 하나를 채우고 있다. 개발자가 원하는 방식으로 맞춤 설정할 수 있는 환경을 빠르고 쉽게 구축하는 방법을 내놓은 것이다. 개발 팀은 이런 툴을 통해 코드와 아이디어를 공유하기 위해 필요한 여러 환경 간의 일관성을 실현하고, 다른 사람의 설정을 파악하는 데 시간을 낭비하지 않고 바로 키보드를 잡고 작업을 시작할 수 있다.