Ghostty 1.0 is Coming

Mitchell Hashimoto

Ghostty 1.0이 온다

원문은 Mitchell Hashimoto님이 에 게재했습니다. 이 블로그 구독하기

거의 2년에 걸친 개발과 비공개 베타 테스트를 거쳐1, Ghostty 1.0이 2024년 12월 MIT 라이선스의 오픈소스 프로젝트로 공개 출시된다는 소식을 전하게 되어 기쁩니다.

이 글에서는 Ghostty 프로젝트의 더 큰 목표를 다시 짚고, 1.0 릴리스의 구체적인 목표를 정리하려 합니다. Ghostty에 대해 야심 찬 계획을 가지고 있지만, 출시 첫날 무엇을 기대할 수 있는지, 그리고 앞으로 무엇이 이어질지에 대한 기대치를 명확히 하고 싶습니다.

간단히 말해, Ghostty 1.0은 macOS와 Linux에서 현재 사용 중인 터미널 에뮬레이터를 그대로 대체할 수 있는 최고의 대안이 되는 것을 목표로 합니다. Ghostty는 빠르고, 기능이 풍부하며, 플랫폼 네이티브 GUI를 갖추는 동시에 현존하는 가장 표준을 잘 준수하는 터미널 에뮬레이터가 될 것입니다.


최고의 기존 터미널 에뮬레이터

2023년 9월에 했던 Zig Showtime 발표의 이 슬라이드가 제가 왜 새로운 터미널 에뮬레이터를 만들기 시작했는지를 가장 잘 요약합니다:

슬라이드 7

비교한 터미널 에뮬레이터 수는 주로 슬라이드 디자인상의 이유로 제한적이지만, 핵심 메시지는 분명합니다. 기존 터미널 에뮬레이터들은 속도와 기능, 플랫폼 네이티브 GUI 사이에서 불필요한 선택을 강요한다고 느꼈습니다.2

Ghostty를 통해 저는 크로스 플랫폼을 유지하면서도 빠르고, 기능이 풍부하며, 플랫폼 네이티브 GUI를 갖춘 터미널 에뮬레이터를 만들고자 했습니다. Ghostty 1.0은 이 모든 목표를 달성했다고 믿습니다.

이 목표는 최고의 기존 터미널 에뮬레이터가 되는 데 초점을 맞춥니다. 이 목표 안에서 Ghostty 1.0은 터미널이 할 수 있는 일을 새롭게 발명하려는 것이 아니라, 오늘날 macOS와 Linux에서 경험할 수 있는 최고의 단일 터미널 에뮬레이터 경험을 제공하는 데 집중합니다.3

물론 Ghostty가 완벽하거나 완전한 것은 아닙니다. 모든 터미널 에뮬레이터의 모든 기능을 구현한 것은 아니기에 Ghostty에는 아직 없는 기능도 많습니다. 하지만 계속 개선해 나가면 대다수 사용자를 만족시킬 수 있을 것이라고 믿습니다.


빠르고, 기능이 풍부하며, 플랫폼 네이티브

Ghostty를 사용하기 전 사람들에게서 가장 많이 들은 피드백은 이런 것들이 과연 차이가 있을지 의심한다는 것이었습니다. Ghostty를 사용한 후 사람들에게서 가장 많이 들은 피드백은 생각보다 훨씬 큰 차이가 있다는 걸 몰랐다며, 이제는 이전으로 돌아갈 수 없다는 것이었습니다.

Ghostty가 빠르고, 기능이 풍부하며, 플랫폼 네이티브하다는 것은 무엇을 의미할까요? 이 각각은 크고 복잡한 주제이므로 영역별로 몇 가지 핵심만 짚어보겠습니다.

“빠름”에 대해서는 최근 Systems Distributed 2024에서 "Making a Terminal Emulator Really, Really Fast: Ghostty"라는 제목으로 5분 라이트닝 토크를 진행했습니다(50:15부터 시작하는 타임스탬프 링크). 이 발표는 Ghostty에 담긴 성능에 대한 고민을 잘 개괄해 주지만, 라이트닝 토크인 만큼 모든 내용을 다루진 않습니다.

“기능이 풍부함”에 대해서는 Ghostty가 무엇보다도 가능한 한 가장 넓은 범위의 터미널 애플리케이션을 지원하는 것을 목표로 합니다. 이는 Ghostty가(xterm 자체를 제외하면) 다른 어떤 터미널 에뮬레이터보다 더 많은 xterm 이스케이프 시퀀스를 지원한다는 의미입니다. Ghostty는 또한 스타일이 적용된 밑줄, Kitty 키보드 프로토콜, 그래픽 프로토콜 등 거의 모든 최신 터미널 사양을 지원합니다. (터미널 이스케이프 시퀀스는 아니지만, 네, Ghostty는 리가처도 지원합니다!)

