Show HN: Fresh – A new terminal editor built in Rust
Installation & Packaging Choices
- Major debate around recommending
npmfor a Rust tool:- Some users strongly prefer
cargo installand refuse to install npm. - Others argue npm has a far larger installed base and lowers the barrier for non-Rust developers.
- Some users strongly prefer
- Concerns that using a language-specific package manager (npm) to distribute a binary for another language is “weird”; suggestions to favor:
- Direct binaries via curl/wget, GitHub releases, distro packages, Homebrew, etc.
- Author responded by:
- Supporting multiple options: cargo, npm/npx, GitHub binaries, and later Homebrew, AUR, .deb, .rpm.
- Acknowledging security concerns with npm and calling the npm route an initial “hack.”
Security, Updating & Package Managers
- Some worry about npm’s security track record, preferring direct binaries or distro repos.
- Others note that if you’re already running a third‑party binary, npm vs curl is a marginal difference.
- Friction around updates: many people don’t routinely run
npm update/cargo update; tools like topgrade were suggested to unify updates. - Side thread on the desire for a cross-platform generic package manager; Nix and existing DIY approaches were mentioned.
Performance, Architecture & Huge Files
- Fresh uses a lazy-loading piece tree; praised for instantly handling multi‑GB files with low RAM.
- Compared to Emacs, which needed seconds and gigabytes of RAM for the same file unless using specialized packages like vlf.
- Author chose explicit chunk management instead of mmap to avoid OS/filesystem quirks and to support remote-storage backends (e.g., S3).
Binary Size, Dependencies & Plugin Runtime
- Strong reaction to the initially ~400 MB executable for a terminal editor.
- Cause identified as bundling Deno/V8 for TypeScript-based extensions.
- Stripping the binary reduced it to ~76 MB; still many (≈500+) dependencies due to Deno.
- Tension between:
- TypeScript as a popular, accessible extension language.
- Lua or other runtimes as much leaner but less familiar.
- Alternative runtimes like Bun were discussed as potential future options.
UX, Keybindings & Platform Issues
- Many users enthusiastic about:
- Standard/CUA-like keybindings (Ctrl+Arrows, Ctrl+Backspace/Delete).
- Command palette, open-file UI, multi-cursor support, and overall discoverability.
- Multiple users say it finally gives them a non-modal, keyboard-focused TUI alternative to vi-style editors.
- Mac-specific issues:
- Conflicts with system/terminal keymaps (fn/command remaps, Option-as-meta, selection vs terminal tab-switching).
- Some of these are viewed as terminal/OS concerns rather than the editor’s.
- Windows native terminal mouse support is currently buggy; WSL is reported to work better.
- Requests for:
- Line/column arguments in CLI (since added).
- Diff views, improved quit dialog semantics, configurable keybindings, and GPM mouse support (added).
LSP, Tree-sitter & “VSCode-like TUI IDE” Vision
- LSP support exists (go-to-definition, completion, inlay hints, symbol highlighting) but needs polish.
- Tree-sitter is already used for syntax highlighting; users asked for clearer/expanded parser integration.
- Debug Adapter Protocol was raised as a way to add integrated debugging, evoking old text-mode IDEs (Turbo Pascal/Quick).
- Some suggest aiming at partial VSCode extension compatibility, reusing VSCode’s ecosystem; author is interested but wary:
- VSCode API is large and web-centric.
- Many APIs assume whole-file in-memory, clashing with Fresh’s chunked design.
Licensing Debate
- Editor is under GPLv2; author admits it was chosen somewhat by habit.
- Mixed feedback:
- Some argue GPL is good for preserving user freedoms and preventing closed forks.
- Others urge MIT/Apache-2 for maximal reuse and to avoid legal friction around reading/borrowing code.
- Author is torn between enabling free reuse of components and preventing a fully closed clone.
AI-Assisted Development & Code Quality
- Project heavily used Claude for code generation; author says this multiplied productivity and enabled a 3–4 week build.
- Reactions split:
- Some find it inspiring that a complex editor can be built quickly with AI assistance.
- Others distrust AI-generated code, pointing to many large commits authored by AI and at least one function whose behavior doesn’t match its comment.
- Question raised: how thoroughly the human author reviewed AI-generated code.
Positioning vs Other Editors & Overall Reception
- Comparisons to:
- Micro (similar CUA TUI; Lua vs TypeScript; micro is widely packaged).
- Vim/Neovim, Emacs, Helix, Kakoune, Zed, Lapce, Microsoft’s
edit, Turbo Vision-style editors.
- Fresh is generally seen as:
- Non-modal, TUI, VSCode-inspired UX.
- Extremely good at huge files.
- A promising alternative for users who dislike modal editing and complex Emacs/Vim configs.
- Overall tone: strong enthusiasm about UX and performance, tempered by concerns over installation choices, binary size, dependency bloat, licensing, and AI-generated code.