Greetings everybody, and welcome to this twenty-fifth issue of the LilyPond Report!
As promised, this month’s issue features an interview with our fellow contributor Janek Warchoł. As well as an article by Janek Warchoł. And another article from Janek Warchoł. In other news, Janek Warchoł reports on some recent developments. Also to be found in this issue is a personal appeal from Janek Warchoł; and for a touch of fun, don’t miss our special section, written this month by — wait for it — Janek Warchoł. Now, there _is_ other stuff too. But rest assured everything has been validated and approved by Janek Warchoł.
As always, you can post your comments at the bottom of the page, or send your contributions to the LilyPond Report’s next issues.
Editorial
by David Kastrup.
Since my recent call for funding has not quite met the resonance I had hoped for, I went looking for alternate means of financing. I am glad to announce that I have been able to secure a combined grant from Microsoft, the RIAA, and the Hohner company for the purpose of typesetting the complete works of Bing Crosby for accordion.
To commemorate the passing away of Bing, the release is planned for October 14th, so it is not likely I’ll be able to work on much more than accordion support of LilyPond in the next half year.
Since I will not be able to do all of the heavy lifting unaided, I would ask all developers concerned about LilyPond’s well-being to please acquire an accordion and get acquainted with the local notation: the project calls for producing Russian, American, German, Italian, and French accordion chord notation from the same sources.
For later releases, a bandonion edition in the "Waschleinensystem" might get executed as well. Styrian harmonica Griffschrift will not be supported natively, unless Arnold Schwarzenegger can be interested in joining the project.
News from the ’pond
by Valentin Villenave.
Whilst our upcoming 2.16 stable release is getting nearer by the hour, its development cycle is not quite over yet. Our current development release is 2.15.35; a few Critical issues remain, particularly with note-heads, and therefore this is not our next (and maybe last?) "release candidate".
In other news, a new LilyPond-auto mailing list has been announced by Graham Percival, that is not intended for human posters, but... for robots and automated systems! If you’re at all interested in what our bug-tracker or patch revision system has to say, this is the place to be. (Beware: they can get chatty at times.)
Finally, for those of us who use FreeBSD, LilyPond’s development version is now available as a "port", in a more usual way than the self-contained binaries we distribute via our website. That’s a nice thought!
The recipe of the month
A new section in this Report: cooking! This month’s recipe was noticed by... you’ll never guess.
Without further adieu: Frogs in the Lily Pond!
3 x 85g packets green jelly
12 large jelly frogs or 24 small frogs
Flower sweetsMake the jelly according to instructions on the packet and pour half of it evenly between 12 small wide glasses. Place glasses in the fridge until the jelly is almost set. Place 1 or 2 frogs on top of each jelly and top up glasses with remaining jelly. Refrigerate until set. Decorate with small flowers.
An Interview with Janek Warchoł
presented by Valentin Villenave.
The LilyPond Report — Greetings Janek, thanks for lending us a bit of your time today! Well, this will be my first question actually: is time a rare and valuable resource to you, or is time something you can spend happily doing anything you like, something you can afford giving to anyone asking for your help? How busy is your life these days?
Janek Warchoł — Hi Valentin, and greetings to everyone!
I am very busy these days. My engineering education (is that’s how it’s called in English? The education system in US/UK is quite different from the Polish one and I always have trouble translating these terms...) does take some amount of time, and I have a lot of other activities. The day would have to be at least 41.168 hours long to enable me to "spend my time freely"
In the case of LilyPond, I’m definitely spending more time on it than i can afford... But I hope it will pay back in the future.
TLR — "Pay back"? Do you mean something precise by that or is it just a figure of speech?
JW — I’ve already learned a lot about programming, learned how to use git. I also doubt I’d have many opportunities to work on international, over-a-million-lines-of-code project if it wasn’t for Free Software.
It’s also possible that I’ll become a music engraver, who knows. I’ve already achieved one paid project with LilyPond (apart from preparing some scores for my choir).
TLR — I’m sure our readers would be interested in knowing where you grew up and where you live at the moment.
JW — Sure. I’m 8699 days old (as of April 1st, 2012); I was born, grew up and live in Warsaw — capital of Poland. My city isn’t very interesting, as most big cities... Especially that Nazi Germans wiped out 80% of it during World War II, so we (I mean Poles) had to start from scratch — under the supervision of totalitarian USSR. Not nice.
TLR — Indeed. So you’re preparing to become an engineer? What kind of?
JW — Mechatronics engineer. It’s a multidisciplinary field combining mechanics, electronics and computers; an example of a mechatronics project is a camera autofocus system. However, it is quite common for mechatronic students to work as programmers; I’ve just started, so i don’t know yet how my career will proceed.
TLR — Does music take an important place in your life (on a symbolic level or just the amount of time)? What kind of music? (I’m guessing "written", but I could be wrong
)
JW — Of course! I’m involved in four kinds of musical activity:
- listening to music — communing with beauty
- performing music — a way to express myself
- engraving music — creating artworks

