본문으로 건너뛰기
피드

고스트티 만든 미첼 하시모토가 말하는 터미널, 지그, 오픈소스의 진짜 문제

open-source 약 16분
vote
0
댓글
북마크

미첼 하시모토가 고스트티(Ghostty)를 만들게 된 이유, 터미널의 미래, 오픈소스 유지보수자의 책임, 지그(Zig)의 변화 철학을 길게 풀어낸 인터뷰다. 핵심은 터미널을 브라우저처럼 키우자는 게 아니라, 텍스트 기반 앱이 가진 자동화·조합성의 장점을 더 잘 살리는 프로토콜과 제품 철학이 필요하다는 얘기다.

  • 1

    고스트티는 빠르고 기능 많은 네이티브 크로스플랫폼 터미널이라는 빈틈에서 시작됨

  • 2

    하시모토는 터미널을 범용 앱 플랫폼으로 과하게 확장하기보다 텍스트 앱의 조합성과 자동화를 강화해야 한다고 봄

  • 3

    PTY의 인밴드 시그널링과 두 개뿐인 화면 모델은 현대 터미널 앱에 한계가 있음

  • 4

    오픈소스 사용자는 유지보수자에게 제품 수준의 의무를 요구하기보다 포크와 수정의 자유를 더 적극적으로 써야 한다는 입장

  • 5

    지그의 큰 변경은 고통스럽지만, AI가 대규모 마이그레이션 비용을 낮춰 호환성의 의미를 바꾸고 있다는 관찰이 나옴

고스트티는 ‘터미널이 궁금해서’ 시작한 프로젝트였음

  • 미첼 하시모토는 바그란트(Vagrant), 패커(Packer), 컨설(Consul), 테라폼(Terraform), 볼트(Vault), 노매드(Nomad)를 만든 그 사람임

    • 지금은 터미널 에뮬레이터 고스트티(Ghostty)와 바우치(Vouch)를 만들고 있음
    • 이번 인터뷰는 창업담이나 제품 홍보보다, 터미널·지그·오픈소스 철학 쪽으로 깊게 들어감
  • 고스트티의 출발점은 “터미널 에뮬레이터가 실제로 어떻게 돌아가는지 모르겠다”는 호기심이었음

    • 하시모토는 약 15년 동안 CLI 앱을 만들었지만, 정작 터미널 내부 구조는 제대로 몰랐다고 함
    • 해시코프를 떠난 뒤 기술 감각을 다시 날카롭게 만들고 싶었고, 목표가 세 가지였음
    • AI 이전식 GPU 프로그래밍, 데스크톱·단일 노드 시스템 프로그래밍, 그리고 지그(Zig)를 제대로 써보는 것
  • 원래는 빔과 컴파일러가 돌아가고, 자기 자신을 빌드할 수 있는 터미널을 만든 뒤 버릴 생각이었다는 게 재밌는 포인트임

    • 그런데 막상 파보니 “빠르고, 기능 많고, 네이티브로 크로스플랫폼인 터미널”이 딱히 없다고 느꼈음
    • 친구 몇 명에게 디스코드로 공유했더니 실제로 매일 쓰기 시작했고, 그 친구방이 고스트티 디스코드로 바뀜
    • 본인 이름값 때문에 과도한 관심이 붙을까 봐 오랫동안 비공개 베타로 굴렸다고 함

터미널을 브라우저처럼 만들자는 얘기는 아님

  • 하시모토는 터미널을 끝까지 밀어붙여서 모든 앱 플랫폼을 대체하자는 쪽은 아님

    • 브라우저는 브라우저대로 잘하는 게 있고, 데스크톱 앱은 데스크톱 앱대로 잘하는 게 있다고 봄
    • 터미널의 강점은 모노스페이스 그리드 기반 텍스트 앱이 빠르게 만들기 쉽고, 상호작용이 단순하고, 보안 모델이 비교적 명확하다는 점임
  • 진짜 관심사는 터미널 앱의 조합성(composition)과 자동화 가능성을 더 키우는 쪽임

    • CLI 도구는 표준 입력·출력뿐 아니라 다양한 플래그와 인터페이스로 함수처럼 조합되기 쉬움
    • 네오빔(Neovim)이나 AI 코딩 도구들도 점점 더 많은 커맨드라인 옵션을 제공하고 있음
    • 더 나은 터미널 앱 생태계는 곧 더 나은 자동화와 스크립팅 생태계라는 주장임

중요

