Ghostty 1.0 is Coming

Mitchell Hashimoto

Ghostty 1.0がやってくる

原文は Mitchell Hashimoto により に公開されました。 このブログを購読する

約2年にわたる開発とプライベートベータテストを経て1Ghostty 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”(50:15へのタイムスタンプリンク)という5分間のライトニングトークを行いました。これはGhosttyに注ぎ込まれたパフォーマンスへの考え方の良い概要にはなりますが、ライトニングトークなので網羅的ではありません。

「多機能」については、Ghosttyはまず何よりも、可能な限り幅広いターミナルアプリケーションをサポートすることを目指しています。つまり、Ghosttyは(xterm自体を除けば)他のどのターミナルエミュレータよりも多くのxtermエスケープシーケンスをサポートしています。また、装飾付き下線、Kittyキーボードプロトコル、グラフィックスプロトコルなど、ほぼすべての最新ターミナル仕様もサポートしています。(ターミナルエスケープシーケンスではありませんが、はい、Ghosttyはリガチャもサポートしています!)

「プラットフォームネイティブ」については、GhosttyはmacOSではネイティブのGUIツールキットを、LinuxではGTK(利用可能であればlibadwaitaも)を採用しています。つまり、Ghosttyは両プラットフォームでネイティブアプリケーションのように見え、感じられ(そして実際にそうなのです)。これは、ネイティブのGUIツールキットをウィンドウの作成にしか使わない多くのターミナルエミュレータとは対照的です。

プラットフォームネイティブであることの利点の例として、Ghosttyはネイティブなタブ、スプリット、右クリックメニュー、メニューバー、Dock統合、入力方式サポート(絵文字キーボード、音声入力など)、確認ウィンドウ、デスクトップ通知、macOSのセキュア入力モードなどを備えています。

以下は、macOSとLinuxにおけるGhosttyのスクリーンショットです(どちらもテーマが適用されていますが、おそらく数行の設定によるものです)。プラットフォームネイティブなGUIをご覧ください。

(どちらの画像も、Ghostty Discordサーバーの公開ショーケースチャンネルにコミュニティから投稿されたものです)


初回リリースは1.0になります

Ghosttyは約2年間プライベートベータテストを実施してきました。執筆時点では、GhosttyはmacOSとLinuxを合わせて約2,000人のテスターを抱えており、その大半がGhosttyを日常のメインのターミナルエミュレータとして問題なく使用しています。

広範なプライベートベータテストを経たため、Ghosttyの最初の公開リリースはバージョン1.0となります。ここにはZeroVerはありません!4

広範なプライベートベータテストを行った動機は、主に個人的なものでした。第一子が生まれ、機能追加やバグ修正といった外部からのプレッシャーよりも、家族との時間を優先したかったのです。理論上はそうした雑音を無視することもできましたが、実際には自分のことをよくわかっているので、気が散って精神的に負担がかかるだろうと思ったのです。

家族という動機を超えて、私はソフトウェアが準備ができたときにリリースされていた時代にノスタルジーを感じています。もしCompUSAのような店がまだ存在するなら、Ghostty 1.0は箱に入れられシュリンク包装されて棚に並び、購入できる状態になっているだろうと想像するのが好きです(もちろん無料でオープンソースでもあるのですが)。

プライベートベータテストによるその他の影響は、予想外あるいは意図せざるものでした。例えば、Ghosttyを排他的に感じさせるつもりはまったくありませんでした(正直なところ、ターミナルエミュレータにこれほど多くの人が興味を持つとは思っていませんでした!)し、プライベートベータでGhosttyへの hype を人為的に作り出すつもりもありませんでした。もしこれによって不快な思いをされた方がいれば、お詫びします。

このアプローチに対してどれほど多くの批判を受けたか、そして私が自分の作業や進捗を共有するのが好きだというだけで、何かを当然のように要求されるべきだと考えているように見える人がどれだけいるかに驚いています。同時に、私のアプローチを支持し理解してくれた、はるかに多くの方々には感謝しています。

そして最後に、Ghosttyを使って素晴らしいフィードバックを提供してくれたテスターの皆さんに感謝します。Ghosttyの安定性は、開発者にとってしばしば不可欠なツールであるにもかかわらず、初期バージョンの使用というリスクを負ってくれた多様なテスターの皆さんのおかげでのみ実現しています。


大きなビジョン

将来を見据えると、Ghosttyには主に2つの分野で野心的な計画があります。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にどれだけの愛と情熱を注いだかを皆さんに感じていただき、日々の仕事に(ターミナルエミュレータができる限り)喜びをもたらしてくれることを願っています。

👻

脚注

  1. 執筆時点ではmacOSとLinuxを合わせて約2,000人のテスター。

  2. 「⚠️」の意味について詳しくは、元のトークの投稿をご覧ください。

  3. Windowsサポートは1.0リリース後に予定されています。

  4. 皮肉なことに、私が始めたソフトウェアがZeroVerの最初の例です。でも今回は違います!

この記事は「muse-spark-1.2-contributor」を使用して翻訳されました。

コメント