Rubish: A Unix shell written in pure Ruby

Project concept & naming

  • Rubish is a Unix-like shell implemented in Ruby, with tight integration between shell commands and Ruby objects.
  • Many commenters appreciate the punny name (“rubbish” / “Ruby shell”) and see it as clever, possibly April Fools–style branding but backed by a real, working project.
  • Some find the name awkward because it invites “rubbish” jokes.

Pipes vs method chaining

  • Debate centers on whether shell-style pipes or Ruby-style method chaining provide a better mental model.
  • Pipes: seen as more flexible because they operate on any function that accepts the piped value, without modifying object classes; strongly favored by users of PowerShell/Nushell.
  • Method chaining: common across many languages; works well when commands are modeled as methods on a common object.
  • Some like Elixir-style |> operators, but others argue Ruby’s existing chaining + blocks already cover most use cases.

Performance & suitability

  • Several note Ruby’s reputation as slow stems from older versions; modern Ruby is “fast enough” for scripting, web services, and shells.
  • Comparisons to Go, C, and JIT behavior appear, with consensus that dynamic languages remain slower but adequate for their domains.
  • For shell usage, Rubish is almost certainly faster than traditional shells for user-interactive workloads, though no hard benchmarks are provided.

Shell ergonomics & portability

  • Enthusiasm for language-integrated shells (Ruby, Scheme, etc.) as learning tools and powerful daily drivers.
  • Major concern: Rubish will not be installed on remote systems, forcing users to juggle multiple shells; ubiquity is cited as a key reason bash endures.
  • Some suggest a middle ground: use a modern/expressive shell for interactive work and keep scripts in POSIX sh/bash or another scripting language.

Codebase size & maintainability

  • Rubish has ~26k Ruby LOC vs ~6k for Plan 9’s rc shell; acknowledged as doing much more.
  • Concerns about large, monolithic methods and unclear boundaries, possibly linked to “vibe-coded” / LLM-assisted style, making contributions harder without tooling.
  • Others counter that messy single-author code predates LLMs and can still be refactored, though with more effort.

Ruby ecosystem & trajectory

  • Mixed views on Ruby’s health: some see it as declining and over-shadowed by Rails; others emphasize Ruby’s ongoing strengths in expressiveness, scripting, and LLM-assisted development.
  • Common theme: Ruby is valued for ergonomics and expressiveness more than raw performance.