Boosted by slightlyoff@toot.cafe ("Alex Russell"):
danderson@hachyderm.io ("Dave Anderson") wrote:
Lilypond is a remarkable piece of software.
Music notation typesetting ("engraving" is apparently the term of art) is a remarkably deep and complex problem, especially if you're trying to represent all the different notation systems and subtleties that people have come up with, spanning a millennium or more.
Lilypond's documentation has an essay on why it's such a hard problem, and I highly recommend reading it: https://lilypond.org/doc/v2.26/Documentation/essay/music-engraving
It's an ode to the art of sheet music engraving, and motivates why lilypond's output is very deliberately not perfectly regular, but instead tries to work with the flow of the music and shape itself to convey it clearly.
The essay also has a passage that captures the aesthetic of one of my favorite classes of software:
> We have written LilyPond as an experiment of how to condense the art of music engraving into a computer program. Thanks to all that hard work, the program can now be used to perform useful tasks.
As I'm forced to deal more and more with software written with an extractive mindset, I find this statement very moving: the starting point was trying to understand and celebrate a beautiful craft. The production of useful output is an incidental side effect of the pursuit of understanding.
I'm sure there's some poetic license there and the authors did sort of set out with the goal of producing useful output. But I also wish that more software endeavors approached their problem domain with this sort of humility and curiosity. Less "we can use computers to fix X", more "can we find a way for computers to do justice to X?"