“플랫폼 네이티브”에 대해서는 Ghostty가 macOS에서는 네이티브 GUI 툴킷을, Linux에서는 GTK(가능한 경우 libadwaita 포함)를 사용합니다. 이는 Ghostty가 두 플랫폼 모두에서 네이티브 애플리케이션처럼 보이고 느껴지며(실제로 네이티브 애플리케이션이라는) 의미입니다. 이는 네이티브 GUI 툴킷을 단지 창을 만드는 데만 사용하는 많은 터미널 에뮬레이터와 대비됩니다.

플랫폼 네이티브의 이점을 예로 들면, Ghostty는 네이티브 탭, 분할 창, 우클릭 메뉴, 메뉴 바, Dock 통합, 입력기 지원(이모지 키보드, 받아쓰기 등), 확인 창, 데스크톱 알림, macOS 보안 입력 모드 등을 제공합니다.

다음은 플랫폼 네이티브 GUI를 보여주는 macOS와 Linux에서의 Ghostty 스크린샷입니다(둘 다 테마가 적용되어 있지만 아마 몇 줄의 설정만으로 가능했을 것입니다):

(두 이미지 모두 Ghostty Discord 서버의 공개 쇼케이스 채널에 커뮤니티가 올린 것입니다)


첫 릴리스는 1.0이 될 것입니다

Ghostty는 거의 2년 동안 비공개 베타 테스트를 진행해 왔습니다. 이 글을 쓰는 시점에서 Ghostty는 macOS와 Linux를 통틀어 약 2,000명의 테스터를 보유하고 있으며, 그중 대부분은 Ghostty를 별 문제 없이 주력 터미널 에뮬레이터로 매일 사용하고 있습니다.

광범위한 비공개 베타 테스트 덕분에 Ghostty의 첫 공개 릴리스는 버전 1.0이 될 것입니다. 여기서는 ZeroVer는 없습니다!4

이처럼 광범위한 비공개 베타 테스트를 진행한 동기는 주로 이기적인 이유였습니다. 첫 아이가 태어났고, 기능 구현이나 버그 수정에 대한 외부의 압박보다 가족과 함께하는 시간을 우선하고 싶었습니다. 이론적으로는 주변의 소음을 무시할 수도 있었겠지만, 실제로는 제 성격을 잘 알기에 신경이 쓰이고 정신적으로도 부담이 됐을 것임을 알았습니다.

가족이라는 이유를 넘어, 저는 소프트웨어가 준비되었을 때 출시되던 시절에 대한 향수가 있습니다. 만약 CompUSA 같은 매장이 아직 존재한다면, Ghostty 1.0이 박스에 담겨 비닐 포장된 채 선반에 진열되어 구매를 기다리고 있을 모습을 상상하곤 합니다(물론 무료 오픈소스로도 제공되겠지만).

비공개 베타 테스트의 다른 효과들은 예상치 못했거나 의도하지 않은 것들이었습니다. 예를 들어, Ghostty가 배타적으로 느껴지길 의도한 적은 없습니다(솔직히 터미널 에뮬레이터에 이렇게 많은 사람이 관심을 가질 줄은 전혀 예상하지 못했습니다!) 또한 비공개 베타로 Ghostty에 대한 인위적인 기대감을 조성하려는 의도도 없었습니다. 이로 인해 부정적인 경험을 하셨다면 사과드립니다.

이 접근 방식에 대해 얼마나 많은 비판을 받았는지, 그리고 제가 작업 과정과 진행 상황을 공유하는 것을 좋아한다는 이유만으로 당연히 무언가를 받아야 한다고 믿는 듯한 사람들이 얼마나 많았는지에 놀랐습니다. 동시에, 제 접근 방식을 지지하고 이해해 준 훨씬 더 많은 분들께 감사드립니다.

마지막으로, Ghostty를 사용하며 훌륭한 피드백을 제공해 준 테스터분들께 감사드립니다. Ghostty의 안정성은 개발자 도구에서 종종 핵심적인 부분을 차지하는 초기 버전을 기꺼이 사용해 준 다양한 테스터들 덕분에 가능했습니다.


큰 그림

앞으로 Ghostty는 두 가지 주요 영역에서 야심 찬 계획을 가지고 있습니다. libghostty터미널 애플리케이션 기능입니다.

libghostty는 Ghostty를 구동하는 핵심 크로스 플랫폼 라이브러리입니다. Zig 및 C API로 제공되며 현재 macOS와 Linux에서 동작합니다. 목표는 전용 애플리케이션부터 에디터에 내장된 터미널, 웹 기반 터미널, 새로운 터미널 멀티플렉서에 이르기까지 크고 다양한 터미널 에뮬레이터 애플리케이션 생태계가 생겨나도록 하는 것입니다.

libghostty의 아이디어는 개발자가 훌륭한 애플리케이션을 만드는 어려운 작업에 집중하는 동안, 빠르고 기능이 풍부하며 표준을 준수하는 터미널 에뮬레이션을 공짜로 얻을 수 있게 하는 것입니다. 여러 면에서 저는 오늘날의 Ghostty를 libghostty를 사용하는 “참조 구현”으로 설명합니다.

