logoalt Hacker News

Rune is now open source

156 pointsby ernestrcyesterday at 3:31 PM55 commentsview on HN

Comments

_haoyesterday at 9:28 PM

For a brief moment I thought this is about the game Rune[1] and got excited as I have played that a lot when growing up. Alas, that wasn’t it.

[1] https://en.wikipedia.org/wiki/Rune_(video_game)

show 2 replies
rao-vyesterday at 6:40 PM

I like the idea of making it trivial to work across multiple machines but I’d really prefer not to have to trust your coordination server and encryption approach etc.

Could this (optionally) just run over Tailscale (I suppose ssh is always an option)

https://docs.rune.build/learn/network

show 1 reply
_bentyesterday at 7:17 PM

> we will give participating contributors a contractual right to share in the revenue generated by Rune, directly or indirectly.

this sounds like a terrible idea. the only incentive to contribute to your project should be to fix a bug or contribute a feature upstream you yourself need.

consider the fallout of Hacktoberfest, 'Tide' or the ai produced PR spam for social clout on GitHub as of today and then imagine what happens if someone provides a direct financial incentive to do it.

marcopoloyesterday at 11:31 PM

Exciting to have a hackable Go based editor. The onboarding was pretty nice from a Vim user. Although I'm having some trouble with my fish shell also having vim bindings.

ernestrcyesterday at 3:46 PM

Author here! The post explains some of the details behind using Go as the primary language for building an IDE. It also introduces our novel contributor program, which will distribute some of Unstable Build's proceeds amongst participating developers, as opposed to making them sign a CLA to surrender their rights to a company. Happy to answer questions!

anigbrowlyesterday at 6:41 PM

The open ledger and profit-sharing for contributors might be an even more interesting innovation than the IDE itself. I like my existing IDE but Rune looks very nice so I'll certainly give it a whirl.

show 1 reply
aetherspawnyesterday at 11:33 PM

I am a huge advocate of this kind of app paradigm:

It’s now really easy to spin a terminal emulator and make cross platform terminal apps that work the same on Windows, macOS and Linux regardless of users terminal. You can also make sure the term sends everything required to make the app “nice”, like mouse hover events.

I started using this paradigm for some of my own company’s apps around 3 months ago because it was neat to allow the app to spawn DWM windows for sub windows, dialogs etc. but the app can also fall back to standard TTY for using over SSH or from within a docker or any other terminal. Also, using your own terminal window gives proper taskbar integration (stacking windows) and you can set your own app name/icon.

(It’s possible to 1-shot this in Python using the prompt “use ghostling as a reference, write a terminal emulator in Python using raylib and libghostty that hosts my app” and the first pass was around half the speed of Ghostty.)

threecheeseyesterday at 8:17 PM

You mentioned “it’s like driving a new car” in another thread; I tried Rune in an earlier incarnation, and it was more drastic than a new car. I’m a vim user, and so enabled the Vim option in onboarding - that was a big mistake, because I literally could not do anything without using vim motions. I felt like a helpless noob on my first unix, how-do-I-exit-this-dam-text-editor.

I realized that your onboarding was also training, and that I could not do anything with Rune without going through that training, and so I immediately exited and uninstalled. The friction was much too much.

I’m not sure if the onboarding is still like that :) If it is, my feedback would be have much much lower friction to try (or warnings for those who claim to use vim :).

ramon156yesterday at 6:10 PM

Lovely write-up! Will take a look at rune as an alternative to my Zed setup.

Not because I dislike Zed, I'm just addicted to trying out IDEs :)

show 1 reply
gregwebsyesterday at 9:48 PM

I am already a zellij user and not sure if I want to drive everything from an IDE instead. I definitely see the appeal though.

I like the discoverability of the text prompt commands. I like that the terminal is more of a first class citizen. I like that I can run this with just `go run`.

The themes are pretty bad right now IMHO. I use solarized/gruvbox themes- both light and dark.

pmontrayesterday at 7:28 PM

Claude in a terminal is becoming more and more my IDE. I use emacs to do some edits or to look at some files, but orders of magnitude less than when I wrote all the code.

Syntax highlighting? Yes, for readability. Completion? I noticed today that maybe I broke the language server for Ruby but I didn't bother to investigate. Maybe next week, or next month.

Git log, blame, diff, yes, as usual.

I don't see a bright future for IDEs. Vi or emacs from the 90s could be all we need.

Non developers using AIs to vibe code their projects maybe won't need any editor at all, nor an IDE.

