LilyPond news

Post a message

Replying to:

The LilyPond Report #25

Sunday 1 April 2012 by Valentin Villenave, David Kastrup, Janek Warchoł

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.

JPEG - 52.6 kb
Bing Crosby

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.

PNG - 147.8 kb
Embrace ze future of LilyPond

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!

Here’s an addition by Janek Warchoł.

As some of you may know, we applied to Google Summer of code program (Google pays students stipends for working on open source programs).

Our application was rejected, probably because we aren’t a big enough project (indeed we’re quite small compared to some accepted organizations). However, LilyPond is a part of the GNU project - and the GNU project was accepted as a GSoC mentoring organization, so we "joined the GNU umbrella" together with a score other projects. Of course you can’t expect that Google will give you everything you want — in particular, there will be a limited number of students funded by Google. No-one knows how many of these "student slots" will GNU receive - will it be more like 5 or 25? We also don’t know how many of GNU’s slots will LilyPond receive, but they’re worth fighting for. If you are a student, here’s your last chance. Go read GSoC FAQ and see the guidelines for applying to GNU projects. Student application deadline is on April 6th, 19:00 UTC. I’m going to submit two applications (i’ll discuss them on -devel mailing list first, please give me your feedback!) - wish me luck!

 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!

JPEG - 31.4 kb

3 x 85g packets green jelly
12 large jelly frogs or 24 small frogs
Flower sweets

Make 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?

JPEG - 39.1 kb
Janek’s self-portrait
No doubt: LilyPond can rely on serious people. (And good-looking, at that.)

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.

JPEG - 206.6 kb
A view from Warsaw
"not nice" ?

TLR — Indeed. So you’re preparing to become an engineer? What kind of?

JWMechatronics 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.

JPEG - 199.3 kb
And now, a little game: "find the geek"!

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.

PNG - 21.5 kb
A flag with Finale
One word: #fail.

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.

PNG - 74.8 kb
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ł

My LilyPond experience

As you’ve already read in the interview, I’ve known LilyPond for quite a long period of time. However, I don’t consider myself an advanced user: the tasks I did with Lily were quite ordinary — choral music predating the 20th century. Since it’s automatic engraving that fascinates me the most, I don’t like fiddling with Lily functions and writing my own Scheme stuff.

One could say that I’m some kind of a minimalist — in my opinion, the simpler the input looks, the better (and the fewer commands are used, the more I like it) — as long as it is a robust design that could be easily modified.

So, what was my experience with LilyPond during these years? One thing I have to say is that it was fantastic to see how she changed and see that with every new version features I needed were added. It’s impressive that such a small development team, consisting of volunteers only, can produce so much great code!

As for the current version, I find Lily great, but uneven. In many areas she delivers excellent typography and is a joy to use, but every now and then a small quirk appears which spoils the overall effect for me (bear in mind that I truly am a perfectionist, so things that irk me may be totally okay with you).

Since the advantages of using LilyPond are too numerous to write, I intend to explore some the problems I faced, hoping that such feedback will be useful for our Development Team.

Slurs and page layout
Perhaps the biggest and most time consuming difficulties I face are things that often need manual tweaks and recompiling to see if I got the result right. One example of such issues is slur shape.

Slurs are generally difficult to tweak; fortunately, quite a lot of them look good by default, but corrections are needed far too often to say that’s an insignificant issue. There are quite a lot of methods for modifying slurs — one can set the positions of its ends, explicitly define control points of the bezier curves, or add some offsets to the default slurs using a very nice function written collaboratively by Neil Puttock, Dmytro Redchuck and David Nalesnik. I can even imagine at least two more slur-modifying functions and how they could work like — but it still won’t solve the problem completely. That’s because all these fixes can very easily go wrong: any new version of LilyPond may introduce small changes in spacing which would result in different line breaking — and many slurs would suddenly look completely different; I’d have to redo corrections for every slur that crosses a line break at a different place. Very painful; that’s probably the worst part of the slur problem.

The other thing that takes a lot of time to get it right, is vertical spacing and page layout. Despite the fact that I began using Lily in 2007, I wasn’t bothered by these issues until recently, so I cannot compare the new vertical spacing system (introduced in 2.14) to what was before.

Generally, for almost every score I need to determine spacing values from scratch, experimenting a lot; I haven’t found any set of values that would work good enough as a default for all my scores, even though I want a similar look-and-feel for every piece. That’s interesting: either the padding-distance-stretchability system currently used has some limitations, or I don’t know all commands that might be useful. For example, I need flexible header formatting — the distance between the title (plus composer and other indications) and the first system of the music should correspond to the general spacing of the systems: when there’s a lot of space on the first page, the gap should be big, but with dense spacing it should be reduced accordingly.

