В новом выпуске подкаста Backend Banter сооснователь компании HashiCorp Митчелл Хашимото делится историей своего масштабного карьерного и технологического сдвига. Создатель Terraform и Vault рассказывает, как после десяти лет управления облачной инфраструктурой он вернулся к истокам низкоуровневого программирования и создал Ghostty — сверхбыстрый эмулятор терминала на языке Zig. Статья раскрывает путь проекта от домашнего хобби до громкого публичного релиза, анализирует неочевидные вызовы дистрибуции десктопного ПО в Linux и описывает прагматичную философию использования ИИ в современной разработке.
🏢 Истоки: эволюция основателя и возвращение к коду 0:15
Митчелл Хашимото хорошо известен в ИТ-индустрии как человек, изменивший подход к управлению облачной инфраструктурой. Однако его карьерный путь внутри собственной компании развивался вопреки традиционным корпоративным шаблонам. Начав как CEO HashiCorp, спустя пять лет он перешел на позицию CTO, а затем сознательно выбрал роль рядового инженера (Individual Contributor), чтобы полностью сфокусироваться на написании кода. В конце 2023 года Хашимото окончательно покинул корпорацию. Размышляя о продуктовом наследии, Митчелл предполагает, что Terraform стал их самым массовым и популярным решением, охватившим множество отраслей, тогда как Vault оказал колоссальное влияние на индустрию, но остался более нишевым продуктом в сфере безопасности.
После ухода из HashiCorp Хашимото столкнулся с необходимостью найти новый ментальный вызов. Эмулятор терминала Ghostty родился не из рыночной боли или неудовлетворенности существующими инструментами, а из чистого желания учиться. Митчелл признается, что лучшим способом понять внутреннее устройство любой сложной технологии для него является создание ее упрощенной, пусть даже изначально несовершенной версии. Проведя более десяти лет в экосистеме языка Go, распределенных систем и серверного ПО, он захотел переключиться на кардинально противоположные задачи: десктопную разработку, прямое программирование GPU и низкоуровневые концепции управления памятью.
🚀 Переломные моменты: выбор Zig и отказ от мейнстрима 11:40
Изначально Ghostty развивался как фоновый пет-проект. Переломным моментом, превратившим игрушку в серьезный рабочий инструмент, стало достижение базовой функциональности: как только эмулятор смог стабильно и без ошибок запускать текстовый редактор Vim, Хашимото полностью перевел на него свою ежедневную работу. Закрытое бета-тестирование среди друзей показало неожиданно высокую вовлеченность, а официальный публичный релиз состоялся 26 декабря 2024 года.
Выбор технологического стека стал ключевым этапом формирования проекта. Использование Go исключалось сразу из-за наличия сборщика мусора (garbage collection) и активного рантайма, которые мешают тонкой оптимизации производительности интерфейса. Гораздо более примечательным стал осознанный отказ от сверхпопулярного Rust в пользу относительно молодого языка Zig. Хашимото детально объясняет свою позицию, подчеркивая, что его критика Rust лежит скорее в эмоциональной и эстетической плоскости, нежели в рациональной:
- Написание и чтение кода на Rust лично у него «не вызывало радости», что критически важно для авторского проекта.
- Митчелл отмечает так называемую «проблему Scala» в экосистеме Rust: из-за злоупотребления мощными кастомными макросами метапрограммирования разные проекты часто выглядят так, будто они написаны на совершенно разных языках.
- Существует глубокое культурное различие: по наблюдениям Хашимото, сообщество Rust пропагандирует идею тотального переписывания мира с нуля, в то время как он сам предпочитает прагматично использовать проверенные временем C-библиотеки.
Zig предложил инженеру идеальный баланс. По мнению Хашимото, этот язык сохраняет простоту и предсказуемость C, но полностью избавляет от его главных исторических проблем — в частности, от хаоса в сборочных системах. Среди фундаментальных преимуществ Zig Митчелл выделяет бесшовную интероперабельность с C без накладных расходов на конвертацию форматов данных, а также мощную систему кросс-компиляции системного уровня, не уступающую по удобству инструментарию Go.
🐛 Ошибки и вызовы: суровая реальность Linux-дистрибутивов 31:36
Переход от создания облачных SaaS-платформ к дистрибуции локального десктопного ПО вскрыл пласт проблем, с которыми серверные разработчики практически не сталкиваются. Главным вызовом для Ghostty стало стремление автора быть «добропорядочным гражданином» в мире Linux. Чтобы попасть в официальные репозитории таких консервативных дистрибутивов, как Ubuntu или Debian, приложение обязано использовать динамическую линковку библиотек вместо привычной для Go-сообщества статической сборки «всё в одном бинарнике».
Это повлекло за собой серьезные технические и организационные компромиссы:
- Фрагментация версий зависимостей: Стабильный Debian поставляет графические библиотеки версии 1.2, Ubuntu — 1.5, в то время как самый актуальный апстрим находится на отметке 1.8. Разработчикам Ghostty приходится внедрять в код огромное количество рантайм-проверок, чтобы программа не падала на старых системных библиотеках пятилетней давности.
- Паранойя безопасности мейнтейнеров: Политика Debian требует полной воспроизводимости сборки (bootstrapping) компилятора из исходников, написанных вручную, и исключает использование любых бинарных блобов. Так как современный компилятор Zig написан на самом себе, разработчики языка используют компиляцию минимального ядра в WebAssembly (WASM) для сборки полноценного компилятора. Однако для строгих правил дистрибутивов этот WASM-файл выглядит как непрозрачный закрытый блок, что временно блокирует Ghostty путь в стандартные пакетные менеджеры.
- Замедление циклов обновления: Если в macOS исправление критического бага доставляется пользователям мгновенно через встроенный автоапдейтер (ценой $100 в год за лицензию разработчика Apple), то в стабильных репозиториях Linux этот процесс может занимать от нескольких часов до нескольких лет. Хашимото признается, что это заставило его перестроить мышление: отказаться от философии «ship fast and break things» и испытывать жесткий стресс перед каждым замораживанием кода для LTS-релизов.
💡 Уроки: декомпозиция идентичности инженера и mail-сервер изнутри 20:47
На основе своего опыта Митчелл формулирует важный манифест против привязки профессиональной идентичности инженера к конкретному языку программирования. Он считает деструктивной практику называть себя исключительно «Go-разработчиком» или «Rust-инженером». По мнению Хашимото, при наличии прочной базы компьютерных наук — глубокого понимания ограничений CPU, оперативной памяти, дискового ввода-вывода и принципов проектирования API — освоение любого нового синтаксиса до продуктивного уровня должно занимать не более одной-двух недель.
В качестве примера своей многолетней страсти к экспериментам ради понимания базовых протоколов Митчелл приводит личную историю. Задолго до Ghostty он написал с нуля собственный почтовый SMTP-сервер, используя исключительно стандартную библиотеку Go и сетевые сокеты TCP. Рискуя потерять важную корреспонденцию, он на 18 месяцев полностью перевел обработку всей своей входящей личной почты на этот самописный сервер. Этот эксперимент завершился успешно и принес инженеру колоссальное профессиональное удовольствие от осознания того, что он ежедневно использует инфраструктурный стек, созданный собственными руками от первого до последнего байта.
🔮 Текущий этап: архитектурное разделение и будущее текстовых платформ 6:10
На текущем этапе Ghostty представляет собой не просто монолитное приложение, а гибкую архитектурную экосистему. Сердцем проекта является библиотека libghostty, написанная на Zig и имеющая C-совместимый интерфейс. Она полностью инкапсулирует в себе сложнейшую логику эмуляции, парсинг управляющих последовательностей и рендеринг текста. Официальные приложения для macOS (написанное на Swift с использованием AppKit и SwiftUI) и Linux (на базе GTK, Wayland и X11) — это, по сути, лишь высокотехнологичные демонстрации возможностей libghostty. Хашимото рассчитывает, что в будущем современные редакторы кода (такие как Zed или VS Code) смогут встраивать libghostty в качестве движка встроенного терминала.
Стратегия развития Ghostty разделена на две фазы:
- Фаза 1 (Текущая): Стать лучшим из существующих классических эмуляторов на рынке. Фокус смещен на чистую производительность интерфейса и безупречную поддержку современных стандартов. Ярким примером скрытого качества Митчелл называет полноценный 24-битный цвет: стандартный терминал macOS до сих пор ограничен 256 цветами, из-за чего консольные утилиты после перехода на Ghostty визуально преображаются.
- Фаза 2 (Будущая): Превратить терминал в современную платформу для интерактивных текстовых приложений. Хашимото утверждает, что текстовая среда незаслуженно стагнирует из-за привязки к стандартам сорокалетней давности. Его инновационная дорожная карта включает расширение протоколов терминала для поддержки нативных многопроцессных вкладок, генерации полноценных графических контекстных меню операционной системы вместо псевдографики и даже интеграцию легковесного движка WebKit для отображения веб-компонентов или документации прямо внутри панелей терминала.
🤖 Симбиоз с AI: текстовый интерфейс как идеальная среда для агентов 58:47
В завершение дискуссии Хашимото затрагивает тему искусственного интеллекта. Собеседники сошлись во мнении, что наблюдаемый сегодня ренессанс текстовых интерфейсов напрямую связан с развитием больших языковых моделей, для которых структурированный текст является естественной и наиболее эффективной средой обитания. Программируемый, модульный терминал вроде Ghostty может стать ключевым элементом («руками и глазами») для автономных AI-агентов будущего, позволяя им запускать тестовые циклы, компилировать код и итерировать программные решения без необходимости сложной и нестабильной симуляции движений мыши по графическому экрану.
Свой личный подход к ИИ Митчелл описывает как строго прагматичный. В повседневной работе он использует связку из расширения GitHub Co-pilot в редакторе Neovim и подписки на ChatGPT Pro. Нейросети существенно сократили количество его поисковых запросов в Google. Хашимото делится показательным примером: перед релизом версии 1.0 ему потребовалось устранить неприятное мерцание интерфейса при программном перетаскивании вкладок в macOS. Не зная глубоко специфики внутренней работы AppKit, он отправил скриншот багов и описание симптомов в ChatGPT, который мгновенно выдал четыре точные строки кода на Swift, указавшие на нужные системные API. Вместо нескольких дней рутинного чтения документации Apple сложнейшая задача кастомизации иконок и логики рендеринга была успешно решена за два часа. Инструмент сработал как высокоэффективный «стероиды для автодополнения», кардинально ускорив вывод Ghostty на финишную прямую.