> 하시모토가 보는 터미널의 핵심 문제는 UI가 못생겼다는 게 아니라, PTY가 구조 없는 바이트 스트림이라는 점임. 이 구조에서는 현대 앱 플랫폼이 당연하게 다루는 클립보드, 화면, 버튼, 이벤트 모델을 깔끔하게 확장하기 어렵다는 얘기임.

  • 그래서 그는 “새 터미널 API”를 만들 때 기존 앱 플랫폼의 수십 년짜리 선례를 먼저 보겠다고 함
    • 웹은 DOM과 자바스크립트 API가 있고, 애플 쪽은 앱킷(AppKit)·코코아(Cocoa)·스위프트UI(SwiftUI)가 있음
    • 윈도우에는 윈32(Win32)와 윈UI(WinUI), 리눅스에는 GTK와 Qt가 있음
    • 예를 들어 클립보드가 텍스트뿐 아니라 이미지와 여러 MIME 타입을 다뤄야 한다면, 각 플랫폼의 클립보드 설계를 먼저 조사해야지 터미널 진영만의 감으로 새로 만들 필요는 없다는 태도임

그가 생각하는 새 터미널 프로토콜 두 가지

  • 첫 번째는 “n-screen API”임

    • 지금 터미널에는 사실상 메인 화면과 대체 화면(alt screen) 두 개만 있음
    • 셸은 메인 화면에서 스크롤백을 쓰고, 네오빔이나 대부분의 TUI는 대체 화면으로 전체 화면을 가져가는 식임
    • 하시모토는 무제한에 가까운 여러 화면을 백그라운드에 만들고, 서로 다른 그리드 크기로 오버레이하고, 터미널 에뮬레이터가 줄바꿈·선택·마우스 이벤트 라우팅을 처리하는 구조를 상상함
  • 이게 되면 네오빔 탭이 터미널 안의 가짜 탭이 아니라 네이티브 창 탭처럼 열리는 그림도 가능해짐

    • 단순한 편의 기능이 아니라, 텍스트 앱이 화면을 다루는 기본 모델 자체를 바꾸는 레이어에 가까움
    • 터미널이 모든 앱을 흉내 내는 게 아니라, 텍스트 앱에 맞는 더 좋은 창 관리 모델을 주자는 쪽임
  • 두 번째는 버튼 프로토콜임

    • 지금 터미널에는 마우스 프로토콜이 있지만, 현재 화면에 보이는 그리드 셀 클릭 정도만 다루는 한계가 있음
    • 스크롤백으로 밀려난 기록에서는 앱 내부 링크나 파일 열기 같은 상호작용이 사라져버림
    • 하시모토는 OSC 8 하이퍼링크처럼, 특정 텍스트를 클릭하면 프로그램에 지정된 메시지를 보내는 버튼 모델을 생각하고 있음
sequenceDiagram
    participant 사용자
    participant 터미널
    participant 셸앱
    participant 스크롤백
    사용자->>터미널: 출력 기록에서 버튼 클릭
    터미널->>스크롤백: 클릭 대상과 등록된 메시지 확인
    스크롤백-->>터미널: open_profile 같은 동작 식별자 반환
    터미널->>셸앱: 지정된 메시지 전달
    셸앱-->>사용자: 파일 열기나 앱 내부 동작 실행

오픈소스에 대한 입장은 꽤 매움

  • 하시모토는 오픈소스 유지보수자가 사용자에게 의무를 진다는 생각에 매우 비판적임

    • 오픈소스 라이선스의 첫 줄은 보통 “있는 그대로, 보증 없음”이라는 점을 강조함
    • 공짜 소프트웨어를 받았다고 해서 유지보수자에게 요구할 권리가 생기는 건 아니라는 입장임
  • 그렇다고 문제를 안 고치겠다는 뜻은 아님

    • 좋은 소프트웨어를 만들고 싶기 때문에 버그를 고치고 개선하려는 책임감은 느낀다고 함
    • 다만 어떤 날은 이슈만 처리하고, 어떤 날은 아무 이슈도 안 읽고 본인이 원하는 큰 방향을 밀어붙인다고 함
    • 사용자 요청만 매일 처리하면 안정적이지만 정체된 소프트웨어가 되고, PR을 다 받아주면 방향 없는 코드 산이 된다는 얘기임
  • 고스트티의 검색 기능 논쟁도 그 철학을 잘 보여줌

    • 검색은 가장 많이 요청된 기능 중 하나였고 이미 출시됐음
    • 누군가는 이 기능이 미니멀리즘을 깨는 bloating이라고 비판했지만, 하시모토는 고스트티를 애초에 “기능 많은 터미널”로 소개한다고 반박함
    • 다만 안 쓰는 기능 때문에 런타임 비용을 내게 하지는 않도록 설계했다고 함. 디스크와 메모리에는 올라가도 실행 경로에는 들어가지 않는 식임

