2 ポイント 投稿者 GN⁺ 2024-09-27 | 1件のコメント | WhatsAppで共有
  • Haystack Editor は、コードエディタのシンプルさとキャンバスUIを組み合わせ、コードをひと目で理解しやすくする製品であり、このリポジトリでコミュニティとともに開発されている
  • リポジトリではコードやイシューだけでなく ロードマップ も公開しており、ソースコードは PolyForm Strict License 1.0.0 の下で提供される
  • 製品ディストリビューションはリポジトリをベースに特定のカスタマイズを加えた形で、別個の 利用規約 の下で提供される
  • 機能例として Canvas Workspaces、Explorer View、Keyboard Navigation、Generate Function があり、総合的なコード編集・探索・理解支援と軽量なデバッグ、拡張モデル、既存ツールとの軽量な統合を含む
  • Haystack は毎週、新機能とバグ修正で更新されており、Windows、macOS、Linux 向けにダウンロードできる

Haystack Editor リポジトリの役割

  • このリポジトリは、Haystack Software がコミュニティとともに Haystack Editor 製品を開発する場である
  • コードやイシュー対応だけでなく、roadmap も公開している
  • ソースコードは PolyForm Strict License 1.0.0 の下で提供される

Haystack Editor 製品

  • Haystack EditorHaystack Editor リポジトリのディストリビューションであり、特定のカスタマイズが含まれる
  • ディストリビューションは別個の terms of service の下でリリースされる
  • 製品はコードエディタのシンプルさと キャンバスUI を組み合わせ、コードをひと目で理解しやすくする
  • 対応範囲には以下が含まれる
    • 総合的な コード編集
    • コード探索
    • コード理解の支援
    • 軽量なデバッグ
    • 豊富な拡張モデル
    • 既存ツールとの軽量な統合
  • Haystack は毎週、新機能とバグ修正で更新される
  • Windows、macOS、Linux 向けのダウンロードは Haystack ウェブサイト から可能

機能プレビュー

  • Canvas Workspaces 機能を提供する
  • Explorer View 機能を提供する
  • Keyboard Navigation 機能を提供する
  • Generate Function 機能を提供する

貢献とフィードバックの経路

関連プロジェクトとバンドル拡張

  • Haystack の複数の中核コンポーネントと拡張機能は、GitHub 上の別リポジトリにある
  • 例として node debug adaptermono debug adapter は、それぞれ別リポジトリである
  • 別の例として Pixi repository がある
  • Haystack は extensions フォルダに複数の 組み込み拡張 を含んでいる
    • 複数言語向けの文法とスニペットが含まれる
    • コード補完や Go to Definition のような豊富な言語サポートを提供する拡張は language-features 接尾辞を使用する
    • たとえば json 拡張は JSON のカラーリングを提供し、json-language-features 拡張は JSON に対する豊富な言語サポートを提供する