The problem is that spacing properties basic- and minimum-distance are measured between reference points of the objects. In this case the reference point of the first system in the middle line of the top staff (quite reasonably), but the reference point of the header markup is its top border (yes, it doesn’t matter how high the markup is!). Thus, the result doesn’t make any sense — a big gap for small titles and no gap for very high titles. Now, if I use padding instead, the results are more predictable, but I still cannot use one value for all scores — that’s because padding is unstretchable (and I definitely want this gap to adapt to the space available).

Structural problems
...are my second headache. Generally, LilyPond is very good at encouraging logically structured scores — and it’s one of Lily’s greatest strengths, I love it! However, there are significant shortcomings.

The first one is in \partcombine. It is a wonderful tool, but it doesn’t support well articulations, dynamics and — above all — lyrics. Therefore, when i have a vocal piece with, let’s say, two basses in some places, I have to write the second bass as a temporary voice (or using chords). If I ever want to split these — for example when I want to produce educational MIDI files for my choir, with every MIDI file containing exactly one voice — I have a problem.

The second difficulty is dealing with structural elements that are common to the whole score, such as line breaks, time and key signatures, barlines, rehearsal marks and so on. Every time I’m about to typeset one of them, I spend a lot of time hesitating: is it better to write it inside the music variables (for soprano, alto, etc.), or in a separate voice? In case of breaks, the decision is obvious: they are completely unrelated to music content and change too often; they should be separate. But what about the others? Each solution has its shortcomings:

  • if I write these elements inside each music variable, the fact that they affect the whole score is not represented well. Every time I want to change one of them, I need to do this in every voice variable (its easy to overlook something). Also, specifying all this in every music variable means more typing; additionally, when I want to copy some fragment and use it elsewhere, I need to remove them.
  • if I create a separate voice for these settings, I have to type a lot of cumbersome skips (which aren’t convenient to update, either) and, above all, the musical content gets separated. I would find it much more elegant if the voice variables contained all musical information - i could then compile my music variables (which are held in their own \included files) to get parts from my score. That would be a structural perfection, truly LilyPondish.

Unfortunately, I’m afraid that LilyPond herself can’t do much about this problem. However, it would be a great feature for an editor like Frescobaldi — there’s already a "copy/paste durations" tool, and I guess this could be solved similarly — a tool that would copy/cut selected types of items and paste them over some music or into an all-skip expression.