- programming LilyPond — a brain-twisting exercise! (actually, it’s not THAT brain-twisting — don’t be afraid to try yourself!)
What do I listen to? Classical music (although I have some very strong and unconventional opinions here) and metal. The latter isn’t precisely about beauty
- it’s rather about power. You know, that’s the sort of music you play as a soundtrack to yourself when you’re doing something cool.
As for performing, it’s almost exclusively classical vocal music — I sing bass in "Epifania" choir.
We’re performing Mozart’s d-minor Requiem now — it’s really great, but our score is made with Finale... I had to download something else from imslp.org and print myself; it’s better but not perfect, either.
Recently I’ve seen a very good 1952 Breitkopf edition of Requiem, and you know what? I almost thought it was LilyPond!
TLR — ... Which brings us to your involvment with LilyPond. When and how did you first hear about LilyPond? Were you already familiar with the concept of "Free Software"?
JW — No idea how I learned about LilyPond. It was in 2007, I think; I could have read about her on Wikipedia when I was searching for an alternative to Finale. I’m sure about one thing: the moment i’ve read the Essay on music engraving, I became 100% hooked.
I’m the kind of guy who cares about every smallest detail (did you discover that flags in Finale scores are slightly misaligned with stems?) (image) Once or twice I posted a LilyPond snippet saying "look, spacing is wrong here" and people replied "where?" - they didn’t notice any problem at all :P
After some time of using Lily, I had a period of disappointment - we all know that LilyPond isn’t (yet) as easy to use as we’d like it to be. I’m not talking about text input, it’s the difficulties in correcting Lily mistakes — for example, a bad slur is a real pain to fix. Still, there’s nothing better than Lily, so I came back to it in 2010.
As for the "Free Software" — sure, I was familiar with this concept before, although I’ve never used Linux as my main operating system.
TLR — I assume you mean "GNU/Linux" here...
Was it natural for you to become a contributor, or would you have been fine with being "just another user"?
JW — I’m the kind of guy who’s full of ideas (my personal LilyPond To-do list has about 100 entries). and I love improving things. However, when I began to contribute back in 2010, I knew that I was way too inexperienced to even try tackling any of the issues that were interesting to me (I’m still not skilled enough to handle them on my own). Fortunately there was a nice coincidence: the vertical spacing engine was being changed at the moment and testers were needed. That’s how it began...
TLR — Can you sum up what you’ve accomplished (or help accomplish) this past year for the LilyPond project? Of all these tasks, which one felt most enjoyable/rewarding to you?
JW — When I started contributing, I attacked an issue that turned out to be too hard for me at the time - I tried to add shorter versions of flags to Feta font, to be used with shortened stems. After 2-3 months i abandoned it (time for resurrection, maybe?), but thanks to great support from our team (especially Carl and Mike, but also Graham and many other people) some of my work was actually used and I didn’t get discouraged. After that, all I did was some nitpicking, mostly to gain experience, but one detail turned out to be really cool: the change of Feta G clef shape.

