Live data from Hacker News

Kruci: Post-mortem of a UI library

pwy.io

11–15 of 15 posts

Re: Kruci: Post-mortem of a UI library

#11
I think every abandoned TUI framework started with: "why is ratutui does things this way" and ended with "Oh, I get it now".

Problem is when we think UI frameworks we usually run in something that handles a lot of things for us: browser, xorg, wayland etc. You don't get in terminal, so a lot of times TUI frameworks result being a thin abstraction on top of a render-loop.

Then you can't slap something like MVC pattern on it because that isn't how terminal app works. The event handler pretty much has to be global, even if the framework provides some focus management capabilities.

I've tried using different languages and frameworks for thing that I'm working on and pretty much ready to comeback to ratatui.

Re: Kruci: Post-mortem of a UI library

#12
Absolutely loved this article, which tickles my ADHD brain in all the right ways. I learned that Ratatui does render-diffing, I learned that the Emacs render-diffing ("redisplay") is from 1981, is more sophisticated, and written by Java's creator (James Gosling).

I appreciated the explorations of the complexities of widget rendering, and syntax construction, and explorations of possible solutions and their tradeoffs, with ultimately a reasonable conclusion from the author that it wasn't worth their effort.

This was a great introduction to the design space of TUI libraries. Thanks!

> I think it's okay to both explore and to give up, other paths await.

100%, and thank you for taking us on this enlightening journey. Too much is lost to silent "failure"

Re: Kruci: Post-mortem of a UI library

#13
A developer that was exposed to Immediate Mode UI only is inventing regular windowing system from the first principles.

Reminds me of Turbo Vision, a TUI toolkit from 1990's: https://en.m.wikipedia.org/wiki/Turbo_Vision

It did not have shader nodes, but it run very well on 10MHz computers with a single megabyte of RAM (or less).

Post reply on HN