Ghostty 1.0에서는 libghostty가 안정적이라고 간주되지 않으며 독립적인 공개 API로도 제공되지 않습니다. 하지만 Ghostty는 내부적으로 libghostty를 사용합니다. Ghostty 1.0 이후의 목표는 libghostty가 독립 라이브러리로 출시되는 지점에 도달하고, macOS와 Linux를 넘어 특히 WebAssembly까지 플랫폼 지원을 확장하는 것입니다.

libghostty 외에도, 애플리케이션이 활용할 수 있는 터미널 내 기능을 더 확장하는 데 관심이 있습니다. 몇 가지 아이디어로는 이스케이프 시퀀스의 보안 개선, 더 현대적인 입력 방식(터치 제스처, 관성 스크롤, 드로잉 장치 등) 허용, 애플리케이션이 네이티브 컨텍스트 메뉴를 제공할 수 있도록 하는 것 등이 있습니다.

터미널 애플리케이션 기능을 확장하려는 목표는 텍스트 기반 애플리케이션을 개발자가 만들기에도, 사용자가 사용하기에도 더 매력적으로 만드는 것입니다. 저는 텍스트 기반 애플리케이션이 소프트웨어 생태계에서 가치 있는 틈새를 차지하고 있다고 믿으며, 그 플랫폼을 현대화하는 데 도움을 주고 싶습니다.

이들은 제가 Ghostty를 향해 나아가고 있는 더 큰 비전을 보여주는 크고 장기적인 목표입니다. 단기적으로는 빠르고, 기능이 풍부하며, 플랫폼 네이티브하다는 원래의 큰 목표에 따라 사용자의 피드백과 제 아이디어를 바탕으로 Ghostty를 점진적으로 개선할 계획입니다. 1.0 릴리스에 포함되지 못해 아쉬운 주요 기능들도 있지만, 후속 릴리스에서 선보일 예정입니다.


재정과 지속 가능성

이 글에서 이 주제를 크게 다루고 싶지는 않지만, 기업가로서의 제 배경과 이 주제에 대한 일반적인 관심을 고려해 혼란이나 추측을 피하고자 Ghostty의 재정 및 지속 가능성 측면을 간략히 짚고 넘어가려 합니다.

Ghostty는 저에게 열정 프로젝트이며, 이 프로젝트를 상업화할 계획은 전혀 없습니다. 첫 문단에서 언급했듯이, Ghostty는 MIT 라이선스의 오픈소스 프로젝트로 출시될 것입니다.

개인적으로는 과거의 성공 덕분에 재정적 압박 없이 Ghostty 같은 프로젝트에 매진할 수 있는 자유를 갖게 되어 운이 좋다고 생각합니다. 저는 여러 차례 공개적으로 Ghostty 작업이 일종의 “기술적 자선(technical philanthropy)”이라고 밝혀 왔습니다. 보답하는 수단이자, 제 필요를 채우고 즐거움을 얻는 방식이라는 의미입니다.

동시에, 저는 Ghostty가 저 없이도 장기적으로 유지되기를 바라며, 주요 기여자들에게 그 작업에 대한 보상을 할 수 있기를 바랍니다. 이를 위해 저와 [현재는 비공개로 운영되는] 커뮤니티는 Ghostty의 장기적인 지속 가능성을 보장하기 위한 비영리 구조를 모색하고 있습니다. 하지만 이는 장기적인 목표이며 1.0 릴리스 시점에 갖춰질 내용은 아닙니다.


12월에 뵙겠습니다

2024년 12월에 있을 Ghostty 1.0의 공개 릴리스를 기대하고 있습니다.

Ghostty는 2년 넘게 저의 큰 열정 프로젝트였습니다. 처음에는 본업을 하면서 가끔 하는 사이드 프로젝트로 시작했지만, 퇴사하고 첫 아이를 맞이한 뒤에는 저의 주된(하지만 여전히 파트타임인) 관심사가 되었습니다.

Ghostty 1.0이 완벽하지는 않겠지만, 그 안정성과 기능은 제가 자랑스럽게 생각하는 부분이며 이제 세상과 공유할 준비가 되었다고 생각합니다. 가장 중요한 것은 사람들이 제가 Ghostty에 얼마나 많은 애정과 정성을 쏟았는지를 느끼고, Ghostty가(터미널 에뮬레이터가 줄 수 있는 만큼) 그들의 일상에 즐거움을 더해주기를 바란다는 점입니다.

👻

각주

  1. 작성 시점 기준 macOS와 Linux를 통틀어 약 2,000명의 테스터.

  2. “⚠️”의 의미에 대해 더 알아보려면 원본 발표 글을 참조하세요.

  3. Windows 지원은 1.0 릴리스 이후에 계획되어 있습니다.

  4. 아이러니하게도 제가 시작한 소프트웨어가 ZeroVer의 첫 번째 사례입니다. 하지만 이번에는 그렇지 않습니다!

이 글은 muse-spark-1.2-contributor 모델을 사용해 번역했습니다.

댓글