What are the differences between Extending LilyPond and Scheme (in LilyPond)?

AFAICS there is on the one side the work of Urs Liska in this github repository that was forked by Jean Abou Samra (see this fork). On the other side there is a similar work of Jean Abou Samra in this gitlab repository.

And while the repository from Urs Liska accepts issues none of the other repositories is accepting issues or comments.

  • 1
    Clearly the first is a (more recent) guide into how Lilypond works under the hood (including a scheme tutorial), while the latter is only a tutorial for scheme and the integration into Lilypond. Jean’s guide is under active development, and does in fact accept issues.
    – Lazy
    Commented Sep 20, 2023 at 18:08

1 Answer 1


I will give my personal perspective as the author of “Extending LilyPond”.

Urs Liska's “Scheme (in LilyPond)” was left largely unfinished. Around 2020, having written most of the part about the Scheme language itself, the author retired from actively participating in the community, and didn't update this book further. As a result, the part he was planning on LilyPond's Scheme extension capabilities never gained the scope it was meant to have (there are quite a few empty, placeholder sections in the TOC).

My “Extending LilyPond” was originally an attempt to remedy just that. I've tried to cover most extension mechanisms like music functions, grob callbacks, Scheme engravers, most of the central APIs like pitches, durations, moments, most concepts like how the compilation process is organized, etc. It's not complete and will never be, but it exists, and should, I hope, give a full overview sufficient for “standing on your own two feet”.

While first conceived as a complement to “Scheme (in LilyPond)”, “Extending LilyPond” later gained a Scheme tutorial of its own, making it a “one stop shop” for learning Scheme and how to use it at the same time.

“Extending LilyPond” is also multilingual. It is available in English and French, with a work-in-progress German translation (credits to Lukas Fabian-Moser). That's another difference from “Scheme (in LilyPond)” (English only).

Which should you read? Obviously, if you're past the stage of learning Scheme itself then you want “Extending LilyPond”. As for the Scheme language, your mileage may vary. I would say “Extending LilyPond” is much more "straight to the point", and covers some more concepts (like recursion), while “Scheme (in LilyPond)” is more slow-paced and more suitable for absolute programming beginners.

You are right that the https://github.com/jeanas/lilyponds-scheme repository was not accepting issues. I have fixed that now. On the other hand, the https://gitlab.com/extending-lilypond/extending-lilypond.gitlab.io repository has always accepted issues (you can also write me by email as mentioned on the About page).

(And the reason https://scheme-book.readthedocs.io/en/latest/ is sourced from my GitHub fork of Urs Liska' repository is that it was no longer available on the author's site and I set up that hosting to revive it.)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.