ℹ️참고

> “그 기능 싫으면 포크해서 빼라”는 말이 차갑게 들릴 수 있지만, 하시모토의 논점은 오픈소스의 핵심이 유지보수자에게 요구하는 권리가 아니라 사용·수정·포크할 자유라는 데 있음.

  • 그는 개인 포크와 유지되는 포크가 훨씬 많아져야 한다고 봄
    • 벤처 투자 기반 오픈소스가 늘면서, polished 웹사이트와 유료 지원팀이 붙은 “제품형 오픈소스”를 기본값처럼 기대하는 세대가 생겼다고 진단함
    • 하지만 오픈소스의 핵심은 안정성 보장이나 유지보수 의무가 아니라, OSI 승인 라이선스가 보장하는 자유와 권리라고 봄
    • 더 강한 보증과 책임 소재를 원하면 돈을 내고 벤더-고객 관계를 맺어야 한다는 말도 나옴

지그의 불안정성, AI, 그리고 호환성의 미래

  • 하시모토는 지그가 아직 1.0이 아니어도 괜찮다는 쪽임

    • 그는 지그에 컴파일러 패치를 하면서 들어왔고, 커뮤니티 문화와 철학을 알고 선택했기 때문임
    • 지그의 BDFL인 앤드루가 필요하다고 믿는 변경을 인기와 무관하게 밀어붙이는 점도 다운스트림 사용자 입장에서 좋게 본다고 함
  • 지그 0.15의 writer 인터페이스 변경은 꽤 큰 사건으로 언급됨

    • “뭔가를 출력하는 거의 모든 코드”에 영향을 주는 변경이었다고 함
    • 그래도 새 API가 훨씬 낫다고 평가함
    • 지그 팀은 컴파일 속도를 위해 언어 기능을 제거하기도 하는데, 하시모토는 이걸 거의 충격적으로 좋게 보는 쪽임
  • AI가 언어 변경의 고통을 줄인다는 관찰도 흥미로움

    • 그는 AI 과대광고를 하는 사람이 아니라고 선을 긋지만, 패턴 매칭과 패턴 채우기에는 신경망이 아주 강하다고 봄
    • 지그 변경처럼 “상태 A에서 상태 B로 어떻게 옮기는지” 몇 가지 예시를 보여주면, 큰 diff의 90%를 자동으로 처리할 수 있었다고 함
    • 본인은 부엌에 있는 동안 AI가 대부분을 처리했다는 식으로 설명함
  • 이 말은 백워드 호환성(backward compatibility)의 의미가 바뀔 수 있다는 주장으로 이어짐

    • 예전에는 API 변경이 곧 다운스트림 전체의 고통이었음
    • 그런데 마이그레이션 방법을 명확히 설명할 수 있고 AI가 반복 작업을 처리한다면, 깨지는 변경의 비용이 전보다 낮아질 수 있음
    • 아이러니하게도 지그는 강한 반AI 정책을 갖고 있는데, 하시모토는 AI가 지그식 변화의 통증을 줄여준다고 봄

좋은 API 설계는 ‘많이 써본 감각’에서 나온다는 얘기

  • 라이브러리와 API 설계에 대해 그는 거창한 방법론보다 다양한 생태계를 많이 써본 경험을 강조함

    • 프로로그(Prolog), 하스켈(Haskell), 클로저(Clojure), 자바(Java) 같은 언어로 장난감 프로젝트를 만들며 배운 게 많았다고 함
    • 각 생태계에는 인간 문화가 있고, 그 문화가 관심사의 분리 방식과 API 모양에 스며든다고 봄
    • 예를 들어 자바에서 흔한 빌더 패턴을 루비에 가져와보니 꽤 괜찮았다는 식임
  • 그는 “명사(nouns)가 중요하다”고도 말함

    • 바그란트가 개발 환경에만 집중한 건 의도적인 설계였다고 함
    • 설정, CLI, 개념 모델이 모두 개발 중심 명사로 돌아가게 만든 것이 장점이었다는 얘기임
    • 도커(Docker)는 배포와 런타임 쪽 명사가 너무 많이 섞여 인간의 개발 흐름을 건드린다고 봤다는 맥락도 나옴
  • 도구 제작자의 딜레마도 인정함

    • 어떤 문제를 절실히 느껴 이상적인 도구를 만들었는데, 그 도구가 인기를 얻으면 어느 순간 사용자가 아니라 도구 제작자로 멀어진다는 문제임
    • 터미널은 매일 쓰지만 TUI 개발자로서 충분히 dogfooding하고 있지는 않다고 말함
    • 대신 이메일·IRC 클라이언트와 터미널 스펙을 만드는 다른 유지보수자들에게 많이 기대고 있다고 함

