As someone who has done some font library spelunking and rendering - wanted to write a short thread about the "Harfbuzz is vibe coded now!" thing because I think some reactions are knee-jerk but I think it's a problem for different reasons...

If you don't know, Harfbuzz is a library that takes fonts and turns them into shape data. It doesn't draw them or generate bitmaps, it just decodes the font and gives you the shape.

https://github.com/harfbuzz/harfbuzz

Because of its limited scope of responsibilities - Harfbuzz has actually been integrated in a lot of places. A healthy ecosystem of renderers grew up around it that can render text to GPUs or bitmaps.

For Harfbuzz 13 - the author seems to have vibe coded bitmap and SVG rendering and stuck it onto the library in an unstable interface. And yes vibe coding finger wag, but also... why? Why tackle a problem that was solved by the healthy ecosystem that built on your library?

I kind of worry the draw of LLMs - especially if you're an open source library maintainer - will just be to throw on a bunch of stuff that bulks up your library that isn't necessary. Part of the draw of Harfbuzz is that if I'm doing something like GPU drawing it's focused on working with my draw system instead of defining its own. And sure I can just ignore all the bitmap and SVG rendering they're throwing on but.... sigh. Why? Why compete against your ecosystem? It's a solved problem.

There are people clearly passionate about rendering with Harfbuzz. Why compete with them? They've taken the time to really understand the rendering problems and put out great solutions. Why vibe code your own thing when it doesn't seem like it's your interest or domain?

I dunno, maybe they were being asked for this. I had a moment of "Harfbuzz doesn't render?" when I looked at it. But then I went "Oh, Harfbuzz is supposed to underlie a rendering system, neat!"

@colincornaby This is *exactly* what the following article is about: https://ogirardot.writizzy.com/p/good-software-knows-when-to-stop

When it's "easy" to generate code ceaselessly, software will grow into nonsense feature soup that forgets why it was useful in the first place.

Good software knows when to stop

Good software knows what problem it solves and what needs to be tackled by another tool

Olivier Girardot's Ramblings

@khaled @colincornaby I have literally been thinking about addressing this gap for years.

https://x.com/behdadesfahbod/status/1891722747966796129

Behdad Esfahbod (@behdadesfahbod) on X

I have started to seriously think about how to add a vertical autohinter and a nimble rasterizer, plus, down the road, a COLRv1 renderer. I will be posting more about those plans as they develop. In the mean time, stay tuned for the next release that is faster than ever...

X (formerly Twitter)

@colincornaby I noticed this in the repo root, and it just feels weird to me that it would be in there…

https://github.com/harfbuzz/harfbuzz/blob/main/xkcd.png

@colincornaby is it common to put memes in repos? Is this what the kids are doing these days?