Scheme
Finally, I have some problems with Scheme. I don’t like Scheme syntax; it looks cryptic and inelegant to me. After quite a long time of using Lily I still have problems with the special characters used: quote and pseudo-quote for example ('`), — I have little idea as to what they mean and I occasionally forget which one I should use. For example, I was very surprised that to change a grob’s color to blue I have to type #blue, not #’blue.

Actually, my problems with syntax are not limited to Scheme: there was a time where I had to type Lily code without access to the Internet (thus, without access to the manuals — I use development versions, and it doesn’t make sense to download a new manual each time a new version is released, so I don’t download them at all). When I tried to use \tweak, I was confronted with a serious problem: how did the syntax look like? I remembered that it was somewhat different from the \override syntax, but how exactly?... It took me at least six attempts until I finally got it right. David commented later that most of the trouble was caused by me forgetting to use \tweak as a postevent (i.e. to write -\tweak). He was probably right, but the funny thing is that I had recently had a very hard time trying to write a tempo markup properly... because I tried to use -\tempo (as a postevent!), which is an incorrect syntax :P

Back to the Scheme topic, I wish that more things could be achieved in LilyPond without it. That’s partly because I don’t like writing Scheme, but also because I’d find it more elegant to have predefined commands for all commonly used functions (as i said, I like high-level commands and concise code).

Take bar numbers for example. The default ones are not bad (way better than in Finale), but I’m not satisfied with them: I’d like the first bar number in the system to be bigger than the others, and I want to have bar numbers centered over the bar — except for the first number in the system, which should be left-aligned (to avoid placement problems caused by StaffGroup brackets and clefs). Finally, instead of showing all bar numbers (as I usually do), I occasionally want to show every 5th number (and the number of first measure in system). Now, how does one accomplish this? I remember reading a snippet with a Scheme function that manipulated objects depending on whether they were on line break or not. It was quite simple, yet I had to spend a lot of time modifying it according to my needs. I eventually succeeded — here’s my override that makes Bar numbers at the beginning of the system bigger:

\override BarNumber #'stencil =
     #(lambda (grob)
        (let ((break-dir (ly:item-break-dir grob)))
          (set! (ly:grob-property grob 'font-size)
                (if (= break-dir RIGHT)
                    -1
                    -3))
          (ly:text-interface::print grob)))

One could write a very similar function for bar number alignment, and I imagine that showing only desired bar numbers is also achievable using Scheme. However, I don’t think I’d have any chance of succeeding if I hadn’t found the original snippet that served as a base for modification.

The best solution that comes to my mind would be to create some kind of "FirstBarNumber subclass", i.e. an object type derived from BarNumber. That would enable a solution looking like this:

\override BarNumber #'self-alignment-X = CENTER
\override FirstBarNumber #'self-alignment-X = LEFT
\override BarNumber #'font-size = -3
\override FirstBarNumber #'font-size = -1

In my opinion such a solution would be more elegant and user-friendly. This also reminds me of two other inconveniences: when I want to move some lyrics, I have to override properties of LyricText, LyricHyphen and LyricExtender. It would be nice if I could specify an override for all of these simultaneously, like this: \override Lyrics #'Y-offset = #2

Another useful addition would be grouping properties together: currently to create small staves or notes one has to override font-size, staff-space and thickness. Why not create a "size" property that would set all these at once?

There are more similar changes that I could suggest, but that’s not exactly what this article is about; I hope that GLISS (the Grand LilyPond Syntax Stabilization project) will happen this year and sort out such issues.

Bottom line: LilyPond is a great piece of software and it can definitely can be used for pretty much every serious engraving project i can think of, but it still requires quite a lot of skill from the user to achieve more advanced tasks; there is plenty of room for smoothing rough edges to create a more intuitive and powerful user experience.

 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
Totals: €821

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"
PNG - 91.2 kb

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.

And now, a personal appeal from Janek Warchoł on this matter.

Dear LilyPond users around the world,
as we’ve read in previous LilyPond Report, David Kastrup — one of our most experienced and skilled developers, and the only one who works on LilyPond full-time — is running out of money. He asked us to sponsor his work on LilyPond by sending him some funds each month; his request was answered, but the amount of money collected is too small to sustain him.

Now, I don’t know if you follow what happens in Lily development. I do, and i’ve seen what David did to improve LilyPond. In many cases, I wouldn’t even know where to start doing things he did, and it would take me weeks to write what he wrote in few days. One time he rescued us from a really big trouble, saving 3 weeks worth of all other developers’ work. His work and experience with Lily code base is really invaluable.

Think about it. If David decided to work for some software company, his salary would be tens of thousands of dollars per year - or to say it differently, if we (LilyPond community) decided to hire a programmer (to replace David when he leaves due to lack of money), we’d have to pay several thousands dollars each month. David asks us only for 1200€, because he has a Spartan lifestyle and enjoys working on Lily. Can we ever imagine getting a better offer?

There are hundreds of LilyPond users — it would be a shame if we failed to find the money needed.

Can you afford giving David 15€ per month? I think that’s a fair price for using LilyPond, and without David’s work Lily wouldn’t be what she is now.

Ok, some of you may not afford 15€ per month. But can you afford $2, or $5? I know that it sounds like an insult to David’s skills, but believe me, he will be grateful. And don’t worry about the transfer fees — send money for 3 months in advance, and anyway PayPal takes less than 10% of that.

Please support David. I’ve already sent him money for April and May.

 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ł.

PDF - 1.3 Mb
Credo (Mozart).

Found it? No?

Okay, here’s the answer.

PDF - 614.6 kb
Credo (Mozart), with annotations.

What do these colors mean?

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ł).


Replying to:

The LilyPond Report #25

6 April 201221:31, by Nicolas Sceaux
Of course I made it It took quite some time to get all the sindarin names, with the right script... There are a few mistakes on the map however. I’ve also made a (smaller) map of Numenor, in quenya.


Any message or comment?
  • (To create paragraphs, you simply leave blank lines.)

Hypertext link (optional)

(If your message refers to an article published on the web or to a page providing further information, please enter the title of the page and its URL below).

Add a document
Who are you? (optional)

Home page | Contact | Site Map | | Site statistics | Visitors : 182789

Follow-up of the site's activity en    ?

Site created with SPIP 2.1.12 + AHUNTSIC

Creative Commons License