show 4 replies
purpleideayesterday at 6:17 PM

(I will try this as soon as there is a package in Fedora... That's my personal subjective bar to choosing a new EDITOR. But I definitely hope this succeeds, I'm a fan so far.)

show 1 reply
melodyogonnayesterday at 9:55 PM

I'm going to give this a try because I once also tried to make a slick GUI ide with Vim key bindings. Unfortunately I was trying to use Rust then, of which I had no experience, while trying to write a desktop app, of which I also had no experience.

bobajeffyesterday at 6:45 PM

I'm always looking for new gui code editors. For me right now Vscode is still the top (and since I've been trying Lean out it's required). Zed is a very close second.

One thing I would like to see on the home page is a video showing it being used. Also would like to see how it looks in a light theme. The repository says it's keyboard driven does that mean it's modal or can I still use it like a normal modeless editor?

show 1 reply
elcritchyesterday at 6:47 PM

vtebench is just what I've been wanting! Rune looks pretty cool too. Awesome to see people working on polishing things.

I've been building my own editor and gui toolkit, but modeled on Cocoa/OpenStep and similarly found tuning terminal performance involved more about tuning memory access and storage. That sounds somewhat similar to the experience in TFA.

robert-zarembayesterday at 8:05 PM

Go is my the most favourite language, so I'm happy to see a Go based editor. However this days I'm writing code mainly in typescript (for Cloudflare workers). TS is the most popular language and you guys will definitely need to prioritize TS.

show 1 reply
microflashyesterday at 8:02 PM

Do I have to use Rune Network? Can it can run offline?

show 1 reply
woolionyesterday at 8:18 PM

The idea of the reverse rug-pull is fantastic, I hope it will work out! The ways people abuse open-source is appalling, yet the risible funding that goes to open-source makes thing really difficult for everyone.

The whole write-up is quite interesting so I'll definitely try it out.

einpoklumyesterday at 8:40 PM

I have a couple of questions:

1. Wouldn't writing everything from scratch mean a huge waste of effort? And can they really expect to replicate a lot of functionality for C++, Java, Rust, etc. that in other IDEs relies on libraries and compilers external tools doing a lot of heavy lifting?

2. What is this quote about? :

> What has happened in parts of the open-source community over the past few years is appalling. Companies have built projects in the open, benefited from their users and contributors, and then changed the license once the project became valuable.

raggiyesterday at 8:20 PM

The build time claim in the blog post is dubious, part of the problem is CGO isn't fast, but also if build time was really a motivator the null build path is entirely unoptimized for objects with long build times:

