Rune IDE のオープンソースリリース

Rune は now open source

Unstable Build は、Go で最初から構築されたネイティブなグラフィカル IDE である Rune を、GPLv3 ライセンスのもとでオープンソース化しました。このプロジェクトは、マネージド言語の高速なイテレーションスピードとシステム言語の高いパフォーマンスの間のギャップを埋めることを目指しており、参加開発者に会社の収益を共有する画期的な貢献者プログラムを導入しています。

ネイティブで文字グリッドベースの IDE アーキテクチャ

Rune は、ターミナルエミュレータや Electron ベースのアプリケーションではなく、文字グリッドを基盤としたネイティブなグラフィカルアプリケーションとして設計されています。このアーキテクチャ選択により、ブラウザランタイムに伴うパフォーマンスのオーバーヘッドを回避しつつ、ターミナルのようなシンプルなインターフェースを維持する GPU アクセラレーテッド UI を実現しています。

Go におけるパフォーマンス工学

当初は Rust、Zig、C で書かれたターミナルよりも遅かったものの、Rune のターミナルは Alacritty、Ghostty、Kitty などの業界リーダーと競合可能な性能に最適化されました。開発チームは cgo を介した手動メモリ管理に頼ることなく、以下の手法を採用しました:

  • より良いアルゴリズム と goroutine における作業のより効果的な分散。
  • バランスの取れた goroutine の起動 により、Go ランタイムのオーバーヘッドを最小限に抑える。
  • イベント駆動レンダリング により、フレーム毎秒(FPS)モデルから離れて、レイテンシを低減する。

Apple M4 Max などのハイエンド(高スペック)ハードウェアと 2016 マックブックなどのローエンド(低スペック)ハードウェアで vtebench を用いたベンチマークにより、Go がこれらの特定のワークロードにおいてシステム言語とパフォーマンスの同等性に達する十分な制御力を提供することが示されました。

コア設計原則

  • ターミナル中心の UI:ターミナルは一等公民であり、全体の UI はターミナルマルチプレクサに似ています。
  • 統合されたコマンド表面:ファジー検索可能なコマンドプロンプトがエディタ操作、ウィンドウ管理、エージェントワークフローを処理します。
  • 耐久性のある REPL:パッケージのインストール、モデルの設定、デバッガー管理に使用される専用コンソールがあります。
  • gRPC 拡張 API:エディタコアは小さく保たれ、リソースは gRPC を介して公開され、拡張は任意の言語で書くことができます。
  • P2P ネットワーキング:各インスタンスは安全な P2P ネットワークのノードとして機能し、カスタム rune:// スキームを使って異なるマシン上のワークスペースを開くことができます。

「リバース・ラグ・プル」貢献者モデル

企業がプロジェクトをオープンソース化した後、価値が増した時点で再ライセンスするという傾向に対抗するため、Unstable Build は「リバース・ラグ・プル」モデルを導入しています。

収益共有とガバナンス

  • GPLv3 ライセンス:貢献者は自身の著作権を保持でき、Unstable Build はコミュニティの成果を一方的に独自にすることをできません。
  • 財務インセンティブ:参加貢献者は承認された作業に対して「貢献クレジット」を獲得します。対象となるサービス収益の一定割合がプールされ、アクティブなクレジットに比例して貢献者に分配されます。
  • 検証可能なレジャーデータ:収益、控除、配分に関するすべての計算は、公開された検証可能なレジャーデータに保持され、透明性を確保します。
  • 任意参加:開発者は標準的な GPLv3 および DCO プロセスに従って貢献でき、支払いプログラムに参加しなくてもよいです。

言語サポートとエコシステム

Rune は現在、Go と Python に対して一等級のサポートを提供しており、Rust と Zig は main ブランチでベータ版として提供中です。「一等級のサポート」とは、Language Server Protocol (LSP) 統合を超えて、プロジェクトの発見、ツールのプロビジョニング、エコシステム固有のワークフロー(例:rustup をコンソールに直接統合)を含みます。

コミュニティの意見と批判

発表後、開発者コミュニティは IDE のアプローチについていくつかの議論を提起しました。

  • オンボーディングの摩擦:一部のユーザーは、Vim モードのオンボーディングプロセスがやりすぎており、特定のトレーニングを完了せずにエディタを操作するのが難しいと報告しました。
  • ビルド時間:一部の貢献者は、Go が Rust よりも速いビルド時間を提供すると主張する点に疑問を呈し、あるユーザーが Zed のビルド時間が特定のシナリオではより速い可能性を示すベンチマークを提示しました。
  • 文字グリッドの価値:一部の批判者は、TUI を模倣するネイティブ GUI の価値を疑問視し、ターミナルの視覚的制約とポータビリティの欠如を併せ持つ可能性があると指摘しました。
  • ネットワークの信頼性:P2P コーディネーションサーバーと暗号化アプローチに対する信頼性に関する懸念が示され、Tailscale などのツールとのオプション統合を提案する声もありました。

"貢献者向けのオープンレジャーや利益共有は、IDE 自体よりもさらに興味深いイノベーションかもしれません。"

"テキストプロンプトコマンドの発見性が好きです。ターミナルがより一等公民である点も好きです。"

"Rune はターミナル内に実行されるアプリケーションではなく、文字グリッドを基盤としたネイティブなグラフィカルアプリケーションです。では、TUI の視覚的制約を持ちながらポータビリティの利点も得られないのはなぜですか?"

Sources

関連

  • プロジェクト
  • プロジェクト
  • Dispatch
  • プロジェクト
  • Dispatch