1件のコメント

 
GN⁺ 2024-09-27
Hacker Newsのコメント
  • このアイデアは数十年前から素晴らしかった。Haystackも過去の多くの試みと同じように成功してほしいし、初期の実装は有望に見える
    ただ、呼び出し元/呼び出し先を把握しにくかったり、開発者ごとにUXの好みが分かれたりと、課題は多そうだ。2D画面よりはるかに広い空間、たとえばVRヘッドセットのような環境では、さらに強力になるのではとずっと思ってきた

    • Haystack VRワールドというアイデアは本当にいい。生理的な要因のせいでVRソフトウェアが不安定な状態にあるのは残念だが、いつか未来になると信じている
  • とてもクールだ。組織全体のコードベースがこうしてマッピングされ、複数のフレームワークや言語をまたいで見える様子を想像した
    動画で見落としたのか、まだ不可能なのかは分からないが、ノードを手でつなぐのは作業量が多すぎるので、リポジトリのフォルダで実行して可視化を自動化するシンプルなボットがあるといい。関心リストに追加した
    自分なら、デジタル変革を進めている、あるいは計画中の大企業組織や地方自治体のITグループを狙う。レガシー作業と新規作業のあいだで、道筋や意味を把握する必要があるからだ
    うまくいけば1年以内にSalesforceが来るかもしれない。彼らのビジョンや製品群ともかなり相性がよさそうだ

    • 動画で見たコンセプトは気に入った。ただ、もっと大きく、もっと多くのウィンドウがあり、それらが全部つながっている様子を見てみたい
      その状態で実際に使い物になるかは分からないが、試してみたら面白そうだ。コードベース全体を表したUML図のように、何千本もの矢印があるイメージだ
      そうなれば、同僚に修正すべきファイルが右上のどこかにあると伝えられるし、Gitの差分も視覚的に見えるので、あちこちの変更箇所を拡大して見られる
    • ファイルやシンボルをたどって移動すると、接続は自動的に追加される。まさにそれを意味していたのかは分からないが、自然言語クエリに応じてユーザーに「フロー」を提供しようとしている
      たとえば「購読ボタンをマウスで押した瞬間からバックエンドまで何が起きるのか」といった質問を扱うイメージだ
    • 異なるサービスに向かうAPI呼び出しまで「接続」できたら面白そうだ
  • このプロジェクトがLight Tableから着想を得たのか気になる
    機能要望としては、可視化を2Dの先へ拡張してほしい。本当に複雑なシステムはたいてい精巧なグラフ、よく言えば毛糸玉のような構造なので、2D平面の可視化だけでは足りないと感じたことがある
    外側の層に境界サービス、内側の層にコア/ドメインサービスを置くような、同心球の可視化のようなものがあるとよさそうだ

    • 多くの人がLight Tableに言及していたが、リリース後になって初めて知った
      もっと3Dに近いビューという指摘は興味深い。このアイデアは考えたことがあるが、ユーザーが理解できる形でうまく作るのは本当に難しい。それでも将来のビジョンには確実に入っている
      修正: Light Tableに関する推測は事実ではなかったので削除した
    • 2010年代のLight Tableだけでなく、1980年代後半のOberonも知っているだろうと思う。Oberonにも境界のないキャンバス上にコードを配置する機能があった
  • かなり脇道の質問だが、代表的で実用的なオープンソースの無限キャンバスはあるだろうか? カードゲームを作っていて、マルチプレイヤー対応の無限キャンバスが必要だ。おすすめがあれば知りたい

  • VSCode拡張だったら使っていたと思う。試してみたいが、最近はCursorの中で生活している

    • だんだん大きな問題になってきているようだ
  • なぜ拡張として作れないのか気になる。アイデアは本当に素晴らしくて、エディタ領域のタブの中に収まっている姿が完璧に想像できる
    そうすればHaystackタブを複数持てるので、コンテキストスイッチがずっと楽になりそうだ。VSCodeベースだとしても、別のIDEをまたインストールしなければならないのは少し残念だ。それでもこのまま頑張ってほしい

    • VS Code拡張はかなり制約が大きい。エディタタブのレンダラーを差し替えることはできても、カスタムインターフェース内の複数要素を、環境全体や拡張エコシステムの中で一級のエディタタブのように扱わせるのは実質的に難しい。遅れを取らない限り、フォークは妥当な選択だ
    • そのもどかしさは分かる。別のコメントでも書いたように、Haystackを拡張の形で十分よいものにするのはかなり難しいが、最終的にはその道も探るつもりだ
    • 拡張に制約があるなら、妥当な回避策はキャンバスビューをオン/オフする機能かもしれない。キャンバスと標準のVSCodeビューを行き来したくなるはずなので、Haystack内でそれができれば両方をインストールする必要がない
  • Selfプログラミング言語のKansas環境を思い出した。Sunが1995年に作った動画がある
    https://www.youtube.com/watch?v=Ox5P7QyL774
    この動画の後で、さらに面白い検索機能が追加された

  • すばらしい。大きなコードベースを見るときに自分がやっている流れとほぼ同じだが、ずっときれいに整理されている
    普段は複数のソースファイルを指すターミナルを5、6個開いて、頭の中で地図を作ろうとしている。最終的には感覚がつかめるが大変な作業なので、こういうツールがあればものすごく助かるだろう。あとはウルトラワイドモニターと組み合わせるだけだ

  • 頭の中に保持しなければならないものが減るので助かりそうだが、今のUIはマウス依存が強すぎる。ショートカットを用意して、ウィンドウマネージャのdwmのように「タイリング」されるようになれば、ウィンドウサイズを手動で調整しなくて済むといい

    • 実際、キャンバスをできるだけキーボードで操作できるようにしようとしている。右下の「Keybindings and Help」ボタンにキーバインド一覧がある
      手動のサイズ調整については、ビューポート内でのタイリングを試している。どんな理由でサイズ調整したくなるのか教えてもらえれば改善できそうだ
  • 開発者がコードを2次元空間に広く展開してマッピングする便利なアプローチに見える。これは場所法[1]に似ていて、開発者がコード片とそのつながりを空間的に精密に符号化し、記憶を強化して理解も高めるやり方だ
    そこで、大胆に提案したいのは、邪魔にならず少しだけ情報を与える背景パターンのオプションを追加することだ。具体的なパターンは思いつかないが、背景が世界地図なら、ユーザーは探したい位置をより早く記憶し、自分の位置もより早く把握できるはずだ
    同じ発想の延長として、タブ枠の色をユーザー定義にしたり、タブごとに異なるノイズを加えたりできるようにするのも検討に値する。ノイズはズームレベルやビューポート中心からの距離に応じて薄くなればよい
    https://en.wikipedia.org/wiki/Method_of_loci

    • ユーザーの方向感覚を助けるためにミニマップを追加する予定だ
      ほのかな色の違いや音を使うというアイデアも面白い。考えてみる