cached null (no changes) build:

        ~github/unstablebuild/rune % make
        pre-commit not installed; skipping git hook setup
        cd cmd/buildstamp && CGO_ENABLED=1 go build  -ldflags="-X unstable.build/rune/internal/debug.Tag=$(git describe --tags) -X unstable.build/rune/internal/debug.Commit=$(git rev-parse --short HEAD) -X unstable.build/rune/internal/debug.BuildDate=2026-09-11T20:16:22Z  -X unstable.build/rune/internal/debug.Package=six" -o ../../bin/buildstamp
        cd cmd/extension_chaos && CGO_ENABLED=1 go build  -ldflags="-X unstable.build/rune/internal/debug.Tag=$(git describe --tags) -X unstable.build/rune/internal/debug.Commit=$(git rev-parse --short HEAD) -X unstable.build/rune/internal/debug.BuildDate=2026-09-11T20:16:22Z  -X unstable.build/rune/internal/debug.Package=six" -o ../../bin/extension_chaos
        cd cmd/extension_color_palette && CGO_ENABLED=1 go build  -ldflags="-X unstable.build/rune/internal/debug.Tag=$(git describe --tags) -X unstable.build/rune/internal/debug.Commit=$(git rev-parse --short HEAD) -X unstable.build/rune/internal/debug.BuildDate=2026-09-11T20:16:22Z  -X unstable.build/rune/internal/debug.Package=six" -o ../../bin/extension_color_palette
        cd cmd/extension_fuzzy_search && CGO_ENABLED=1 go build  -ldflags="-X unstable.build/rune/internal/debug.Tag=$(git describe --tags) -X unstable.build/rune/internal/debug.Commit=$(git rev-parse --short HEAD) -X unstable.build/rune/internal/debug.BuildDate=2026-09-11T20:16:22Z  -X unstable.build/rune/internal/debug.Package=six" -o ../../bin/extension_fuzzy_search
        cd cmd/extension_go && CGO_ENABLED=1 go build  -ldflags="-X unstable.build/rune/internal/debug.Tag=$(git describe --tags) -X unstable.build/rune/internal/debug.Commit=$(git rev-parse --short HEAD) -X unstable.build/rune/internal/debug.BuildDate=2026-09-11T20:16:22Z  -X unstable.build/rune/internal/debug.Package=six" -o ../../bin/extension_go
        cd cmd/extension_python && CGO_ENABLED=1 go build  -ldflags="-X unstable.build/rune/internal/debug.Tag=$(git describe --tags) -X unstable.build/rune/internal/debug.Commit=$(git rev-parse --short HEAD) -X unstable.build/rune/internal/debug.BuildDate=2026-09-11T20:16:22Z  -X unstable.build/rune/internal/debug.Package=six" -o ../../bin/extension_python
        cd cmd/extension_rtc && CGO_ENABLED=1 go build  -ldflags="-X unstable.build/rune/internal/debug.Tag=$(git describe --tags) -X unstable.build/rune/internal/debug.Commit=$(git rev-parse --short HEAD) -X unstable.build/rune/internal/debug.BuildDate=2026-09-11T20:16:22Z  -X unstable.build/rune/internal/debug.Package=six" -o ../../bin/extension_rtc
        cd cmd/extension_rust && CGO_ENABLED=1 go build  -ldflags="-X unstable.build/rune/internal/debug.Tag=$(git describe --tags) -X unstable.build/rune/internal/debug.Commit=$(git rev-parse --short HEAD) -X unstable.build/rune/internal/debug.BuildDate=2026-09-11T20:16:22Z  -X unstable.build/rune/internal/debug.Package=six" -o ../../bin/extension_rust
        cd cmd/extension_zig && CGO_ENABLED=1 go build  -ldflags="-X unstable.build/rune/internal/debug.Tag=$(git describe --tags) -X unstable.build/rune/internal/debug.Commit=$(git rev-parse --short HEAD) -X unstable.build/rune/internal/debug.BuildDate=2026-09-11T20:16:22Z  -X unstable.build/rune/internal/debug.Package=six" -o ../../bin/extension_zig
        cd cmd/runefox && CGO_ENABLED=1 go build  -ldflags="-X unstable.build/rune/internal/debug.Tag=$(git describe --tags) -X unstable.build/rune/internal/debug.Commit=$(git rev-parse --short HEAD) -X unstable.build/rune/internal/debug.BuildDate=2026-09-11T20:16:22Z  -X unstable.build/rune/internal/debug.Package=six" -o ../../bin/runefox
        cd cmd/sshshop && CGO_ENABLED=1 go build  -ldflags="-X unstable.build/rune/internal/debug.Tag=$(git describe --tags) -X unstable.build/rune/internal/debug.Commit=$(git rev-parse --short HEAD) -X unstable.build/rune/internal/debug.BuildDate=2026-09-11T20:16:22Z  -X unstable.build/rune/internal/debug.Package=six" -o ../../bin/sshshop
        cd cmd/walkbench && CGO_ENABLED=1 go build  -ldflags="-X unstable.build/rune/internal/debug.Tag=$(git describe --tags) -X unstable.build/rune/internal/debug.Commit=$(git rev-parse --short HEAD) -X unstable.build/rune/internal/debug.BuildDate=2026-09-11T20:16:22Z  -X unstable.build/rune/internal/debug.Package=six" -o ../../bin/walkbench
        make  35.90s user 5.88s system 191% cpu 21.846 total 1975848 rss
vs. cached non-null (changed) build:

    ~github/zed-industries/zed % touch crates/zed/src/zed.rs
    ~github/zed-industries/zed % cargo build
       Compiling zed v1.18.0 (/home/raggi/src/github.com/zed-industries/zed/crates/zed)
       Finished `dev` profile [unoptimized + debuginfo] target(s) in 8.42s
    cargo build  10.15s user 9.34s system 228% cpu 8.531 total 7930312 rss

Build times are a valid thing to care about and talk about, but the claims implied don't stand up to scrutiny.
show 1 reply
collabsyesterday at 6:34 PM

[dead]

purpleideayesterday at 6:16 PM

[dead]

p0larpatchyesterday at 6:56 PM

[dead]

fishgoesblubyesterday at 6:09 PM

Lovely to see, this was my main gripe the last I saw it. Also great to see it under the GPLv3, and not some crap like MIT.