世界を動かす技術を、日本語で。

ミッチェル・ハシモト氏へのインタビュー:GhosttyとZigについて

概要

  • Mitchell Hashimotoのインタビュー内容の要約
  • GhosttyやVouchなどの新プロジェクトと端末エミュレータへの情熱
  • ターミナルの役割やAPI、オープンソース哲学についての見解
  • ユーザーの要望と開発者のバランスに関する考察
  • フォーク文化とオープンソースの本質的な自由についての主張

Mitchell Hashimoto インタビュー:Ghostty、ターミナル、オープンソースへの思い

  • Mitchell Hashimotoは Vagrant、Packer、Consul、Terraform、Vault、Nomad、Waypoint など多くの著名プロジェクトを牽引
  • 現在は GhosttyVouch の開発に注力
  • インタビューでは 端末エミュレータZig 言語、オープンソースの哲学が中心テーマ

なぜターミナルに惹かれるのか

  • 約15年間、 CLIアプリケーション 開発に従事
  • Hashicorp退社後、 技術力の再研磨Zig での開発、 GPUプログラミング への挑戦を志向
  • 端末エミュレータの仕組みを深く理解したいという動機
  • Ghostty は「高速・多機能・クロスプラットフォーム」を追求
  • 最初は友人限定のプライベートベータとして展開、徐々にコミュニティへ拡大

ターミナルの進化と可能性

  • ターミナルは アプリケーションプラットフォーム としての可能性を持つ
  • ただし、 過剰な機能追加 は否定的
    • ブラウザやデスクトップ、テキストベースアプリはそれぞれ独自の強み
  • ターミナルアプリは 実装の容易さセキュリティモデルの明瞭さ が特徴
  • UNIXの「一つのことをうまくやる」哲学を尊重
  • 自動化・スクリプト性 の高さがターミナルの魅力
  • PTYの 非構造的バイトストリーム に課題認識
  • PowerShellの 構造化データ の取り扱いを評価

非レガシーAPIと新しいプロトコルの提案

  • 主要なアプリケーションプラットフォームの設計思想を重視
  • 既存のAPIやプロトコルの 先行事例調査 を重視
  • n-screen API (無制限のスクリーン生成・オーバーレイ)を提案
    • 例:Neovimのタブをネイティブウィンドウとして同時表示
  • ボタンプロトコル の仕様化
    • スクロールバック履歴でも機能するインタラクション
  • 既存プロトコルの課題は 標準化団体の不在 によるもの

ユーザーの要望と開発者のバランス

  • オープンソースメンテナの 義務はゼロ という立場
    • 「as is, no warranty」が基本
  • 良いソフトウェア作りへの 責任感 は持つが、全ての要望に応える義務はない
  • 現実的な問題解決理想の追求 のバランス
  • 全てのPRを受け入れると ビジョンの喪失肥大化 につながる
  • 本質的な問題の 根本解決 を重視

フォーク文化とオープンソースの本質

  • フォークや個人パッチ の推奨
    • 要望があるなら自分でフォークして保守する自由
  • オープンソースは 製品ではなく自由と権利 が本質
  • 安定性やサポートを求めるなら 有償ソフトウェア 利用を推奨
  • メンテナへの過度な責任転嫁に疑問
  • フォーク経験が 開発者への共感 を生むと主張

オープンソースの未来と個人開発者の役割

  • オープンソースプロジェクトは 企業製品化 の流れで期待値が変化
  • 本来のオープンソースは 自由な利用・改変・配布 が根本
  • 利用者も 主体性 を持ち、必要なら自らメンテナやフォークへ
  • コミュニティ全体で 多様な価値観やニーズ を受け入れる柔軟性が重要

Hackerたちの意見

私はRustの文化が好きじゃない。これ以上の言い方はないね。これが私にはすごく変に感じるんだけど、Zigについても同じことを言えると思う。Zigに挑戦してみたこともあって、Loris Croがストリーミングしているときにチャットもしたんだ。RustのプロジェクトをZigでどうなるか探ってみたかったんだけど、どうしても必要な機能が欠けていて、無理だった。やり取りのほとんどはRustがどれだけ悪いかって話ばかりで、Zigでどうにかできるっていう誤解ばかりだった(私の要望を全然理解していなかったし、実際のニーズを探ろうとする興味もなかった)。HNを見ていると、Rustに関するトレンドがあるたびに、必ずZigを持ち上げる投稿がすぐに出てきて、これが4年も続いたのを覚えている。私はRustの貢献者じゃないし、Rustに伴ういくつかの課題には興味がないけど、Rustが成し遂げたことは好きだし、すごく上手くやっていると思う。昔はRustコミュニティがZigに対して興味とリスペクトを持っていたから、議論は一方的だった。