- Comparison
- click here for a GIF animation (yes, it’s 1996 all over again)
It was perhaps the most rewarding thing I’ve done for Lily so far: the amount of feedback I received was enormous (even Han-Wen and Jan approved the new design!), and if you think about it, it’s a change that’s present in almost every LilyPond-made score!
One other rewarding thing was a bug report that I recently opened. It seems ordinary, but the nice thing is that it describes a general problem instead of separated symptoms (a few other issues were merged into it). And the best part — Mike Solomon had started working on it, a 1500-line patch was written and is now being refined — should be ready for inclusion quite soon! Not long ago Mike solved a similar problem with slurs; I think that the most important part of my report was realizing that the solution was already there.
TLR — You make it look as if everything is fine and dandy in the community; however some of our readers may be aware of a few controversies that are, in fact, quite common in the world of Free Software. Users complaining about developers, developers not feeling supported enough,... Have you, personally been confronted with some of these frustrating situations?
JW — Sure. First of all, I find myself with a split personality: the "user" part of me is always complaining that LilyPond isn’t good enough, while the "developer" part doesn’t have enough time and skill to do what he wants, and feels unappreciated sometimes. What’s interesting is that my basic need is engraving music (so I’m essentially a user), but right now I’m spending more time developing LilyPond than using it.
This reminds me of David Kastrup: he wanted to write accordion music with LilyPond and ended working on very low-level stuff like parser and iterators (which is very important but not very pleasant to work with, thus no one fixed these problems before). And he’s doing it full time now. We’ve recently seen some results of his work, they are really amazing! I wouldn’t manage to write the Prelude code Nicolas Sceaux wrote, but David’s version is really simple! Kudos to him!
And you know what? I guess that we forget sometimes that in Free Software people are not divided between users and developers. Almost everyone is a user, and everyone has little time to spare, too. Moreover, it’s not that developers have completely different needs than users and ignore their requests — quite often they simply have "different" skills. For example, as a user i was very irritated by rectangular outllines of slurs and other objects — but I didn’t have the skills to fix it.
TLR — What would your personal advice be for a better LilyPond community in general? Can you think of some governance issues, some things that could be handled better or less, er, passionately?
JW — Listen to Graham Percival when he says "we need more automation", because he is right.
And always assume good will, especially when you’re absolutely sure that the other guy is the bad one.
The worst thing about Lily development is that our resources are so limited. Sure, we do add great new features and can launch a big project from time to time, but nevertheless the team is quite small compared to the project size. There are lots, lots of things that would speed up our development process itself, but we are so busy that they often wait long until someone addresses them; I guess the problem is that no-one is particularly suited to do this. For example, asking David to take care of this would be a waste of his skill. Graham is very busy and the most important task for him is keeping the project running. As for myself, I tried for a bit, but I’m not very skilled — and every now and then something else requires my attention. Let me tell you my LilyPond activities:
- I’ve spent a lot of time making sure that LilyPond will be part of the Google Summer of Code program — I wrote a large part of our application, prepared our list of projects for students, etc.,
- Writing my own GSoC application (as a student — if I succeed, I’ll be able to work on Lily the whole summer!) took me about a dozen hours,
- I’d like to start our own Kickstarter project, similar to Open Goldberg Variations — doing this will take a lot of time, too (I’d appreciate some help here),
- I’m thinking about how our Contributors’ Guide could be rearranged to make it more straightforward for newcomers,
- I’m organizing a team of volunteers that is examining our regression tests — it’s been too long since anyone has had a careful look at them. If you can spare 5 minutes a week (no programming skills required!), check this out.
- I tried to improve some aspects of our Patchy script, but failed tremendously. I’d like to try again, but the above issues were more serious or urgent,
- I’d also like to improve git-cl script to make our development process more automated, but again GSoC and other things took my available time,
- (This one’s quite obvious) I participated in this interview and wrote two articles for this LilyPond Report.
Besides that, I’d also like to finish several patches I’ve started long ago, and finish three huge reports on the quality of Lily’s typesetting that I’ve been writing for *months*: beam, tie and lyric reports. And when I say huge, I really mean it — the biggest one already has over 500 examples. I love writing such reports, but it requires a lot of time and concentration. I wish someone would fund my work on them...
As you see, many of these are about improving our development, not directly the program. Sadly, even if I were working full-time on Lily, i wouldn’t manage to do all of this...
Now imagine how many cool things would Graham do if he had the time!
TLR — Overall, what’s your personal feeling regarding the LilyPond community (possibly in comparison with other online communities you may have been involved with)? Would you describe it as a "pleasant" place? Are you happy with the LilyPond project as it is now?
JW — I’m not involved with any other online community, but I’d say that LilyPond is doing well right now. Users and developers are helpful, I’d also say they are quite patient (if you know how to ask politely). I have met many great people here and I hope that some day I’ll have enough money to travel to other countries to meet them in person.
And, sure, we’re not perfect yet; in particular the learning curve for new contributors could be improved. However, we are moving in the right direction, I’d say.
TLR — One last question, on a more political note. You may be aware that most developed countries in the world have been told by industrials to sign an international "anti-counterfeiting" treaty (ACTA) written secretly without any democratic control whatsoever. This treaty poses serious threats to democracy and national sovereignty everywhere, including Free Software. Fortunately there’s been a growing anti-ACTA movement, that somehow originated in Poland. As a Polish citizen, do you have any opinion on the matter?
JW — I am alarmed by the ACTA and I hope that the protests will take effect; protesting is the least we can do. However, I’m afraid that it will take more than just protesting to protect our freedom. The main problem I see is that changes in law often go unnoticed and through small steps; it’s easy to miss them — if it were not for the protests, we wouldn’t even know about ACTA!
As for the Polish politicians mentioned in the articles you linked, i’m quite skeptical. I think that prime minister Tusk refrained from supporting ACTA because of social pressure. Neither do I like Palikot’s Movement; they are troublemakers and provocateurs. I find it quite sad that parties like Palikot’s Movement seem to be the core political supporters of anti-ACTA movement; it makes protesters lose some credibility.
TLR — Well, thank you Janek for this interview! See you soon on the mailing lists, and good luck for your future work!
JW — Thanks, and best wishes to you all, too!
Working with LilyPond: a personal experience
by Janek Warchoł
The Bug Report(s) of the month
It’s been a long time since we haven’t had a "bug report of the month". Therefore, we relied on Janek Warchoł (who else?) to provide us with not one but dozens of bug reports. See for example this nice sequenza:
- Bug 2141: some accidentals are too far from each other
- Bug 2142: accidental right-padding should depend on the tightness of music
- Bug 2143: accidental arrangement should depend on tightness of music
- Bug 2144: accidentals should be able to slide over/under suspended notes
- Bug 2145: shorter versions of accidentals for use in tight situations
Investor’s report
by David Kastrup.
So here are the operating results of people providing financial support for letting me work exclusively on LilyPond in March, the first month after making my case in the LilyPond Report #24:
| Onetime payments (€) | Payment plans (€) |
|---|---|
| 2×200 150 62 2×25 20 |
25+50 2×25 10 4 |
| Total: 682 | Total: 139 |
Strictly speaking, one of the one-time payments was still in February, and it was actually a partial payment for contracted work on LilyPond, but since the goal is to make a living (or rather currently a survival) from LilyPond, I decided to figure it in.
What are the projections for next month?
| Payment plans (€) |
|---|
| 100 25+50 2×25 10 4 |
| Total: 239 |
Now what are we to make of it? As explained earlier, I need about €800 per month to cover basic expenses of living (including health care but excluding other kinds of social security) while working on LilyPond, and about €1200 to sustain operations at a level where I can afford not looking for other options eventually. In March, I have been able to make ends meet without further depleting my leftovers from the last "proper’’ job I held.
On the one hand, I am impressed and grateful for the amount of support for my work on LilyPond that this has shown. If anybody in addition to those who already contributed had chosen to pick the monthly payment plan "life saver’’, his whole payment would have carried over into April.
But on the other hand, I consider it likely that in April, it would have gotten used up. Most of the payments were one-time payments triggered by the article in the last LilyPond report. So there is a lot of uncertainty about how long things are going to continue working out even barely. There was just one participant for a variable monthly payment scheme (25 fixed, and up to 50 for contributing to a target of 1200). And of course I’d like to become able to report to him that the target of €1200 could be reached without fully using up the variable part of his pledge, since obviously the variable schemes are intended to become less taxing once enough people join in.
Now what use was made of the contributions in March?
git shortlog -n --since "5 weeks ago"tells us (try it if you have a repository of LilyPond checked out) that several commands have been added, problems in connection with Ghostscript 9 have been cured (that resulted in bad output in viewers as well as print), several critical bugs have been addressed (unfortunately, we still have not managed to release 2.16), it has become possible to place things like \accidentalStyle and \tempo commands in \layout and \midi blocks, a number of smaller bugs have been fixed, some work has been done on making the regression test process about 30% faster, I have been pretty much the only person running the review tests for all changes to LilyPond, some internals were rearranged and made more robust. In the course of development, one merge from the translators went rather bad, and in consequence the effects of dozens of commits were removed from the repository, while git was of the opinion that it had kept them and consequently refused readmitting them.
After about a day of emergency work and testing several solutions for their viability, I managed to bring the repository back into a state where there was no danger that any branch (including unknown ones on external servers that might already have merged the problematic branch) would be in danger of reintroducing the problem. The bug squad made impressively short work of the remaining cleanup: verifying manually that all of the changes that went missing (from about two to three development versions worth) were indeed properly reintroduced by my fix.
Upcoming goals (some of which I would have wished to have completed already) are managing multiple marks (and other events) at the same time, actually working ways to programmatically extend grobs and events, further unifying work on the parser regarding music functions.
Of course, the goal of releasing 2.16 is foremost in most people’s mind (and I’ll likely help tackling a few more problems that keep popping up whenever we think that there is nothing else missing). It is also likely that guile-2.0 compatibility will become a quite more relevant topic soon (Ubuntu 12.04 is going to provide Guile 2.0.5 if I am not mistaken), and Ian Hulin, who has been doing most of the Guile 2 related work in the past, is currently unable to contribute much. But it will become rather more important to move LilyPond to the next generation of its internal Scheme interpreter soon. And again, this is a project requiring enough heavy lifting that spreading it over a longer amount of time and/or a lot of people would cause wasteful extra work.
So there is not really much of a shortage of projects for April. While I will take the week before Easter off for a private vacation (and thus have to plead "guilty’’ to not using every cent of my remaining savings exclusively for working on LilyPond), it will not be without computer and an agenda for LilyPond.
With regard to contributors: I’d like to see the load distributed over more shoulders. As you can see, rather few people committed to a regular "affordable" plan. If enough people were willing to contribute a small regular amount, the payoff for everyone would be good and not really involve much of a sacrifice, but I am afraid that I don’t really know how to convince more people that joining the ranks makes sense. If you do, tell me. Or them. It is one of the "it may seem insignificant in itself, but it is very important that you do it’’ kind of things.
As a rehash from the article in the last LilyPond Report (probably worth reading if you you haven’t done so already), here are the payment schemes I suggested:
My mail address dak@gnu.org is registered at Paypal, and if you want to skip the middle man for regular or larger amounts of money, you can ask me for my banking details (I am living in Germany). People prefer not to think about details, so here are some payment plans. The idea is to contribute a fixed minimum, and if a specified target is not reached by all contributions, you contribute proportionally up to a cap. Of course, you are free to pick all three numbers yourself, but here are a few models:
- [Regular] €25 per month fixed, no cap. This is the payment plan to pick once everything is sailing smoothly and you don’t want to contribute unduly much or think about it unduly much.
- [Lifesaver] Minimum €0, cap €250 per month, monthly target €800. That means that if the target (which basically allows me to postpone my decision to work elsewhere) is reached with everybody’s minimum already, you are not billed. This is the option to pick if you don’t want to support a single person as much as keep the LilyPond project from losing me. You do what is necessary to avoid my leaving, but nothing else. Yes, it will be annoying if it turns out you have to pay the cap more than once, but it will also be annoying for me not even to afford survival in spite of highly qualified work.
- [Torchbearer] Minimum €50, cap €150 per month, monthly target €1200. This is a model aimed at being reasonably comfortable for you as well as for me if everything works out.
Since I have been surprised in the past by the percentage of people actually coming through with their expressed intentions, you would start payment with your cap, and I would inform you in time for your next payment how much of that could be carried over due to others pitching in. The more variable schemes are designed to be effective with a few highly dedicated people, but allow them to back off once more people join.
My thanks to all those who contributed financially to my work on LilyPond in March, and those who continue to do so. Most of those who supported me financially also spend a considerable amount of time working on LilyPond or helping other users, and thus are doubly dedicated to its well-being.
LilyPond’s future
by Janek Warchoł.
What is the goal of LilyPond project?
Needless to say, LilyPond is a large project. With its history spanning 15 years and total size exceeding one million lines of code, it’s the biggest Free Software tool for musical score preparation in the world.
We know where we come from, and we know who we are. The obvious question is: where are we going, what will our future be? Thanks to continuous efforts from many people, LilyPond keeps evolving — but can we, and should we, shape her future?
I think we should. The scope of LilyPond is really big; without a goal our development efforts will be scattered and less effective than they could be. But how to decide what’s most important to LilyPond project? I suggest to use the ’catchphrases’ mentioned on our website and in the essay: "music engraving for everyone" and "automatic music engraving". Combining these two into "automated music engraving for everyone" gives us (in my opinion) a very good tool for measuring issue importance. If we decide that providing automatic music engraving for everyone is our main goal, I guess that would mean two things:
- making Lily easier to use,
- having tasks that appear most commonly even more automated.
(notice that fixing uncommon bugs and adding special features for modern notation doesn’t quite fit any of the above. While I’m not at all arguing against doing these, I suggest that we focus on something else).
The first thing is a very complicated issue, and I’ll just scratch the surface here: it requires rewriting LilyPond internals (David Kastrup is doing a really amazing job here), standarizing our syntax and adding some nice yet powerful and versatile shortcuts. For example, it would be nice (in my opinion) to have a set of predefined "instruments" that would make entering music easier and the code more elegant, i.e.
\new Staff = "tenor" { \music }would be equivalent to:
\new Staff = "tenor" \with {
\consists Ambitus_engraver
} {
\clef "G_8"
\set Staff.instrumentName = "Tenor"
\set Staff.shortInstrumentName = "T"
\set Staff.midiInstrument = "Choir Aahs"
\autoBeamOff
\music
}One can also argue that it should include putting more effort into creating a fully-featured graphical interface — that’s a topic for a whole other discussion.
Concerning the second area (automating common tasks), there are of course loads of things that could use more automation — we shall decide which are most important for achieving the "automated music engraving for everyone" goal. In my opinion two types of issues are crucial:
- basic notation,
- notation elements that heavily depend on surroundings.
An example of such an issue is tie formatting. Ties are necessary for notating rhythms, so they are a very basic element of notation and appear frequently. Since their shape changes with note placement and overall surroundings, fixing bad tie shapes is difficult. Imagine an orchestral piece containing a clarinet in B flat; I want to produce an orchestral score in concert pitch and parts with appropriate transposition. If there is a bad-looking tie somewhere, I have a problem: the tie in full score can be quite different from the tie in part (if the notes connected are between lines in score, they are placed on lines in part due to transposition, and also horizontal spacing - thus, the length of the tie itself - may be different; full score may also contain some cautionary accidentals that further complicate tie formatting problem). Fixing such a bad tie is difficult; and if you ever decide to transpose the piece you get yet another tie setup (and this time your previous overrides might actually spoil the default good output).
Now, that’s just one example. What is basic notation in general, then? I suggest defining it as single-staff, single-voice music consisting of:
- notes ( = noteheads, stems, flags, beams, ledger lines)
- rests
- accidentals
- ties
- augmentation dots
- lyrics
These are necessary for notating essential music information - pitch, rhythm and (for vocal music) text to be performed. In my opinion we should focus on perfecting these areas. I say "perfecting", because we already support all basic notation elements — it’s just a matter of having them work really smartly in any reasonable situation, out of the box. If you are wondering "what on earth needs improving? everything is good!", wait for the next LilyPond Report, where I’m going to discuss some real-life examples — or try playing the game below! Many of the problems I report feel like insignificant nitpicks, but actually the difference between acceptable and outstanding music engraving is all about details!
The game of the month
Here is a PDF file from a default LilyPond output, compiled by — you guessed it — Janek Warchoł.
Found it? No?
What do these colors mean?
- magenta: accidental spacing (generally some accidentals take too much space).
- dark violet: lyrics horizontal spacing, and friends.
- dark and medium blue: vertical positioning breaking into segments
- light blue: vertical spacing should use skyline integrals
Stay tuned for more examples of default LilyPond
output in the next LilyPond Report! ![]()
The joke of the month
This month’s quote is from David Kastrup, but we wouldn’t have dreamt of including it if it hadn’t been deemed worth it by you-know-who:
— What impressed you most about the LilyPond code base?
— No comment.
— But I really want to know!
— I just told you.

That concludes our twentyfifth issue of the LilyPond Report.
Cheers,
Janek Warchoł, Janek Warchoł, Janek Warchoł and Janek Warchoł (some additional help provided by Valentin Villenave and David Kastrup, with special permission from Janek Warchoł).









