Skip to content

Instantly share code, notes, and snippets.

@ctrlcctrlv
Last active January 4, 2024 15:42
Show Gist options
  • Save ctrlcctrlv/978b3ee4f55d4b4ec415a985e01cb1c9 to your computer and use it in GitHub Desktop.
Save ctrlcctrlv/978b3ee4f55d4b4ec415a985e01cb1c9 to your computer and use it in GitHub Desktop.
Rust maintainer perfectionism

Rust maintainer perfectionism, or, the tragedy of Alacritty

I did not submit this to Hacker News and did not intend that this post would have high circulation but have no real problem with it being there or with it having such. I have more recent comments below. This post is from January 2020 and predates the Modular Font Editor K (MFEK) project.

I have not worked on Rust projects in quite a while, and don't know if I ever will again. I feel many crate maintainers are way too perfectionist, for example, despite all the developer hours that went into this PR, it took the effort within years to be (halfway) merged.

There's always a reason not to merge, isn't there? It would be better done with a new nightly language feature, or the function signature should have a where clause, or the documentation is not perfect. There's always a new nit to pick in the world of Rust crates, it seems. There's always a new pseudo-problem to tackle. Eventually, developers give up, which suits these maintainers just fine: after all, their baby goes on unchanged, and should they find the feature necessary, or the bug bothersome, they can fix it much better than any outside contributor. (Or so they tell themselves.)

So, here we are in 2020, and nix#864 remains unmerged. Fred, you say, you overreact. It's just nix, not a larger problem in Rust crates. Or, worse, you're the problem. No.

Let's look at another project, alacritty. Don't we all remember it? It was supposed to bring Rust to the mainstream Linux desktop. It was supposed to be the new standard tty. It was supposed to be a revolution, shaking the foundations of the Earth! And, for a time, it was: Alacritty is a wonderful little program. But perfectionism came too for Alacritty. @kovidgoyal's kitty launched around the same time and had similar goals: modern OpenGL terminal, high performance.

So what stopped the revolution? Simple: Perfectionism. Reading through the Alacritty pinned issues is like reading through a book of sorrows. So many reasons not to merge. So many reasons we can't do it. And if the code is not perfect, God forbid we make it optional. Why even try, if it will not be perfect? I commented on the Alacritty ligature issue, and the theme of my comment is now a regular one on their tracker: just use Kitty. Even its maintainer says, "If you feel like the goals of Kitty are more aligned with your personal preferences, why not support Kitty, it's a great terminal emulator."

Indeed. So while Alacritty celebrates getting scrollback, Kitty is no longer a toy TTY: it is ready for serious use. And that's why I decided to take the time to contribute to it, adding, pending PR acceptance, background images. (A similar Alacritty issue exists, and it looks just how you imagine: moaning about how hard the problem is and how much we'd need to ruin our perfect code to support it. Quoth @i30817, "depressingly conservative." Depressingly!)

(Note: This blog post reflects my opinions only and not those of anyone else—not any other developer mentioned here, but mine alone.)

@shiny-comic
Copy link

@primalmotion 無茶苦茶切れてて草
冷えてるか〜?Foo!

@ctrlcctrlv
Copy link
Author

ハッカーニュス―のユーザーであるための要件は無茶苦茶切れてるよ。
常に、毎日に。カキコを切れちゃなきゃならないわ。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment