7/2/2026 at 4:43:17 PM
I don't understand the desire for an X11 rewrite. X.org is absolutely terrible, I understand starting from scratch, but wouldn't it make far more sense to make a backwards compatible X12?by mghackerlady
7/2/2026 at 5:03:14 PM
I actually started an "x12" in Ruby (yes...)It took Claude less than a day to get it to the point where Firefox runs and plays YouTube videos at decent speed - modern x apps does mostly client side rendering so the X11 server is rarely on the hot path.
And then I started backfilling a lot of things I initially didn't want, because it turns out it takes very little code and it's fun to get xterm, twm, xeyes working and not just modern clients.
There are bits I'll never add, or will do differently (e.g. TrueType server- side fonts instead of bitmaps because it's near trivial)
But done right the complexity even of the legacy drawing modes is pretty limited.
I've been a proponent of an 'x12' approach, but I'm less sure it makes sense now beyond very targeted deprecation, because I no longer believe it needs to add much complexity.
I'm not sure how far I'll take my x11 server - it was pretty much done on a whim -, but at the moment it's rendering to an x11 window and I want to at least make it render to a gbm/dri backend for the sake of it - it won't be all that hard.
What I've learnt is that the difficulty of writing an x11 server is vastly overstated - you can do a basic one in a few thousand lines of code in any high level language.
by vidarh
7/2/2026 at 5:39:53 PM
Can I ask why you did it in ruby? I like ruby, don't get me wrong, but that seems pretty low on the list of languages an X12 would be written in.I think an X12 would be X11 with a cleaned up codebase, removed features, and additions of modern features that Wayland or Quartz have without compromising compatibility more than necessary
by mghackerlady
7/2/2026 at 5:56:08 PM
Because I like Ruby and it's compact, and most of my stack, including my terminal, wm, font renderer and X11 bindings are already in Ruby (the latter two are reused directly).Also because I was curious if it'd be viable, and turns out its fast enough (for a low level backend I might end up pulling in Mesa and some optimized blitting code, but otherwise pure Ruby is all you need)
To me an X12 implies significant protocol changes, or it's just another X11 implementation - X11 is the protocol, not a specific implementation.
And it turns out significant protocol changes might just not be particularly worthwhile given you can run most X11 clients with a few thousand lines (including XRender, Xinerama, and other key extensions)
Instead you certainly can make savings by ditching old hardware, and not bothering to make legacy drawing modes fast. I'm not going to commit to full compatibility, so maybe the x12 label might still make sense, but gtk + qt compatibility + about a dozen simple extra drawing calls gives you most X11 clients.
by vidarh