큰 회사, AI 코드, 그리고 “좋은 제품”의 기준

  • 하시모토는 오늘날 기술 스택에 대해 “괜찮긴 한데 너무 복잡하다”는 쪽임

    • 프론트엔드, 타입스크립트, 리액트 타입 생태계에는 좋은 점이 많지만 추상화 레이어가 너무 불명확하고 churn이 심하다고 봄
    • HTTP/1에서 HTTP/2, HTTP/3로 가는 변화도 복잡도가 비선형적으로 커졌다고 느낌
    • 업계 전체가 “짧은 편지를 쓸 시간이 없어서 긴 편지를 썼다”는 상태에 가깝고, AI가 그 속도를 더 올리고 있다고 봄
  • 품질 있게 빨리 ship하려면 제품에 대한 더 큰 이해가 필요하다고 함

    • 특정 사용자 문제가 보인다고 그 문제만 고치면 안 되고, 왜 사용자가 거기까지 오게 됐는지 상위 맥락을 봐야 한다는 얘기임
    • 회사 규모가 커질수록 이걸 잘 못한다고 보고, 본인은 자기 소프트웨어의 강한 사용자이기 때문에 판단할 수 있다고 함
    • 고객과 너무 멀어지면 “스펙 완료”나 “체크박스 처리”만 남고, 결과물이 좋은지 나쁜지 판단하기 어려워진다는 지적임
  • AI 코드는 데모와 탐색에는 적극적으로 쓰지만, 그대로 ship하지는 않는다고 선을 그음

    • 그는 AI로 만든 데모 코드를 “완전 쓰레기”라고 표현하면서도, 방향이 유용한지 빠르게 확인하는 용도로는 강력하다고 봄
    • 현재 6주 된 아기가 있어 하루 컴퓨터 시간이 3시간 정도라, 시간 절약 효과가 실제로 크다고 함
    • 단 최종적으로 ship하는 코드는 읽고 이해해야 하며, 사용자가 즐겁게 쓸 수 있게 만드는 책임은 여전히 사람에게 있다고 못 박음

C를 배워야 하나, 바로 지그를 배워야 하나

  • 그의 답은 “언어보다 컴퓨터가 어떻게 동작하는지 배우라”에 가까움

    • C를 많이 쓴 건 대학에서 파일 시스템과 운영체제를 배우던 시기였고, C는 저수준 시스템과 접촉하기 위한 수단이었다고 함
    • CPU 스케줄링, 메모리, 캐시 계층, 파일 시스템, 디스크와 파일 접근 같은 기본기를 이해하는 게 더 중요하다고 봄
    • C든 지그든 러스트든 syscall 레이어 바로 위에서 작업해보면 무슨 일이 벌어지는지 훨씬 잘 보인다는 얘기임
  • 고수준 언어의 표준 라이브러리를 뜯어보라는 조언도 나옴

    • 파이썬, 자바스크립트, 루비의 파일 열기 API는 많은 걸 감춰줌
    • 표준 라이브러리 함수도 결국 누군가가 쓴 코드고, 직접 읽으면 언어보다 아래의 시스템 감각을 배울 수 있음
    • 결론은 꽤 단순함. 언어는 쉽고, 언어 자체보다 밑바닥 이해가 중요하다는 것임