文化戦争は、残念ながらテクノロジー全体の進歩を妨げる最大の要因の一つだね。

私にはこれがすごく変に感じる。なぜなら、Zigについても同じことを言えるから。じゃあ、同じことを言っているなら、なぜ変なの?異なるプログラミング言語は、異なる趣味を持つプログラマーにアピールするから、あるプログラマーがX言語に惹かれ、Y言語を嫌うのは理解できるし、逆もまた然りだよね。

私は、自分を隠さずにいることを大切にする人たちと一緒に働いたことがある。彼らの意見には同意できないこともあるし、ちょっと極端だと思うこともあるけど、そういう人たちが存在して、彼らが何に時間を費やしているのかを見るのは嬉しい。ミッチェルの反応の他の部分を考えると、Zigについてそういう点が評価されているんだと思う。私はZigを使わないし、Rustを頻繁に使うけど、どちらのコア開発チームとも本当に関わったことはない。開発を進める文化が十分な速度を持っているなら、気にする必要はないと思う。私が今使っているRustは、私のニーズには十分すぎるくらいだ。もしオープンソースにもっと関わっていたら、文化が重要な理由をもっと理解できたかもしれないけど、残念ながら私は主に消費者であって、生産者ではない。

私はほとんどのHashiツールについてこう感じている。なんか過大評価されている気がする。Ghosttyはまあまあかな、でもitermよりもバグが多くて、機能も少ないと思う。Zigもまあまあで、面白いこともあるけど、コミュニティはRustとほぼ同じで、機能はまた少ない。その他のHashiツールもまあまあだけど、今はあまり使ってない。Vaultは一時期大きな話題だったと思う。

たった一人と話しただけで、Zigコミュニティの文化がダメだって判断するの?ここHNやLinkedで見た、Rustの信者たちのドグマ的な考え方にはうんざりしてる。彼らはRustが唯一の価値ある言語で、他の言語 - Python、Go、C++(もちろん) - はゴミだと思ってる。Rustが大好きだけど、そんな無知な連中とは距離を置きたい。

当時、RustコミュニティはZigに興味と敬意を持っていたので、議論は一方的だった。振り返ってみると(炎上のリスクを冒して)、勝っているときや勝ったときは、寛大でいるのが簡単だよね。

Rustを書いてるけど、コミュニティとはほとんど関わってない。昔は関わってたけど、最初のRustConfでも話したことがある。今はRustコミュニティと関わる気が全然ない(正直、ほとんどのオンラインコミュニティから完全に切り離してる)。特に毒のあるコミュニティや価値観が全然違うところからは距離を置くかもしれないけど、なんで一部の人が投稿する内容だけでRustを書くのを避けるのか、全然理解できない。正直、変だと思う。「ああ、Rustの熱心な信者たちが…」っていう手をこまねく話は本当にくだらないと思う。

HNを見ていて、Rust関連のトレンドがあるたびに、必ずその後にZigを持ち上げる投稿があったのを覚えてる。これが4年も続いたんだ。Rustの熱心なファンが、ここHNでC++関連の投稿に対してずっとやってきたことの一端を味わっただけだよ。

HNを見ていて、Rust関連のトレンドがあるたびに、必ずその後にZigを持ち上げる投稿があったのを覚えてる。これが4年も続いたんだ。ああ、お願いだから…4年以上にわたってHNでのRustの宣伝攻撃に気づいてないなら、わざと無視してるってことだよ。

ZigはCに近づこうとしてる感じがするし、RustはC++のポジションを狙ってるみたいだね。もっと中間的な言語があればよかったのに。Dももっと広まってほしかったな。長い間コンパイラがプロプライエタリだったのも痛かったし、STDライブラリを一から書き直したのもね。Dは根本的に好きな言語だけど、エコシステムは全然発展してないよ。

13時間前の関連投稿: "BunのRust書き直しについての私の考え" Zigの作者アンドリュー・ケリーによる https://news.ycombinator.com/item?id=48843352

Hacker Newsで議論の続きを見る