기술 맥락

  • 고스트티의 기술적 선택은 “크로스플랫폼 코어 + 플랫폼별 네이티브 GUI”에 가까워요. 왜냐하면 터미널 에뮬레이터는 렌더링과 프로토콜 처리는 공유할 수 있지만, 창 관리나 입력 처리 같은 데스크톱 경험은 운영체제마다 기대치가 다르거든요.

  • PTY를 그대로 두고 기능만 덧붙이는 방식에는 한계가 있어요. 지금 구조는 escape sequence가 섞인 바이트 스트림이라서, 버튼·클립보드·여러 화면 같은 기능을 넣을 때 앱 플랫폼처럼 타입 있는 API로 다루기 어렵기 때문이에요.

  • n-screen API 아이디어가 중요한 이유는 터미널의 “화면은 두 개뿐”이라는 전제를 깨기 때문이에요. 셸의 스크롤백과 네오빔 같은 전체 화면 앱 사이에서 매번 모드를 갈아타는 대신, 여러 화면을 만들고 겹치고 이벤트를 라우팅할 수 있으면 TUI 앱 설계가 꽤 달라질 수 있어요.

  • 지그의 잦은 변경을 받아들이는 태도도 단순한 취향이 아니에요. 컴파일 속도, API 단순성, 언어 철학을 위해 호환성을 희생하는 선택인데, 하시모토는 AI가 반복적인 마이그레이션 비용을 줄이면 이런 선택의 부담이 낮아질 수 있다고 보는 거예요.

  • 오픈소스 유지보수 철학도 기술 의사결정과 연결돼요. 모든 PR을 받아주면 기능은 늘지만 구조가 무너질 수 있고, 모든 이슈를 따라가면 제품은 안정적이지만 정체될 수 있거든요. 그래서 그는 적은 수의 잘 조합되는 기능으로 여러 요구를 함께 해결하는 쪽을 더 높게 쳐요.

이 인터뷰는 고스트티 홍보라기보다, 개발 도구가 왜 특정한 취향과 제약을 가져야 하는지에 대한 선언에 가깝다. 특히 오픈소스를 ‘공짜 제품’처럼 소비하는 문화, 그리고 터미널 프로토콜의 낡은 구조를 동시에 찌르는 부분이 꽤 세다.

댓글

댓글

댓글을 불러오는 중...

open-source

AGIHALO, 오픈소스 개발자에게 LLM 크레딧 지원 프로그램 상시 운영

AGIHALO가 오픈소스 개발자를 대상으로 LLM 사용 크레딧을 지원하는 상시 그랜트 프로그램을 운영한다고 밝혔다. 개인 개발자, 초기 팀, 커뮤니티 프로젝트가 LLM 기반 기능과 실험을 비용 부담 없이 시도하도록 돕겠다는 취지다.

open-source

AI가 오픈소스를 망치는 중? 진짜 문제는 ‘슬롭’과 유지보수 번아웃

AI가 만든 저품질 코드와 스팸성 기여, AI 기반 취약점 탐색이 오픈소스 프로젝트 유지보수자들을 압박하고 있다는 내용임. Cal.com의 클로즈드 소스 전환, Godot·curl·Tailwind·Jazzband 등의 부담 사례가 언급되고, 일부에서는 오픈소스가 다시 폐쇄형 모델로 밀려날 수 있다는 우려도 나옴. 다만 Homebrew처럼 자동화로 대응하는 사례도 있어, 결론은 ‘오픈소스의 종말’보다는 기여 문화와 운영 모델의 재설계에 가까움.

open-source

AI 시대에 오픈소스 협업이 더 커졌다…GitHub 글로벌 기여 지표 급증

GitHub의 2026년 1분기 Innovation Graph에 따르면 국가 간 오픈소스 협업 규모가 전 분기보다 16% 늘었다. AI 프레임워크와 개발 도구가 오픈소스를 중심으로 커지면서, 개발자들이 국경을 넘어 저장소에 기여하는 흐름이 더 강해지고 있다.

open-source

Postgres를 Rust로 다시 쓴 pgrust, 회귀 테스트 4만6000개 100% 통과

Postgres를 Rust로 다시 구현하는 pgrust가 Postgres 18.3 기준 회귀 테스트 4만6000개 이상에서 기대 출력과 일치했다. 기존 Postgres 18.3 데이터 디렉터리로 부팅할 수 있을 정도의 디스크 호환성도 내세우지만, 아직 프로덕션용도 아니고 성능 최적화도 끝나지 않았다.

open-source

깃허브 떠나는 오픈소스 프로젝트들, Codeberg와 셀프호스팅으로 이동 중

깃허브는 여전히 초대형 플랫폼이지만, 일부 오픈소스 프로젝트는 장애, AI 통합, 정치적 이슈 때문에 다른 곳으로 옮기고 있어. Ghostty, Zig, Tenacity 같은 프로젝트가 Codeberg나 자체 호스팅 쪽으로 이동했고, 이 흐름이 더 커질지 주목받는 중이야.