<?xml 
version="1.0" encoding="utf-8"?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
>

<channel xml:lang="en">
	<title>LilyPond news</title>
	<link>http://news.lilynet.net/</link>
	<description>Welcome to the LilyPond community newsletter!</description>
	<language>en</language>
	<generator>SPIP - www.spip.net</generator>

	<image>
		<title>LilyPond news</title>
		<url>http://news.lilynet.net/local/cache-vignettes/L144xH146/siteon0-05e8a.png</url>
		<link>http://news.lilynet.net/</link>
		<height>146</height>
		<width>144</width>
	</image>



<item xml:lang="en">
		<title>The LilyPond Report #28</title>
		<link>http://news.lilynet.net/?The-LilyPond-Report-28</link>
		<guid isPermaLink="true">http://news.lilynet.net/?The-LilyPond-Report-28</guid>
		<dc:date>2012-10-07T18:22:02Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>en</dc:language>
		<dc:creator>David Kastrup, Janek Warcho&#322;, Valentin Villenave</dc:creator>



		<description>&lt;p&gt;Welcome to this twenty-eighth issue of the &lt;i&gt;LilyPond Report&lt;/i&gt;!&lt;/p&gt;

-
&lt;a href="http://news.lilynet.net/?-LilyPond-Report-" rel="directory"&gt;LilyPond Report&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;This short, informal opinion column is about the &lt;a href=&quot;http://lilypond.org/&quot; class='spip_out' rel='external'&gt;GNU LilyPond&lt;/a&gt; project: its team, its world, its community. It is &lt;i&gt;not&lt;/i&gt;, however, an official &lt;a href=&quot;http://lilypond.org/doc&quot; class='spip_out' rel='external'&gt;documentation resource&lt;/a&gt;. Reader comments welcome; reader &lt;a href=&quot;http://news.lilynet.net/?_LilyPond-Report-Editors_&quot; class='spip_in'&gt;contributions&lt;/a&gt; even more appreciated!&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;div class=&quot;cs_sommaire cs_sommaire_avec_fond&quot; id=&quot;outil_sommaire&quot;&gt; &lt;div class=&quot;cs_sommaire_inner&quot;&gt; &lt;div class=&quot;cs_sommaire_titre_avec_fond&quot;&gt; Table of contents &lt;/div&gt; &lt;ul&gt; &lt;li&gt;&lt;a title=&quot;Editorial&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#editorial&quot;&gt;Editorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Release news&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#release_news&quot;&gt;Release news&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Investors&amp;#39; report (1)&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#investors_report_1&quot;&gt;Investors' report (1)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;A Postcard From Waltrop&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#a_postcard_from_waltrop&quot;&gt;A Postcard From Waltrop&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;From Waltrop with love&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#from_waltrop_with_love&quot;&gt;From Waltrop with love&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Impressions from the Waltrop meeting&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#impressions_from_the_waltrop_meeting&quot;&gt;Impressions from the Waltrop meeting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Investors&amp;#39; report (2)&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#investors_report_2&quot;&gt;Investors' report (2)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Online Typesetting with LilyPond&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#online_typesetting_with_lilypond&quot;&gt;Online Typesetting with LilyPond&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;LilyPond Syntax oddities&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#lilypond_syntax_oddities&quot;&gt;LilyPond Syntax oddities&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;LilyPond Syntax discussions&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#lilypond_syntax_discussions&quot;&gt;LilyPond Syntax discussions&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; &lt;/div&gt;&lt;p&gt;Greetings everybody, and welcome to this twenty-eighth issue of the &lt;i&gt;LilyPond Report&lt;/i&gt;!&lt;/p&gt; &lt;p&gt;Perhaps unsurprisingly, this installment gives a large place to the first LilyPond international meeting, with no less than three special correspondents reporting on that special event! As for the new LilyPond stable release, we have covered it enough in previous issues so that we can afford to skip ahead today, and give you a glance at our future projects, to begin with: the ongoing Grand LilyPond Syntax Stabilization work. All these, and more, are to be found in this month's issue.
&lt;br /&gt;As always, you can post your comments at the bottom of the page, or &lt;a href=&quot;http://news.lilynet.net/?_LilyPond-Report-Editors_&quot; class='spip_in'&gt;send your contributions&lt;/a&gt; to the &lt;i&gt;LilyPond Report&lt;/i&gt;'s next issues.&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;editorial&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Editorial&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by Valentin Villenave&lt;/i&gt;.&lt;/p&gt; &lt;p&gt;&lt;span class='spip_document_528 spip_documents spip_documents_right' style='float:right; width:200px;'&gt;&lt;a href=&quot;http://news.lilynet.net/IMG/jpg/DSC01712.jpg&quot; type=&quot;image/jpeg&quot; title=&quot;Enjoying some time in the open.&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L200xH150/DSC01712-3d36d-fd0dd.jpg' width='200' height='150' alt='Enjoying some time in the open. {JPEG}' style='height:150px;width:200px;' /&gt;&lt;/a&gt;&lt;/span&gt;Well well, hasn't it been a busy couple of months. First things first: the brand-new/shiny/futuristic/pure-awesomeness new LilyPond 2.16 we've been talking about for the past year-and-a-half, is here! But more on that below. There are even more exciting news with our very first international LilyPond meeting having taken place in Germany in late August, which you'll read all about from several key members of our community. Several key issues where discussed, and some wilder long-term ideas were raised (among which, a better integration with the &lt;a href=&quot;http://www.mutopiaproject.org/&quot; class='spip_out' rel='external'&gt;Mutopia&lt;/a&gt; project, or a LilyPond-dedicated &lt;a href=&quot;http://www.kickstarter.com/projects/&quot; class='spip_out' rel='external'&gt;Kickstarter&lt;/a&gt; fundraising dedicated to publish authoritative editions of an ancient music score). One minor disappointment this summer resulted from our involvement in the Google Summer of Code (see &lt;i&gt;LilyPond Report&lt;/i&gt;s &lt;a href=&quot;http://news.lilynet.net/?The-LilyPond-Report-25&quot; class='spip_in'&gt;#25&lt;/a&gt;, &lt;a href=&quot;http://news.lilynet.net/?The-LilyPond-Report-26&quot; class='spip_in'&gt;#26&lt;/a&gt; and &lt;a href=&quot;http://news.lilynet.net/?The-LilyPond-Report-27&quot; class='spip_in'&gt;#27&lt;/a&gt;), which (partly due to unforeseen, sad circumstances) did not fulfill everything we had hoped for. But if anything, this only gives us something else to look forward to next year!&lt;/p&gt; &lt;p&gt;With so much excitement lately, the question remains: what to do &lt;i&gt;now&lt;/i&gt;? Well, there are a number of ambitious plans ahead, some of which may have already started on our &lt;a href=&quot;https://lists.gnu.org/mailman/listinfo/lilypond-devel&quot; class='spip_out' rel='external'&gt;development mailing list&lt;/a&gt;. Now is the time where people are gathering ideas, comments and testimonies, to determine what would best fit LilyPond's future and our (potential) users' priorities. The Grand LilyPond Syntax Stabilization project (GLISS), first imagined by Graham Percival no less than four years ago, is now in action (in all its glorious messiness, so far &#8212; more on that below) and one can only dream what it will bring us!&lt;/p&gt; &lt;p&gt;Well, perhaps not &lt;i&gt;only&lt;/i&gt; dream: as a matter of fact, &lt;a href=&quot;http://lilypond.org/help-us.html&quot; class='spip_out' rel='external'&gt;you can help&lt;/a&gt; too. We're always actively trying to make it easier for new contributors to join us; there is a position for everyone depending on your time and skills (and most importantly, your adventurousness); even if you feel like you're missing either or both, our senior developer David Kastrup is less picky and simply relies on... your checkbook. Isn't life sometimes brillant in its simpleness?&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;release_news&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Release news&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by Valentin Villenave&lt;/i&gt;.&lt;/p&gt; &lt;p&gt;You wanted it? There you have it. LilyPond's stable version is now &lt;strong&gt;2.16.0&lt;/strong&gt; and we really, really do encourage you to &lt;a href=&quot;http://lilypond.org/download.html&quot; class='spip_out' rel='external'&gt;go ahead and take the leap&lt;/a&gt;. Of the hundreds of changes and bugfixes, most will probably appeal more to the advanced user or programmer (or, you know, your average free-software geek); there &lt;i&gt;are&lt;/i&gt;, however, &lt;a href=&quot;http://lilypond.org/doc/v2.16/Documentation/changes/index.html&quot; class='spip_out' rel='external'&gt;quite a number of changes&lt;/a&gt; that &lt;u&gt;will&lt;/u&gt; make you realize what you'd be missing out by overlooking our newest, greatest release yet.&lt;/p&gt; &lt;p&gt;And that's not all! Development has evidently not halted, and as soon as 2.16.0 was released, the &lt;a href=&quot;http://lilypond.org/development.html&quot; class='spip_out' rel='external'&gt;new 2.17 development cycle&lt;/a&gt; issued its first &lt;i&gt;unstable&lt;/i&gt; release &#8212; we're now at version &lt;strong&gt;2.17.4&lt;/strong&gt; on the development branch (and counting). This branch is, obviously, intended for testing purposes and not production use.&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;investors_report_1&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Investors' report (1)&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by &lt;a href=&quot;http://news.lilynet.net/?_David-Kastrup_&quot; class='spip_in'&gt;David Kastrup&lt;/a&gt;&lt;/i&gt;.&lt;/p&gt; &lt;p&gt;[&lt;i&gt;Editors' note: With some delay, here are the results of senior developer David Kastrup's continued &lt;a href=&quot;http://news.lilynet.net/?The-LilyPond-Report-24#an_urgent_request_for_funding&quot; class='spip_in'&gt;call for funding&lt;/a&gt;, and the development activity your donations allow him to pursue. You will find the (more recent) August report further down below, and September results will be included in our next installment.&lt;/i&gt;]&lt;/p&gt; &lt;center&gt;&lt;strong&gt;July&lt;/strong&gt;&lt;/center&gt;
&lt;p&gt;Let's look at the numbers for July. Again, the report could have come
earlier, but there has been a &lt;i&gt;lot&lt;/i&gt; of ongoing work that seemed
rather important to get done. I'll get back to that after the
numbers. Again, I have not separated one-time payments and regular
payments (excepting the variable payment plans) in order to get a
picture fast, and all payments are attributed to the month they
arrived in.&lt;/p&gt; &lt;table class=&quot;spip&quot;&gt;
&lt;thead&gt;&lt;tr class='row_first'&gt;&lt;th scope='col'&gt;Fixed payments (&#8364;)&lt;/th&gt;&lt;th scope='col'&gt;Variable plans (&#8364;)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class='row_even'&gt;
&lt;td&gt;180&lt;br&gt;175&lt;br&gt;2&#215;100&lt;br&gt;50&lt;br&gt;30&lt;br&gt;3&#215;25&lt;br&gt;2&#215;20&lt;br&gt;5&#215;10
&lt;/td&gt;
&lt;td&gt;25 + 50 (target &#8364;1200)&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd'&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;: 800&lt;/td&gt;
&lt;td&gt; &lt;strong&gt;Total&lt;/strong&gt;: 75&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even'&gt;
&lt;td colspan='2'&gt;&lt;center&gt;&lt;strong&gt;Totals&lt;/strong&gt;: &#8364;875&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Now the good news is that with the
&lt;a href=&quot;http://news.lilynet.net/?The-LilyPond-Report-27#investors_report&quot; class='spip_in'&gt;May&amp;June&lt;/a&gt;
report late and no additional announcements, my needs have been met, partly due to a one-time payment of &#8364;175, but mostly due to the
faithful keeping up donations.&lt;/p&gt; &lt;p&gt;The bad news is that medical insurance will likely put me down as
&quot;self-employed&quot; rather than &quot;subsisting&quot; soonish, gobbling up
another &#8364;150 per month since they are then basing their payment rates on an assumed `minimum' income of about &#8364;1300 per month.&lt;/p&gt; &lt;p&gt;I'll try finding some more people willing to sponsor the work I do on
LilyPond, but it makes sense if you help spreading the story.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Results&lt;/strong&gt;
&lt;br /&gt;Now what has actually happened in July? A lot, actually. There has
been a flurry of bug fixes and improvements across the board regarding
programming interfaces, some performance fixes, and several cleanups
of LilyPond syntax. Several programming interfaces dated from the
time where Guile did not yet support rational numbers as a native
number type, and I've made progress in simplifying them in connection
with musical moments.&lt;/p&gt; &lt;p&gt;Quite a bit of effort was spent on strategic discussions in the
mailing list again: some concerned the way we want to see LilyPond
syntax heading, with a view of providing long-term stability.&lt;/p&gt; &lt;p&gt;But the most pressing topic of discussion was likely centered around
our stable release criteria. As the main result, I have let myself
get
&lt;a href=&quot;http://lilypond.org/~graham/gop/gop_3.html&quot; class='spip_out' rel='external'&gt;appointed dictator&lt;/a&gt;
for the release of the overdue stable version 2.16. Just as of this writing we have
seen the &lt;a href=&quot;http://lists.gnu.org/archive/html/info-lilypond/2012-08/msg00001.html&quot; class='spip_out' rel='external'&gt;release of 2.15.95&lt;/a&gt;,
the last unfrozen development release in the 2.15 series. The stable
release branch has been split off from development, and the next
release created from the development branch will be 2.17.0. Any
further 2.15 releases will occur from the stable release branch, and
only to cure absolutely release-critical conditions before
releasing 2.16.0. The release 2.16.1 will likely happen about a month
afterwards, to integrate fixes that have seen exposure in 2.17.0 and
found to work well.&lt;/p&gt; &lt;p&gt;A plausible release date for 2.16.0 might be during the
&lt;a href=&quot;http://news.lilynet.net/?LilyPond-meeting-in-Waltrop&quot; class='spip_in'&gt;developer and user meeting for LilyPond in Waltrop&lt;/a&gt;
at my place, happening from August 24th to 28th. LilyPond build
script magician John will be present as well as project leader Graham,
so releasing 2.16.0 as part of the meeting course work would seem
quite feasible if nothing really forbidding intervenes.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Outlook&lt;/strong&gt;
&lt;br /&gt;It is not clear to me yet how things will continue. I am glad for the
time I have so far been able to spend on LilyPond thanks to the
commitment of a large number of people sponsoring my work, and I think
that LilyPond is seeing reasonable benefit from its results. After
the efforts for releasing 2.16 and having the meeting at my place will
peter out, I expect to pick up work on LilyPond syntax again and be
able to finish most of the music function work in one or two months of
time.&lt;/p&gt; &lt;p&gt;I also would like to continue with the work reorganizing context,
context definitions and other LilyPond internals: this can't really be
done in small parts. I tend to work on that in bursts of one or two
weeks at a time, so it will likely still take several months before
something ready to test will arrive from that.&lt;/p&gt; &lt;p&gt;And of course, there are lots of smaller things always cropping up and
getting solved. If you take a look at the
&lt;a href=&quot;http://code.google.com/p/lilypond/issues/list&quot; class='spip_out' rel='external'&gt;bug tracker&lt;/a&gt;,
you'll see that there is no shortage of issue reports, and I do a fair
amount of solving problems reported by others as well as those
`invented' by myself. And that further slows down some of the `big'
developments.&lt;/p&gt; &lt;p&gt;The month-to-month uncertainty of making ends meet even while several
people are taking large personal investments (and not only monetary
ones) remains troublesome, and I don't really feel like reaching the
point where I would say ``now everything I wanted to see done is
finished'' anytime soon.&lt;/p&gt; &lt;p&gt;Just recently news made the headlines that Avid, the owner of the
proprietary notation software Sibelius, closed its Sibelius
development headquarters in the UK, discharging the original
developers. An offer by them to buy Sibelius back from Avid was
refused, so they are not allowed to continue development
independently. If dispensing of the expertise from the previous core
programming team including its creators is supposed to make economic sense, it seems unlikely that serious further development is planned.&lt;/p&gt; &lt;p&gt;Now while active development of LilyPond certainly has moved through a number of hands as well, nobody is getting locked out from it. And
even non-programming users have the guarantee that the code remains available for bug fixing and further developments, and that they can hire programmers should business and/or their private score collection depend on it.&lt;/p&gt; &lt;p&gt;Compare that to the consequences of proprietary business models: the
right to make such an offer has been bought off the creators of
Sibelius.&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;a_postcard_from_waltrop&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;A Postcard From Waltrop&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by Graham Percival&lt;/i&gt;.&lt;/p&gt; &lt;blockquote class=&quot;spip&quot;&gt;
&lt;p&gt;
The Waltrop LilyPond meeting was fantastic. I've met other
LilyPond developers before (Bordeaux in 2010, Paris in 2011, Linz
in 2012), but this time it was on a completely different level.&lt;/p&gt; &lt;dl class='spip_document_524 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;a href=&quot;http://news.lilynet.net/IMG/jpg/DSC01702.jpg&quot; title='JPEG - 78.8 kb' type=&quot;image/jpeg&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L200xH150/DSC01702-fac25-377d2.jpg' width='200' height='150' alt='JPEG - 78.8 kb' style='height:150px;width:200px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-524 spip_doc_titre' style='width:200px;'&gt;&lt;strong&gt;From left to right: John Mandereau, Graham Percival, Jan Nieuwenhuizen&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;I think there were two reasons why it felt so different. First,
it was a multi-day affair with computers, rather than meeting
people for an afternoon or two while sight-seeing. There's
nothing wrong with purely social affairs, but sitting side-by-side
while working on LilyPond gave me much more of a feeling of
teamwork. Second, there were enough people there such that I
could watch the interactions of other developers. It was
fascinating to watch small groups working, such as Jan and John
fighting with GUB, or Mike and Janek passing patches and regtests
between each other to find and fix bugs in the vertical skyline.
There was a mixture of technical LilyPond discussion, tips on tool
use (git, emacs, scripts), and jokes about pineapples.&lt;/p&gt; &lt;p&gt;I was also blown away by the speed Mike and Jan's workflow. I've
always considered myself to be a fast typist and fast at switching
between windows and desktops, but they completely outclass me. I
was particularly stunned by Mike, since he was working inside a
virtual machine! The best analogy I can think of is an organist.
I've seen skilled pianists all my life, but the first time I saw a
skilled organist up close &#8212; playing on 2 or 3 keyboards,
twiddling the stops, playing pedals... all with a delay of a
second or two &#8212; my jaw almost dropped. I'm not trying to start a
fight about which instrument requires the most skill (how can we
really judge the &quot;skill&quot; of manipulating keyboards vs.
manipulating vocal cords, tongue, lips, etc?), so let's just say
that the organ has one of the most *visible* displays of skill.&lt;/p&gt; &lt;p&gt;I didn't get a lot of work done on the weekend. I have trouble
concentrating when there's people talking around me unless I
completely drown them out with really loud music in headphones. I
considered moving to a different room to work, but that would have
been really antisocial and I wasn't really planning on doing much
work anyway. I viewed it as a holiday from my PhD, so I was happy
to &quot;hang out&quot; in the main room and do incidental tasks. I'm glad
that I stayed in the main room, though &#8212; I feel more enthusiastic
about LilyPond than I have for the past year or more. I've only
been &quot;going through the motions&quot; for the past few months, but
that's changing due to Waltrop.&lt;/p&gt; &lt;p&gt;I definitely hope it happens again. The energy was incredible,
and it made me wonder how much LilyPond could improve if we had
regular face-to-face meetings. It's not possible given our
world-wide nature of our developers and contributors, but it's an
interesting thought experiment. I'm a bit sad that I didn't try
harder to organize a British LilyPond meeting, but it's too late
now as I'm leaving the country in a few days.&lt;/p&gt; &lt;dl class='spip_document_527 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;a href=&quot;http://news.lilynet.net/IMG/jpg/DSC01710.jpg&quot; title='JPEG - 190.7 kb' type=&quot;image/jpeg&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L200xH150/DSC01710-d8680-e6fbe.jpg' width='200' height='150' alt='JPEG - 190.7 kb' style='height:150px;width:200px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-527 spip_doc_titre' style='width:200px;'&gt;&lt;strong&gt;Graham Percival (looking surprisingly confident.)&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;/blockquote&gt;
&lt;h3 class=&quot;spip&quot; id=&quot;from_waltrop_with_love&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;From Waltrop with love&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by Janek Warcho&#322;&lt;/i&gt;&lt;/p&gt; &lt;blockquote class=&quot;spip&quot;&gt;
&lt;dl class='spip_document_526 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;a href=&quot;http://news.lilynet.net/IMG/jpg/DSC01707.jpg&quot; title='JPEG - 103.1 kb' type=&quot;image/jpeg&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L200xH150/DSC01707-6d2da-5473d.jpg' width='200' height='150' alt='JPEG - 103.1 kb' style='height:150px;width:200px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-526 spip_doc_titre' style='width:200px;'&gt;&lt;strong&gt;Breakfast time.&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;I am very happy that i participated in Waltrop meeting. It was the
first time that i've seen any of the developers in person - in most
cases i was quite surprised! Granted, i've talked and collaborated
with you for about two years, but in text-only communication people
appear differently than in real-life (now, that's not an impressive
discovery :P). I think that Graham was the one who surprised me the
most - turns out that he's not that grumpy after all! Did you know
that he can actually be enthusiastic about some LilyPond proposals?
(if you, dear reader, are now thinking that i must have had
hallucinations, i assure you that i'm 100% sane!)&lt;/p&gt; &lt;p&gt;Also, i think that i can understand other developers significantly
better - i just imagine them speaking whenever i'm reading an email
from them, and bang! 50% better understanding &lt;img alt=&quot;:)&quot; title=&quot;:)&quot; class=&quot;no_image_filtrer format_png&quot; src=&quot;http://news.lilynet.net/plugins/auto/couteau_suisse/img/smileys/sourire.png&quot; width=&quot;19&quot; height=&quot;19&quot;/&gt; Yes, i think that
may be one of the most important results of the meeting - more
effective communication (as English isn't my native language, i'm
never sure if my messages are clear enough - it was great to have
real-time, visual feedback from other people on what i say).&lt;/p&gt; &lt;p&gt;There are some measurable effects, too - i got interested in GUB, and
when i'll receive my shiny new laptop [it's actually a ThinkPad, so it won't be shiny in any literal sense &lt;img alt=&quot;:)&quot; title=&quot;:)&quot; class=&quot;no_image_filtrer format_png&quot; src=&quot;http://news.lilynet.net/plugins/auto/couteau_suisse/img/smileys/sourire.png&quot; width=&quot;19&quot; height=&quot;19&quot;/&gt; ] i'm going to try building
GUB there. Never expected that &#8212; wasn't GUB always the most scary
thing in Lily development? &lt;img alt=&quot;;-)&quot; title=&quot;;-)&quot; class=&quot;no_image_filtrer format_png&quot; src=&quot;http://news.lilynet.net/plugins/auto/couteau_suisse/img/smileys/clin_d-oeil.png&quot; width=&quot;19&quot; height=&quot;19&quot;/&gt;&lt;/p&gt; &lt;p&gt;All in all, i believe that together we can craft the best piece of
music software in the world!&lt;/p&gt; &lt;p&gt;Janek &quot;the Pineapple Man&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 class=&quot;spip&quot; id=&quot;impressions_from_the_waltrop_meeting&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Impressions from the Waltrop meeting&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by &lt;a href=&quot;http://news.lilynet.net/?_David-Kastrup_&quot; class='spip_in'&gt;David Kastrup&lt;/a&gt;&lt;/i&gt;.&lt;/p&gt; &lt;p&gt;In a nutshell, the meeting quite surpassed my wildest expectations.
Partly due to my lack of insistence, a&#160;few weeks before the meeting
it looked like Graham, Marc, Harm and myself would spend some leisure
time with each other, and that would be about it. But then with Mike, John, and Jan a critical mass of heavy-weights
enrolled, and furious activity ensued.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Friday&lt;/strong&gt;
&lt;br /&gt;On Friday, basically between Graham and John the &lt;a href=&quot;http://git.savannah.gnu.org/cgit/lilypond.git/commit/?id=0fef477419a8872759bfed4c1cf8e66f68db1104&quot; class='spip_out' rel='external'&gt;release of 2.16.0&lt;/a&gt; was getting under way, completing more or less by
noon, starting the whole meeting off with a large boost of excitement,
motivation, and a sense of entitlement. Janek started to install and
compile &lt;a href=&quot;http://lilypond.org/gub/&quot; class='spip_out' rel='external'&gt;GUB&lt;/a&gt;, LilyPond's Grand Unified
Builder on his machine, a process continuing in the next days and
spreading out to more machines, including one dedicated for future
release work from my place. With Mike, and later Jan arriving on
Friday, the plan was to release 2.17.0 running with accumulated updates
to the build system in the evening.&lt;/p&gt;
&lt;dl class='spip_document_530 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;a href=&quot;http://news.lilynet.net/IMG/jpg/lilywalt.jpg&quot; title='JPEG - 88.3 kb' type=&quot;image/jpeg&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L200xH125/lilywalt-bf8cf-933e0.jpg' width='200' height='125' alt='JPEG - 88.3 kb' style='height:125px;width:200px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-530 spip_doc_titre' style='width:200px;'&gt;&lt;strong&gt;Leaving the evil bright yellow thing outside&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;It turned out that this was &lt;i&gt;quite&lt;/i&gt; a bit too optimistic and that
my resistance against admitting any non-trivial work into the 2.16.0
release after 2.15.95 had been prudent, even though the freezes
I&#160;put down were rather abrupt and provided little opportunity for
firming up 2.16.0 better. Soon after splitting the stable release
branch off early in August it became clear that several small
regressions would require non-trivial fixes, and that exposing them in
an unstable release before reintegrating them into the stable branch
would be desirable. So there was (and is) definitely a release 2.16.1
going to happen in due time, and clamping down hard on&#160;2.16.0 was
opportune. The alternative of softening up the freeze until the last
fixes were in place was something we tried for about a year again and
again: without an unstable release series serving as a testbed, it did
not work.&lt;/p&gt; &lt;p&gt;In this manner, we were able to ride on the euphoria of having released
2.16.0 early in the meeting. Nothing seemed impossible, and the
programmers tended to stay busy until late at night, or early morning,
with vigor &lt;a href=&quot;http://git.savannah.gnu.org/cgit/lilypond.git/commit/?id=3772b2c7d022122eb9c791bd4a32178e76b97014&quot; class='spip_out' rel='external'&gt;working on 2.17.0&lt;/a&gt;, making GUB run on several systems, and in the last
night, integrating Mike's &lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=2148&quot; class='spip_out' rel='external'&gt;large skyline work&lt;/a&gt;. Graham had set up his bed in the meeting room and alternated between sleeping, working, and overseeing things.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Weekend&lt;/strong&gt;
&lt;br /&gt;Saturday saw the arrival of Karin H&#246;thker and Dominik H&#246;rnel from the
&lt;a href=&quot;http://scorio.com/&quot; class='spip_out' rel='external'&gt;Scorio project&lt;/a&gt; (see below). A lot of discussions ensued, a tablet computer with a score application was handed around, and the LCD projector rented for the meeting was put to use. In other departments, Rodolfo assumed the reins in the kitchen, resulting in a marked increase in food quality at lunch (pasta and salad) and dinner (barbecue).&lt;/p&gt; &lt;p&gt;Increasingly the importance of having LilyPond support MusicXML for
output became obvious. Patrick Schmidt from
&lt;a href=&quot;http://philomelos.net/&quot; class='spip_out' rel='external'&gt;Philomelos&lt;/a&gt;, arriving on Sunday, did
nothing to detract from this impression, and neither did Nils Gey, the
&lt;a href=&quot;http://laborejo.org/&quot; class='spip_out' rel='external'&gt;Laborejo&lt;/a&gt; head honcho (see &lt;i&gt;The LilyPond Report&lt;/i&gt; &lt;a href=&quot;http://news.lilynet.net/?The-LilyPond-Report-27&quot; class='spip_in'&gt;#27&lt;/a&gt;).&lt;/p&gt; &lt;p&gt;Another recurring theme was the stability/dependability of LilyPond
syntax. Neither of those projects ended up using LilyPond as their
storage format. Philomelos, when importing LilyPond, uses
&lt;code class='spip_code' dir='ltr'&gt;\displayMusic&lt;/code&gt; to print it, then parses the resulting Scheme code using a parser written in another programming language (could have been PHP but I don't quite remember). The &lt;a href=&quot;http://github.com/Philomelos&quot; class='spip_out' rel='external'&gt;Philomelos GitHub&lt;/a&gt; account sports a
fork of the MusicXML exporter from LilyPond, so it would not seem like
this is the only strategy, or maybe I just confused things. Scorio uses
LilyPond just for export and typesetting, and looking at their web page
listing the used
&lt;a href=&quot;http://www.scorio.com/en_US/web/scorio/technologies&quot; class='spip_out' rel='external'&gt;&quot;&lt;i&gt;Open Technologies&lt;/i&gt;&quot;&lt;/a&gt;, there is a notable absence of LilyPond. It &lt;i&gt;is&lt;/i&gt;
mentioned on the &lt;a href=&quot;http://www.scorio.com/web/scorio/platform&quot; class='spip_out' rel='external'&gt;Platform page&lt;/a&gt;, though, which makes it likely that this somewhat
disconcerting omission is not due to hiding credit where credit would be due, but rather due to the lack even of self-inflicted standards
LilyPond obeys.&lt;/p&gt; &lt;p&gt;Harm had arrived on Saturday, but although he indulged in some bar line customization work with Marc, the main focus of the conference
activities turned out to be not in the Scheme/Guile department. An
embarassingly large part of the conference appeal might be described as &quot;&lt;i&gt;Wifi and AC power&lt;/i&gt;&quot;, and the developers taking things from there. The flurry of release and build system activity culminating in the release of 2.17.0 on Sunday and the followup integration of Mike's skyline patch on Monday and the &lt;a href=&quot;http://git.savannah.gnu.org/cgit/lilypond.git/commit/?id=bfc7fdae57842d561568d1516337ce60e9aa8be0&quot; class='spip_out' rel='external'&gt;release of 2.17.1&lt;/a&gt; in the following night concluded the storm of development activity.&lt;/p&gt; &lt;p&gt;Apart from the various coding parties, another important aspect were the frequent discussions about where corporate users of LilyPond were seeing problems affecting their workflow, and lots of discussions about where we see LilyPond heading.&lt;/p&gt; &lt;p&gt;A recurrent theme were the question what to do about knitting LilyPond
into the music fabric of the Internet, and what to do about
&lt;a href=&quot;http://www.mutopiaproject.org/&quot; class='spip_out' rel='external'&gt;Mutopia&lt;/a&gt; ailing rather than
profiting from the increasing growth of user-provided content management and/or crowd sourcing.&lt;/p&gt; &lt;p&gt;We had Han-Wen on phone conference from Brazil on Saturday night, but connection quality and lack of physical presence (creating a video
connection was not reasonably successful) turned this more into a
radio-amateur-like experience rather than an interchange with a high
level of interactivity. While the phone conference petered out, I
brought Karin and Dominik to their hotel in Datteln, having to drag
Conny from the car in the process where she had sought shelter from the thundering voice of Han-Wen permeating the house.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Monday&lt;/strong&gt;
&lt;br /&gt;On Monday, Patrick brought in Julien Lerouge, the programmer responsible for Philomelos' import of LilyPond (if I understand correctly). I&#160;did not actually follow most of the discussions that happened on Monday since most happened in small circles. Also, I&#160;was somewhat exhausted, and intermittently trying to get GUB to work on a donated computer.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Tuesday&lt;/strong&gt;
&lt;br /&gt;People left by and by. Hopefully not too many were affected by my
mischaracterization of the local transport ticket vending machines
(which &lt;i&gt;did&lt;/i&gt; require stamping even single-person tickets before
use, contrary to more central ticket vending machines). I don't think
that any party dropped off at the subway station had more than 1&#160;minute to spare except for John.&lt;/p&gt; &lt;dl class='spip_document_525 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;a href=&quot;http://news.lilynet.net/IMG/jpg/DSC01706.jpg&quot; title='JPEG - 88.5 kb' type=&quot;image/jpeg&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L200xH150/DSC01706-35072-129f8.jpg' width='200' height='150' alt='JPEG - 88.5 kb' style='height:150px;width:200px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-525 spip_doc_titre' style='width:200px;'&gt;&lt;strong&gt;Coding party.&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;/p&gt; &lt;ol&gt;&lt;li&gt;&lt;strong&gt;The good&lt;/strong&gt;&lt;br&gt;
The meeting was quite productive regarding work on LilyPond. It was
particularly helpful that Jan, as the author of
&lt;a href=&quot;http://lilypond.org/gub&quot; class='spip_out' rel='external'&gt;GUB&lt;/a&gt;, LilyPond's Grand Unified Builder
and one of the LilyPond founders, was working together with John to
bring some of the requirements forward to newer systems.
&lt;br&gt;
It was great meeting all the people one knew only from mail
communications and associate a face and personality with them.
&lt;br&gt;
Indeed, not all that many of the participants had previously met with
Jan. It was particularly nice to see him enthusiastic about the meeting
itself, the people he met, and some newer developments and
possibilities, like when I showed the amount of introspection possible
using the Scheme sandbox and the much energized &lt;code class='spip_code' dir='ltr'&gt;#{...#}&lt;/code&gt; to
repeated interjections of
&quot;&lt;a href=&quot;http://axecop.com/index.php/acepisodes/read/episode_144/&quot; class='spip_out' rel='external'&gt;&lt;i&gt;It's
beautiful!&lt;/i&gt;&lt;/a&gt;&quot;.
&lt;br&gt;
While organization was rather on the thin side, the meeting attracted
American, Canadian, Dutch, French, German, Italian, and Polish
participants from France, Franconia, Germany, the Netherlands, Poland,
Scotland, and Switzerland.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The bad&lt;/strong&gt;&lt;br&gt;
There were quite a few lost opportunities.
&lt;br&gt;
The picturesque surroundings were not really keeping anyone distracted for any significant amount of time. Most participants probably did not likely traverse more than 20m&#178; of ground during their stay.
&lt;br&gt;
Apart from Marc's wife Tine, nobody actually got to see the town of
Waltrop exhibiting its main yearly attraction in the form of the
&lt;a href=&quot;http://waltroper-parkfest.de/&quot; class='spip_out' rel='external'&gt;Waltroper Parkfest&lt;/a&gt;.
&lt;br&gt;
The lack of a prepared talk schedule resulted in a dearth of
&quot;entertainment&quot; for participants not currently coding. Having talks and
discussions in parallel would not likely have distracted the focus of
the coders significantly, so this was a bit of lost opportunity as well.
&lt;br&gt;
There were too few interactive sessions focusing on the exchange of
programming, music entry and debugging techniques and establishing
standards for coding and review.
&lt;br&gt;
Apart from my own Thursday evening icebreaking attempts, no music was actually performed during the conference, probably in order not to
prompt repeat performances.
&lt;br&gt;
My lack of planning (and sleep) did not always lead to the most
convincing results in the food department. Part of that was softened by our favorite Indian fast food joint which even provided &quot;typically
German&quot; fast food in the form of &quot;&lt;i&gt;Zigeunerschnitzel&lt;/i&gt;&quot; and
&quot;&lt;i&gt;Hawaiischnitzel&lt;/i&gt;&quot; to those participants who would have been loath to
leave without a taste of German fastfood classics.
&lt;br&gt;
The lack of organization ahead of time lead to a somewhat random
collection of guests and interests and probably made it hard to get
affordable transportation. On the other hand, finding sleeping places
for a significantly larger assembly would likely have been difficult.
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt; I think that the meeting was an important step for refocusing on our
common goal. Most of the participants had fun: basically all of them
had to be dragged from their computers and to the subway in the last
possible minute. I&#160;hope that this fun will stay with people and carry
them to our next meeting. Even though the participants did not get to
leave the house much, the meeting place was adequate for our purposes.
&lt;br&gt;
I&#160;consider doing this again next year. Maybe I&#160;should offload part of
the organizational burden next time in order to increase the meeting's
effectiveness.&lt;/li&gt;&lt;/ol&gt;
&lt;h3 class=&quot;spip&quot; id=&quot;investors_report_2&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Investors' report (2)&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by &lt;a href=&quot;http://news.lilynet.net/?_David-Kastrup_&quot; class='spip_in'&gt;David Kastrup&lt;/a&gt;&lt;/i&gt;.&lt;/p&gt; &lt;center&gt;&lt;strong&gt;August&lt;/strong&gt;&lt;/center&gt;
&lt;p&gt;So here, somewhat late are the numbers for August. Let me first state
that I am carrying over an impressive &#8364;420 payment &quot;to be distributed
as I see fit&quot; into September (see below) as it appears more necessary there. So this is not included in the August numbers. Apart from this rather large sum, the Waltrop meeting more or less carried itself. I&#160;set a &quot;conference fee&quot; target of &#8364;10 per day and person. This might have
been overoptimistic on the days we ordered food, but attendees tended to round up, and there were some donations dedicated to the meeting (including covering the LCD projector). For mixed donations and meeting fees, I have deducted the nominal daily fee before listing the donation. So the meeting is accounted for.&lt;/p&gt; &lt;table class=&quot;spip&quot;&gt;
&lt;thead&gt;&lt;tr class='row_first'&gt;&lt;th scope='col'&gt;Fixed payments (&#8364;)&lt;/th&gt;&lt;th scope='col'&gt;Variable plans (&#8364;)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class='row_even'&gt;
&lt;td&gt;175&lt;br&gt;160&lt;br&gt;152&lt;br&gt;119&lt;br&gt;100&lt;br&gt;3&#215;80&lt;br&gt;75&lt;br&gt;70&lt;br&gt;60&lt;br&gt;40&lt;br&gt;39&lt;br&gt;32&lt;br&gt;30&lt;br&gt;5&#215;25&lt;br&gt;20&lt;br&gt;15&lt;br&gt;2&#215;10
&lt;/td&gt;
&lt;td&gt;25 + 50 (target &#8364;1200)&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd'&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;: 1472&lt;/td&gt;
&lt;td&gt; &lt;strong&gt;Total&lt;/strong&gt;: 75&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even'&gt;
&lt;td colspan='2'&gt;&lt;center&gt;&lt;strong&gt;Totals&lt;/strong&gt;: &#8364;1547&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Now that's rather amazing, and of course the single variable plan is
down to &#8364;25 for September. There are a few other amazing things: most of the larger contributions have been from previous contributors,
making their total contribution quite larger than what appears in
the monthly statements.&lt;/p&gt; &lt;p&gt;One of the larger single amounts was from somebody who is taking his
vow of poverty and considered it appropriate, as he had been making
use of LilyPond for creating readable score sheets for brethren with
worse eyesight, to take LilyPond's development into consideration when
divesting himself of his last possessions.&lt;/p&gt; &lt;p&gt;Again: I continue being amazed at your support, and it is rather
uplifting to see that continued amount of support and dedication. The
question is how to stabilize it: if everybody now thinks everything is
in safe waters, it won't be. So again I want to remind people of the
possibility of pledging a variable payment plan, where the payment
depends on the situation in the past month.&lt;/p&gt; &lt;p&gt;I have taken the opportunity of actually taking a look at my personal
financial situation. My original statement of a minimum of &#8364;800 for
continuing on LilyPond was somewhat optimistic: with rent (about &#8364;400
including energy, phone, and internet) and insurance and other fixed
costs, about &#8364;600 were already gone (and insurance, as told last
month, is going up), and that leaves about &#8364;7 per day for food and
similar niceties. It turns out that my bank account from the middle
of September, as compared to March, has dropped by a mere &#8364;200, while the remaining unconverted PayPal balance in $US is a bit above &#8364;1000. However, pretty much at the start of this period, our &quot;shopping
accounting&quot; for close to a year was done, and I got about &#8364;600 out of
that as I am mostly the one of us two buying food.&lt;/p&gt; &lt;p&gt;So it means that even with the spectacular August balance (including
the carry-over amount), I have been scraping even. In that time, I
took one conference trip to Chemnitz (for a LilyPond conference), and
a 10-day climbing vacation with friends in Italy at a rather
affordable apartment. Not all that much of luxury. And there will
still be taxes to pay, as your support puts me above the poverty line
regarding the German taxation system.&lt;/p&gt; &lt;p&gt;The &#8364;800 projected sum (which was pretty much what the monthly average of the previous months had been) was just that: an amount allowing me to break even, and with the bit of cheating in August, it did do so before taxes. But if you consider contributing to a variable payment plan, in the interest of long-term sustainability I would suggest
specifying the target sum after which your payments are allowed to
decrease somewhat higher as I don't really see all that much wiggling
room for further cutting my expenses.&lt;/p&gt; &lt;p&gt;While it is too early for a detailed report on September's results, latest numbers show a sharp decline. However predictable that decline was, it confirms how fragile this system remains, and how your constant involvement and benevolence is needed.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Results of August&lt;/strong&gt;
&lt;br /&gt;The main focus in August has been the developer meeting at my home in Waltrop (see above), and its results. LilyPond&#160;2.16.0 was released on that meeting as well as&#160;2.17.0, and&#160;2.17.1. The preparation of the 2.16.0 release had been left to my discretion after extensive discussion, and while there are still some cleanups requiring a 2.16.1 release, its overall shape appears fine to me, and being able to start the meeting off with releasing it was quite important for setting the mood. So no regrets here, and it is definitely quite a step forward for our users.&lt;/p&gt; &lt;p&gt;While I managed to get off the wrong foot for much of the
after-meeting discussions and work again, I&#160;still think that having
met personally will help everybody manage to get a broader perspective concerning the shortcomings of our communication.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;What's happening now&lt;/strong&gt;
&lt;br /&gt;So this was rather uplifting, and the mood of the Waltrop meeting also
helped. Back into development, the atmosphere on the mailing list,
after initial revitalization, has become strained again. To a large
degree, this is attributable to my manner of handling proposals I do
not consider fit for inclusion into LilyPond.&lt;/p&gt; &lt;p&gt;Discussions about syntax changes have been opened, and since my own priorities are set on consolidating the current state and
possibilities while many of the suggestions don't really fit well with
current and planned developments or overall consistency, I&#160;have spent
an extraordinary amount of time and energy mostly discouraging
proposals or expounding on the problems they would cause both in their own implementation as well as when considered as part of a whole.&lt;/p&gt; &lt;p&gt;Let's just say that I have not really managed to do this in a manner
that has been well-received.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Ongoing tasks&lt;/strong&gt;
&lt;br /&gt;It turns out that syntax changes are continuing, with much of the
patches being somewhat obtuse in the description. I expect to spend
at least the next month on continued cleanup and reorganization, with
the goal of making user-definable functions a much more versatile and
ubiquitous tool than they are now.&lt;/p&gt; &lt;p&gt;There are some discussions about various syntax changes, and some of them are more implementable or useful than others. Those that are
both of more invasive nature as well as worthwhile will likely have to
wait until I finished with my ongoing reorganization work, as they
would get in the way before this is reasonably finished.&lt;/p&gt; &lt;p&gt;After the syntax has been done, the property system is still in for an
overhaul in order to make it work more closely to expectations. There
are currently surveys planned in the national user lists and forums
for LilyPond regarding the problems people have using LilyPond, but
some of the preceding discussions indicated that this is an area of
interest.&lt;/p&gt; &lt;p&gt;And the Guile v.2 migration is also going slowly on intermittedly. In
all of those areas, I&#160;consider it important to be involved, and your
support allows me to do that.&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;online_typesetting_with_lilypond&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Online Typesetting with LilyPond&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by Karin H&#246;thker and Dominik H&#246;rnel&lt;/i&gt;.&lt;/p&gt; &lt;p&gt;At the Lilypond developer meeting in Waltrop we presented our online music editor
&lt;span class='base64LIENS' title='PGEgaHJlZj0iaHR0cDovL3Njb3Jpby5jb20iIGNsYXNzPSdzcGlwX291dCcgcmVsPSdleHRlcm5hbCc+c2NvcmlvLmNvbTwvYT4='&gt;&lt;/span&gt; (see &lt;i&gt;The LilyPond Report&lt;/i&gt; &lt;a href=&quot;http://news.lilynet.net/?The-LilyPond-Report-24&quot; class='spip_in'&gt;#24&lt;/a&gt;). We talked about how we attempted to tackle the performance problem one
inevitably gets when developing a WYSIWYG music editor with Lilypond. Typesetting
remotely on a server adds to the problem. In the meantime we have done some measurements
that we will present in the following.&lt;/p&gt; &lt;p&gt;When starting with scorio, we quickly agreed on LilyPond as our music typesetting engine
because of three major reasons:&lt;/p&gt; &lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; its beautiful music engraving&lt;/li&gt;&lt;li&gt; the ability to produce scores from semantical music information without the need to
specify a lot of graphical details thus avoiding extensive re-work with adjusting text,
slurs and other notation elements afterwards&lt;/li&gt;&lt;li&gt; because it can be extended and integrated into a GUI-based note editor.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;At first, it was not obvious how to achieve a round trip in an acceptable time involving&lt;/p&gt; &lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; typing a note into an editor,&lt;/li&gt;&lt;li&gt; sending a request to a server,&lt;/li&gt;&lt;li&gt; running Lilypond on the server,&lt;/li&gt;&lt;li&gt; sending the result back to the client and&lt;/li&gt;&lt;li&gt; displaying the result in the browser.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Although there are excellent editors supporting input of Lilypond syntax and Lilypond
compiling (like &lt;a href=&quot;http://frescobaldi.org/&quot; class='spip_out' rel='external'&gt;Frescobaldi&lt;/a&gt;), it is hard to find WYSIWIG editors for Lilypond (&lt;a href=&quot;http://denemo.org/&quot; class='spip_out' rel='external'&gt;Denemo&lt;/a&gt; is an
example). One reason may be that LilyPond offers an input format that is excellent for writing
music in a text editor, but challenging as far as automatic score manipulation is concerned.&lt;/p&gt; &lt;p&gt;In the following section, we briefly explain the round-trip in scorio and how we attempted to
master the performance issue.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Score manipulation&lt;/strong&gt;
&lt;br /&gt;As mentioned above we decided against doing edit operations on LilyPond source files.
So, we had to look for an alternative representation. For a short moment, we thought about
developing our own internal music format, but soon rejected the idea: Why re-invent the
wheel? Furthermore, we would have locked users in into scorio, since import from and export
to other music formats had yet to be written. We were rather aiming at setting up an open
music notation platform, where users could import existing scores, edit and share them online,
and later export them again to their favourite notation program.&lt;/p&gt; &lt;p&gt;So, we ended up using a slightly enhanced MusicXML format as our internal representation.
Although not perfect, MusicXML makes score manipulation, import and export easier as it
has become a de facto standard in music notation industry supported by all major notation
programs.
The graphical representation in scorio is pure HTML and therefore makes it possible to
use scorio in all major browsers on every platform (PC, Mac, and even iPad). To produce
HTML for a LilyPond score we wrote our own HTML backend as an addition to the existing
Postscript and SVG backend in LilyPond.&lt;/p&gt; &lt;dl class='spip_document_532 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L500xH396/snapshot1-b59e3.png' width='500' height='396' alt='PNG - 22.9 kb' style='height:396px;width:500px;' /&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-532 spip_doc_titre' style='width:350px;'&gt;&lt;strong&gt;Figure 1: Score manipulation round-trip&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;So the round-trip basically works as follows (see figure 1): When the user clicks into the
score, an edit command is created, e.g. &#8220;create new note before existing one&#8221;. The edit
command inserts the note into the MusicXML tree. Then the MusicXML tree is converted
into a Lilypond file and processed by LilyPond. The HTML backend produces an HTML
page and finally sends it back to the editor. The rendering of the score is done by the browser.&lt;/p&gt; &lt;p&gt;The HTML representation of the music piece mainly consists of images. However, the client
needs more information in order to decide what action the user wants to perform next. For
this purpose, the HTML contains additional attributes attached to each graphical object (or
grob) of the score. For example, its part and staff are attached to each note. This is achieved
by adding &#8220;annotations&#8221; when generating the LilyPond score. Annotations are created using a
custom \annotate command that adds them to the Scheme music tree. In this way they will be
attached to the grobs they belong to, and can be added to the HTML in the HTML backend.&lt;/p&gt; &lt;p&gt;The following excerpt from a generated Lilypond file shows an example of annotated
Lilypond:&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;\score {&lt;br /&gt; &lt;&lt;&lt;br /&gt; \new Staff=&quot;'((sc-part . P1) (sc-staff . 1))&quot; &lt;&lt;&lt;br /&gt; \new Voice {&lt;br /&gt; \numericTimeSignature \annotate #'(&lt;br /&gt; (sc-id . 1298541892071_0.6492787506599623)&lt;br /&gt; (sc-beats . 4)&lt;br /&gt; (sc-beat-type . 4))&lt;br /&gt; \time 4/4&lt;br /&gt; }&lt;br /&gt; \new Voice {&lt;br /&gt; \annotate #'(&lt;br /&gt; (sc-id . 1270804615382_0.44181689312608075)&lt;br /&gt; (sc-part . P1)&lt;br /&gt; (sc-staff . 1)&lt;br /&gt; (sc-voice . 1)&lt;br /&gt; (sc-fifths . 0)&lt;br /&gt; (sc-mode . major))&lt;br /&gt; \key c \major&lt;br /&gt; \annotate #'(&lt;br /&gt; (sc-id . 1270804615379_0.08310412084356789)&lt;br /&gt; (sc-part . P1)&lt;br /&gt; (sc-staff . 1)&lt;br /&gt; (sc-voice . 1)&lt;br /&gt; (sc-sign . G)&lt;br /&gt; (sc-line . 2))&lt;br /&gt; \clef violin&lt;br /&gt; \annotate #'(&lt;br /&gt; (sc-id . 1270804615382_0.06348578421654139)&lt;br /&gt; (sc-part . P1)&lt;br /&gt; (sc-staff . 1)&lt;br /&gt; (sc-voice . 1)&lt;br /&gt; (sc-step . C)&lt;br /&gt; (sc-octave . 5)&lt;br /&gt; (sc-note-type . quarter)&lt;br /&gt; (sc-duration . 480))&lt;br /&gt; c''4&lt;br /&gt; }&lt;br /&gt; &gt;&gt;&lt;br /&gt; &gt;&gt;&lt;br /&gt; }&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;So far, we have seen the editing round trip. The performance problem however is still open.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Improving performance&lt;/strong&gt;
&lt;br /&gt;The round-trip works well for smaller scores. But as the score is growing larger and larger
the performance significantly drops and makes editing practically unusable when rendering
the entire score after each edit command. We also noticed that the Lilypond processing time
does not increase linearly but superlinearly with the size of the score due to the calculation of
optimal line breaking in LilyPond.
To overcome this performance issue we use the &lt;code class='spip_code' dir='ltr'&gt;\skipTypesetting&lt;/code&gt; &lt;a href=&quot;http://lilypond.org/doc/v2.16/Documentation/notation/skipping-corrected-music&quot; class='spip_out' rel='external'&gt;command&lt;/a&gt;. It allows
producing graphical output for an excerpt of the score thus almost reducing the time
consumed for typesetting to this excerpt. Consider a user working on a system in the score.
As scorio shows one page at a time we may skip typesetting for all other pages. Even more,
if the user is editing notes on a specific system it is not necessary to update the entire page
each time but rather the system on which the user is working. We therefore do typesetting
for this system only. After the user has finished working on the system s/he may refresh the
page and later the entire score. We call this concept &lt;i&gt;partial update&lt;/i&gt;: When an edit command
is performed on a system, typesetting is restricted to that system (&lt;i&gt;system update&lt;/i&gt;). In case
the edit command produces more than one system due to a system break, a &lt;i&gt;page update&lt;/i&gt; is
automatically performed. Only in case an edit command influences the entire score such as a
score transposition, or if the user manually refreshes the score, a &lt;i&gt;score update&lt;/i&gt; is performed.&lt;/p&gt; &lt;p&gt;The following figures show some measurements of the LilyPond performance with score,
page, and system update. The sample score simply repeated the notes Bb-A-C-B up to a
maximum of 20 pages.&lt;/p&gt;
&lt;dl class='spip_document_533 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L500xH309/snapshot2-14dee.png' width='500' height='309' alt='PNG - 19.7 kb' style='height:309px;width:500px;' /&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-533 spip_doc_titre' style='width:350px;'&gt;&lt;strong&gt;Figure 2: Runtime performance with LilyPond. &lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;As can be seen in figure 2, the runtime increases superlinearly
(quadratically?) with the number of pages.&lt;/p&gt;
&lt;dl class='spip_document_535 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L500xH315/snapshot3-b245c.png' width='500' height='315' alt='PNG - 14.9 kb' style='height:315px;width:500px;' /&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-535 spip_doc_titre' style='width:350px;'&gt;&lt;strong&gt;Figure 3: Page update with LilyPond.&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;In figure 3 however, creating one page took about 3 seconds. When
increasing the number of score pages, but typesetting one page only the runtime slowly increases linearly. Rendering one page on a 20 page score took about 4.4 seconds.&lt;/p&gt; &lt;dl class='spip_document_536 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L500xH311/snapshot4-a7f64.png' width='500' height='311' alt='PNG - 12.8 kb' style='height:311px;width:500px;' /&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-536 spip_doc_titre' style='width:350px;'&gt;&lt;strong&gt;Figure 4: System update with LilyPond.&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt; Similarly, in figure 4 creating one page took about 1.5 seconds. When
increasing the number of score pages, but typesetting one system only the runtime slowly increases linearly. Rendering one system on a 20 page score took about 2.4 seconds.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;
&lt;br /&gt;We have described how the online music notation site scorio.com typesets music with Lilypond running on a server. Performance measurements show that the approach works well
for smaller scores. Since scorio's user interface is designed to be as simple as possible, it
targets users who want to typeset music with only little training and typically would like to
typeset short musical pieces for daily use rather than extensive compositions.
At the same time, we feel that there is still room for improving the performance of the most
widely used operation in scorio: editing a single note in a system. 200ms &#8211; the reaction time
commonly perceived as fast in user interfaces &#8211; may be out of reach. But a turn-around
duration well below 1 second would improve the user experience.&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;lilypond_syntax_oddities&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;LilyPond Syntax oddities&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by Valentin Villenave&lt;/i&gt;.&lt;/p&gt; &lt;p&gt;Let's be blunt: for the past couple of years, I haven't been as much involved with the LilyPond project as I'd love to (or at least, as I used to love to). I never stopped &lt;i&gt;using&lt;/i&gt; LilyPond obviously, but the discussions, the developments, so much intelligence and brightness flowing up everyday on our mailing lists, that was just more than I could handle.&lt;/p&gt; &lt;p&gt;Recently, I happily accepted a commission from our contributor James Lowe to create an orchestral score for him. Since he told me the violins in his orchestra were mostly beginners, I thought I'd use quite a lot of open strings; so I thought, hey, there must be some sort of a shorthand for that. Since &lt;code class='spip_code' dir='ltr'&gt;d-&gt;&lt;/code&gt; produces an accented note and &lt;code class='spip_code' dir='ltr'&gt;d-.&lt;/code&gt; produces a staccato, I had reasons to hope that, say, &lt;code class='spip_code' dir='ltr'&gt;d-&#176;&lt;/code&gt; would print an open string.&lt;/p&gt; &lt;p&gt;And it did.&lt;/p&gt; &lt;p&gt;&lt;span class='spip_document_537 spip_documents spip_documents_center'&gt;
&lt;img src='http://news.lilynet.net/local/cache-vignettes/L83xH58/ex-preview-f1b10.png' width='83' height='58' alt=&quot;&quot; style='height:58px;width:83px;' /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;Now, James being a LilyPond connoisseur of sorts, I thought I'd send him the .ly code instead of a PDF. And since I was using a fairly recent development build, there was hardly going to be any problem for him to compile my code, right? Right. Except... he couldn't.&lt;/p&gt; &lt;p&gt;Because what I had been using was actually not a known shorthand, but an almost-undocumented feature of LilyPond that allowed people to print markups without using double quotes. And the &#176; character I mistook for an &quot;open string&quot; sign, actually was just that: a single-character markup. And thanks to David Kastrup clarifying the lexer and getting rid of this undocumented feature (that looked, actually, like a bug or an inconsistency of sorts), the newest version of LilyPond &#8212; the one James was using &#8212; would have thrown an error, thereby forcing me to clean my code, and use the &lt;i&gt;actual&lt;/i&gt;, proper &lt;code class='spip_code' dir='ltr'&gt;\open&lt;/code&gt; symbol instead:&lt;/p&gt; &lt;p&gt;&lt;span class='spip_document_538 spip_documents spip_documents_center'&gt;
&lt;img src='http://news.lilynet.net/local/cache-vignettes/L83xH52/ex-preview-2-a1014.png' width='83' height='52' alt=&quot;&quot; style='height:52px;width:83px;' /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;What I mean is: syntax consistency &lt;i&gt;does&lt;/i&gt; matter. To all of us, even to experienced users like myself or James. Granted, all of us do not have much time to spare for such discussions. But there _should_ be a way for as many people as possible to gain awareness and take part in this collective thought process. This cute silly story of mine actually predates the Grand LilyPond Syntax Stabilization project that is now in action (for better or worse, see below), but LilyPond is full of such undocumented half-features/half-bugs.&lt;/p&gt; &lt;p&gt;To wit: we recently mentioned the &lt;a href=&quot;http://news.lilynet.net/?The-LilyPond-Report-26#the_undocumented_feature_of_the_month&quot; class='spip_in'&gt;empty chord construct&lt;/a&gt;, which may be one of the nicest of those; however, look at another undocumented oddity David has &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2012-10/msg00096.html&quot; class='spip_out' rel='external'&gt;just exposed&lt;/a&gt;:&lt;/p&gt; &lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;xxx #'j #'k #'l = 7&lt;br /&gt; #(format #t &quot;xxx = ~a\n&quot; xxx)&lt;br /&gt; xxx = #'()&lt;br /&gt; xxx #'j #'k #'l = 7&lt;br /&gt; #(format #t &quot;xxx = ~a\n&quot; xxx)&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;Not for the faint of heart, eh?&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;lilypond_syntax_discussions&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;LilyPond Syntax discussions&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by Valentin Villenave&lt;/i&gt;.&lt;/p&gt; &lt;p&gt;So, the GLISS project is finally here and people are &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2012-10/msg00178.html&quot; class='spip_out' rel='external'&gt;chiming in&lt;/a&gt; with their suggestions. Whilst it had been suggested that these discussions ought to take place on a mailing list of their own (a list &lt;a href=&quot;http://lists.lilynet.net/proposals/&quot; class='spip_out' rel='external'&gt;I opened four years ago&lt;/a&gt; but that hasn't seen much activity), it has been decided that our regular &lt;code class='spip_code' dir='ltr'&gt;lilypond-devel&lt;/code&gt; mailing list would do just fine, provided that mail subjects are neatly prefixed with [GLISS] for general-purpose gliss-oriented conversations, [talk] for informal talks, [proposal] for more carefully thought-out ideas, etc.&lt;/p&gt; &lt;p&gt;It does make for very technical, high-density, high-volume conversations; some generous souls have offered to keep regular users posted (particularly users who don't speak English on foreign mailing lists) but that doesn't change the fact that our -devel list, which was already quite crowded, is becoming somewhat of a mess &#8212; where some discussions tend to become heated (as David mentioned above).&lt;/p&gt; &lt;p&gt;Here at the &lt;i&gt;Report&lt;/i&gt;, we've been receiving a few letters from people involved in these discussions and wondering if there could be a better way to handle these discussions. Here's what Ian Hulin (who has been working on &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2012-10/msg00095.html&quot; class='spip_out' rel='external'&gt;several&lt;/a&gt; &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2012-10/msg00171.html&quot; class='spip_out' rel='external'&gt;proposals&lt;/a&gt; for a new &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2012-10/msg00203.html&quot; class='spip_out' rel='external'&gt;tuplet syntax&lt;/a&gt;) had to say on the matter:&lt;/p&gt; &lt;blockquote class=&quot;spip&quot;&gt;
&lt;p&gt;I reckon what has happened has provided us with some useful
insights.&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Unless someone takes ownership of a discussion and is prepared to
spend time moderating it, it will tend to peter out and go nowhere.
&lt;li&gt;Being a moderator can be like being a eunuch in Imperial China:
they knew an awful lot about sex in great detail but couldn't do it
themselves. Moderating a discussion means guiding developers to a
consensus and then finding one of them comes up with one which does
90% of the job (cf. Keith O'Hara's &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2012-10/msg00182.html&quot; class='spip_out' rel='external'&gt;latest post&lt;/a&gt;).
&lt;li&gt;Moderating means you've got to be prepared to repeat yourself an
awful lot.
&lt;li&gt;Moderating means you've got to be patient, and you've got to be
infinitely polite.
&lt;li&gt;Moderating also means you've also sometimes also have to be
deliberately stupid so you can get a particularly enthusiastic
developer to dump a bit more out of their head into writing so the
rest of can buy in to what he's thinking.
&lt;li&gt;Moderating means keeping track of the discussions and producing a
and constantly refining a proposal until it becomes a design doc for
the feature. We could also use it as the basis for entries in NEWS if
the feature needs one.
&lt;li&gt;Using [talk] only really works if we use it as a sub-list of -devel.
&lt;li&gt;Moderating a proposal means spending time on it, which you may feel
could be spent on implementing it. It's actually quite difficult to do
(hence the eunuch reference above).
&lt;/ol&gt;
Using this process maybe allows us to capture the WHY of a development
feature rather than answers to WHAT and HOW which is often what is
documented, if it is documented at all.&lt;/blockquote&gt;
&lt;p&gt;This somehow meets another &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2012-10/msg00115.html&quot; class='spip_out' rel='external'&gt;proposal by Janek&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;p&gt;i suggest to visibly separate discussing problems from
discussing solutions.
Currently we are mostly discussing ideas for syntax, i.e. &quot;let's have
syntax X doing Y&quot;. I suggest that for several weeks we shall focus on
&quot;i find syntax W confusing&quot; and &quot;i find notation Z
difficult/inconvenient to express in current syntax&quot; instead. We
would add syntax problems that we identify as issues to the tracker. [&lt;i&gt;Editor's note: David isn't sure the tracker would be an appropriate place for that, and I tend to agree.&lt;/i&gt;]
After we've finished gathering them, we'll sort the issues and *then*
we would discuss how to solve them.&lt;/p&gt; &lt;p&gt;Why do it this way?&lt;/p&gt; &lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; we'll see the big picture better&lt;/li&gt;&lt;li&gt; we'll be able to schedule the discussions about solutions, so it'll
be easier to participate in them&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;And perhaps most importantly: when someone posts a syntax *idea*,
there's a chance that syntax experts will reply &quot;omg wtf?! this won't
work&quot;. This leads to frustration. On the other hand, if we discuss
our *problems*, syntax experts can just answer &quot;it would be reasonable
to solve it this or that way&quot; - and voila! less frustration.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So, where do _you_, dear reader, stand on these issues? Is the current way appropriate to you, or do you feel somehow left out? Is there a place that would seem more likeable, more convenient, for these discussions, that you can think of? Or is it a purely human problem (assuming, of course, there &lt;i&gt;is&lt;/i&gt; a problem at all)? Like many times in the past, the &lt;i&gt;LilyPond Report&lt;/i&gt; intends to help however it can, by gathering opinions, synthesizing current debates and providing its readers with both the latest topics at hand, as well as a place to comment on them while taking a step back.&lt;/p&gt; &lt;p&gt;&lt;span class='spip_document_81 spip_documents spip_documents_center'&gt;
&lt;img src='http://news.lilynet.net/local/cache-vignettes/L125xH100/lesite-d163a.png' width='125' height='100' alt=&quot;&quot; style='height:100px;width:125px;' /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;That concludes our twenty-eighth issue of the &lt;i&gt;LilyPond Report&lt;/i&gt;.&lt;/p&gt; &lt;p&gt;Cheers,
&lt;br /&gt;&lt;i&gt;Valentin Villenave, Janek Warcho&#322;, Graham Percival &amp; David Kastrup.&lt;/i&gt;&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		
		<enclosure url="http://news.lilynet.net/IMG/jpg/DSC01717.jpg" length="99004" type="image/jpeg" />
		

	</item>
<item xml:lang="en">
		<title>The LilyPond Report #27</title>
		<link>http://news.lilynet.net/?The-LilyPond-Report-27</link>
		<guid isPermaLink="true">http://news.lilynet.net/?The-LilyPond-Report-27</guid>
		<dc:date>2012-07-31T20:17:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>en</dc:language>
		<dc:creator>David Kastrup, Valentin Villenave</dc:creator>



		<description>&lt;p&gt;Welcome to this twenty-seventh issue of the &lt;i&gt;LilyPond Report&lt;/i&gt;!&lt;/p&gt;

-
&lt;a href="http://news.lilynet.net/?-LilyPond-Report-" rel="directory"&gt;LilyPond Report&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;This short, informal opinion column is about the &lt;a href=&quot;http://lilypond.org/&quot; class='spip_out' rel='external'&gt;GNU LilyPond&lt;/a&gt; project: its team, its world, its community. It is &lt;i&gt;not&lt;/i&gt;, however, an official &lt;a href=&quot;http://lilypond.org/doc&quot; class='spip_out' rel='external'&gt;documentation resource&lt;/a&gt;. Reader comments welcome; reader &lt;a href=&quot;http://news.lilynet.net/?_LilyPond-Report-Editors_&quot; class='spip_in'&gt;contributions&lt;/a&gt; even more appreciated!&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;div class=&quot;cs_sommaire cs_sommaire_avec_fond&quot; id=&quot;outil_sommaire&quot;&gt; &lt;div class=&quot;cs_sommaire_inner&quot;&gt; &lt;div class=&quot;cs_sommaire_titre_avec_fond&quot;&gt; Table of contents &lt;/div&gt; &lt;ul&gt; &lt;li&gt;&lt;a title=&quot;Editorial&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#editorial&quot;&gt;Editorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Release news&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#release_news&quot;&gt;Release news&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Investors&amp;#39; report&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#investors_report&quot;&gt;Investors' report&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Many meetings&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#many_meetings&quot;&gt;Many meetings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;A Kind of Magic&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#a_kind_of_magic&quot;&gt;A Kind of Magic&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;LilyPond&amp;#39;s (lesser-known) companions&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#lilypond_s_lesser_known_companions&quot;&gt;LilyPond's (lesser-known) companions&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; &lt;/div&gt;&lt;p&gt;Greetings everybody, and welcome to this twenty-seventh issue of the &lt;i&gt;LilyPond Report&lt;/i&gt;!&lt;/p&gt; &lt;p&gt;This issue raises some important questions as well as completely irrelevant shallow factoids. That's how we roll, just bear with us. On the plus side, you will learn quite a lot about Scheme integration in LilyPond and some brand-new niceties that David Kastrup has recently added to our feature set. Also featured in this installment: how to take black-and-white pictures without intending to, what is the silliest possible name for a software project, and what future is there for fancy night clubs. (Yes, we know &#8212; but don't say we did'nt warn you.)
&lt;br /&gt;As always, you can post your comments at the bottom of the page, or &lt;a href=&quot;http://news.lilynet.net/?_LilyPond-Report-Editors_&quot; class='spip_in'&gt;send your contributions&lt;/a&gt; to the &lt;i&gt;LilyPond Report&lt;/i&gt;'s next issues.&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;editorial&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Editorial&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by Valentin Villenave&lt;/i&gt;.&lt;/p&gt; &lt;p&gt;Here's a piece of news for you: &lt;strong&gt;LilyPond is no more&lt;/strong&gt;. It has filed for bankruptcy and disappeared from the map, it's been shut down, it has ceased to be, it's expired and gone to meet its maker!&lt;/p&gt; &lt;dl class='spip_document_521 spip_documents spip_documents_right' style='float:right;width:155px;'&gt;
&lt;dt&gt;&lt;a href=&quot;http://joonbug.com/media/nClNRM7EJei/lilypond.jpg&quot; title='JPEG - 30.6 kb' type=&quot;image/jpeg&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L155xH200/lilypondjpg-cc58-36cdc-e684c.jpg' width='155' height='200' alt='JPEG - 30.6 kb' style='height:200px;width:155px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;Now, I'm evidently &lt;i&gt;not&lt;/i&gt; talking about the &lt;a href=&quot;http://lilypond.org/&quot; class='spip_out' rel='external'&gt;GNU LilyPond&lt;/a&gt; free software we use and love. What I'm referring to here, is the &lt;a href=&quot;http://www.sheckysnightlife.com/newyorkcity/search/lily_pond_1_9287.asp&quot; class='spip_out' rel='external'&gt;LilyPond night club&lt;/a&gt; in East Hampton, one of the &lt;a href=&quot;http://joonbug.com/newyork/clubs/C2VE2u6cCKp&quot; class='spip_out' rel='external'&gt;fanciest&lt;/a&gt; and &lt;a href=&quot;http://www.showcase.com/property/44-Three-Mile-Harbor-Road/East-Hampton/New-York/7204399&quot; class='spip_out' rel='external'&gt;most expensive&lt;/a&gt; places in one of the fanciest and most expensive locations in the world: &lt;a href=&quot;http://hamptons.curbed.com/tags/lily-pond-lane&quot; class='spip_out' rel='external'&gt;Lily Pond Lane&lt;/a&gt;. I've been trying for the past several years to make a shallow and not-funny joke about it, vainly searching for some link between an outrageously indecent &quot;1% amongst the 1%&quot; place, and our own small community of dedicated volunteers... Only to learn that it had &lt;a href=&quot;http://ny.eater.com/archives/2010/04/lily_pond_lawsuit_sheds_light_on_hamptons_nightclub_scene.php&quot; class='spip_out' rel='external'&gt;gone bankrupt&lt;/a&gt; and been closed &#8212; or rather, merely &lt;a href=&quot;http://www.jetsetreport.com/nightlife.php?articleId=177&quot; class='spip_out' rel='external'&gt;changed its name&lt;/a&gt;. (That sarcastic tone? That's just me refraining from weeping any tear.)&lt;/p&gt; &lt;p&gt;Anyhow. Are &lt;i&gt;we&lt;/i&gt; in any danger of closing down and filing for bankruptcy? Sometimes I do wonder. On one hand, some things are looking pretty good this year: we've been &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2012-05/msg00254.html&quot; class='spip_out' rel='external'&gt;awarded&lt;/a&gt; with a gizmo and we've been having our very first &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2012-04/msg00380.html&quot; class='spip_out' rel='external'&gt;Google Summer of Code&lt;/a&gt; sponsorship (go Janek, we're counting on you!). On the other hand, David Kastrup's &lt;a href=&quot;http://news.lilynet.net/?The-LilyPond-Report-24#an_urgent_request_for_funding&quot; class='spip_in'&gt;request for funding&lt;/a&gt;, although moderately successful at first, isn't doing so well these days. You'll find his May-June report below, and the next one is not on its way to look any less bleak. Now, there's probably a lesson to be inferred here, but I'll let you fill in the blanks!&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;release_news&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Release news&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by Valentin Villenave&lt;/i&gt;.&lt;/p&gt; &lt;p&gt;As this &lt;i&gt;Report&lt;/i&gt; went online, a new &lt;a href=&quot;http://lilypond.org/development.html&quot; class='spip_out' rel='external'&gt;development version&lt;/a&gt; (&lt;code class='spip_code' dir='ltr'&gt;2.15.42&lt;/code&gt;) has just been released. You may want to give it a go for testing purposes; please note, however, that due to some &lt;a href=&quot;http://code.google.com/p/lilypond/issues/list?can=2&amp;q=Type%3DCritical&quot; class='spip_out' rel='external'&gt;critical bugs&lt;/a&gt; remaining, this is &lt;i&gt;not&lt;/i&gt; the next &quot;Release Candidate&quot; for our upcoming next stable version. For normal users, we still officially recommend the current &lt;a href=&quot;http://lilypond.org/download.html&quot; class='spip_out' rel='external'&gt;stable version&lt;/a&gt; &lt;code class='spip_code' dir='ltr'&gt;2.14&lt;/code&gt;. (Although, if you ask me, the development branch brings just too much awesomeness to be overlooked. More below.)&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;investors_report&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Investors' report&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by &lt;a href=&quot;http://news.lilynet.net/?_David-Kastrup_&quot; class='spip_in'&gt;David Kastrup&lt;/a&gt;&lt;/i&gt;.&lt;/p&gt; &lt;p&gt;First I have to apologize for delaying the report for May until it
made no more sense to release it on its own. So here are the numbers
for May and June, in sequence. The original request for funding made
in February in the
&lt;a href=&quot;http://news.lilynet.net/?The-LilyPond-Report-24#an_urgent_request_for_funding&quot; class='spip_in'&gt;LilyPond Report 24&lt;/a&gt; still contains all the relevant details
regarding my financial situation and the need for funding while I am
working exclusively on LilyPond.&lt;/p&gt; &lt;p&gt;I have not separated one-time payments and regular payments this time:
they average out in the whole, and where regular payments come into
disagreement with the intended plan, keeping track becomes really
complex, and running a reminder system would be even more complex, and
of course somewhat pointless when we are talking about a voluntary
commitment.&lt;/p&gt; &lt;p&gt;As a rough estimate, probably about &#8364;400 per month can by now be
attributed to regular or semi-regular payments.&lt;/p&gt; &lt;p&gt;Regarding the report for April, there are &#8364;100 missing that I had
counted as half of a two-month installment when it really has been a
one-month payment. Special thanks for that! So April, with a total
of &#8364;821 also managed to surpass the prospected bare minimum of &#8364;800
per month required to keep my financial situation in limbo.&lt;/p&gt; &lt;p&gt;I count payments in US$ as &#8364;0,80 here, and other currencies as the
result in Euro after Paypal's conversion and fee deduction.&lt;/p&gt; &lt;center&gt;&lt;strong&gt;May&lt;/strong&gt;&lt;/center&gt;
&lt;table class=&quot;spip&quot;&gt;
&lt;thead&gt;&lt;tr class='row_first'&gt;&lt;th scope='col'&gt;Fixed payments (&#8364;)&lt;/th&gt;&lt;th scope='col'&gt;Variable plans (&#8364;)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class='row_even'&gt;
&lt;td&gt;250&lt;br&gt;200&lt;br&gt;160&lt;br&gt;100&lt;br&gt;72&lt;br&gt;37&lt;br&gt;6&#215;25&lt;br&gt;24&lt;br&gt;2&#215;20&lt;br&gt;15&lt;br&gt;3&#215;10
&lt;/td&gt;
&lt;td&gt;25 + 50 (target &#8364;1200)&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd'&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;: 1078&lt;/td&gt;
&lt;td&gt; &lt;strong&gt;Total&lt;/strong&gt;: 75&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even'&gt;
&lt;td colspan='2'&gt;&lt;center&gt;&lt;strong&gt;Totals&lt;/strong&gt;: &#8364;1153&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Until May 20th, there were about &#8364;200 in donations. I used the
opportunity when posting a link to the video of a
&lt;a href=&quot;http://chemnitzer.linux-tage.de/2012/vortraege/900&quot; class='spip_out' rel='external'&gt;LilyPond-related talk I gave&lt;/a&gt;, to point out that things were not really looking well, and in hardly more than a week, the totals surpassed that of any month so far.&lt;/p&gt; &lt;center&gt;&lt;strong&gt;June&lt;/strong&gt;&lt;/center&gt;
&lt;table class=&quot;spip&quot;&gt;
&lt;thead&gt;&lt;tr class='row_first'&gt;&lt;th scope='col'&gt;Fixed payments (&#8364;)&lt;/th&gt;&lt;th scope='col'&gt;Variable plans (&#8364;)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class='row_even'&gt;
&lt;td&gt;160&lt;br&gt;100&lt;br&gt;50&lt;br&gt;2&#215;30&lt;br&gt;5&#215;25&lt;br&gt;20&lt;br&gt;3&#215;10
&lt;/td&gt;
&lt;td&gt;25 + 50 (target &#8364;1200)&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd'&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;: 545&lt;/td&gt;
&lt;td&gt; &lt;strong&gt;Total&lt;/strong&gt;: 75&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even'&gt;
&lt;td colspan='2'&gt;&lt;center&gt;&lt;strong&gt;Totals&lt;/strong&gt;: &#8364;620&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;In contrast, June has dropped to a record low, most likely due to the
delayed report for May. Averaging both months still put me in the
position to pay rent, health insurance and food till the end of June.
June has really shown itself a month of the faithful (to the degree
where some payments likely intended for July already arrived). As one
positive result, about two thirds of the payment arrived via SEPA bank
transfers, quite the most cost-effective option within the Euro zone
(banks should not bill more than for in-country transfers).&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Reasons for delayed report&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;What is the reason that this report has been delayed so much? Mostly,
I am not happy with the current development situation and how I am
contributing to it, to the degree where I am not sure I am giving a
good return of the considerable investment LilyPond users take in me.
That's one reason I felt not really justified asking for more. And
while the large rally at the month of May has on the one hand been
elating and inspiring, it also meant responsibility to live up to the
expectations.&lt;/p&gt; &lt;p&gt;Recently, Graham made an anonymous survey of formerly more active
LilyPond developers, asking for the reasons of their declined
participation.
&lt;a href=&quot;http://permalink.gmane.org/gmane.comp.gnu.lilypond.devel/47462&quot; class='spip_out' rel='external'&gt;One answer in particular&lt;/a&gt; was worrying to me.&lt;/p&gt; &lt;p&gt;I am citing one paragraph:&lt;/p&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;p&gt;
The last &quot;teamwork&quot; problem is the amount of &quot;monetization&quot; going on. I didn't join lilypond to help other people make money off it. I don't have any good suggestions for this, but the question asked if I was contributing less and this is one reason. Having some people making money and others not makes it feel like less of a &quot;team&quot;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Now it is not that much that I am ``making money off LilyPond'': at
the end of the month everything is gone without reserve so far. It is
more like I am making &lt;i&gt;time&lt;/i&gt; for LilyPond development from the
monetary support of LilyPond users and developers: I can afford the
luxury to work on a project I like. Being independently wealthy would
be even nicer, but I have to work with what I've got.&lt;/p&gt; &lt;p&gt;I am quite grateful that users of LilyPond have been willing to pitch
in and let me continue. But what this buys them is just a single
active developer, and if that makes other developers stop
contributing, it is not helping.&lt;/p&gt; &lt;p&gt;Another thing in this feedback about reduced involvement points out a
deterioration in the style of discussions on the LilyPond mailing
lists. And it is not hard to make a connection to my lack of decent
communication skills.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;LilyPond developer and user meeting in August&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;So I am trying to address this with a meeting of LilyPond developers
and users at August 24th to 28th (check out the &lt;a href=&quot;http://news.lilynet.net/?LilyPond-meeting-in-Waltrop&quot; class='spip_in'&gt;detailed announcement here&lt;/a&gt;)
at my place. I have made the experience that it is easier to behave
civilized to people one has actually met already instead of knowing
them just as letters on the screen. It also makes it easier to
understand what people are trying to say, even when they are not
having their best day. With a `critical mass' of core people
reasonably understanding one another, maybe some more or less
frequently occuring problems might become insignificant.&lt;/p&gt; &lt;p&gt;Of course, another purpose of the meeting is better distributing
specialized knowledge, and make more people able to deal with the
programming languages and subsystems of LilyPond, and also figure out
where the stumbling blocks are.&lt;/p&gt; &lt;p&gt;So maybe this meeting, where a number of core developers will be
turning up, will be able to improve the atmosphere, productivity, and
feeling of belonging to a really worthwhile community again.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Lilypond and Scheme&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Some of the recent Email discussion (hopefully to be considered
civilized) were centered around the use of Scheme as LilyPond's
extension language. My personal take on this is that embedding Scheme
at the syntactical LilyPond layer (namely in &lt;code class='spip_code' dir='ltr'&gt;*.ly&lt;/code&gt; files) is
working out well enough. LilyPond is more a language of declarations
and expressions rather than actions, and a functional language like
Scheme fits nicely with that. The current interface using
&lt;code class='spip_code' dir='ltr'&gt;#&lt;/code&gt;, &lt;code class='spip_code' dir='ltr'&gt;$&lt;/code&gt;, &lt;code class='spip_code' dir='ltr'&gt;#{ &#8230; #}&lt;/code&gt; as a way of
switching the language between expressions is actually rather
straightforward. Interfacing an imperative language, where the basic
unit of execution is not an expression, would likely be harder. The
end of June saw the additions of &lt;code class='spip_code' dir='ltr'&gt;#@&lt;/code&gt; and &lt;code class='spip_code' dir='ltr'&gt;$@&lt;/code&gt;
operators (see below).&lt;/p&gt; &lt;p&gt;As a general purpose programming language (namely what we see in
&lt;code class='spip_code' dir='ltr'&gt;*.scm&lt;/code&gt; files), the dearth of visually recognizable subunits is
the most common complaint about Scheme. As long as good user
interfaces manage to keep the complexity of the required user-level
programming at bay, I don't consider this a show-stopper. LilyPond
&lt;i&gt;has&lt;/i&gt; quite a lot of potential and need for further improvement
here, even though version 2.16 will offer a lot over 2.14 in that
department already.&lt;/p&gt; &lt;p&gt;With version 2.15.41, the eighth release candidate for 2.16, we are
again on the finishing line for stable releases, and hopefully it will
not be yanked from our feet by newly discovered regressions again.
There are changes in the release policies under way, so perhaps 2.18
will not take as long as 2.16 did. While 2.14 took even longer, there
was less of a feeling of urgency about it.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;What happened in the code?&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Apart from talk, what kind of work on LilyPond did I do in May? I've
made some progress with trying to reinvent some central data
structures in the framework of
&lt;a href=&quot;http://www.gnu.org/software/goops&quot; class='spip_out' rel='external'&gt;GOOPS&lt;/a&gt;, GUILE's Object
Oriented Programming System, but this project is moving forward
slowly. I am still getting the hang of how to create a design that
falls into place naturally and is easy to use. Basically, this is
still &lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=2507&quot; class='spip_out' rel='external'&gt;issue 2507&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Apart from several bugfixes and some slight syntax changes, most
noteworthy are probably the work on tweaks allowing for something like&lt;/p&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;&lt;\tweak Accidental #'color #red cis4&lt;br /&gt; \tweak Accidental #'color #green es&lt;br /&gt; g&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;
(previously, only the notehead would have been susceptible to a
tweak), completing the work on event classes meaning that string
indications like&lt;/p&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;c\5&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;
don't need to be part of a chord to be displayed, and a redesign of
the &lt;code class='spip_code' dir='ltr'&gt;\footnote&lt;/code&gt; interface. The latter took several iterations
before it actually became reasonably boring (that is, consistent and
versatile), and an &lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=2547&quot; class='spip_out' rel='external'&gt;overhaul of its documentation&lt;/a&gt; has not yet been completed since I ran out of steam and decided doing
something else before getting deadlocked. There would be more
potential for improvement of the &lt;code class='spip_code' dir='ltr'&gt;\footnote&lt;/code&gt; interface, but it
would require rather tricky parser work concerning optional arguments.
With all the iterations on the footnote interface and the
documentation, this project took up more time and energy than planned
for, and unfortunately not just from me. Indeed, there are still more
fixes to the footnote code that have spilled into even July.&lt;/p&gt; &lt;p&gt;In June, the focus has been mostly on bug fixes (some critical), but
one highlight in my opinion was the addition of `splicing operators',
mainly &lt;code class='spip_code' dir='ltr'&gt;$@&lt;/code&gt;. Basically, this means that&lt;/p&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;$@(list a b c)&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;
is the same as&lt;/p&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;$a $b $c&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;If you try&lt;/p&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;git grep &quot;,@&quot; scm&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;
in the LilyPond code repository, you'll see that this kind of thing is
pretty useful in the world of Scheme quoting, so it's not amiss to
have it as a tool in Scheme LilyPonding.&lt;/p&gt; &lt;p&gt;It allows to write&lt;/p&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;{ $@xxx }&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;
instead of&lt;/p&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;$(make-sequential-music xxx)&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;
so again, it is a measure to get work done when one is more
comfortable using LilyPond constructs rather than their Scheme
counterparts. (See below for a detailed article on this matter.)&lt;/p&gt; &lt;p&gt;Here is a somewhat extravagant example what one can do with the
splicing operators, inserting pitch lists into a chord, and putting
durations and articulations (in this case, slurs) after it, and
splicing the whole list of chords into the surrounding music.&lt;/p&gt; &lt;p&gt;The output also demonstrates that our algorithms for typesetting ties
have potential for improvement.&lt;/p&gt;
&lt;dl class='spip_document_522 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L500xH106/toto-preview-6-739aa.png' width='500' height='106' alt='PNG - 28 kb' style='height:106px;width:500px;' /&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;{&lt;br /&gt; $@(map!&lt;br /&gt; (lambda (p d) #{ &lt; $@p &gt;$@d #})&lt;br /&gt; ; this $@ produces elements for a sequential music list via map!. Each&lt;br /&gt; ; element is constructed from p, a list of pitches making up a chord,&lt;br /&gt; ; and from d, which is a list first containing a duration followed by&lt;br /&gt; ; _optional_ articulations, so $@d actually can return several tokens of&lt;br /&gt; ; _different_ type.&lt;br /&gt; ;&lt;br /&gt; ; The following form constructs the list of pitch lists for use in p&lt;br /&gt; (map!&lt;br /&gt; (lambda (i)&lt;br /&gt; (map!&lt;br /&gt; (lambda (i)&lt;br /&gt; (ly:make-pitch 2 (+ 1 (* 9 (quotient i 5)) (* i -2)) 0))&lt;br /&gt; (iota 5 i)))&lt;br /&gt; (append! (iota 34) (list 32)))&lt;br /&gt; ; The following form constructs an (end-less) list of lists containing&lt;br /&gt; ; a duration and maybe articulations.&lt;br /&gt; (apply&lt;br /&gt; circular-list&lt;br /&gt; (map!&lt;br /&gt; (lambda (m) (cons (ly:music-property m 'duration)&lt;br /&gt; (ly:music-property m 'articulations)))&lt;br /&gt; (extract-typed-music&lt;br /&gt; #{ s4.~ s~ s4~ s2~ s2 #}&lt;br /&gt; 'skip-event))))&lt;br /&gt; &lt;c' e' g' a' c''&gt;1 \bar &quot;|.&quot;&lt;br /&gt; }&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;h3 class=&quot;spip&quot; id=&quot;many_meetings&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Many meetings&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by Valentin Villenave&lt;/i&gt;.&lt;/p&gt; &lt;p&gt;If you haven't heard, there's this big unprecedented &lt;a href=&quot;http://news.lilynet.net/?LilyPond-meeting-in-Waltrop&quot; class='spip_in'&gt;&lt;strong&gt;International LilyPond meeting&lt;/strong&gt;&lt;/a&gt; taking place somewhere in Germany later this month, thanks to David. Lots of exciting talks and interesting people &#8212; which, unfortunately, doesn't include your truly (because of an administrative as well as financial hiccup). However, living in Paris still allows me to meet with a lot of LilyPond contributors: Rune Zedeler in 2007, &lt;a href=&quot;http://paconet.org/Souvenir%20de%20Paris/img-2.html&quot; class='spip_out' rel='external'&gt;Paco Vila&lt;/a&gt; in 2009, John Mandereau whenever he's not in Italy, Graham &quot;Grumpy&quot; Percival every now and then, Mike Solomon every other day...&lt;/p&gt; &lt;dl class='spip_document_518 spip_documents spip_documents_right' style='float:right;width:200px;'&gt;
&lt;dt&gt;&lt;a href=&quot;http://news.lilynet.net/IMG/jpg/Joe_and_I.jpg&quot; title='JPEG - 229.4 kb' type=&quot;image/jpeg&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L200xH150/Joe_and_I-17339-7d3cd.jpg' width='200' height='150' alt='JPEG - 229.4 kb' style='height:150px;width:200px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-518 spip_doc_titre' style='width:200px;'&gt;&lt;strong&gt;This should be in color&lt;/strong&gt;&lt;/dt&gt;
&lt;dd class='crayon document-descriptif-518 spip_doc_descriptif' style='width:200px;'&gt;if I knew how to use a camera.
&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;&lt;i&gt;And&lt;/i&gt;, last but not least, &lt;a href=&quot;http://www.stat.berkeley.edu/~jneeman/&quot; class='spip_out' rel='external'&gt;Joe Neeman&lt;/a&gt; just this afternoon. For those of us who don't know him yet, Joe is one of our &lt;a href=&quot;http://paconet.org/lilypond-statistics/authors.html&quot; class='spip_out' rel='external'&gt;most active&lt;/a&gt; long-time developer; although he doesn't spend much time goofing around with us mere mortals in silly jokes on the lists, his contributions are always of a very high quality.&lt;/p&gt; &lt;p&gt;Meeting with him was just plain cool (he's actually much younger than I expected, yet another of these clues that tell me how my own life is a failure); Joe is a student in statistics and plays the violin, not at all the hardcore programmer I'd have expected judging from his code. He doesn't seem bothered at all with LilyPond business, and even mentioned he had &quot;some projects&quot; in regard to future development.&lt;/p&gt; &lt;p&gt;What does he do for fun? Well, he develops a logic-based video game with his girlfriend, written in Python and remotely inspired by a HoM&amp;M mini-game. Isn't life awesome when you're a geek?&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;a_kind_of_magic&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;A Kind of Magic&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by &lt;a href=&quot;http://news.lilynet.net/?_David-Kastrup_&quot; class='spip_in'&gt;David Kastrup&lt;/a&gt;&lt;/i&gt;.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Exposition&lt;/strong&gt;
&lt;br /&gt;In a recent mailing list discussion, I came up with the following
piece of code working with recent development versions of LilyPond
(2.15.41 or later):&lt;/p&gt; &lt;dl class='spip_document_523 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L500xH43/toto-preview-7-354c1.png' width='500' height='43' alt='PNG - 2.4 kb' style='height:43px;width:500px;' /&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;#(define-macro (pattern args result)&lt;br /&gt; `(define-music-function (parser location ,@args)&lt;br /&gt; ,(make-list (length args) 'ly:music?)&lt;br /&gt; #{ $@(list ,@result) #}))&lt;br /&gt; &lt;br /&gt; $(pattern (A B C D) (A B D A C D))&lt;br /&gt; { a' a' a' a' }&lt;br /&gt; { b' b' b' b' }&lt;br /&gt; { c'' c'' c'' c'' }&lt;br /&gt; { d'' d'' d'' d'' }&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Now apart from having a reasonably nice effect (&lt;code class='spip_code' dir='ltr'&gt;pattern&lt;/code&gt; takes
two lists of symbols, the first specifying the input order of its
arguments, and the second specifying the desired output order), the
code is both short as well as sophisticated. We will now first
analyze the logic and elements of the code, and then take a look at
how LilyPond manages to make it work.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;The storyline&lt;/strong&gt;&lt;/p&gt; &lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; &lt;i&gt;Scheme macros&lt;/i&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p style=&quot;margin-top:-1em&quot;&gt;are a variation of Scheme functions that changes execution order.
When a Scheme function is called, first its arguments get evaluated,
and then the function is executed with the evaluated arguments, and
its return value is the result of the function call.&lt;/p&gt; &lt;p&gt;A macro changes the order: the macro is called &lt;i&gt;first&lt;/i&gt; on the
unevaluated arguments (in the case of the call of &lt;code class='spip_code' dir='ltr'&gt;pattern&lt;/code&gt;,
the first argument is a list with the symbols &lt;code class='spip_code' dir='ltr'&gt;A&lt;/code&gt;, &lt;code class='spip_code' dir='ltr'&gt;B&lt;/code&gt;,
&lt;code class='spip_code' dir='ltr'&gt;C&lt;/code&gt; and &lt;code class='spip_code' dir='ltr'&gt;D&lt;/code&gt;). The result of the macro call is
&lt;i&gt;then&lt;/i&gt; evaluated in the Scheme evaluator, and the result of this
evaluation &lt;i&gt;after&lt;/i&gt; executing the macro becomes the result of the
macro call.&lt;/p&gt; &lt;p&gt;Since unevaluated Scheme code usually consists of nested lists, it is
often convenient to specify the macro body in the form of
&lt;i&gt;mostly&lt;/i&gt; quoted lists (quotes keep the list from premature
evaluation), but with a few variable elements spliced in.&lt;/p&gt; &lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; &lt;i&gt;Quasiquotes&lt;/i&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p style=&quot;margin-top:-1em&quot;&gt; are the tool of choice for working with mostly constant lists with a
few variable elements, and are seen in connection with most macros.
The whole quasiquote is introduced with the backward quote character
&quot;&lt;code class='spip_code' dir='ltr'&gt;`&lt;/code&gt; instead of the normal quote character &quot;&lt;code class='spip_code' dir='ltr'&gt;'&lt;/code&gt;&quot;.
They are `quasiquotes' because inside of such a quoted expression, you
can `unquote' parts by preceding them with a comma &quot;&lt;code class='spip_code' dir='ltr'&gt;,&lt;/code&gt;&quot;, and
you can `unquote-splice' a list expression into a surrounding list by
preceding them with comma-at &quot;&lt;code class='spip_code' dir='ltr'&gt;,@&lt;/code&gt;&quot;.&lt;/p&gt; &lt;p&gt;So, for example,&lt;/p&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;`((+ 1 2) ,(+ 1 2) ,@'(+ 1 2))&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;
evaluates to the list&lt;/p&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;((+ 1 2) 3 + 1 2)&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;
Namely the starting list &lt;code class='spip_code' dir='ltr'&gt;(+ 1 2)&lt;/code&gt; containing the symbol
&quot;&lt;code class='spip_code' dir='ltr'&gt;+&lt;/code&gt; and the numbers &lt;code class='spip_code' dir='ltr'&gt;1&lt;/code&gt; and &lt;code class='spip_code' dir='ltr'&gt;2&lt;/code&gt; is retained
unchanged. The same construct with an unquote before it is evaluated
to &lt;code class='spip_code' dir='ltr'&gt;3&lt;/code&gt; before being put in the list, and the quoted list
&lt;code class='spip_code' dir='ltr'&gt;'(+ 1 2)&lt;/code&gt; evaluates by removing the quote, to &lt;code class='spip_code' dir='ltr'&gt;(+ 1 2)&lt;/code&gt;
which is then spliced into the surrounding list, effectively removing
one level of parentheses.&lt;/p&gt; &lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; &lt;i&gt;The call to &lt;code class='spip_code' dir='ltr'&gt;pattern&lt;/code&gt;&lt;/i&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p style=&quot;margin-top:-1em&quot;&gt;
Now the call to pattern looks like&lt;/p&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;(pattern (A B C D) (A B D A C D))&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;
and, considering that macro arguments are not evaluated, the result of
substituting the arguments is simply&lt;/p&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;`(define-music-function (parser location ,@'(A B C D))&lt;br /&gt; ,(make-list (length '(A B C D)) 'ly:music?)&lt;br /&gt; #{ $@(list ,@'(A B D A C D)) #})&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;
(we have inserted quotes appropriately to indicate that the lists are
not to be executed, so that one can feed this into a Scheme sandbox
inside of LilyPond) and if we now execute the quasiquote, we are left
with the following expression when finishing executing the macro:&lt;/p&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;(define-music-function (parser location A B C D)&lt;br /&gt; (ly:music? ly:music? ly:music? ly:music?)&lt;br /&gt; #{ $@(list A B D A C D) #})&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;
This is the definition of a music function doing the required
transformation of four music arguments to the requested order.&lt;/p&gt; &lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; &lt;i&gt;LilyPond's &quot;&lt;code class='spip_code' dir='ltr'&gt;$@&lt;/code&gt;&quot; operator&lt;/i&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p style=&quot;margin-top:-1em&quot;&gt;
is a variation on the Scheme splicing operator and has been introduced
in LilyPond 2.15.41: it can be used for
splicing a list of expressions into the surrounding
&lt;code class='spip_code' dir='ltr'&gt;#{&#160;&#8230;&#160;#}&lt;/code&gt; construct, and so&lt;/p&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;#{ $@(list A B D A C D) #}&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;
is essentially the same as&lt;/p&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;#{ $A $B $D $A $C $D #}&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;
To achieve the same effect in older LilyPond versions, we would have
had to write&lt;/p&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;(make-sequential-music (map ly:music-deep-copy (list ,@result)))&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;
instead of&lt;/p&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;#{ $@(list ,@result) #}&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;
since one effect of &quot;&lt;code class='spip_code' dir='ltr'&gt;$&lt;/code&gt;&quot; is to create a copy. Whenever a
music expression may be used more than once, we need to copy it since
many functions processing music change their input while processing
it. So the new splicing operator saves us from knowing
&lt;code class='spip_code' dir='ltr'&gt;make-sequential-music&lt;/code&gt; and some other things.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Behind the scenes&lt;/strong&gt;&lt;/p&gt; &lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; &lt;i&gt;Why does this even work?&lt;/i&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p style=&quot;margin-top:-1em&quot;&gt;
This question is indeed puzzling since macro expansion is a complex
beast, and &lt;code class='spip_code' dir='ltr'&gt;#{&#160;&#8230;&#160;#}&lt;/code&gt;, embedded LilyPond, is
actually a piece of LilyPond code that is stored away in a string and
later executed in a copy of the LilyPond parser. The LilyPond manual
states that Scheme expressions inside of embedded LilyPond are
executed in &quot;lexical closure&quot;. However, macro expansion happens at
an earlier point of time. So how can this work out?&lt;/p&gt; &lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; &lt;i&gt;At the first layer&lt;/i&gt;,
&lt;/li&gt;&lt;/ul&gt;
&lt;p style=&quot;margin-top:-1em&quot;&gt;
let us ask the
Scheme sandbox (slightly reformatted):&lt;/p&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;lilypond scheme-sandbox&lt;br /&gt; GNU LilyPond 2.15.42&lt;br /&gt; Processing `[...]/scheme-sandbox.ly'&lt;br /&gt; Parsing...&lt;br /&gt; guile&gt; (define-macro (pattern args result)&lt;br /&gt; `(define-music-function (parser location ,@args)&lt;br /&gt; ,(make-list (length args) 'ly:music?)&lt;br /&gt; #{ $@(list ,@result) #}))&lt;br /&gt; guile&gt; (macroexpand-1 '(pattern (A B C D) (A B D A C D)))&lt;br /&gt; (define-music-function (parser location A B C D)&lt;br /&gt; (ly:music? ly:music? ly:music? ly:music?)&lt;br /&gt; (#&lt;procedure embedded-lilypond&lt;br /&gt; (parser lily-string filename line closures)&gt;&lt;br /&gt; parser&lt;br /&gt; &quot; $@(list ,@result) &quot;&lt;br /&gt; #f 3&lt;br /&gt; (list (cons 2 (lambda () (list A B D A C D))))))&lt;br /&gt; guile&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;
After expanding the macro, we arrive at a call to the internal
function &lt;code class='spip_code' dir='ltr'&gt;embedded-lilypond&lt;/code&gt; which gets, as expected, the
contents of &lt;code class='spip_code' dir='ltr'&gt;#{&#160;&#8230;&#160;#}&lt;/code&gt; as a string. But it also
gets &quot;&lt;code class='spip_code' dir='ltr'&gt;closures&lt;/code&gt;&quot; a list containing pairs, with the first
element being an offset into the string, and the second being an
anonymous &quot;&lt;code class='spip_code' dir='ltr'&gt;lambda&lt;/code&gt;&quot; function for evaluating the embedded
Scheme expression at that point in the string.&lt;/p&gt; &lt;p&gt;LilyPond's parser uses this anonymous function that has been created in the lexical environment (namely its placement in Scheme source code) of the &lt;code class='spip_code' dir='ltr'&gt;#{&#160;&#8230;&#160;#}&lt;/code&gt; expression instead of actually interpreting the Scheme expression from the text at the time it passes the whole embedded LilyPond string to the parser. And it turns out that this &lt;code class='spip_code' dir='ltr'&gt;lambda&lt;/code&gt; function magically already is the right expression! How did it arrive there?&lt;/p&gt; &lt;p&gt;The answer, of course, is somehow buried in the innards of
&lt;code class='spip_code' dir='ltr'&gt;scm/parser-ly-from-scheme.scm&lt;/code&gt; in the LilyPond source, the
code that is responsible for turning &lt;code class='spip_code' dir='ltr'&gt;#{&#160;&#8230;&#160;#}&lt;/code&gt; into Scheme.&lt;/p&gt; &lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; &lt;i&gt;Let us dig deeper.&lt;/i&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p style=&quot;margin-top:-1em&quot;&gt;
Let us take a
look at the embedded Scheme expression itself, outside of the macro
and quasiquote and unevaluated:&lt;/p&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;guile&gt; '#{ $@(list ,@result) #}&lt;br /&gt; (#&lt;procedure embedded-lilypond&lt;br /&gt; (parser lily-string filename line closures)&gt;&lt;br /&gt; parser&lt;br /&gt; &quot; $@(list ,@result) &quot;&lt;br /&gt; #f 6&lt;br /&gt; (list (cons 2 (lambda () (list (unquote-splicing result))))))&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;
Note that &quot;&lt;code class='spip_code' dir='ltr'&gt;(unquote-splicing result)&lt;/code&gt;&quot; is just a different
representation for &quot;&lt;code class='spip_code' dir='ltr'&gt;,@result&lt;/code&gt;&quot;, like we are now seeing a
different representation for the whole &lt;code class='spip_code' dir='ltr'&gt;#{&#160;&#8230;&#160;#}&lt;/code&gt;
construct. If this expression is now part of a larger quasiquote
construct, the &quot;&lt;code class='spip_code' dir='ltr'&gt;unquote-splicing&lt;/code&gt;&quot; operator will kick in and
substitute the value of &quot;&lt;code class='spip_code' dir='ltr'&gt;result&lt;/code&gt;&quot; into the list, and that is
just what we are seeing here.&lt;/p&gt; &lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; &lt;i&gt;A bit of history:&lt;/i&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p style=&quot;margin-top:-1em&quot;&gt;
The current form of the &lt;code class='spip_code' dir='ltr'&gt;closures&lt;/code&gt; argument as an association
list of string offsets to anonymous functions was introduced as an
emergency measure because Guile version 2.0 was lacking
&lt;code class='spip_code' dir='ltr'&gt;local-eval&lt;/code&gt;, a feature of Guile used previously for the
purpose of evaluating Scheme inside of embedded LilyPond in lexical
closure (the syntactical environment containing local variables) of
the outward Scheme layer. Version 2.0.4 of Guile (released in January
2012) saw a return of &quot;&lt;code class='spip_code' dir='ltr'&gt;local-eval&lt;/code&gt;&quot;. Would this kind of
construct work using &lt;code class='spip_code' dir='ltr'&gt;local-eval&lt;/code&gt; in either Guile 1.8 or
Guile 2.0?&lt;/p&gt; &lt;p&gt;Frankly, I don't know. Capturing a lexical environment in the middle
of expanding a quasiquote seems like an audacious enterprise. In
afterthought, expecting this to work was somewhat optimistic. But
LilyPond delivered.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;R&#233;sum&#233;&lt;/strong&gt;
&lt;br /&gt;As straightforward as this little gem may have looked at first sight:
if we take a thorough look behind the scenes to see just what makes it
work, the degree to which the intertwining of LilyPond and Guile
manages to rise to the level of `na&#239;ve' expectations is actually
rather impressive.&lt;/p&gt; &lt;p&gt;The &lt;code class='spip_code' dir='ltr'&gt;$@&lt;/code&gt; and &lt;code class='spip_code' dir='ltr'&gt;#@&lt;/code&gt; operators are a little addition in
the toolbox for crossing between the lands of LilyPond and Scheme and
should come in handy for some things that might otherwise require
staying in Scheme for things one would rather tackle in LilyPond
syntax.&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;lilypond_s_lesser_known_companions&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;LilyPond's (lesser-known) companions&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by Valentin Villenave&lt;/i&gt;&lt;/p&gt; &lt;p&gt;Since 2008, the &lt;i&gt;LilyPond Report&lt;/i&gt; tries to make a complete list of little-known projects pertaining to LilyPond. To be blunt: this task has proved to be impossible. LilyPond's children are all over the place; everybody and their dog seems to be coding some interface, some plugin, some markup gizmo whatchamacallit. Which is nice &#8212; don't take it otherwise. But every other week I seem to stumbling upon things I had no idea existed...&lt;/p&gt; &lt;p&gt;For example, let's talk about converters. Some of us unlucky former Sibelius users may have heard about Kirill Sidorov's &lt;a href=&quot;http://sidorefa.com/sib2ly/&quot; class='spip_out' rel='external'&gt;sib2ly&lt;/a&gt; tool, that has been developed for at least (from what I gather) seven years... But did you know about Alberto Vignani's &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-user/2011-04/msg00274.html&quot; class='spip_out' rel='external'&gt;ove2ly&lt;/a&gt; converter? (Hell, I'm not even sure &lt;i&gt;what&lt;/i&gt; &lt;a href=&quot;https://en.wikipedia.org/wiki/Overture_%28software%29&quot; class='spip_out' rel='external'&gt;Overture&lt;/a&gt; is...) And there's recently been some interest in converting &lt;a href=&quot;https://en.wikipedia.org/wiki/Encore_%28software%29&quot; class='spip_out' rel='external'&gt;Encore&lt;/a&gt; scores: Felipe Castro has &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-user/2012-07/msg00339.html&quot; class='spip_out' rel='external'&gt;introduced&lt;/a&gt; his own enc2ly converter, and LilyPond's founder himself, Han-Wen Nienhuys, &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-user/2012-07/msg00368.html&quot; class='spip_out' rel='external'&gt;appears&lt;/a&gt; to be working on something similar.&lt;/p&gt; &lt;p&gt;Moving on to interfaces and editors, you may already know about the editing environment we all love (&lt;a href=&quot;http://lilypondtool.blogspot.com/&quot; class='spip_out' rel='external'&gt;LilyPondTool&lt;/a&gt;, from our hungarian contributor Bertalan Fodor) written in the toolkit we all love to hate (Java, and the jEdit editor). But have you had a look at its counterpart &lt;a href=&quot;http://elysium.thsoft.hu/&quot; class='spip_out' rel='external'&gt;Elysium&lt;/a&gt; (formerly LilyPondBeans), written by our &lt;i&gt;other&lt;/i&gt; hungarian contributor D&#233;nes Harmath for an&lt;i&gt;other&lt;/i&gt; Java editor (Eclipse)? Do check it out &#8212; or at least its website: it is so ostensibly relaxing I find it stressful &lt;img alt=&quot;:-)&quot; title=&quot;:-)&quot; class=&quot;no_image_filtrer format_png&quot; src=&quot;http://news.lilynet.net/plugins/auto/couteau_suisse/img/smileys/sourire.png&quot; width=&quot;19&quot; height=&quot;19&quot;/&gt;&lt;/p&gt; &lt;p&gt;If you're looking for something lighter, did you know there once was an FLTK-based editor named &lt;a href=&quot;http://luiginegrettilanner.com/2009/09/22/lilypond-editor-lied&quot; class='spip_out' rel='external'&gt;Lied&lt;/a&gt;? There's also this new thing called &lt;a href=&quot;http://sourceforge.net/projects/lyg&quot; class='spip_out' rel='external'&gt;Lyg&lt;/a&gt; (apparently still in its infancy), whatever that means. And dozens of others.&lt;/p&gt; &lt;p&gt;On a different note, you may have seen that (former?) &lt;a href=&quot;http://denemo.org/&quot; class='spip_out' rel='external'&gt;Denemo&lt;/a&gt; developer Nils Gey, has now launched his own LilyPond interface called &lt;a href=&quot;http://www.laborejo.org/&quot; class='spip_out' rel='external'&gt;Laborejo&lt;/a&gt;. What does it bring? Check it out and let us know!&lt;/p&gt; &lt;p&gt;Finally, I have to announce (proudly) that the record for the Silliest Software Name, Ever, is currently held by a French music &lt;a href=&quot;http://www.patacrep.com/&quot; class='spip_out' rel='external'&gt;program&lt;/a&gt; whose name roughly translates as... &quot;crepe batter&quot;. Think about that, next time someone tells you &quot;LilyPond&quot; is a stupid name.&lt;/p&gt; &lt;p&gt;&lt;span class='spip_document_81 spip_documents spip_documents_center'&gt;
&lt;img src='http://news.lilynet.net/local/cache-vignettes/L125xH100/lesite-d163a.png' width='125' height='100' alt=&quot;&quot; style='height:100px;width:125px;' /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;That concludes our twenty-seventh issue of the &lt;i&gt;LilyPond Report&lt;/i&gt;.&lt;/p&gt; &lt;p&gt;Cheers,
&lt;br /&gt;&lt;i&gt;Valentin Villenave &amp; David Kastrup.&lt;/i&gt;&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		
		<enclosure url="http://news.lilynet.net/IMG/png/toto-preview-5.png" length="13197" type="image/png" />
		

	</item>
<item xml:lang="en">
		<title>The LilyPond Report #26</title>
		<link>http://news.lilynet.net/?The-LilyPond-Report-26</link>
		<guid isPermaLink="true">http://news.lilynet.net/?The-LilyPond-Report-26</guid>
		<dc:date>2012-05-18T16:49:53Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>en</dc:language>
		<dc:creator>David Kastrup, Janek Warcho&#322;, Valentin Villenave</dc:creator>



		<description>&lt;p&gt;Welcome to this twenty-sixth issue of the &lt;i&gt;LilyPond Report&lt;/i&gt;!&lt;/p&gt;

-
&lt;a href="http://news.lilynet.net/?-LilyPond-Report-" rel="directory"&gt;LilyPond Report&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;This short, informal opinion column is about the &lt;a href=&quot;http://lilypond.org/&quot; class='spip_out' rel='external'&gt;GNU LilyPond&lt;/a&gt; project: its team, its world, its community. It is &lt;i&gt;not&lt;/i&gt;, however, an official &lt;a href=&quot;http://lilypond.org/doc&quot; class='spip_out' rel='external'&gt;documentation resource&lt;/a&gt;. Reader comments welcome; reader &lt;a href=&quot;http://news.lilynet.net/?_LilyPond-Report-Editors_&quot; class='spip_in'&gt;contributions&lt;/a&gt; even more appreciated!&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;div class=&quot;cs_sommaire cs_sommaire_avec_fond&quot; id=&quot;outil_sommaire&quot;&gt; &lt;div class=&quot;cs_sommaire_inner&quot;&gt; &lt;div class=&quot;cs_sommaire_titre_avec_fond&quot;&gt; Table of contents &lt;/div&gt; &lt;ul&gt; &lt;li&gt;&lt;a title=&quot;Editorial&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#editorial&quot;&gt;Editorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;The road to 2.16&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#the_road_to_2_16&quot;&gt;The road to 2.16&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Investor&amp;#39;s report&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#investor_s_report&quot;&gt;Investor's report&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Compiler adventures, episode 1&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#compiler_adventures_episode_1&quot;&gt;Compiler adventures, episode 1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Compiler adventures, episode 2&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#compiler_adventures_episode_2&quot;&gt;Compiler adventures, episode 2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;LilyPond output analysis&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#lilypond_output_analysis&quot;&gt;LilyPond output analysis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;The snippet of the month&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#the_snippet_of_the_month&quot;&gt;The snippet of the month&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;The (undocumented) feature of the month&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#the_undocumented_feature_of_the_month&quot;&gt;The (undocumented) feature of the (...)&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; &lt;/div&gt;&lt;p&gt;Welcome to this twenty-sixth issue of the &lt;i&gt;LilyPond Report&lt;/i&gt;!&lt;/p&gt; &lt;p&gt;No funny pictures or cooking recipes this month, the &lt;i&gt;Report&lt;/i&gt; is back with a very serious issue full of long, technical articles. Whilst we're getting ready for the new LilyPond stable release, David Kastrup takes a look at our current development model and what needs to be ironed out. Janek has a pretty detailed analysis of LilyPond's current output and how it measures to our beloved hand-engraved references; at last, the &lt;i&gt;Report&lt;/i&gt; as found a new contributor, namely kernel developer Pavel Roskin, who'll tell us about how he saved the world (well at least, the GCC part of it) thanks to LilyPond. All that, and many other things are discussed in this month's issue: read on to find out!
&lt;br /&gt;As always, do feel free to post your comments at the bottom of this page, or &lt;a href=&quot;http://news.lilynet.net/?_LilyPond-Report-Editors_&quot; class='spip_in'&gt;send your contributions&lt;/a&gt; to the &lt;i&gt;LilyPond Report&lt;/i&gt;'s future issues.&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;editorial&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Editorial&lt;/h3&gt;
&lt;p&gt;(&lt;i&gt;by Valentin Villenave&lt;/i&gt;)&lt;/p&gt; &lt;p&gt;How do you ensure that a Free Software project remains viable on the long run? As Graham Percival (our current LilyPond project manager) &lt;a href=&quot;http://percival-music.ca/blog/2010-08-01-sustainable-development.html&quot; class='spip_out' rel='external'&gt;noted&lt;/a&gt; a couple of years ago, developers are but a non-renewable energy source. The question then becomes: &lt;i&gt;what&lt;/i&gt; do you do with however few resources and time you have at hand? Quoting Graham again in a &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2012-05/msg00414.html&quot; class='spip_out' rel='external'&gt;recent message&lt;/a&gt;: &quot;&lt;i&gt;I personally am interested in helping people to do whatever they want with lilypond. [But:] Simply creating an atmosphere where this is easy takes more resources than we have available.&lt;/i&gt;&quot; Thus, perhaps the crucial part of our discussions these days is about organisation : which tasks should take priority, which ones could be automatized, how to make sure nobody's time will be spent in vain (for example by banishing any duplicative work), etc.&lt;/p&gt; &lt;p&gt;Such will be the subject of upcoming discussions, with a &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2012-05/msg00213.html&quot; class='spip_out' rel='external'&gt;revival&lt;/a&gt; of Graham's &quot;&lt;a href=&quot;http://lilypond.org/doc/v2.15/Documentation/contributor/grand-organization-project-_0028gop_0029&quot; class='spip_out' rel='external'&gt;Grand Organisation Project&lt;/a&gt;&quot; (&lt;i&gt;GOP&lt;/i&gt;2.0, nope, not &lt;a href=&quot;http://en.wikipedia.org/wiki/Grand_Old_Party&quot; class='spip_out' rel='external'&gt;this one&lt;/a&gt;), to be (hopefully) followed by the &lt;a href=&quot;http://news.lilynet.net/?The-LilyPond-Report-16&quot; class='spip_in'&gt;long&lt;/a&gt;-awaited &quot;&lt;a href=&quot;http://lilypond.org/doc/v2.15/Documentation/contributor/grand-lilypond-input-syntax-standardization-_0028gliss_0029&quot; class='spip_out' rel='external'&gt;Grand LilyPond Syntax Stabilisation&lt;/a&gt;&quot; project (a.k.a. &lt;i&gt;GLISS&lt;/i&gt;). Where and how will these discussions take place? Via a live intercontinental &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2012-05/msg00247.html&quot; class='spip_out' rel='external'&gt;remote-conference system&lt;/a&gt;? Or even in real life (David &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2012-05/msg00230.html&quot; class='spip_out' rel='external'&gt;welcomes you&lt;/a&gt; this summer in Germany)? It's a fairly safe bet that the main place will remain our &lt;a href=&quot;https://lists.gnu.org/mailman/listinfo/lilypond-devel&quot; class='spip_out' rel='external'&gt;-devel mailing list&lt;/a&gt;, as with all serious discussions. (Well, not &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2012-05/msg00248.html&quot; class='spip_out' rel='external'&gt;too&lt;/a&gt; serious.)&lt;/p&gt; &lt;p&gt;Then again, another way of tackling the problem would be to actually &lt;i&gt;increase&lt;/i&gt; the resources (read: developer time) we have available: in other words, getting one or more paid developers to work on LilyPond.&lt;/p&gt; &lt;p&gt;A way to do that is to apply for grants and hope : as you may know, our Polish contributor Janek Warcho&#322; was recently &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2012-04/msg00380.html&quot; class='spip_out' rel='external'&gt;accepted&lt;/a&gt; as a &quot;Google Summer of Code&quot; student, but there's more: thanks to &lt;a href=&quot;http://mikesolomon.org/&quot; class='spip_out' rel='external'&gt;Mike Solomon&lt;/a&gt;, LilyPond recently &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2012-05/msg00254.html&quot; class='spip_out' rel='external'&gt;won&lt;/a&gt; the &lt;strong&gt;first prize&lt;/strong&gt; in a prestigious music software &lt;a href=&quot;http://concours.afim-asso.org/2012/&quot; class='spip_out' rel='external'&gt;competition&lt;/a&gt;!&lt;/p&gt; &lt;p&gt;Another (perhaps more reliable) way, is simply to ask _you_, dear readers, for money. We're all grateful for the Free Software movement that allows us to do our computing, express ourselves, communicate and create every single day; sometimes our gratitude can be expressed by contributing: reporting bugs, helping others, promoting our favourite programs... and yet, at times the best way to contribute is the most common: throwing in some dough. That's the way the &lt;a href=&quot;http://www.reactos.org/&quot; class='spip_out' rel='external'&gt;ReactOS project&lt;/a&gt; has recently been &lt;a href=&quot;http://www.reactos.org/en/news_page_75.html&quot; class='spip_out' rel='external'&gt;choosing&lt;/a&gt;, and it has been (rightly so, if you ask me) &lt;a href=&quot;http://www.g-loaded.eu/2012/05/03/why-reactos-leads-the-way-with-their-decision-to-hire-full-time-developers/&quot; class='spip_out' rel='external'&gt;commended&lt;/a&gt; for that decision as paving the way for Free Software at large.&lt;/p&gt; &lt;p&gt;The LilyPond world is no stranger to paid development: a special &lt;a href=&quot;http://lilypond.org/sponsoring.html&quot; class='spip_out' rel='external'&gt;&lt;i&gt;sponsoring&lt;/i&gt;&lt;/a&gt; webpage on our website allows you to pay people for their work on LilyPond, and you may have read from &lt;a href=&quot;http://news.lilynet.net/?_David-Kastrup_&quot; class='spip_in'&gt;David Kastrup&lt;/a&gt;, the only developer currently listed on this page, as he recently asked you to &lt;a href=&quot;http://news.lilynet.net/?The-LilyPond-Report-24#an_urgent_request_for_funding&quot; class='spip_in'&gt;join him&lt;/a&gt; towards a stable development funding model. How's it working for him so far? Read below to find out, and do not hesitate to join the plan!&lt;/p&gt; &lt;p&gt;Finally, another way of addressing the issue is, rather than asking for direct payment, to help our top contributors lead a comfortable enough career in music editing, writing or performing; a career that, in turn, will allow them to work on LilyPond as much as they'd like to. Mike Solomon, for example, is currently trying to &lt;a href=&quot;http://www.kickstarter.com/projects/751757415/ensemble-101&quot; class='spip_out' rel='external'&gt;raise money for his vocal ensemble&lt;/a&gt; on KickStarter; he has been &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2012-04/msg00286.html&quot; class='spip_out' rel='external'&gt;trying&lt;/a&gt; to get this &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2012-04/msg00465.html&quot; class='spip_out' rel='external'&gt;announced&lt;/a&gt; on our website but there is room for debate as to whether or not that kind of announcements should be featured prominently. In any case, there are a few days left for his fund-raiser, so feel free to chip in!&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;the_road_to_2_16&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;The road to 2.16&lt;/h3&gt;
&lt;p&gt;(&lt;i&gt;by &lt;a href=&quot;http://news.lilynet.net/?_David-Kastrup_&quot; class='spip_in'&gt;David Kastrup&lt;/a&gt;&lt;/i&gt;)&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Development statistics&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;As the release of LilyPond 2.16 is looming closer and closer and closer,
let us take a look at how the contributions to it are spread out.
Running the following Gnuplot program&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;set terminal pdf font &quot;,5&quot;&lt;br /&gt; set output &quot;contrib.pdf&quot;&lt;br /&gt; set logscale y 2&lt;br /&gt; plot &quot;&lt; git shortlog -n -s release/2.14.2-1..origin&quot; using :1:2 \&lt;br /&gt; with labels rotate by 45, &quot;&quot; using :1 with lines&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;leaves us with the following graphics right now:
&lt;span class='spip_document_506 spip_documents spip_documents_center'&gt;
&lt;img src='http://news.lilynet.net/local/cache-vignettes/L500xH313/pr1-5-17481.png' width='500' height='313' alt=&quot;&quot; style='height:313px;width:500px;' /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;We have 50 contributors and a rather straightforward logarithmic
distribution of commits each, resulting in 2062 commits. If we cut
the graph off after 37 contributors because of rounding issues (along
with their commits), we arrive at the law
&lt;span class='spip_document_503 spip_documents spip_documents_center'&gt;
&lt;img src='http://news.lilynet.net/local/cache-vignettes/L500xH37/pr1-2-7bd52.png' width='500' height='37' alt=&quot;&quot; style='height:37px;width:500px;' /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;Solving for&lt;/p&gt; &lt;p&gt;&lt;span class='spip_document_504 spip_documents spip_documents_center'&gt;
&lt;img src='http://news.lilynet.net/local/cache-vignettes/L17xH9/pr1-3-48740.png' width='17' height='9' alt=&quot;&quot; style='height:9px;width:17px;' /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt; as the expected number of commits from the most
prolific contributor we arrive at&lt;/p&gt; &lt;p&gt;&lt;span class='spip_document_505 spip_documents spip_documents_center'&gt;
&lt;img src='http://news.lilynet.net/local/cache-vignettes/L500xH42/pr1-4-0b6f6.png' width='500' height='42' alt=&quot;&quot; style='height:42px;width:500px;' /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;which numerically leaves us with
&lt;span class='spip_document_502 spip_documents spip_documents_center'&gt;
&lt;img src='http://news.lilynet.net/local/cache-vignettes/L67xH13/pr1-1-b9d39.png' width='67' height='13' alt=&quot;&quot; style='height:13px;width:67px;' /&gt;&lt;/span&gt;
. This is somewhat
below the 336 we find in reality, but then the cutoff had been
somewhat arbitrary. All in all, logarithmic law seems to match the
reality quite well. If we take a look at the number of commits
between 2.12.3-1 and 2.14.0-1, it turns out that we had 5242 commits
there, so we are still quite below the last number of changes between
stable releases for 2.16.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Critical issues&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;If we take a look at the stream of critical issues that are keeping us
from releasing LilyPond 2.16, we see a mixture of several causes.&lt;/p&gt; &lt;center&gt;&lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_replie blocs_click'&gt;&lt;a href='javascript:;'&gt;Detailed table (unfold)&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination blocs_invisible blocs_slide'&gt;
&lt;table border=&quot;1&quot;&gt;
&lt;caption&gt;regressions&lt;/caption&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;ID&lt;/td&gt;
&lt;td&gt;Opened&lt;/td&gt;
&lt;td&gt;Owner&lt;/td&gt;
&lt;td colspan=&quot;2&quot;&gt;Summary&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2532&lt;/td&gt;
&lt;td&gt;May/13/2012&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td colspan=&quot;8&quot;&gt;regression - hairpins begin/end in wrong places (incorrect spanner bounds)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2523&lt;/td&gt;
&lt;td&gt;May/08/2012&lt;/td&gt;
&lt;td&gt;dak_at_gnu.org&lt;/td&gt;
&lt;td colspan=&quot;7&quot;&gt;Patch: Display postevents on drum notes, rests and spacer rests&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2505&lt;/td&gt;
&lt;td&gt;Apr/28/2012&lt;/td&gt;
&lt;td&gt;pkx166h&lt;/td&gt;
&lt;td colspan=&quot;7&quot;&gt;Patch: Doc: NR clarified \footnote command as a TextScript&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2496&lt;/td&gt;
&lt;td&gt;Apr/25/2012&lt;/td&gt;
&lt;td&gt;mtsolo&lt;/td&gt;
&lt;td colspan=&quot;7&quot;&gt;Add announcements to the upper right corner of the website&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2486&lt;/td&gt;
&lt;td&gt;Apr/21/2012&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td colspan=&quot;5&quot;&gt;beamed rests overestimate system-height&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2484&lt;/td&gt;
&lt;td&gt;Apr/17/2012&lt;/td&gt;
&lt;td&gt;dak_at_gnu.org&lt;/td&gt;
&lt;td colspan=&quot;7&quot;&gt;Patch: Let pitched trills in articulations be transposed as well&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2468&lt;/td&gt;
&lt;td&gt;Apr/07/2012&lt;/td&gt;
&lt;td&gt;k-ohara5a5a_at_oco.net&lt;/td&gt;
&lt;td colspan=&quot;6&quot;&gt;augmentation dot of a moved rest is placed on a line&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2447&lt;/td&gt;
&lt;td&gt;Mar/28/2012&lt;/td&gt;
&lt;td&gt;mtsolo&lt;/td&gt;
&lt;td colspan=&quot;7&quot;&gt;Stems under beams no longer adjust for merged note heads&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2446&lt;/td&gt;
&lt;td&gt;Mar/28/2012&lt;/td&gt;
&lt;td&gt;dak_at_gnu.org&lt;/td&gt;
&lt;td colspan=&quot;4&quot;&gt;iffy git commands in release checklist&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2441&lt;/td&gt;
&lt;td&gt;Mar/27/2012&lt;/td&gt;
&lt;td&gt;mtsolo&lt;/td&gt;
&lt;td colspan=&quot;5&quot;&gt;Stems no longer adjust for merged note heads&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2409&lt;/td&gt;
&lt;td&gt;Mar/15/2012&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td colspan=&quot;8&quot;&gt;Full measure rest staff position ignores \override for subsequent rests&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2408&lt;/td&gt;
&lt;td&gt;Mar/15/2012&lt;/td&gt;
&lt;td&gt;Carl.D.Sorensen&lt;/td&gt;
&lt;td colspan=&quot;9&quot;&gt;Inconsistent automatic beaming when using multiple tuplets next to each other&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2403&lt;/td&gt;
&lt;td&gt;Mar/15/2012&lt;/td&gt;
&lt;td&gt;dak_at_gnu.org&lt;/td&gt;
&lt;td colspan=&quot;8&quot;&gt;MultiMeasureRest's 'staff-position in RhythmicStaff is wrong per default&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2399&lt;/td&gt;
&lt;td&gt;Mar/14/2012&lt;/td&gt;
&lt;td&gt;julien.rioux&lt;/td&gt;
&lt;td colspan=&quot;8&quot;&gt;website links to 2.13 docs for 'help us' points to a non-existent page&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2397&lt;/td&gt;
&lt;td&gt;Mar/14/2012&lt;/td&gt;
&lt;td&gt;mtsolo&lt;/td&gt;
&lt;td colspan=&quot;9&quot;&gt;Tuplet number incorrectly placed when using additonal articulations and/or abreak&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2386&lt;/td&gt;
&lt;td&gt;Mar/10/2012&lt;/td&gt;
&lt;td&gt;Carl.D.Sorensen&lt;/td&gt;
&lt;td colspan=&quot;4&quot;&gt;Inconsistent Beam Subdivision&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2380&lt;/td&gt;
&lt;td&gt;Mar/05/2012&lt;/td&gt;
&lt;td&gt;dak_at_gnu.org&lt;/td&gt;
&lt;td colspan=&quot;3&quot;&gt;formatting of lyrics&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2356&lt;/td&gt;
&lt;td&gt;Feb/26/2012&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td colspan=&quot;2&quot;&gt;Lilypond segfaults&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2338&lt;/td&gt;
&lt;td&gt;Feb/20/2012&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td colspan=&quot;3&quot;&gt;OS X LilyPad not working&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2337&lt;/td&gt;
&lt;td&gt;Feb/20/2012&lt;/td&gt;
&lt;td&gt;benko.pal&lt;/td&gt;
&lt;td colspan=&quot;2&quot;&gt;Endless Loop&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2304&lt;/td&gt;
&lt;td&gt;Feb/08/2012&lt;/td&gt;
&lt;td&gt;dak_at_gnu.org&lt;/td&gt;
&lt;td colspan=&quot;3&quot;&gt;Patch: Fix barre snippet.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2301&lt;/td&gt;
&lt;td&gt;Feb/07/2012&lt;/td&gt;
&lt;td&gt;mtsolo&lt;/td&gt;
&lt;td colspan=&quot;4&quot;&gt;Patch: Fixes cross stem glissandi&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2289&lt;/td&gt;
&lt;td&gt;Feb/06/2012&lt;/td&gt;
&lt;td&gt;dak_at_gnu.org&lt;/td&gt;
&lt;td colspan=&quot;4&quot;&gt;repeat percent with skips can crash&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2287&lt;/td&gt;
&lt;td&gt;Feb/05/2012&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td colspan=&quot;4&quot;&gt;lyrics spaced too far from staff&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2283&lt;/td&gt;
&lt;td&gt;Feb/04/2012&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td colspan=&quot;6&quot;&gt;Patch: Build: website should rely on $LILYPOND_GIT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2276&lt;/td&gt;
&lt;td&gt;Feb/03/2012&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td colspan=&quot;6&quot;&gt;multiple stanzas chord symbols collide with staff&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2272&lt;/td&gt;
&lt;td&gt;Feb/02/2012&lt;/td&gt;
&lt;td&gt;mtsolo&lt;/td&gt;
&lt;td colspan=&quot;5&quot;&gt;Long monosyllabic words collide with barlines&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2271&lt;/td&gt;
&lt;td&gt;Feb/02/2012&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td colspan=&quot;4&quot;&gt;2.15.27 won't open on Mac 10.4 PPC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2268&lt;/td&gt;
&lt;td&gt;Feb/01/2012&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td colspan=&quot;7&quot;&gt;Patch: Gets left Beam bounds correct with tempo indications&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2267&lt;/td&gt;
&lt;td&gt;Feb/01/2012&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td colspan=&quot;7&quot;&gt;Patch: Gets left Hairpin bounds correct with tempo indications&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2260&lt;/td&gt;
&lt;td&gt;Jan/28/2012&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td colspan=&quot;8&quot;&gt;line-broken spanners start too far to the right, with \tempo and \time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2257&lt;/td&gt;
&lt;td&gt;Jan/27/2012&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td colspan=&quot;5&quot;&gt;reg-test beam-shortened-lengths.ly fails&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2256&lt;/td&gt;
&lt;td&gt;Jan/27/2012&lt;/td&gt;
&lt;td&gt;Carl.D.Sorensen&lt;/td&gt;
&lt;td colspan=&quot;7&quot;&gt;empty strings: tabStaff insists on stringnumbers and looses notes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2251&lt;/td&gt;
&lt;td&gt;Jan/25/2012&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td colspan=&quot;4&quot;&gt;website still doesn't auto-update&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2244&lt;/td&gt;
&lt;td&gt;Jan/22/2012&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td colspan=&quot;6&quot;&gt;Beamlet orientation is wrong in compound meters&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2243&lt;/td&gt;
&lt;td&gt;Jan/22/2012&lt;/td&gt;
&lt;td&gt;Carl.D.Sorensen&lt;/td&gt;
&lt;td colspan=&quot;4&quot;&gt;Incorrect subdivision of beams&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2242&lt;/td&gt;
&lt;td&gt;Jan/22/2012&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td colspan=&quot;3&quot;&gt;Incorrect tabstaff fingering&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2240&lt;/td&gt;
&lt;td&gt;Jan/21/2012&lt;/td&gt;
&lt;td&gt;dak_at_gnu.org&lt;/td&gt;
&lt;td colspan=&quot;7&quot;&gt;Patch: Don't wrap EventChord around rhythmic events by default.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2231&lt;/td&gt;
&lt;td&gt;Jan/18/2012&lt;/td&gt;
&lt;td&gt;mtsolo&lt;/td&gt;
&lt;td colspan=&quot;9&quot;&gt;Tuplet bracket makes space for dynamic but dynamic is placed underneath bracket&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2228&lt;/td&gt;
&lt;td&gt;Jan/16/2012&lt;/td&gt;
&lt;td&gt;Carl.D.Sorensen&lt;/td&gt;
&lt;td colspan=&quot;8&quot;&gt;Some users prefer to minimize partial beams rather than beam by the beat&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2224&lt;/td&gt;
&lt;td&gt;Jan/15/2012&lt;/td&gt;
&lt;td&gt;julien.rioux&lt;/td&gt;
&lt;td colspan=&quot;7&quot;&gt;LM: clickable examples in the docs have stopped working.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2222&lt;/td&gt;
&lt;td&gt;Jan/15/2012&lt;/td&gt;
&lt;td&gt;julien.rioux&lt;/td&gt;
&lt;td colspan=&quot;4&quot;&gt;lilypond-book fails with html input&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2215&lt;/td&gt;
&lt;td&gt;Jan/12/2012&lt;/td&gt;
&lt;td&gt;Carl.D.Sorensen&lt;/td&gt;
&lt;td colspan=&quot;2&quot;&gt;lost commits jan 7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2205&lt;/td&gt;
&lt;td&gt;Jan/09/2012&lt;/td&gt;
&lt;td&gt;mtsolo&lt;/td&gt;
&lt;td colspan=&quot;8&quot;&gt;Breathing sign is positioned incorrectly after changing Staff or TabStaff size&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2193&lt;/td&gt;
&lt;td&gt;Jan/07/2012&lt;/td&gt;
&lt;td&gt;mtsolo&lt;/td&gt;
&lt;td colspan=&quot;4&quot;&gt;collision between beams and flags&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2180&lt;/td&gt;
&lt;td&gt;Jan/05/2012&lt;/td&gt;
&lt;td&gt;mtsolo&lt;/td&gt;
&lt;td colspan=&quot;4&quot;&gt;beams are detached from stems&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2160&lt;/td&gt;
&lt;td&gt;Dec/31/2011&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td colspan=&quot;4&quot;&gt;document LILYPOND_WEB_MEDIA_GIT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2156&lt;/td&gt;
&lt;td&gt;Dec/31/2011&lt;/td&gt;
&lt;td&gt;PhilEHolmes&lt;/td&gt;
&lt;td colspan=&quot;2&quot;&gt;lost commits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2100&lt;/td&gt;
&lt;td&gt;Dec/12/2011&lt;/td&gt;
&lt;td&gt;Carl.D.Sorensen&lt;/td&gt;
&lt;td colspan=&quot;6&quot;&gt;Patch: CG: explanation of branches for the impatient&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2094&lt;/td&gt;
&lt;td&gt;Dec/10/2011&lt;/td&gt;
&lt;td&gt;Carl.D.Sorensen&lt;/td&gt;
&lt;td colspan=&quot;7&quot;&gt;spacing-measure-length.ly regtest has time sig overlaying rest&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2061&lt;/td&gt;
&lt;td&gt;Nov/29/2011&lt;/td&gt;
&lt;td&gt;mtsolo&lt;/td&gt;
&lt;td colspan=&quot;3&quot;&gt;Lyrics collide with bar lines&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2031&lt;/td&gt;
&lt;td&gt;Nov/08/2011&lt;/td&gt;
&lt;td&gt;Carl.D.Sorensen&lt;/td&gt;
&lt;td colspan=&quot;3&quot;&gt;no lilydev available&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1998&lt;/td&gt;
&lt;td&gt;Oct/30/2011&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td colspan=&quot;5&quot;&gt;GUB problem with curl, SSLv2_client_method&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1997&lt;/td&gt;
&lt;td&gt;Oct/30/2011&lt;/td&gt;
&lt;td&gt;dak_at_gnu.org&lt;/td&gt;
&lt;td colspan=&quot;4&quot;&gt;segfault in tablature-negative-fret.ly&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1975&lt;/td&gt;
&lt;td&gt;Oct/18/2011&lt;/td&gt;
&lt;td&gt;mtsolo&lt;/td&gt;
&lt;td colspan=&quot;7&quot;&gt;VerticalAxisGroup staff-staff-spacing gets insane spring distances&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1971&lt;/td&gt;
&lt;td&gt;Oct/16/2011&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td colspan=&quot;4&quot;&gt;Slashed flags no longer work&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1968&lt;/td&gt;
&lt;td&gt;Oct/15/2011&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td colspan=&quot;3&quot;&gt;test full GUB rebuild&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1967&lt;/td&gt;
&lt;td&gt;Oct/15/2011&lt;/td&gt;
&lt;td&gt;dak_at_gnu.org&lt;/td&gt;
&lt;td colspan=&quot;9&quot;&gt;Concurrent slurs that start and end at the same moment should not produce a warning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1966&lt;/td&gt;
&lt;td&gt;Oct/15/2011&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td colspan=&quot;5&quot;&gt;win7 environment variable penetration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1948&lt;/td&gt;
&lt;td&gt;Sep/30/2011&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td colspan=&quot;5&quot;&gt;Windows install clobbered system PATH&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1943&lt;/td&gt;
&lt;td&gt;Sep/28/2011&lt;/td&gt;
&lt;td&gt;mtsolo&lt;/td&gt;
&lt;td colspan=&quot;5&quot;&gt;lilypond after 2.15.8 fails on x86 Macs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1933&lt;/td&gt;
&lt;td&gt;Sep/25/2011&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td colspan=&quot;6&quot;&gt;Lilypond-book subprocess doesn't work on mingw&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1929&lt;/td&gt;
&lt;td&gt;Sep/25/2011&lt;/td&gt;
&lt;td&gt;mtsolo&lt;/td&gt;
&lt;td colspan=&quot;4&quot;&gt;stem-tremolo-position.ly broken&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1926&lt;/td&gt;
&lt;td&gt;Sep/24/2011&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td colspan=&quot;4&quot;&gt;2.15.12 processing speed problems&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1919&lt;/td&gt;
&lt;td&gt;Sep/23/2011&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td colspan=&quot;4&quot;&gt;lilypond 2.15.12 fails on darwin-ppc&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1903&lt;/td&gt;
&lt;td&gt;Sep/18/2011&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td colspan=&quot;6&quot;&gt;Page breaking does not work between different scores&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1896&lt;/td&gt;
&lt;td&gt;Sep/17/2011&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td colspan=&quot;3&quot;&gt;lost instrument names&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1892&lt;/td&gt;
&lt;td&gt;Sep/16/2011&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td colspan=&quot;4&quot;&gt;lilypond.org can't build website&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1881&lt;/td&gt;
&lt;td&gt;Sep/11/2011&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td colspan=&quot;6&quot;&gt;Multiple cyclic dependency errors for Beam/Stem&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1858&lt;/td&gt;
&lt;td&gt;Aug/31/2011&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td colspan=&quot;5&quot;&gt;unexplained increase in profile reports&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1856&lt;/td&gt;
&lt;td&gt;Aug/31/2011&lt;/td&gt;
&lt;td&gt;k-ohara5a5a_at_oco.net&lt;/td&gt;
&lt;td colspan=&quot;4&quot;&gt;lots of extra space at beginning of bar&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1832&lt;/td&gt;
&lt;td&gt;Aug/23/2011&lt;/td&gt;
&lt;td&gt;reinhold.kainhofer&lt;/td&gt;
&lt;td colspan=&quot;2&quot;&gt;make doc broken&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1831&lt;/td&gt;
&lt;td&gt;Aug/23/2011&lt;/td&gt;
&lt;td&gt;v.villenave&lt;/td&gt;
&lt;td colspan=&quot;3&quot;&gt;no server for lilydev&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1827&lt;/td&gt;
&lt;td&gt;Aug/20/2011&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td colspan=&quot;5&quot;&gt;GUB failure for darwin-x86::cross/gcc target&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1821&lt;/td&gt;
&lt;td&gt;Aug/15/2011&lt;/td&gt;
&lt;td&gt;reinhold.kainhofer&lt;/td&gt;
&lt;td colspan=&quot;3&quot;&gt;GUB argument list too long&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1491&lt;/td&gt;
&lt;td&gt;Jan/25/2011&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td colspan=&quot;7&quot;&gt;git-cl hangs when uploading patches due to bad mime-type&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/center&gt;
&lt;p&gt;While there _are_ some changes wich did not make sense to postpone (&lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=2240&quot; class='spip_out' rel='external'&gt;2240&lt;/a&gt; was one of those, and it has been responsible for several followup
regressions), most critical issues nowadays are due to discovered
regressions. Our release criteria require a two-week dormant phase in
which no critical regressions are being discovered, where a _critical_
regression is defined as something that has worked already in either
2.14 or 2.12.&lt;/p&gt; &lt;p&gt;Other holdups have been the lack of support for MacOSX (that has
actually caused quite a bit of delay until we found people willing to
invest the work required for calling MacOSX a supported platform). A
number of the regressions have been caused by developments of invasive nature: while the number of commits during the 2.14 development phase is not yet half that of those while 2.12 has been current, there have been lots of larger-scale projects.&lt;/p&gt; &lt;p&gt;2.14.0 has been tagged for release on June 5th 2011, about 11 months
ago. 2.12.0, in contrast, was created on December 22nd 2008, 2.5 years earlier. So while the density of commits has slightly picked up in
2.14, we also have the situation that so many important changes have
been created in that time that a new stable release is rather desirable.&lt;/p&gt; &lt;p&gt;So even while several developers have, for health or other reasons,
mostly withdrawn from active development, development itself is still
going forward. In fact, there were times when the limited human
resources available for working on our development infrastructures were affecting the development to a degree where work morale and atmosphere were suffering.&lt;/p&gt; &lt;p&gt;But even while the quality assurance department is still not exactly
overstaffed (volunteers &lt;a href=&quot;http://lilypond.org/doc/latest/Documentation/contributor-big-page#help-us&quot; class='spip_out' rel='external'&gt;welcome&lt;/a&gt;), we are currently in reasonably good shape.&lt;/p&gt; &lt;p&gt;However, both the depth as well as the breadth of the development that
is happening make it less likely that the two-week window for not
discovering new regressions will pass without occurrences. Discussions
about changes to the release processes are slated to &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2012-05/msg00213.html&quot; class='spip_out' rel='external'&gt;reopen&lt;/a&gt; in summer. Hopefully by that time we will not be under the pressure of still having to release 2.16.&lt;/p&gt; &lt;p&gt;Regressions, once discovered, tend to be fixed rather speedily. The
above table does not show this, but the average life time of a newly
discovered bug, in particular of critical nature, tends to be remarkably
short.&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;investor_s_report&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Investor's report&lt;/h3&gt;
&lt;p&gt;(&lt;i&gt;by &lt;a href=&quot;http://news.lilynet.net/?_David-Kastrup_&quot; class='spip_in'&gt;David Kastrup&lt;/a&gt;&lt;/i&gt;)&lt;/p&gt; &lt;p&gt;So here are the operating results for my work on LilyPond in April,
the second month where my work on LilyPond has been enabled by
LilyPond users pitching in after my &lt;a href=&quot;http://news.lilynet.net/?The-LilyPond-Report-24#an_urgent_request_for_funding&quot; class='spip_in'&gt;request for funding&lt;/a&gt; in February::&lt;/p&gt; &lt;table class=&quot;spip&quot;&gt;
&lt;thead&gt;&lt;tr class='row_first'&gt;&lt;th scope='col'&gt;Onetime payments (&#8364;)&lt;/th&gt;&lt;th scope='col'&gt;Payment plans (&#8364;)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class='row_even'&gt;
&lt;td&gt;2&#215;100&lt;br&gt;80&lt;br&gt;50&lt;br&gt;2&#215;25&lt;br&gt;22&lt;br&gt;19&lt;br&gt;10&lt;/td&gt;
&lt;td&gt;100&lt;br&gt;25+50&lt;br&gt;3&#215;25&lt;br&gt;4&#215;10&lt;br&gt;4&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd'&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;:431&lt;/td&gt;
&lt;td&gt; &lt;strong&gt;Total&lt;/strong&gt;: 290&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even'&gt;
&lt;td colspan='2'&gt;&lt;center&gt;&lt;strong&gt;Totals&lt;/strong&gt;: &#8364;721&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The projections for next month are currently &#8364;290. There are some
ameliorating circumstances for this month: I have been offered &#8364;200 if
I write a proper bill in Germany for that, but I am currently checking
my financial status with financial administration to make sure that I
can make use of a regulation foregoing sales tax (this makes no net
difference for corporate customers, but private `customers' can't
reclaim sales tax, so it would be a nuisance if I had to actually cash
and divert sales tax: it is already noticeable that about 5%
evaporates through PayPal, and sales tax is about 4&#160;times that).
There has also been a payment of &#8364;200 from a supporter I had figured
in for a monthly payment of &#8364;100, and I have counted this for next
month until I hear otherwise. So one way or another, April has good
chances to meet the minimal target of &#8364;800 yet that I need for
treading water financially.&lt;/p&gt; &lt;p&gt;While one-time payments have declined somewhat, some more people
pitched in with monthly payments for several months (3&#160;to 12 months).
A surprisingly large ratio of one or more-time contributors have not
committed to regular plans because they don't feel that their own
financial/job situation allows them to plan ahead that far. I was
reminded of Steinbeck's ``Grapes of Wrath'' where Ma Joad, after
getting credit in a store from a clerk rather than the store, says
&quot;`I'm learnin' one thing good,' she said. `Learnin' it all a time,
ever' day. If you're in trouble or hurt or need&#8212; go to poor
people. They're the only ones that'll help&#8212; the only ones.'&quot; Of
course, the analogy is not all that fitting since I am appealing to
those who &lt;i&gt;have&lt;/i&gt; a fortune, namely that of being able to feel
excited about a project like LilyPond.&lt;/p&gt; &lt;p&gt;Now what has been accomplished? It turns out that April has been
slow not just for me as&lt;/p&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;git shortlog -n --since &quot;1 month ago&quot;&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;
shows. There is probably some exhaustion involved as we are
&lt;i&gt;still&lt;/i&gt; gearing up for the release of 2.16 which has seen a
stream of last-minute regressions being discovered on the brink of
release. But while in line with a general decrease of activities, the
list of changes checked in and projects tackled by me still appears
embarrassingly small compared to that of last month.&lt;/p&gt; &lt;p&gt;Now like last month, I have been alone in running the regression
testing most of the month despite of my comparatively slow setup
(James has just now taken over, a development I am not altogether
happy with since he already does a lot of grunt work). But while
taking a week off for my yearly Easter climbing trip did not help, the
trouble actually started before that and is still on:&lt;/p&gt; &lt;p&gt;I was trying to tackle a task involving adding new event types to
LilyPond, and I figured out that the current sketchy support for this
in LilyPond was broken by concept. So I had to redesign the way event
classes are supported in order to stop the existing code example and
interface from doing the equivalent of modifying constants. I had to
move things like the event class hierarchy into dynamic, per-context
data structures, and while it was workable, it was not really a pretty
fit. And when things are not pretty and I don't like what I have to
program, I get slow and ineffective because I spend more time brooding
than coding.&lt;/p&gt; &lt;p&gt;You can find most of the accomplished work in the bug tracker
connected with
&lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=2449&quot; class='spip_out' rel='external'&gt;issue 2449&lt;/a&gt;
what I arrived here fits with LilyPond's architecture logically (and
doing so already ironed out a number of user interface aggravations in
connection with fingering indications and string numbers and closed a
few long-standing bugs) but while what I have been doing does no
longer clash with the current architecture of LilyPond, fitting it as
a sort of in-between between LilyPond's grob properties and context
properties did not feel good, and an incommensurate amount of brooding and scribbling and bothered sleep was spent on what amounts to a comparatively small amount of actual code.&lt;/p&gt; &lt;p&gt;As a result, I am now working on
&lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=2507&quot; class='spip_out' rel='external'&gt;issue 2507&lt;/a&gt;
(and am in the design phase, so again there is little visible output
yet) in order to tie context and and user-settable grob properties
(which are implemented as an incompatible special case of context
properties) into a coherent and user-extensible logical whole, and
then fit user-extensible events and grobs and similar entities into
that whole.&lt;/p&gt; &lt;p&gt;I can't really think of immediately visible end user visible benefits.
But things should get quite more logical for people willing to program
extensions for LilyPond, and it will be good to be able to simplify
and streamline the documentation sections concerning grob and context properties when I am done, and get rid of a lot of handwaving in the process.&lt;/p&gt; &lt;p&gt;One consequence should be that&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;\set SomeProperty = value \unset SomeProperty&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;becomes equivalent to&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;\override SomeProperty #'() = value \revert SomeProperty #'()&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;namely let the grob property changing commands (overrides) become
equivalent to alist changes of a context property. While the
implementation of grob and general context properties at the current
point of time &lt;i&gt;is&lt;/i&gt; somewhat shared, it is in such a half-baked
manner that crashes will ensue if you try interchanging them.&lt;/p&gt; &lt;p&gt;Having a single coherent model for structured per-context data will
make it much easier to design and work with extensions, and a redesign
of this area will address several long-standing bugs in connection
with nested grob properties.&lt;/p&gt; &lt;p&gt;The actual task I set out to do originally (implementing a way to
typeset multiple marks at the same place, still pending) is still not
finished because of my dislike of having to pick an ugly way for
implementing it, and because I am now redoing the landscape in order
to make for a nicer path.&lt;/p&gt; &lt;p&gt;And while I feel bad about the sluggish progress I am making right
now, this is actually about redesigning fundamental parts of LilyPond
that have been taken for granted (or beyond improvement?) for very
long and that nobody else feels like touching. And it will not just
benefit the particular extension I had set out to do but make a number
of things, not just for me, more straightforward.&lt;/p&gt; &lt;p&gt;This sort of ``too much, too late'' effect where I take far too long
for doing far more than planned is &lt;i&gt;why&lt;/i&gt; task-independent funding makes good use of my skills and `programmer personality': while it is certainly nice when I manage to tackle a lot of small and medium-size things (like in March) that would take quite longer without my involvement, tackling a few big roadblocks that would not be moved at all otherwise is also important.&lt;/p&gt; &lt;p&gt;What are the outlooks for May? Partly due to the recent slow rate of
change, I consider it likely that we'll manage to release version 2.16
after all. It is high time for getting a lot of improvements into
everybody's hands in the form of a stable release. Adapting LilyPond
to using Guile&#160;2.0 has not moved forward in April, and this issue of
compatibility and forward-going is likely the next topic of general
interest after LilyPond 2.16 has been released.&lt;/p&gt; &lt;p&gt;With regard to contributors, actually not just for my own finances but
for the various workloads of the whole project: I'd like to see the
load distributed over more shoulders. Maybe it is to be expected that
most of the large contributions come from people who can be seen to
have a large piece of their heart in the project. But I am sure that
there are many users for which LilyPond is useful and for which some
progress is a little important to them, and if those would decide to
contribute regularly a little, both in the project itself as well as
supporting my ability to continue focusing on it fully, I think this
could make quite a difference.&lt;/p&gt; &lt;p&gt;My thanks to all those who contributed to LilyPond in April in either
manner, and those who continue doing so.
&lt;br /&gt;&lt;i&gt;David Kastrup&lt;/i&gt;.&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;compiler_adventures_episode_1&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Compiler adventures, episode 1&lt;/h3&gt;
&lt;p&gt;(&lt;i&gt;by &lt;a href=&quot;http://news.lilynet.net/?_David-Kastrup_&quot; class='spip_in'&gt;David Kastrup&lt;/a&gt;&lt;/i&gt;)&lt;/p&gt; &lt;p&gt;With the release of Ubuntu 11.10, the regtest suite stopped working
when compiling an optimized version of LilyPond. The &lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=1997&quot; class='spip_out' rel='external'&gt;initial report&lt;/a&gt; was in October. The test in question, tablature-negative-fret.ly, displayed a warning &quot;&lt;code class='spip_code' dir='ltr'&gt;Requested string for pitch requires negative fret: string 1 pitch #&lt;Pitch c' &gt;&lt;/code&gt;&quot; (quite as intended) and then crashed with a segmentation fault. So naturally the first suspect was that it did not properly deal with the condition that the warning was about.&lt;/p&gt; &lt;dl class='spip_document_507 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;a href=&quot;http://news.lilynet.net/IMG/bin/segfault.bin&quot; title='Binary Data - 6.2 kb' type=&quot;application/octet-stream&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L52xH52/bin-29558.png' width='52' height='52' alt='Binary Data - 6.2 kb' style='height:52px;width:52px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-507 spip_doc_titre' style='width:120px;'&gt;&lt;strong&gt;segfault backtrace&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;The backtrace started with&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;#0 Grob::internal_set_property (this=0x1a, sym=0xb607cb90, v=0x1a)&lt;br /&gt; at /home/gperciva/src/lilypond/lily/grob-property.cc:112&lt;br /&gt; #1 0x082c0c0b in Engraver_dispatch_list::apply (this=0x85d08e8, gi=...)&lt;br /&gt; at /home/gperciva/src/lilypond/lily/translator-dispatch-list.cc:35&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Which was kind of a bummer: while it was obvious that
&lt;code class='spip_code' dir='ltr'&gt;Grob::internal_set_property&lt;/code&gt; was being called with an invalid value for &quot;this&quot;, the displayed caller, &lt;code class='spip_code' dir='ltr'&gt;Engraver_dispatch_list::apply&lt;/code&gt;, did
not actually contain a call to this property. The function in its
entirety looks like&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;void&lt;br /&gt; Engraver_dispatch_list::apply (Grob_info gi)&lt;br /&gt; {&lt;br /&gt; Translator *origin = gi.origin_translator ();&lt;br /&gt; for (vsize i = 0; i &lt; dispatch_entries_.size (); i++)&lt;br /&gt; {&lt;br /&gt; Engraver_dispatch_entry const &amp;e (dispatch_entries_[i]);&lt;br /&gt; if (e.engraver_ == origin)&lt;br /&gt; continue;&lt;br /&gt; &lt;br /&gt; (*e.function_) (e.engraver_, gi);&lt;br /&gt; }&lt;br /&gt; }&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;So the problem apparently was with the function called via the
function pointer &quot;e.function_&quot;. Unfortunately, both e and gi had been
optimized out and were not available for debugging at the point where
the problem occured. To add insult to injury, &quot;dispatch_entries_&quot; is
a C++ vector, and asking the debugger to display any member of it
resulted in the debugger complaining that &quot;operator []&quot; was not
available for calling: all of its occurences in the code had been
compiled right into its surroundings, and the compiler had not kept a
separate copy around for the sake of calling from the debugger.&lt;/p&gt; &lt;p&gt;Now this is not the end of the world: the compiler we use, &lt;a href=&quot;http://gcc.gnu.org/&quot; class='spip_out' rel='external'&gt;GCC&lt;/a&gt;, has a gazillion options for
about every conceivable purpose, and indeed there is one for keeping a
copy of inlined functions for the sake of debugging or whatever else:&lt;/p&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;p&gt;
&lt;code class='spip_code' dir='ltr'&gt;-fkeep-inline-functions&lt;/code&gt;
&lt;br /&gt;In C, emit `static' functions that are declared `inline' into the
&lt;br /&gt;object file, even if the function has been inlined into all of its
&lt;br /&gt;callers. This switch does not affect functions using the `extern
&lt;br /&gt;inline' extension in GNU C90. In C++, emit any and all inline
&lt;br /&gt;functions into the object file.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
To my dismay, the crash disappeared (to date, I don't see a good
reason for this). So while debugging became somewhat more feasible,
there was no bug left to analyze!&lt;/p&gt; &lt;p&gt;After running the problem through &lt;a href=&quot;http://valgrind.org/&quot; class='spip_out' rel='external'&gt;Valgrind&lt;/a&gt;, a memory analyzer, we had a lot of inconclusive data. The memory analysis was reasonable: most bugs of that kind tend to be caused by Guile's garbage collector reusing memory locations that were still being used for a different purpose, with the most likely reason being a programmer forgetting to properly protect it while it was still needed.&lt;/p&gt; &lt;p&gt;About a month later, I boiled this down to a minimal example still
crashing. It still looked like an unitialized variable handling error
by a programmer at first.&lt;/p&gt; &lt;p&gt;I finally got a handle on the problem while trying various things with
the debugger &lt;a href=&quot;http://www.gnu.org/software/gdb/&quot; class='spip_out' rel='external'&gt;gdb&lt;/a&gt;: I noticed that it did not just have a command for
executing a program step by step, but that there was a way to step
_backwards_. One needed to use a few special commands (basically,
something like &quot;set target record&quot;), and then gdb would, while eating
lots of time and memory, record a history of states. Stepping
backwards from the crash, I finally discovered that the actual
function that had crashed was not even visible in the backtrace. Now
being able to step backwards, I finally got to the location where the
trouble occured, and the trouble did not make sense.&lt;/p&gt; &lt;p&gt;It crashed inside of a function that, judging from the function
arguments, was not really supposed to crash. Since I could not
pinpoint why and where stuff started going wrong, I suspected the
debugger of not telling the whole truth and switched the single-step
display to (disassembled) machine language rather than C++, to find
out the exact instruction where things went wrong.&lt;/p&gt; &lt;p&gt;And it was then that I &lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=1997#c15&quot; class='spip_out' rel='external'&gt;discovered&lt;/a&gt; that the machine language did not
quite correspond to the C++ source: the compiler had miscompiled the
C++ program.&lt;/p&gt; &lt;p&gt;You can see the further progress of work on the bug by continuing to
read the &lt;a href=&quot;http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51323&quot; class='spip_out' rel='external'&gt;bug report I reported&lt;/a&gt; the bug to GCC development and followed up with a boiled down example. The problem was picked up and handled rather fast: apparently Jakub Jelinek had worked on the particular part of the compiler anyway, and thus was able to recognize and test the bug rather fast, creating a relevant minimal test case (which demonstrated the problem in C, meaning that it affected all programming languages) on his own.&lt;/p&gt; &lt;p&gt;The bug has been fixed as of GCC-4.6.3 or 4.7.0. In contrast to this
bug which occurred under rather limited circumstances and mostly on the 32bit Intel platforms, the bug Pavel uncovered recently in GCC-4.7.0
(more on that below) occurs on all platforms, and under
quite more common circumstances in C++. I consider it way more scary.&lt;/p&gt; &lt;p&gt;Having gotten used to the idea that sometimes the computer can be
wrong, I was able to provide feedback, guesses and suggestions when
Pavel was seeing a similar kind of problem recently.&lt;/p&gt; &lt;p&gt;With experience and teamwork, the bug was handled much more thoroughly and lots faster than the one I described here, and the GCC developers were provided with decidedly better input. So while we were not lucky to have a fix in the queue already (that just needed to get accepted more speedily and backported to 4.6) this time, the bug turnaround time was still much faster and led to a fix within days. Frankly, I hope that the fix will &lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=820998&quot; class='spip_out' rel='external'&gt;get picked into&lt;/a&gt; the upcoming Fedora's compiler: I am scared by the recent one more than by the one I &lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=820751&quot; class='spip_out' rel='external'&gt;tracked down&lt;/a&gt; previously.&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;compiler_adventures_episode_2&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Compiler adventures, episode 2&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;How I made the world a better place&lt;/strong&gt;
&lt;br /&gt;(&lt;i&gt;by Pavel Roskin&lt;/i&gt;)&lt;/p&gt; &lt;p&gt;I installed Fedora 17 beta on one of my systems. I tried the version
of Lilypond that was included with the distro. It was version 2.15.29
at the time when version 2.15.37 was current.&lt;/p&gt; &lt;p&gt;Actually, I would be fine with Fedora 17 shipping Lilypond 2.14.2 until
2.16 is released. But it turned out that the maintainer had a minor
compile problem with 2.14.2 and switched to the development branch, but kept updating only versions for RawHide (the rolling unstable Fedora) leaving Fedora 17 with an old development version.&lt;/p&gt; &lt;p&gt;I tried the stock Lilypond with my Lilypond files and found that it
would give bogus barcheck errors.&lt;/p&gt; &lt;p&gt;So I checked out the latest Lilypond code from git repository. Imagine
my surprise when I got the same barcheck errors! I tried Lilypond
2.14.2 fixing the compile issue and sure enough, the barcheck errors
were still there.&lt;/p&gt; &lt;p&gt;It was clear that something was wrong with the system. I reduced the
piece to a short example. Barchecks were gone, but there was another
error message about &quot;&lt;i&gt;moving backwards in time&lt;/i&gt;&quot;. The PDF output was obviously wrong with an extra measure appearing at the end.&lt;/p&gt; &lt;p&gt;Since Fedora 17 came with a brand new version of gcc (4.7.0), the
compiler was an obvious suspect. I tried compiling with the optimisation flag &quot;&lt;code class='spip_code' dir='ltr'&gt;-O1&lt;/code&gt;&quot; instead of &quot;&lt;code class='spip_code' dir='ltr'&gt;-O2&lt;/code&gt;&quot;, and sure enough, it fixed Lilypond.&lt;/p&gt; &lt;p&gt;I posted my finding to the Lilypond mailing list and got some valuable
suggestions. But most importantly, I found that the issue is of great
interest to the developers, which was very encouraging.&lt;/p&gt; &lt;p&gt;Everything from this point was done in cooperation with Lilypond and
gcc developers and could be seen in the mailing list archives and bug
tracking systems.&lt;/p&gt; &lt;p&gt;I started looking for the miscompiled file. My initial approach was to
write a script that would compile N files with &lt;code class='spip_code' dir='ltr'&gt;-O2&lt;/code&gt; and then switch to &lt;code class='spip_code' dir='ltr'&gt;-O1&lt;/code&gt;. That approach turned out the be ineffective and slow, as I would have to recompile everything every time and I would not be able to use parallel build.&lt;/p&gt; &lt;p&gt;The approach that worked was to remove some object files, recompile
them with different flags and see if that would change the behavior.
That's how I found the problematic file, simultaneous-music-iterator.cc.&lt;/p&gt; &lt;p&gt;Then I looked for the function suffering from the gcc bug. I copied
the contents of &lt;i&gt;simultaneous-music-iterator.cc&lt;/i&gt; into another file. I
would comment some functions in the original file. The remaining
functions were commented in the other file. That way, I found the
problematic function, &lt;code class='spip_code' dir='ltr'&gt;Simultaneous_music_iterator::pending_moment()&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;The next step was to find which optimization caused the problem. The
&quot;&lt;code class='spip_code' dir='ltr'&gt;-fverbose-asm&lt;/code&gt;&quot; option to gcc reported all optimization flags enabled for compilation. I quickly found that &quot;&lt;code class='spip_code' dir='ltr'&gt;-fno-tree-vrp&lt;/code&gt;&quot; was fixing the problem. At this point, I had a working patch, so I submitted it as an issue.&lt;/p&gt; &lt;p&gt;As a result of the discussion in the Lilypond bug tracker, I actually
had to write a script and test all other optimization options that
would fix Lilypond. &quot;&lt;code class='spip_code' dir='ltr'&gt;-fno-inline&lt;/code&gt;&quot; was the only other option, but it was obviously much more intrusive than &quot;&lt;code class='spip_code' dir='ltr'&gt;-fno-tree-vrp&lt;/code&gt;&quot;.&lt;/p&gt; &lt;p&gt;David Kastrup asked me to post the assembly code so that he would look
for problems in the generated code. I posted the x86_64 code. David
asked me to post i386 code. It turned out that some i386 libraries
needed by Lilypond are not available in x86_64 Fedora. So I installed
Fedora 17 for i386 on a spare SSD.&lt;/p&gt; &lt;p&gt;But at that point David has already found the problem. The compiler
output in the broken case wasn't interested in the result of comparison
used in the &lt;code class='spip_code' dir='ltr'&gt;min()&lt;/code&gt; function.&lt;/p&gt; &lt;p&gt;I wrote a wrapper around &lt;code class='spip_code' dir='ltr'&gt;min()&lt;/code&gt; that would fix LilyPond. But it wasn't an acceptable fix. What if there other calls to &lt;code class='spip_code' dir='ltr'&gt;min()&lt;/code&gt; that gcc miscompiles? So the solution was to give the &quot;&lt;code class='spip_code' dir='ltr'&gt;-fno-tree-vrp&lt;/code&gt;&quot; flag to gcc 4.7.0 and report the bug to the GCC developers so that the next version of GCC would not have to be worked around.&lt;/p&gt; &lt;p&gt;I opened an issue in the GCC bug tracker. It had the preprocessed
version of &lt;code class='spip_code' dir='ltr'&gt;simultaneous-music-iterator.cc&lt;/code&gt; with everything but the problematic function commented out. I mentioned the findings of David Kastrup about the assemble output.&lt;/p&gt; &lt;p&gt;GCC developers reacted quickly and confirmed that it was a bug.
However, they wanted a self-contained test. LilyPond was too big to be
such a test.&lt;/p&gt; &lt;p&gt;I wrote a new &lt;code class='spip_code' dir='ltr'&gt;main()&lt;/code&gt; function that would call
&lt;code class='spip_code' dir='ltr'&gt;Simultaneous_music_iterator::pending_moment()&lt;/code&gt; with the same arguments as it would happen in LilyPond processing the problematic LilyPond file. I replaced a linked list with an array for simplicity. The result of the function would be printed on stdout.&lt;/p&gt; &lt;p&gt;It's a little embarrassing to admit that the program was printing
&quot;denominator/numerator&quot; rather that the other way around. I can only
tell in my defense that I attended school not in an English-speaking
country. Anyway, what mattered was that the output would depend on the compile flags.&lt;/p&gt; &lt;p&gt;I wrote a bash script that would compile and link the files the way how
Lilypond build system would do it. I found a small set of object files
that could be linked into a working executable after their sources were
stripped of unneeded code.&lt;/p&gt; &lt;p&gt;I was happy to see that the program output was different with &lt;code class='spip_code' dir='ltr'&gt;-O1&lt;/code&gt; and &lt;code class='spip_code' dir='ltr'&gt;-O2&lt;/code&gt; optimization. The next step was to copy the needed sources to a separate directory together with the compile script.&lt;/p&gt; &lt;p&gt;I put the new directory under &lt;i&gt;git&lt;/i&gt; control and would commit every change that would show the &quot;interesting&quot; behavior. I didn't waste any time on descriptions, I would just do&lt;/p&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;git commit -a -m &quot;simplify&quot;&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;
I made a few wrong commits, but I was able to revert them quickly.&lt;/p&gt; &lt;p&gt;I cleaned everything I could, removing files, merging them, expanding
macros and just trying to remove almost every line. Special thanks go
to astyle, a program I used to re-indent C++ code after every round
of simplification. That's how I came to a short example that I posted
to the GCC bug tracker.&lt;/p&gt; &lt;p&gt;The GCC developers made a fix quickly. It is slated to appear in gcc
4.7.1. I wrote about it in the Lilypond bug tracker, and my fix was
committed shortly.&lt;/p&gt; &lt;p&gt;It took me a lot of time, but I'm glad that Fedora 17 would have a
working version of Lilypond and GCC would be fixed too. GCC bugs are
scary. So much code is compiled with it, including the Linux kernel.
That's how I made the world a less scary place &lt;img alt=&quot;:)&quot; title=&quot;:)&quot; class=&quot;no_image_filtrer format_png&quot; src=&quot;http://news.lilynet.net/plugins/auto/couteau_suisse/img/smileys/sourire.png&quot; width=&quot;19&quot; height=&quot;19&quot;/&gt;&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;lilypond_output_analysis&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;LilyPond output analysis&lt;/h3&gt;
&lt;p&gt;(&lt;i&gt;by Janek Warcho&#322;&lt;/i&gt;)&lt;/p&gt; &lt;p&gt;Some of the readers may be familiar with my articles in the &lt;a href=&quot;http://news.lilynet.net/?The-LilyPond-Report-25&quot; class='spip_in'&gt;previous LilyPond Report&lt;/a&gt;, as well as my &lt;a href=&quot;http://code.google.com/p/lilypond/issues/list?q=label:GSoC-LyricProject&quot; class='spip_out' rel='external'&gt;multi-issue Lyrics Bug Report&lt;/a&gt;. Here I would like to present a detailed examination of an exemplary LilyPond output &#8212; the &lt;a href=&quot;http://imslp.org/wiki/File:PMLP02751-Mozart-K626ms1823pts16va.pdf&quot; class='spip_out' rel='external'&gt;viola part&lt;/a&gt; from Mozart's &lt;a href=&quot;http://en.wikipedia.org/wiki/Requiem_%28Mozart%29&quot; class='spip_out' rel='external'&gt;Requiem in d-minor&lt;/a&gt; (first two movements &#8212; Introit and Kyrie).&lt;/p&gt; &lt;p&gt;The &lt;a href=&quot;http://imslp.org/wiki/Requiem_K.626_%28Mozart,_Wolfgang_Amadeus%29&quot; class='spip_out' rel='external'&gt;International Music Score Library Project&lt;/a&gt; hosts a scan of a hand-engraved edition published by Breitkopf &amp; Hartel at the end of 19th century, that we'll use as a reference throughout this article. Will the LilyPond-made score stand up to this print made by a well-known publisher?&lt;/p&gt; &lt;dl class='spip_document_483 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;a href=&quot;http://news.lilynet.net/IMG/pdf/K626_viola_-_Breitkopf_and_Hartel.pdf&quot; title='PDF - 121.3 kb' type=&quot;application/pdf&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L52xH52/pdf-eb697.png' width='52' height='52' alt='PDF - 121.3 kb' style='height:52px;width:52px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-483 spip_doc_titre' style='width:120px;'&gt;&lt;strong&gt;K626, viola part - Breitkopf and Hartel&lt;/strong&gt;&lt;/dt&gt;
&lt;dd class='crayon document-descriptif-483 spip_doc_descriptif' style='width:120px;'&gt;(click to view in full-size)
&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;&lt;iframe src=&quot;http://docs.google.com/viewer?url=http%3A%2F%2Fnews.lilynet.net%2FIMG%2Fpdf%2FK626_viola_-_Breitkopf_and_Hartel.pdf&amp;embedded=true&quot; width=&quot;780&quot; height=&quot;780&quot; style=&quot;border: none;&quot;&gt;&lt;/iframe&gt;&lt;/p&gt; &lt;p&gt;You may notice that this score is set very, very tightly: it was common practice in 19th century to use space available on page to the maximum, aiming for scores set on as few pages as possible. In fact, judging by today's standards it's engraved way too tight; no modern publisher sets music so densely &#8212; but nevertheless Breitkopf's score remains legible.&lt;/p&gt; &lt;p&gt;Let's see what will happen when we use LilyPond to engrave this piece. We will begin our analysis with 100% default settings &#8212; just what you'd get after compiling with LilyPond version 2.15.36 (latests as of this writing) a lilypond file containing just the music that Mozart wrote, without any layout tweaks.&lt;/p&gt; &lt;p&gt;If you have a decent printer at hand i recommend printing both scores and comparing them on paper &#8212; resolution of computer screens is limited and therefore some inconsistencies in display appear (for example lines that have the same thickness appear to be different).&lt;/p&gt; &lt;p&gt;Here's what LilyPond gives us without any manual intervention:&lt;/p&gt; &lt;dl class='spip_document_484 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;a href=&quot;http://news.lilynet.net/IMG/pdf/1_K626_viola_default.pdf&quot; title='PDF - 61.5 kb' type=&quot;application/pdf&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L52xH52/pdf-eb697.png' width='52' height='52' alt='PDF - 61.5 kb' style='height:52px;width:52px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-484 spip_doc_titre' style='width:120px;'&gt;&lt;strong&gt;K626 viola - default LilyPond output&lt;/strong&gt;&lt;/dt&gt;
&lt;dd class='crayon document-descriptif-484 spip_doc_descriptif' style='width:120px;'&gt;(click to view in full-size)
&lt;/dd&gt;
&lt;/dl&gt;
&lt;center&gt;&lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_replie blocs_click'&gt;&lt;a href='javascript:;'&gt;[click here to see it in an embedded viewer]&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination blocs_invisible blocs_slide'&gt;
&lt;p&gt;&lt;iframe src=&quot;http://docs.google.com/viewer?url=http%3A%2F%2Fnews.lilynet.net%2FIMG%2Fpdf%2F1_K626_viola_default.pdf&amp;embedded=true&quot; width=&quot;780&quot; height=&quot;780&quot; style=&quot;border: none;&quot;&gt;&lt;/iframe&gt;&lt;/p&gt; &lt;/div&gt;&lt;/div&gt;&lt;/center&gt;
&lt;center&gt;&lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_replie blocs_click'&gt;&lt;a href='javascript:;'&gt;click here to see the source code
&lt;dl class='spip_document_486 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;a href=&quot;http://news.lilynet.net/IMG/zip/1_K626_viola_default.ly.zip&quot; title='Zip - 1.3 kb' type=&quot;application/zip&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L52xH52/zip-2bcd4.png' width='52' height='52' alt='Zip - 1.3 kb' style='height:52px;width:52px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;/dl&gt;&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination blocs_invisible blocs_slide'&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;\version &quot;2.15.33&quot;&lt;br /&gt; \pointAndClickOff&lt;br /&gt; &lt;br /&gt; \header {&lt;br /&gt; title = &quot;Requiem d-minor K626&quot;&lt;br /&gt; subtitle = &quot;I. Introit et Kyrie&quot;&lt;br /&gt; composer = &quot;W. A. Mozart&quot;&lt;br /&gt; instrument = &quot;Viola&quot;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; \score {&lt;br /&gt; \relative c {&lt;br /&gt; \key d \minor&lt;br /&gt; \tempo Adagio&lt;br /&gt; \time 4/4&lt;br /&gt; \clef C&lt;br /&gt; &lt;br /&gt; r8 f-.\p r a-. r g-. r bes-.&lt;br /&gt; r8 a-. r a-. r a-. r b-.&lt;br /&gt; r8 c r d r c r d&lt;br /&gt; r8 d r a r a r b&lt;br /&gt; r8 f' r f r e r a&lt;br /&gt; r8 f r f r e r d&lt;br /&gt; r8 c r g'\f r f r e&lt;br /&gt; \mark \default&lt;br /&gt; r8 d r d r d r cis&lt;br /&gt; d8 r e r f r e r&lt;br /&gt; d8 r e r f e d g&lt;br /&gt; c,4 d g, c&lt;br /&gt; f4 bes8 a g f16 e a8 g&lt;br /&gt; f8 e d cis d4 c&lt;br /&gt; bes4 bes' a8 r g r&lt;br /&gt; \mark \default&lt;br /&gt; f4 r r16 f( a) f-. c-. f-. a,-. c-.&lt;br /&gt; f,4 r r16 f'( a) f-. c-. f-. a,-. c-.&lt;br /&gt; es8 r d r r c'\p r bes&lt;br /&gt; r8 g, r g r bes r a&lt;br /&gt; bes8 bes r bes r c r c&lt;br /&gt; bes4 a bes8( g es f)&lt;br /&gt; bes4 r r8 d~ ( d16 es d c)&lt;br /&gt; bes16( a g f) es4 f r8 f'~(&lt;br /&gt; f16 g f es) d( es d c) bes ( c' bes a g a g f)&lt;br /&gt; e!4( f) r2&lt;br /&gt; r8 d~ ( d16 es d c bes a bes c) d4~&lt;br /&gt; \mark \default&lt;br /&gt; d4 r16. bes32 \f g'16. es32 f4 r16. a32 c16. a32&lt;br /&gt; f4 r16. d32 f16. d32 a'4 r16. fis32 a16. fis32&lt;br /&gt; bes4 r16. bes,32 d16. bes32 es8 f4 es8&lt;br /&gt; d4 r16. d32 f16. d32 bes4 r16. bes32 d16. bes32&lt;br /&gt; g4 r16. g'32 bes16. g32 g,4 r16. es'32 g,16. g'32&lt;br /&gt; fis8[ r16. fis32] e!8[ r16. e32] d8 d d d&lt;br /&gt; g,8 g\p r bes r a r a&lt;br /&gt; g4( fis) g8( es c d)&lt;br /&gt; \mark \default&lt;br /&gt; g8 r bes\f r a r a r&lt;br /&gt; d8 r e! r f! r d r&lt;br /&gt; e,8 r e r a4 b&lt;br /&gt; c4 d~d8 d4 d8~&lt;br /&gt; d8 d~( d16 es d c ) bes ( d c bes) a( c bes a)&lt;br /&gt; g8.( a16) bes( a) g( bes) a( g) f( g) a( g) a( f)&lt;br /&gt; c'8 c, c'2 e4&lt;br /&gt; f4 a,8 a a4 cis&lt;br /&gt; d4 f,8 f f4 a&lt;br /&gt; \mark \default&lt;br /&gt; bes4 r r16 bes'( d) bes-. f-. d-. bes-. d-.&lt;br /&gt; a4 r r16 d'( f) d-. a-. f-. d-. f-.&lt;br /&gt; gis,8 b' b b b b b b&lt;br /&gt; a8 a, r cis \p d4 e&lt;br /&gt; d4 a f( e8 d)&lt;br /&gt; a'2 a\fermata&lt;br /&gt; \bar &quot;||&quot; \tempo Allegro \time 4/4 &lt;br /&gt; R1*4&lt;br /&gt; r2 r8 b\f b b&lt;br /&gt; c16 d c b c d b c d e d c d e c d&lt;br /&gt; e8 f16 e d c b a gis8 b e d&lt;br /&gt; \mark \default&lt;br /&gt; c8 cis d e a, d, g! f&lt;br /&gt; e8 g bes4 a r&lt;br /&gt; R1&lt;br /&gt; r2 d4. d8&lt;br /&gt; c4 f gis,4. gis8&lt;br /&gt; \mark \default&lt;br /&gt; a4 r8 a b4. a16 b&lt;br /&gt; c8 b16 c d8 c16 d e8 d c b&lt;br /&gt; a16( b c4) cis8 d d, e fis&lt;br /&gt; g16( a bes4) b8 c! bes a g&lt;br /&gt; a16 f g a bes g a bes c8 g c4~&lt;br /&gt; c8 bes16 a bes c a bes g8 a16 bes c4&lt;br /&gt; R1&lt;br /&gt; \mark \default&lt;br /&gt; d4. d8 bes4 es&lt;br /&gt; fis,4. fis8 g4 r8 g&lt;br /&gt; a4. g16 a bes8 a16 bes c8 bes16 c&lt;br /&gt; d8 c bes a g f' es b&lt;br /&gt; c8 g' f16 es d c d c b a g as f g&lt;br /&gt; \mark \default&lt;br /&gt; es8 c as'4. f8 bes4~&lt;br /&gt; bes4 as g8 a16 b c8 d&lt;br /&gt; es16 ( d c bes a8) bes4 a8( bes c)&lt;br /&gt; d4 r r8 f, f f&lt;br /&gt; g16 a g f g a f g a bes a g a bes g a&lt;br /&gt; bes4 r r8 c c c&lt;br /&gt; \mark \default&lt;br /&gt; d16 es d c d es c d es f es d es f d es&lt;br /&gt; f8 d e! f g4 f8 e&lt;br /&gt; f8 f, bes g c4 r&lt;br /&gt; r2 r8 g g g&lt;br /&gt; as16 bes as g a bes g a bes c bes a b c a b&lt;br /&gt; \mark \default&lt;br /&gt; c8 g c( bes!) a d, d'( c)&lt;br /&gt; bes4 r r8 g g a&lt;br /&gt; a4 a8. a16 b4 b8. b16&lt;br /&gt; cis8 a( b cis) d4. d8&lt;br /&gt; \mark \default&lt;br /&gt; e4 a,4. f8 bes4~&lt;br /&gt; bes8 g e' e d cis16 d e f g f&lt;br /&gt; e8 d cis8. d16 e4 a,8 cis&lt;br /&gt; d8( f e d) e a,( b cis)&lt;br /&gt; d8 d,( g e) a( bes! a g)&lt;br /&gt; \mark \default&lt;br /&gt; f8 d g( f) e c a' a&lt;br /&gt; f4 d' g, r&lt;br /&gt; r8 a d( c) b b e( d)&lt;br /&gt; c4 d8. d16 d4 e8. e16&lt;br /&gt; e4 d8( f) e4. e8&lt;br /&gt; f2 r4\fermata \tempo Adagio f8. f16&lt;br /&gt; e4 f2 e4&lt;br /&gt; d1 \bar &quot;|.&quot;&lt;br /&gt; }&lt;br /&gt; \layout { }&lt;br /&gt; }&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/center&gt;
&lt;p&gt;We instantly recognize that LilyPond decided to set the music much more loosely: the original fits one page (15 systems), while Lily's version is 1,5 pages long (21 systems). I personally find it a bit too &quot;airy&quot;. While you don't have to agree with my opinion on this matter, my goal in engraving this piece was specifically to demonstrate that LilyPond can produce music set as tightly as the Breitkopf edition (one of the violists in our orchestra said that she much prefers tightly set scores). Also, sometimes there is no other choice than to set music tightly - for example when optimal page breaking requires putting a lot of music on one page, or when measures are so long and full of notes that they simply need serious squeezing to fit on the page at all.&lt;/p&gt; &lt;p&gt;Thus, let's change the overall horizontal spacing to see how Lily will handle it. Some of the problems in engravings below will appear exactly because of this decision, but generally condensing the music doesn't change much in program's behaviour &#8212; most things you can also find in the uncondensed version.&lt;/p&gt; &lt;p&gt;To change horizontal spacing, I use the method mentioned in the manuals:
&lt;br /&gt;&lt;code class='spip_code' dir='ltr'&gt;\override Score.SpacingSpanner #'common-shortest-duration = #(ly:make-moment 1 4 )&lt;/code&gt;
&lt;br /&gt;Here are the results:&lt;/p&gt; &lt;dl class='spip_document_488 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;a href=&quot;http://news.lilynet.net/IMG/pdf/2_K626_viola_override_common_shortest_duration.pdf&quot; title='PDF - 60.8 kb' type=&quot;application/pdf&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L52xH52/pdf-eb697.png' width='52' height='52' alt='PDF - 60.8 kb' style='height:52px;width:52px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;center&gt;&lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_replie blocs_click'&gt;&lt;a href='javascript:;'&gt;[embedded viewer]&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination blocs_invisible blocs_slide'&gt;
&lt;p&gt;&lt;iframe src=&quot;http://docs.google.com/viewer?url=http%3A%2F%2Fnews.lilynet.net%2FIMG%2Fpdf%2F2_K626_viola_override_common_shortest_duration.pdf&amp;embedded=true&quot; width=&quot;780&quot; height=&quot;780&quot; style=&quot;border: none;&quot;&gt;&lt;/iframe&gt;&lt;/p&gt; &lt;/div&gt;&lt;/div&gt;&lt;/center&gt;
&lt;p&gt;That's definitely tighter than the default output &#8212; I quite like it! However, have a look at letter &lt;code class='spip_code' dir='ltr'&gt;E&lt;/code&gt;, measures &lt;code class='spip_code' dir='ltr'&gt;49-52&lt;/code&gt; (after the tempo change): these are four measures, each filled with rests. What for? That's a waste of space; they should be typeset as a &lt;i&gt;MultiMeasure&lt;/i&gt; rest. Of course, it's easy to add a &lt;code class='spip_code' dir='ltr'&gt;\compressFullBarRests&lt;/code&gt; command, but I don't quite get the point why this isn't the default behavior. I don't recall any score in which the rests weren't compressed...&lt;/p&gt; &lt;p&gt;Going back to the horizontal spacing: the result is now nicer, but still not as tight as the Breitkopf engraving. Let's try more:
&lt;br /&gt;&lt;code class='spip_code' dir='ltr'&gt;\override Score.SpacingSpanner #'common-shortest-duration = #(ly:make-moment 1 1 )&lt;/code&gt;&lt;/p&gt; &lt;dl class='spip_document_489 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;a href=&quot;http://news.lilynet.net/IMG/pdf/3_K626_viola_try_squeezing_more.pdf&quot; title='PDF - 61 kb' type=&quot;application/pdf&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L52xH52/pdf-eb697.png' width='52' height='52' alt='PDF - 61 kb' style='height:52px;width:52px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;center&gt;&lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_replie blocs_click'&gt;&lt;a href='javascript:;'&gt;[embedded viewer]&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination blocs_invisible blocs_slide'&gt;
&lt;p&gt;&lt;iframe src=&quot;http://docs.google.com/viewer?url=http%3A%2F%2Fnews.lilynet.net%2FIMG%2Fpdf%2F3_K626_viola_try_squeezing_more.pdf&amp;embedded=true&quot; width=&quot;780&quot; height=&quot;780&quot; style=&quot;border: none;&quot;&gt;&lt;/iframe&gt;&lt;/p&gt; &lt;/div&gt;&lt;/div&gt;&lt;/center&gt;
&lt;p&gt;What's that? Nothing changed... or did it?&lt;/p&gt; &lt;p&gt;Yes, there are changes, but not for the best at all &#8212; the spacing went all weird, see the markings here:&lt;/p&gt; &lt;dl class='spip_document_490 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;a href=&quot;http://news.lilynet.net/IMG/pdf/3_K626_viola_try_squeezing_more_-_marked.pdf&quot; title='PDF - 85.8 kb' type=&quot;application/pdf&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L52xH52/pdf-eb697.png' width='52' height='52' alt='PDF - 85.8 kb' style='height:52px;width:52px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;center&gt;&lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_replie blocs_click'&gt;&lt;a href='javascript:;'&gt;[embedded viewer]&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination blocs_invisible blocs_slide'&gt;
&lt;p&gt;&lt;iframe src=&quot;http://docs.google.com/viewer?url=http%3A%2F%2Fnews.lilynet.net%2FIMG%2Fpdf%2F3_K626_viola_try_squeezing_more_-_marked.pdf&amp;embedded=true&quot; width=&quot;780&quot; height=&quot;780&quot; style=&quot;border: none;&quot;&gt;&lt;/iframe&gt;&lt;/p&gt; &lt;/div&gt;&lt;/div&gt;&lt;/center&gt;
&lt;p&gt;(I suggest you to do an Alt-Tab comparison, i.e. open both files in full size and switch between the windows (or browser tabs) using Alt-Tab or whatever shortcut your operating system uses)&lt;/p&gt; &lt;p&gt;I find this behavior very strange, not only because it results in a clearly ugly spacing, but also because obviously there is still a lot of whitespace left between the notes, so it *should be possible* to actually do some shrinking. For example, 16ths are separated with about 0.5 staffspace, while in hand-engraved scores it is not uncommon for short notes to almost touch each other. Consider the fourth system: there are twenty-four 16th notes in it. Reducing the space between them to 0.1 staffspace &#8212; that's close, but still legible &#8212; would be enough to add another measure to that system (without changing anything about longer notes' spacing)! The situation is very similar in systems 10 and 14.&lt;/p&gt; &lt;p&gt;Ok, so how to achieve spacing as tight as in Breitkopf edition? I've tried forcing the number of systems, but this resulted in music overflowing the page in the last system. Finally i managed to do this by reducing font size to 18 and forcing page-count to 1, but it's not exactly what i was looking for.&lt;/p&gt; &lt;dl class='spip_document_491 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;a href=&quot;http://news.lilynet.net/IMG/pdf/4_K626_viola_one_page_smaller_font_.pdf&quot; title='PDF - 64.4 kb' type=&quot;application/pdf&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L52xH52/pdf-eb697.png' width='52' height='52' alt='PDF - 64.4 kb' style='height:52px;width:52px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;center&gt;&lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_replie blocs_click'&gt;&lt;a href='javascript:;'&gt;[embedded viewer]&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination blocs_invisible blocs_slide'&gt;
&lt;p&gt;&lt;iframe src=&quot;http://docs.google.com/viewer?url=http%3A%2F%2Fnews.lilynet.net%2FIMG%2Fpdf%2F4_K626_viola_one_page_smaller_font_.pdf&amp;embedded=true&quot; width=&quot;780&quot; height=&quot;780&quot; style=&quot;border: none;&quot;&gt;&lt;/iframe&gt;&lt;/p&gt; &lt;/div&gt;&lt;/div&gt;&lt;/center&gt;
&lt;p&gt;As you can see, this setting revealed some problems that were not instantly recognizable in the previous versions &#8212; for example the &lt;i&gt;piano&lt;/i&gt; in measure 46 and the &lt;code class='spip_code' dir='ltr'&gt;F&lt;/code&gt; rehearsal mark seemed previously okay, but here it is obvious that they stick out too much. If you look closely at the hand-engraved edition, you'll see that the &lt;code class='spip_code' dir='ltr'&gt;F&lt;/code&gt; rehearsal mark is not perfectly centered on the barline, but shifted a bit to the right, to allow placing it closer to the staffline. Dynamic stickout is greatly reduced in Breitkopf's edition by moving the dynamic horizontally &#8212; see measure 26 for an example. This isn't hard to fix in LilyPond &#8212; but it seems possible to automate such decisions.&lt;/p&gt; &lt;p&gt;Nevertheless, as I've said; the Breitkopf edition is set too tight, so let's go back to the Lily version created by overriding the common shortest duration to 1/4 &#8212; it is definitely the best. Time to examine it closely.&lt;/p&gt; &lt;dl class='spip_document_492 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;a href=&quot;http://news.lilynet.net/IMG/pdf/5_K626_viola_rests_compressed.pdf&quot; title='PDF - 60.9 kb' type=&quot;application/pdf&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L52xH52/pdf-eb697.png' width='52' height='52' alt='PDF - 60.9 kb' style='height:52px;width:52px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;center&gt;&lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_replie blocs_click'&gt;&lt;a href='javascript:;'&gt;[embedded viewer]&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination blocs_invisible blocs_slide'&gt;
&lt;p&gt;&lt;iframe src=&quot;http://docs.google.com/viewer?url=http%3A%2F%2Fnews.lilynet.net%2FIMG%2Fpdf%2F5_K626_viola_rests_compressed.pdf&amp;embedded=true&quot; width=&quot;780&quot; height=&quot;780&quot; style=&quot;border: none;&quot;&gt;&lt;/iframe&gt;&lt;/p&gt; &lt;/div&gt;&lt;/div&gt;&lt;/center&gt;
&lt;p&gt;The first thing that drew my attention was &lt;code class='spip_code' dir='ltr'&gt;bes32\f g'16. es32&lt;/code&gt; figure in measure 26: Lily output is very &quot;airy&quot; compared to the engraved version:&lt;/p&gt; &lt;p&gt;&lt;span class='spip_document_485 spip_documents spip_documents_center'&gt;
&lt;img src='http://news.lilynet.net/local/cache-vignettes/L405xH213/flat-dot_figure-13920.png' width='405' height='213' alt=&quot;&quot; style='height:213px;width:405px;' /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;That's because the distances between notes, augmentation dots and accidentals are much smaller in Breitkopf score. LilyPond's distances are quite good for &quot;normal&quot; scores, but they stay the same even when notes are placed very close to each other, leading to poor results in tight scores - see also &lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=2142&quot;&gt;issue 2142 in our tracker&lt;/a&gt; (it is about accidental spacing, but the problem is really similar in case of any other object).&lt;/p&gt; &lt;p&gt;&lt;span class='spip_document_496 spip_documents spip_documents_center'&gt;
&lt;img src='http://news.lilynet.net/local/cache-vignettes/L485xH235/accidental_padding-853bb.png' width='485' height='235' alt=&quot;&quot; style='height:235px;width:485px;' /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class='spip_document_498 spip_documents spip_documents_center'&gt;
&lt;img src='http://news.lilynet.net/local/cache-vignettes/L442xH232/dot_padding-745cf.png' width='442' height='232' alt=&quot;&quot; style='height:232px;width:442px;' /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;So, I've overriden the spacing properties of dots and accidentals to have these objects closer to notes:&lt;/p&gt; &lt;dl class='spip_document_493 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;a href=&quot;http://news.lilynet.net/IMG/pdf/6_K626_viola_tighter_accidentals_and_dots.pdf&quot; title='PDF - 61.2 kb' type=&quot;application/pdf&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L52xH52/pdf-eb697.png' width='52' height='52' alt='PDF - 61.2 kb' style='height:52px;width:52px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;center&gt;&lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_replie blocs_click'&gt;&lt;a href='javascript:;'&gt;[embedded viewer]&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination blocs_invisible blocs_slide'&gt;
&lt;p&gt;&lt;iframe src=&quot;http://docs.google.com/viewer?url=http%3A%2F%2Fnews.lilynet.net%2FIMG%2Fpdf%2F6_K626_viola_tighter_accidentals_and_dots.pdf&amp;embedded=true&quot; width=&quot;780&quot; height=&quot;780&quot; style=&quot;border: none;&quot;&gt;&lt;/iframe&gt;&lt;/p&gt; &lt;/div&gt;&lt;/div&gt;&lt;/center&gt;
&lt;p&gt;Unfortunately, this solution isn't perfect &#8212; while flats and sharps are positioned quite nicely, the naturals are definitely too close when the notes are down-stemmed:&lt;/p&gt; &lt;p&gt;&lt;span class='spip_document_501 spip_documents spip_documents_center'&gt;
&lt;img src='http://news.lilynet.net/local/cache-vignettes/L306xH214/natural_too_close-77108.png' width='306' height='214' alt=&quot;&quot; style='height:214px;width:306px;' /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;To achieve a pleasing result one would have to write a function that would apply a different right-padding depending on the type of accidental and stem direction. While that's doable, I think it would make more sense to write a &quot;true &amp; complete&quot; fix for issue 2142 to get rid of this problem once and for all.&lt;/p&gt; &lt;p&gt;Going back to note spacing, all 16th notes seem to get too much space, at least compared to longer notes: there is little difference between 8ths and 16ths in this regard, unlike in the Breitkopf score:&lt;/p&gt; &lt;p&gt;&lt;span class='spip_document_495 spip_documents spip_documents_center'&gt;
&lt;img src='http://news.lilynet.net/local/cache-vignettes/L500xH380/16ths_spacing-da2b3.png' width='500' height='380' alt=&quot;&quot; style='height:380px;width:500px;' /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;There are more issues present, marked in the pdf below. For greater clarity, only one instance of a problem is marked in color (additional places where an issue appears are marked in gray).&lt;/p&gt; &lt;p&gt;When you hover your mouse over the markings, you should see an explanation text. I know that this feature works for me when i open pdfs using Adobe Reader (for example the one bundled inside Firefox). If you don't see explanation texts, please download the pdf and try some external viewer (for example Okular).&lt;/p&gt; &lt;dl class='spip_document_494 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;a href=&quot;http://news.lilynet.net/IMG/pdf/6_K626_viola_tighter_accidentals_and_dots_-_marked.pdf&quot; title='PDF - 192.7 kb' type=&quot;application/pdf&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L52xH52/pdf-eb697.png' width='52' height='52' alt='PDF - 192.7 kb' style='height:52px;width:52px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dd class='crayon document-descriptif-494 spip_doc_descriptif' style='width:120px;'&gt;(click to view)
&lt;/dd&gt;
&lt;/dl&gt;
&lt;center&gt;&lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_replie blocs_click'&gt;&lt;a href='javascript:;'&gt;[embedded viewer]&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination blocs_invisible blocs_slide'&gt;
&lt;p&gt;&lt;iframe src=&quot;http://docs.google.com/viewer?url=http%3A%2F%2Fnews.lilynet.net%2FIMG%2Fpdf%2F6_K626_viola_tighter_accidentals_and_dots_-_marked.pdf&amp;embedded=true&quot; width=&quot;780&quot; height=&quot;780&quot; style=&quot;border: none;&quot;&gt;&lt;/iframe&gt;&lt;/p&gt; &lt;/div&gt;&lt;/div&gt;&lt;/center&gt;
&lt;p&gt;That concludes my analysis. For an almost-default output, the results of LilyPond work are quite impressive &#8212; but they're not a publication-quality engraving yet: there are noticeable flaws. Most of them concern note spacing and beaming, some are caused by lack of intelligent and flexible placement of objects like dynamics and rehearsal marks. The most visible things are easy to fix manually - after all, no computer program will be smart enough to engrave everything perfectly. However, all the problems present seem to be fixable (in other words, it should be possible to write an algorithm that would solve them).&lt;/p&gt; &lt;p&gt;There surely is lots of room for our Development Team to improve things &lt;img alt=&quot;:)&quot; title=&quot;:)&quot; class=&quot;no_image_filtrer format_png&quot; src=&quot;http://news.lilynet.net/plugins/auto/couteau_suisse/img/smileys/sourire.png&quot; width=&quot;19&quot; height=&quot;19&quot;/&gt; (and we encourage you to help us!)&lt;/p&gt; &lt;p&gt;What are your opinions? I invite you to discuss this engraving - either in comments here, or on LilyPond development mailing list.&lt;/p&gt; &lt;p&gt;&lt;i&gt;Post Scriptum&lt;/i&gt;: wrong positioning of the augmentation dot in measure 31 was fixed in LilyPond's version 2.15.38.&lt;/p&gt; &lt;div style=&quot;text-align:right;&quot;&gt;&lt;i&gt;Janek Warcho&#322;&lt;/i&gt;, april 2012.&lt;/div&gt;
&lt;h3 class=&quot;spip&quot; id=&quot;the_snippet_of_the_month&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;The snippet of the month&lt;/h3&gt;
&lt;p&gt;(&lt;i&gt;by Valentin Villenave&lt;/i&gt;)&lt;/p&gt; &lt;p&gt;Anyone who has been discovering and using LilyPond in the past decade will tell you about the wonder and bewilderment that we encounter when we compile our first scores and discover the beautiful results. And yet, anyone who has been using LilyPond a tad bit longer, will &lt;i&gt;also&lt;/i&gt; testify to the incredibly annoying limitations we're all bound to stumble upon, sooner or later.&lt;/p&gt; &lt;p&gt;Of all these bugs, one that annoys me the most is the way LilyPond writes tuplets: it &lt;a href=&quot;http://git.savannah.gnu.org/gitweb/?p=lilypond.git;a=blob;f=python/musicexp.py;hb=HEAD#l490&quot; class='spip_out' rel='external'&gt;can't handle&lt;/a&gt; slur-shaped tuplet brackets, it tends to be &lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=2190&quot; class='spip_out' rel='external'&gt;dumb&lt;/a&gt; when placing its tuplet brackets, and most of all it has &lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=1745&quot; class='spip_out' rel='external'&gt;absolutely no idea&lt;/a&gt; where to place cross-staff tuplets, which may result in &lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=696&quot; class='spip_out' rel='external'&gt;ugly collisions&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Which is why I was thrilled to recently (re)discover this &lt;a href=&quot;http://lsr.dsi.unimi.it/LSR/Item?id=646&quot; class='spip_out' rel='external'&gt;snippet&lt;/a&gt;, that does make things look (a little) better.&lt;/p&gt;
&lt;dl class='spip_document_508 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;a href=&quot;http://lsr.dsi.unimi.it/LSR/Image?id=646&quot; title='PNG - bytes' type=&quot;image/png&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L200xH31/Imageid646-008bf-f7530-6b521.png' width='200' height='31' alt='PNG - bytes' style='height:31px;width:200px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;Here's the code, I'm not sure who is to thank for this snippet but it's well written and nicely commented.&lt;/p&gt; &lt;center&gt;&lt;a href=&quot;http://lsr.dsi.unimi.it/LSR/Item?id=646&quot; class='spip_out' rel='external'&gt;&lt;strong&gt;Positioning tuplet numbers close to kneed beams&lt;/strong&gt;&lt;/a&gt;&lt;/center&gt;
&lt;h3 class=&quot;spip&quot; id=&quot;the_undocumented_feature_of_the_month&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;The (undocumented) feature of the month&lt;/h3&gt;
&lt;p&gt;(&lt;i&gt;by Valentin Villenave&lt;/i&gt;)&lt;/p&gt; &lt;p&gt;It is not uncommon for some advanced LilyPonders, to use invisible &quot;anchors&quot; in their music. These can be useful for adding text above full-measure rests...&lt;/p&gt; &lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;\relative c'{&lt;br /&gt; c1&lt;br /&gt; s1*0^&quot;hello&quot;&lt;br /&gt; R1&lt;br /&gt; c1&lt;br /&gt; s1*0^&quot;there&quot;&lt;br /&gt; R1*2&lt;br /&gt; c1&lt;br /&gt; }&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;&lt;span class='spip_document_509 spip_documents spip_documents_center'&gt;
&lt;img src='http://news.lilynet.net/local/cache-vignettes/L368xH55/toto-preview-cdfb4.png' width='368' height='55' alt=&quot;&quot; style='height:55px;width:368px;' /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;to end crescendos more elegantly...&lt;/p&gt; &lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;\relative c'{&lt;br /&gt; d2\&gt; c\!&lt;br /&gt; d2\&gt;^&quot;better:&quot; c s1*0\!&lt;br /&gt; }&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;&lt;span class='spip_document_510 spip_documents spip_documents_center'&gt;
&lt;img src='http://news.lilynet.net/local/cache-vignettes/L194xH69/toto-preview-2-2da29.png' width='194' height='69' alt=&quot;&quot; style='height:69px;width:194px;' /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;or to integrate articulations and texts with music stored in a variable:&lt;/p&gt; &lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;notes = \relative c'{&lt;br /&gt; c4 c g' g c,1&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; \score {&lt;br /&gt; \new Voice {&lt;br /&gt; s1*0-&gt; \notes&lt;br /&gt; &lt;&lt; { s1 s1*0\fermata} { \oneVoice \notes } &gt;&gt;&lt;br /&gt; }&lt;br /&gt; }&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;&lt;span class='spip_document_512 spip_documents spip_documents_center'&gt;
&lt;img src='http://news.lilynet.net/local/cache-vignettes/L361xH60/toto-preview-4-99de6.png' width='361' height='60' alt=&quot;&quot; style='height:60px;width:361px;' /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;However, this syntax has a pitfall: using an invisible rest with a null duration, effectively changes the &quot;last-used-duration&quot; for LilyPond, and therefore can play tricks with your score depending on how you use it (see below).&lt;/p&gt; &lt;p&gt;Earlier this month, David Kastrup &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2012-05/msg00093.html&quot; class='spip_out' rel='external'&gt;noticed&lt;/a&gt; that there actually always had been an &lt;i&gt;other&lt;/i&gt; way to enter an invisible anchor in LilyPond: the &lt;strong&gt;empty chord construct&lt;/strong&gt;, noted as &lt;code class='spip_code' dir='ltr'&gt;&lt;&gt;&lt;/code&gt;. He went on to &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2012-05/msg00102.html&quot; class='spip_out' rel='external'&gt;explain&lt;/a&gt; how that might prove to be less confusing for users:&lt;/p&gt; &lt;blockquote class=&quot;spip&quot;&gt;
&lt;p&gt;&lt;i&gt;Quick: tell me what you would expect without too much thinking (imagine you are a naive user) from the following:&lt;/i&gt;&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;\new Staff &lt;&lt;&lt;br /&gt; \relative c'' { c4 d e f s1*0-\markup Oops c d e f g1 } \\&lt;br /&gt; \relative c' { c4 d e f &lt;&gt;-\markup Wow c d e f g1 }&lt;br /&gt; &gt;&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;Whilst he definitely had a point there, and nobody is really happy with &lt;code class='spip_code' dir='ltr'&gt;s1*0&lt;/code&gt;, some contributors disagreed with the idea of somehow &quot;officially&quot; advertising the &lt;code class='spip_code' dir='ltr'&gt;&lt;&gt;&lt;/code&gt; syntax in our documentation, to the point where names were called (&lt;i&gt;&lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2012-05/msg00131.html&quot; class='spip_out' rel='external'&gt;Haskell&lt;/a&gt;&lt;/i&gt;, really? That's a bit harsh.) and people appeared to be on the verge of &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2012-05/msg00171.html&quot; class='spip_out' rel='external'&gt;leaving&lt;/a&gt; the project &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2012-05/msg00175.html&quot; class='spip_out' rel='external'&gt;altogether&lt;/a&gt;! If we had not known this already, it again shows that LilyPond developers can be quite passionate about details.&lt;/p&gt; &lt;p&gt;As for me, all I can see is the awesomeness of discovering an undocumented feature that has been right there under our noses for 16 years. That alone, without any parser modification needed or whatever, is &lt;u&gt;terrifically cool&lt;/u&gt; from a pure geek point of view. (To what David accurately told me: &quot;&lt;i&gt;Well, that was part of the problem. It was divisive between geeks and non-geeks.&lt;/i&gt;&quot; And LilyPond is, and must remain, meant for both types of people.)&lt;/p&gt; &lt;p&gt;Then the question remains: is &lt;code class='spip_code' dir='ltr'&gt;&lt;&gt;&lt;/code&gt; elegant and &quot;LilyPond-ish&quot; enough to get a prominent place in our manuals? I'd say it is, but history has proven there's room for &lt;del&gt;flamewar&lt;/del&gt; debate here. Whether we end up including it, implementing a new keyword (either &lt;code class='spip_code' dir='ltr'&gt;\null&lt;/code&gt; or, to avoid confusion with the markup command of the same name, something else, or even a new letter such as &lt;code class='spip_code' dir='ltr'&gt;z&lt;/code&gt;) which would require a parser modification, or &#8212; much more likely &#8212; nothing at all and just stick with &lt;code class='spip_code' dir='ltr'&gt;s1*0&lt;/code&gt; until someone resuscitate the issue in a dozen years, it &lt;i&gt;really doesn't matter that much&lt;/i&gt;. Invisible anchors are really not used everyday for an average LilyPonder; and when they are, I suspect whoever uses them is already advanced enough to be able to cope with whatever is thrown at her, be it tricky null durations, new parser keywords/letters or weird Haskell-like constructs.&lt;/p&gt; &lt;p&gt;The closing word for now will be this comment from Janek, as I was telling him how hard reading the thread made me laugh: &quot;&lt;i&gt;I can't believe you guys went all flaming for such a silly thing!&lt;/i&gt;&quot; &#8212; &quot;&lt;i&gt;Well&lt;/i&gt;, he replied, &lt;i&gt;I couldn't believe that &lt;u&gt;you&lt;/u&gt; quit LilyPond for a few months last year because of a &lt;a href=&quot;http://news.lilynet.net/?The-LilyPond-Report-22#a_list_of_lilypond_communities&quot; class='spip_in'&gt;silly mailing list&lt;/a&gt; question &lt;img alt=&quot;:)&quot; title=&quot;:)&quot; class=&quot;no_image_filtrer format_png&quot; src=&quot;http://news.lilynet.net/plugins/auto/couteau_suisse/img/smileys/sourire.png&quot; width=&quot;19&quot; height=&quot;19&quot;/&gt;&lt;/i&gt;.&quot;&lt;/p&gt; &lt;p&gt;Oh, well. &lt;i&gt;Touch&#233;&lt;/i&gt;.&lt;/p&gt; &lt;p&gt;&lt;span class='spip_document_81 spip_documents spip_documents_center'&gt;
&lt;img src='http://news.lilynet.net/local/cache-vignettes/L125xH100/lesite-d163a.png' width='125' height='100' alt=&quot;&quot; style='height:100px;width:125px;' /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;Here endeth the twenty-sixth issue of the &lt;i&gt;LilyPond Report&lt;/i&gt;. With just a bit of luck, our next installment will be released &lt;i&gt;after&lt;/i&gt; the upcoming LilyPond stable release, and there will be a lot to report vis-&#224;-vis brand new exciting work being started...
&lt;br /&gt;In the meantime, feel free to &lt;a href=&quot;http://news.lilynet.net/?_LilyPond-Report-Editors_&quot; class='spip_in'&gt;send us&lt;/a&gt; your contributions !&lt;/p&gt; &lt;p&gt;Cheers,
&lt;br /&gt;David Kastrup, Janek Warcho&#322; &amp; Valentin Villenave&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="en">
		<title>The LilyPond Report #25</title>
		<link>http://news.lilynet.net/?The-LilyPond-Report-25</link>
		<guid isPermaLink="true">http://news.lilynet.net/?The-LilyPond-Report-25</guid>
		<dc:date>2012-04-01T16:33:26Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>en</dc:language>
		<dc:creator>David Kastrup, Janek Warcho&#322;, Valentin Villenave</dc:creator>



		<description>&lt;p&gt;Welcome to this twenty-fifth issue of the &lt;i&gt;LilyPond Report&lt;/i&gt;!&lt;/p&gt;

-
&lt;a href="http://news.lilynet.net/?-LilyPond-Report-" rel="directory"&gt;LilyPond Report&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;This short, informal opinion column is about the &lt;a href=&quot;http://lilypond.org/&quot; class='spip_out' rel='external'&gt;GNU LilyPond&lt;/a&gt; project: its team, its world, its community. It is &lt;i&gt;not&lt;/i&gt;, however, an official &lt;a href=&quot;http://lilypond.org/doc&quot; class='spip_out' rel='external'&gt;documentation resource&lt;/a&gt;. Reader comments welcome; reader &lt;a href=&quot;http://news.lilynet.net/?_LilyPond-Report-Editors_&quot; class='spip_in'&gt;contributions&lt;/a&gt; even more appreciated!&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;div class=&quot;cs_sommaire cs_sommaire_avec_fond&quot; id=&quot;outil_sommaire&quot;&gt; &lt;div class=&quot;cs_sommaire_inner&quot;&gt; &lt;div class=&quot;cs_sommaire_titre_avec_fond&quot;&gt; Table of contents &lt;/div&gt; &lt;ul&gt; &lt;li&gt;&lt;a title=&quot;Editorial&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#editorial&quot;&gt;Editorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;News from the &amp;#39;pond&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#news_from_the_pond&quot;&gt;News from the 'pond&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;The recipe of the month&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#the_recipe_of_the_month&quot;&gt;The recipe of the month&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;An Interview with Janek Warcho&#322;&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#an_interview_with_janek_warchol&quot;&gt;An Interview with Janek Warcho&#322;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Working with LilyPond: a personal experience&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#working_with_lilypond_a_personal_experience&quot;&gt;Working with LilyPond: a personal (...)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;The Bug Report(s) of the month&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#the_bug_report_s_of_the_month&quot;&gt;The Bug Report(s) of the month&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Investor&amp;#39;s report&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#investor_s_report&quot;&gt;Investor's report&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;LilyPond&amp;#39;s future&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#lilypond_s_future&quot;&gt;LilyPond's future&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;The game of the month&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#the_game_of_the_month&quot;&gt;The game of the month&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;The joke of the month&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#the_joke_of_the_month&quot;&gt;The joke of the month&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; &lt;/div&gt;&lt;p&gt;Greetings everybody, and welcome to this twenty-fifth issue of the &lt;i&gt;LilyPond Report&lt;/i&gt;!&lt;/p&gt; &lt;p&gt;As promised, this month's issue features an interview with our fellow contributor Janek Warcho&#322;. As well as an article by Janek Warcho&#322;. And another article from Janek Warcho&#322;. In other news, Janek Warcho&#322; reports on some recent developments. Also to be found in this issue is a personal appeal from Janek Warcho&#322;; and for a touch of fun, don't miss our special section, written this month by &#8212; wait for it &#8212; Janek Warcho&#322;. Now, there _&lt;i&gt;is&lt;/i&gt;_ other stuff too. But rest assured everything has been validated and approved by Janek Warcho&#322;.
&lt;br /&gt;As always, you can post your comments at the bottom of the page, or &lt;a href=&quot;http://news.lilynet.net/?_LilyPond-Report-Editors_&quot; class='spip_in'&gt;send your contributions&lt;/a&gt; to the &lt;i&gt;LilyPond Report&lt;/i&gt;'s next issues.&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;editorial&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Editorial&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by &lt;a href=&quot;http://news.lilynet.net/?_David-Kastrup_&quot; class='spip_in'&gt;David Kastrup&lt;/a&gt;&lt;/i&gt;.&lt;/p&gt; &lt;dl class='spip_document_481 spip_documents spip_documents_right' style='float:right;width:190px;'&gt;
&lt;dt&gt;&lt;a href=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/9/99/Bing_Crosby_1942.jpg/567px-Bing_Crosby_1942.jpg&quot; title='JPEG - 52.6 kb' type=&quot;image/jpeg&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L190xH200/567px-Bing_C6ab6-5b1c6-6caf7.jpg' width='190' height='200' alt='JPEG - 52.6 kb' style='height:200px;width:190px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-481 spip_doc_titre' style='width:190px;'&gt;&lt;strong&gt;Bing Crosby&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;Since my recent &lt;a href=&quot;http://news.lilynet.net/?The-LilyPond-Report-24#an_urgent_request_for_funding&quot; class='spip_in'&gt;call for funding&lt;/a&gt; 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 &lt;strong&gt;a combined grant&lt;/strong&gt; from &lt;a href=&quot;http://www.microsoft.com/&quot; class='spip_out' rel='external'&gt;Microsoft&lt;/a&gt;, the &lt;a href=&quot;http://riaa.com/&quot; class='spip_out' rel='external'&gt;RIAA&lt;/a&gt;, and the &lt;a href=&quot;http://www.hohnerusa.com/&quot; class='spip_out' rel='external'&gt;Hohner company&lt;/a&gt; for the purpose of typesetting the complete works of &lt;a href=&quot;http://en.wikipedia.org/wiki/Bing_Crosby&quot; class='spip_glossaire' rel='external'&gt;Bing Crosby&lt;/a&gt; for accordion.&lt;/p&gt; &lt;p&gt;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
&lt;a href=&quot;http://code.google.com/p/lilypond/issues/list?can=1&amp;q=accordion&quot; class='spip_out' rel='external'&gt;accordion support&lt;/a&gt; of LilyPond in the next half year.&lt;/p&gt; &lt;p&gt;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.&lt;/p&gt; &lt;dl class='spip_document_470 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;a href=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/3/39/Accordion.svg/418px-Accordion.svg.png&quot; title='PNG - 147.8 kb' type=&quot;image/png&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L200xH163/418px-Accord430e-a99cd-e0ef1.png' width='200' height='163' alt='PNG - 147.8 kb' style='height:163px;width:200px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-470 spip_doc_titre' style='width:200px;'&gt;&lt;strong&gt;Embrace ze future of LilyPond&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;For later releases, a bandonion edition in the &quot;Waschleinensystem&quot; might get executed as well. Styrian harmonica Griffschrift will not be supported natively, unless Arnold Schwarzenegger can be interested in joining the project.&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;news_from_the_pond&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;News from the 'pond&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by Valentin Villenave.&lt;/i&gt;&lt;/p&gt; &lt;p&gt;Whilst our upcoming 2.16 &lt;i&gt;stable&lt;/i&gt; 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 &lt;a href=&quot;http://code.google.com/p/lilypond/issues/list?q=label:Type-Critical&quot; class='spip_out' rel='external'&gt;Critical issues&lt;/a&gt; remain, particularly with note-heads, and therefore this is &lt;i&gt;not&lt;/i&gt; our next (and maybe last?) &quot;release candidate&quot;.&lt;/p&gt; &lt;p&gt;In other news, a new &lt;a href=&quot;https://lists.gnu.org/mailman/listinfo/lilypond-auto&quot; class='spip_out' rel='external'&gt;LilyPond-auto mailing list&lt;/a&gt; has been &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2012-03/msg00445.html&quot; class='spip_out' rel='external'&gt;announced&lt;/a&gt; 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.)&lt;/p&gt; &lt;p&gt;Finally, for those of us who use FreeBSD, LilyPond's development version is now &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-user/2012-03/msg00278.html&quot; class='spip_out' rel='external'&gt;available&lt;/a&gt; as a &quot;port&quot;, in a more &lt;a href=&quot;http://www.freebsd.org/ports/&quot; class='spip_out' rel='external'&gt;usual way&lt;/a&gt; than the self-contained binaries we distribute via our website. That's a nice thought!&lt;/p&gt; &lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_replie blocs_click'&gt;&lt;a href='javascript:;'&gt;Here's an addition by Janek Warcho&#322;.&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination blocs_invisible blocs_slide'&gt;
&lt;p&gt;&lt;i&gt;As some of you may know, we applied to &lt;a
href=&quot;http://www.google-melange.com/gsoc/homepage/google/gsoc2012&quot;&gt;Google
Summer of code program&lt;/a&gt; (Google pays students stipends for working
on open source programs).&lt;/i&gt;&lt;/p&gt; &lt;p&gt;&lt;i&gt;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
&quot;joined the GNU umbrella&quot; together with a score other projects. Of
course you can't expect that Google will give you everything you want &#8212; in particular, there will be a limited number of students funded by
Google. No-one knows how many of these &quot;student slots&quot; 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 &lt;a
href=&quot;http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2012/faqs&quot;&gt;GSoC
FAQ&lt;/a&gt; and see the &lt;a
href=&quot;http://www.gnu.org/software/soc-projects/guidelines.html&quot;&gt;guidelines
for applying to GNU projects&lt;/a&gt;. 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!&lt;/i&gt;&lt;/p&gt; &lt;/div&gt;&lt;/div&gt;
&lt;h3 class=&quot;spip&quot; id=&quot;the_recipe_of_the_month&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;The recipe of the month&lt;/h3&gt;
&lt;p&gt;A new section in this &lt;i&gt;Report&lt;/i&gt;: cooking! This month's recipe was &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00928.html&quot; class='spip_out' rel='external'&gt;noticed&lt;/a&gt; by... you'll never guess.&lt;/p&gt; &lt;p&gt;Without further adieu: &lt;a href=&quot;http://www.smh.com.au/lifestyle/cuisine/desserts/recipe/frogs-in-the-lily-pond-20111019-1m2ls.html&quot; class='spip_out' rel='external'&gt;&lt;strong&gt;Frogs in the Lily Pond&lt;/strong&gt;&lt;/a&gt;!&lt;/p&gt;
&lt;dl class='spip_document_480 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;a href=&quot;http://images.smh.com.au/2011/10/19/2709023/Frogs_in_the_lily_pond_729x572-420x0.jpg&quot; title='JPEG - 31.4 kb' type=&quot;image/jpeg&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L200xH158/Frogs_in_thec446-a606e-3f5a7.jpg' width='200' height='158' alt='JPEG - 31.4 kb' style='height:158px;width:200px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;p&gt;
&lt;small&gt;3 x 85g packets green jelly&lt;br&gt; 12 large jelly frogs or 24 small frogs&lt;br&gt; Flower sweets&lt;/small&gt;&lt;/p&gt; &lt;p&gt;&lt;i&gt;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.&lt;/i&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 class=&quot;spip&quot; id=&quot;an_interview_with_janek_warchol&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;An Interview with Janek Warcho&#322;&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;presented by Valentin Villenave.&lt;/i&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;The LilyPond Report&lt;/strong&gt; &#8212; Greetings Janek, thanks for lending us a bit of your time today! Well, this will be my first question actually: is &lt;i&gt;time&lt;/i&gt; 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?&lt;/p&gt; &lt;dl class='spip_document_473 spip_documents spip_documents_right' style='float:right;width:150px;'&gt;
&lt;dt&gt;&lt;a href=&quot;http://news.lilynet.net/IMG/jpg/Janek.jpg&quot; title='JPEG - 39.1 kb' type=&quot;image/jpeg&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L150xH200/Janek-2db73-40e1f.jpg' width='150' height='200' alt='JPEG - 39.1 kb' style='height:200px;width:150px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-473 spip_doc_titre' style='width:150px;'&gt;&lt;strong&gt;Janek's self-portrait&lt;/strong&gt;&lt;/dt&gt;
&lt;dd class='crayon document-descriptif-473 spip_doc_descriptif' style='width:150px;'&gt;No doubt: LilyPond can rely on serious people. (And good-looking, at that.)
&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;&lt;strong&gt;Janek Warcho&#322;&lt;/strong&gt; &#8212; Hi Valentin, and greetings to everyone!
&lt;br /&gt;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 &quot;spend my time freely&quot; &lt;img alt=&quot;:)&quot; title=&quot;:)&quot; class=&quot;no_image_filtrer format_png&quot; src=&quot;http://news.lilynet.net/plugins/auto/couteau_suisse/img/smileys/sourire.png&quot; width=&quot;19&quot; height=&quot;19&quot;/&gt;
&lt;br /&gt;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.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;TLR&lt;/strong&gt; &#8212; &quot;Pay back&quot;? Do you mean something precise by that or is it just a figure of speech?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;JW&lt;/strong&gt; &#8212; I've already learned a lot about programming, learned how to use &lt;a href=&quot;http://git-scm.com/&quot; class='spip_out' rel='external'&gt;git&lt;/a&gt;. 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.
&lt;br /&gt;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).&lt;/p&gt; &lt;p&gt;&lt;strong&gt;TLR&lt;/strong&gt; &#8212; I'm sure our readers would be interested in knowing where you grew up and where you live at the moment.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;JW&lt;/strong&gt; &#8212; Sure. I'm 8699 days old (as of April 1st, 2012); I was born, grew up and live in &lt;a href=&quot;http://en.wikipedia.org/wiki/Warsaw&quot; class='spip_out' rel='external'&gt;Warsaw&lt;/a&gt; &#8212; 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 &#8212; under the supervision of totalitarian USSR. Not nice.&lt;/p&gt; &lt;dl class='spip_document_475 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;a href=&quot;http://upload.wikimedia.org/wikipedia/commons/8/8a/Warsaw3ge.jpg&quot; title='JPEG - 206.6 kb' type=&quot;image/jpeg&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L200xH94/Warsaw3gejpg0203-f955b-892a8.jpg' width='200' height='94' alt='JPEG - 206.6 kb' style='height:94px;width:200px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-475 spip_doc_titre' style='width:200px;'&gt;&lt;strong&gt;A view from Warsaw&lt;/strong&gt;&lt;/dt&gt;
&lt;dd class='crayon document-descriptif-475 spip_doc_descriptif' style='width:200px;'&gt;&quot;&lt;i&gt;not&lt;/i&gt; nice&quot; ?
&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;&lt;strong&gt;TLR&lt;/strong&gt; &#8212; Indeed. So you're preparing to become an engineer? What kind of?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;JW&lt;/strong&gt; &#8212; &lt;a href=&quot;http://en.wikipedia.org/wiki/Mechatronics&quot; class='spip_out' rel='external'&gt;Mechatronics&lt;/a&gt; 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.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;TLR&lt;/strong&gt; &#8212; 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 &quot;written&quot;, but I could be wrong &lt;img alt=&quot;:-)&quot; title=&quot;:-)&quot; class=&quot;no_image_filtrer format_png&quot; src=&quot;http://news.lilynet.net/plugins/auto/couteau_suisse/img/smileys/sourire.png&quot; width=&quot;19&quot; height=&quot;19&quot;/&gt; )&lt;/p&gt; &lt;p&gt;&lt;strong&gt;JW&lt;/strong&gt; &#8212; Of course! I'm involved in four kinds of musical activity:&lt;/p&gt; &lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; listening to music &#8212; communing with beauty&lt;/li&gt;&lt;li&gt; performing music &#8212; a way to express myself&lt;/li&gt;&lt;li&gt; engraving music &#8212; creating artworks &lt;img alt=&quot;;)&quot; title=&quot;;)&quot; class=&quot;no_image_filtrer format_png&quot; src=&quot;http://news.lilynet.net/plugins/auto/couteau_suisse/img/smileys/clin_d-oeil.png&quot; width=&quot;19&quot; height=&quot;19&quot;/&gt;&lt;/li&gt;&lt;li&gt; programming LilyPond &#8212; a brain-twisting exercise! (actually, it's not THAT brain-twisting &#8212; don't be afraid to try yourself!)&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;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 &lt;img alt=&quot;;)&quot; title=&quot;;)&quot; class=&quot;no_image_filtrer format_png&quot; src=&quot;http://news.lilynet.net/plugins/auto/couteau_suisse/img/smileys/clin_d-oeil.png&quot; width=&quot;19&quot; height=&quot;19&quot;/&gt; - 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.
&lt;br /&gt;As for performing, it's almost exclusively classical vocal music &#8212; I sing bass in &quot;Epifania&quot; choir.&lt;/p&gt;
&lt;dl class='spip_document_471 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;a href=&quot;http://news.lilynet.net/IMG/jpg/Epifania_with_Janek.jpg&quot; title='JPEG - 199.3 kb' type=&quot;image/jpeg&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L200xH200/Epifania_with_Janek-dcfe0-3d204.jpg' width='200' height='200' alt='JPEG - 199.3 kb' style='height:200px;width:200px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-471 spip_doc_titre' style='width:200px;'&gt;&lt;strong&gt;And now, a little game: &quot;find the geek&quot;!&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;We're performing Mozart's d-minor &lt;a href=&quot;http://en.wikipedia.org/wiki/Requiem_%28Mozart%29&quot; class='spip_out' rel='external'&gt;&lt;i&gt;Requiem&lt;/i&gt;&lt;/a&gt; now &#8212; 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.
&lt;br /&gt;Recently I've seen a very good 1952 Breitkopf edition of Requiem, and you know what? I almost thought it was LilyPond!&lt;/p&gt; &lt;p&gt;&lt;strong&gt;TLR&lt;/strong&gt; &#8212; ... 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 &quot;Free Software&quot;?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;JW&lt;/strong&gt; &#8212; 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 &lt;a href=&quot;http://www.lilypond.org/doc/latest/Documentation/essay/the-lilypond-story&quot; class='spip_out' rel='external'&gt;&lt;i&gt;Essay&lt;/i&gt; on music engraving&lt;/a&gt;, I became 100% hooked.&lt;/p&gt;
&lt;dl class='spip_document_472 spip_documents spip_documents_right' style='float:right;width:143px;'&gt;
&lt;dt&gt;&lt;a href=&quot;http://news.lilynet.net/IMG/png/finale_flag.png&quot; title='PNG - 21.5 kb' type=&quot;image/png&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L143xH200/finale_flag-0fd1f-0e287.png' width='143' height='200' alt='PNG - 21.5 kb' style='height:200px;width:143px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-472 spip_doc_titre' style='width:143px;'&gt;&lt;strong&gt;A flag with Finale&lt;/strong&gt;&lt;/dt&gt;
&lt;dd class='crayon document-descriptif-472 spip_doc_descriptif' style='width:143px;'&gt;One word: #fail.
&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt; 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 &quot;look, spacing is wrong here&quot; and people replied &quot;where?&quot; - they didn't notice any problem at all :P
&lt;br /&gt;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 &#8212; 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.
&lt;br /&gt;As for the &quot;Free Software&quot; &#8212; sure, I was familiar with this concept before, although I've never used Linux as my main operating system.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;TLR&lt;/strong&gt; &#8212; I &lt;a href=&quot;http://www.gnu.org/gnu/linux-and-gnu.html&quot; class='spip_out' rel='external'&gt;assume&lt;/a&gt; you mean &quot;GNU/Linux&quot; here... &lt;img alt=&quot;:-)&quot; title=&quot;:-)&quot; class=&quot;no_image_filtrer format_png&quot; src=&quot;http://news.lilynet.net/plugins/auto/couteau_suisse/img/smileys/sourire.png&quot; width=&quot;19&quot; height=&quot;19&quot;/&gt; Was it natural for you to &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-user/2010-10/msg00338.html&quot; class='spip_out' rel='external'&gt;become a contributor&lt;/a&gt;, or would you have been fine with being &quot;just another user&quot;?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;JW&lt;/strong&gt; &#8212; 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...&lt;/p&gt; &lt;p&gt;&lt;strong&gt;TLR&lt;/strong&gt; &#8212; 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?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;JW&lt;/strong&gt; &#8212; 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.&lt;/p&gt;
&lt;dl class='spip_document_474 spip_documents spip_documents_left' style='float:left;width:200px;'&gt;
&lt;dt&gt;&lt;a href=&quot;http://news.lilynet.net/IMG/png/treble_clef_comparison.png&quot; title='PNG - 74.8 kb' type=&quot;image/png&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L200xH187/treble_clef_comparison-22015-21147.png' width='200' height='187' alt='PNG - 74.8 kb' style='height:187px;width:200px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-474 spip_doc_titre' style='width:200px;'&gt;&lt;strong&gt;Comparison&lt;/strong&gt;&lt;/dt&gt;
&lt;dd class='crayon document-descriptif-474 spip_doc_descriptif' style='width:200px;'&gt;click &lt;a href=&quot;http://news.lilynet.net/IMG/gif/clef_comparison.gif&quot; class='spip_out'&gt;here&lt;/a&gt; for a GIF animation (yes, it's 1996 all over again)
&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt; It was perhaps the most rewarding thing I've done for Lily so far: the &lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=1752&quot; class='spip_out' rel='external'&gt;amount&lt;/a&gt; of &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-user/2011-07/msg00131.html&quot; class='spip_out' rel='external'&gt;feedback&lt;/a&gt; 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!&lt;/p&gt; &lt;p&gt;One other rewarding thing was a &lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=2148&quot; class='spip_out' rel='external'&gt;bug report&lt;/a&gt; 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 &#8212; Mike Solomon had started working on it, a 1500-line patch was written and is now being refined &#8212; should be ready for inclusion quite soon! Not long ago Mike solved a &lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=695&quot; class='spip_out' rel='external'&gt;similar problem&lt;/a&gt; with slurs; I think that the most important part of my report was realizing that the solution was already there.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;TLR&lt;/strong&gt; &#8212; 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?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;JW&lt;/strong&gt; &#8212; Sure. First of all, I find myself with a split personality: the &quot;user&quot; part of me is always complaining that LilyPond isn't good enough, while the &quot;developer&quot; 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.
&lt;br /&gt;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 &lt;a href=&quot;http://news.lilynet.net/?The-LilyPond-Report-23&quot; class='spip_in'&gt;recently&lt;/a&gt; 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!
&lt;br /&gt;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 &#8212; quite often they simply have &quot;different&quot; skills. For example, as a user i was very irritated by &lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=695&quot; class='spip_out' rel='external'&gt;rectangular outllines&lt;/a&gt; of slurs and other objects &#8212; but I didn't have the skills to fix it.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;TLR&lt;/strong&gt; &#8212; 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?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;JW&lt;/strong&gt; &#8212; Listen to Graham Percival when he says &quot;we need more automation&quot;, because he is right.
&lt;br /&gt;And always assume good will, especially when you're absolutely sure that the other guy is the bad one.
&lt;br /&gt;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 &#8212; and every now and then something else requires my attention. Let me tell you my LilyPond activities:&lt;/p&gt; &lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; I've spent a lot of time making sure that LilyPond will be part of the &lt;a href=&quot;http://www.google-melange.com/gsoc/homepage/google/gsoc2012&quot; class='spip_out' rel='external'&gt;Google Summer of Code&lt;/a&gt; program &#8212; I wrote a large part of our application, prepared our list of projects for students, etc.,&lt;/li&gt;&lt;/ul&gt;
&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; Writing my own GSoC &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2012-04/msg00003.html&quot; class='spip_out' rel='external'&gt;application&lt;/a&gt; (as a student &#8212; if I succeed, I'll be able to work on Lily the whole summer!) took me about a dozen hours,&lt;/li&gt;&lt;/ul&gt;
&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; I'd like to start our own Kickstarter project, similar to &lt;a href=&quot;http://www.kickstarter.com/projects/293573191/open-goldberg-variations-setting-bach-free&quot; class='spip_out' rel='external'&gt;Open Goldberg Variations&lt;/a&gt; &#8212; doing this will take a lot of time, too (I'd appreciate some help here),&lt;/li&gt;&lt;/ul&gt;
&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; I'm thinking about how our &lt;a href=&quot;http://lilypond.org/doc/latest/Documentation/contributor/&quot; class='spip_out' rel='external'&gt;&lt;i&gt;Contributors' Guide&lt;/i&gt;&lt;/a&gt; could be rearranged to make it more straightforward for newcomers,&lt;/li&gt;&lt;/ul&gt;
&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; I'm organizing a team of volunteers that is examining our regression tests &#8212; 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 &lt;a href=&quot;http://lilypond.org/doc/latest/Documentation/contributor/grand-regression-test-checking.html&quot; class='spip_out' rel='external'&gt;this&lt;/a&gt; out.&lt;/li&gt;&lt;/ul&gt;
&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; 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,&lt;/li&gt;&lt;/ul&gt;
&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; 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,&lt;/li&gt;&lt;/ul&gt;
&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; (This one's quite obvious) I participated in this interview and wrote two articles for this LilyPond Report.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;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 &lt;a href=&quot;http://code.google.com/p/lilypond/issues/list?q=label:GSoC-LyricProject&quot; class='spip_out' rel='external'&gt;really mean it&lt;/a&gt; &#8212; 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...
&lt;br /&gt;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...
&lt;br /&gt;Now imagine how many cool things would Graham do if &lt;i&gt;he&lt;/i&gt; had the time!&lt;/p&gt; &lt;p&gt;&lt;strong&gt;TLR&lt;/strong&gt; &#8212; 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 &quot;pleasant&quot; place? Are you happy with the LilyPond project as it is now?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;JW&lt;/strong&gt; &#8212; 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.
&lt;br /&gt;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.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;TLR&lt;/strong&gt; &#8212; 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 &quot;anti-counterfeiting&quot; treaty (ACTA) written secretly without any democratic control whatsoever. This treaty poses serious threats to democracy and national sovereignty everywhere, &lt;a href=&quot;http://www.fsf.org/campaigns/acta&quot; class='spip_out' rel='external'&gt;including Free Software&lt;/a&gt;. Fortunately there's been a growing anti-ACTA movement, that somehow &lt;a href=&quot;http://www.slashgear.com/polands-politicians-don-anonymous-style-guy-fawkes-masks-in-anti-piracy-protest-27210983/&quot; class='spip_out' rel='external'&gt;originated&lt;/a&gt; in &lt;a href=&quot;http://www.zdnet.co.uk/news/intellectual-property/2012/02/03/actas-eu-future-in-doubt-after-polish-pause-40094978/&quot; class='spip_out' rel='external'&gt;Poland&lt;/a&gt;. As a Polish citizen, do you have any opinion on the matter?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;JW&lt;/strong&gt; &#8212; 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 &#8212; if it were not for the protests, we wouldn't even know about ACTA!
&lt;br /&gt;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.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;TLR&lt;/strong&gt; &#8212; Well, thank you Janek for this interview! See you soon on the mailing lists, and good luck for your future work!&lt;/p&gt; &lt;p&gt;&lt;strong&gt;JW&lt;/strong&gt; &#8212; Thanks, and best wishes to you all, too!&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;working_with_lilypond_a_personal_experience&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Working with LilyPond: a personal experience&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by Janek Warcho&#322;&lt;/i&gt;&lt;/p&gt; &lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_replie blocs_click'&gt;&lt;a href='javascript:;'&gt;&lt;strong&gt;My LilyPond experience&lt;/strong&gt;&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination blocs_invisible blocs_slide'&gt;
&lt;p&gt;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 &#8212; choral music predating the 20&lt;sup&gt;th&lt;/sup&gt; 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.&lt;/p&gt; &lt;p&gt;One could say that I'm some kind of a minimalist &#8212; in my opinion, the simpler the input looks, the better (and the fewer commands are used, the more I like it) &#8212; as long as it is a robust design that could be easily modified.&lt;/p&gt; &lt;p&gt;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!&lt;/p&gt; &lt;p&gt;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).&lt;/p&gt; &lt;p&gt;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.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Slurs and page layout&lt;/strong&gt;
&lt;br /&gt;Perhaps the biggest and most time consuming difficulties I face are things that often need manual tweaks &lt;i&gt;and&lt;/i&gt; recompiling to see if I got the result right. One example of such issues is slur shape.&lt;/p&gt; &lt;p&gt;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 &#8212; 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 &#8212; 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 &#8212; 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.&lt;/p&gt; &lt;p&gt;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.&lt;/p&gt; &lt;p&gt;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 &lt;i&gt;padding-distance-stretchability&lt;/i&gt; system currently used has some limitations, or I don't know all commands that might be useful. For example, I need flexible header formatting &#8212; 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.&lt;/p&gt; &lt;p&gt;The problem is that spacing properties &lt;i&gt;basic-&lt;/i&gt; and &lt;i&gt;minimum-distance&lt;/i&gt; 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 &#8212; 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 &#8212; that's because padding is unstretchable (and I definitely want this gap to adapt to the space available).&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Structural problems&lt;/strong&gt;
&lt;br /&gt;...are my second headache. Generally, LilyPond is very good at encouraging logically structured scores &#8212; and it's one of Lily's greatest strengths, I love it! However, there are significant shortcomings.&lt;/p&gt; &lt;p&gt;The first one is in &lt;code class='spip_code' dir='ltr'&gt;\partcombine&lt;/code&gt;. It is a wonderful tool, but it doesn't support well articulations, dynamics and &#8212; above all &#8212; 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 &#8212; for example when I want to produce educational MIDI files for my choir, with every MIDI file containing exactly one voice &#8212; I have a problem.&lt;/p&gt; &lt;p&gt;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:&lt;/p&gt; &lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; 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.&lt;/li&gt;&lt;li&gt; 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 &lt;code class='spip_code' dir='ltr'&gt;\include&lt;/code&gt;d files) to get parts from my score. That would be a structural perfection, truly LilyPondish.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;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 &#8212; there's already a &quot;&lt;i&gt;copy/paste durations&lt;/i&gt;&quot; tool, and I guess this could be solved similarly &#8212; a tool that would copy/cut selected types of items and paste them over some music or into an all-skip expression.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Scheme&lt;/strong&gt;
&lt;br /&gt;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 (&lt;code class='spip_code' dir='ltr'&gt;'`&lt;/code&gt;), &#8212; 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.&lt;/p&gt; &lt;p&gt;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 &#8212; 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 &lt;code class='spip_code' dir='ltr'&gt;\tweak&lt;/code&gt;, I was confronted with a serious problem: how did the syntax look like? I remembered that it was somewhat different from the &lt;code class='spip_code' dir='ltr'&gt;\override&lt;/code&gt; 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 &lt;code class='spip_code' dir='ltr'&gt;\tweak&lt;/code&gt; as a postevent (i.e. to write &lt;code class='spip_code' dir='ltr'&gt;-\tweak&lt;/code&gt;). 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 &lt;code class='spip_code' dir='ltr'&gt;-\tempo&lt;/code&gt; (as a postevent!), which is an incorrect syntax :P&lt;/p&gt; &lt;p&gt;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).&lt;/p&gt; &lt;p&gt;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 &#8212; except for the first number in the system, which should be left-aligned (to avoid placement problems caused by &lt;i&gt;StaffGroup&lt;/i&gt; brackets and clefs). Finally, instead of showing all bar numbers (as I usually do), I occasionally want to show every 5th number (&lt;i&gt;and&lt;/i&gt; 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 &#8212; here's my override that makes Bar numbers at the beginning of the system bigger:&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;\override BarNumber #'stencil =&lt;br /&gt; #(lambda (grob)&lt;br /&gt; (let ((break-dir (ly:item-break-dir grob)))&lt;br /&gt; (set! (ly:grob-property grob 'font-size)&lt;br /&gt; (if (= break-dir RIGHT)&lt;br /&gt; -1&lt;br /&gt; -3))&lt;br /&gt; (ly:text-interface::print grob)))&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;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.&lt;/p&gt; &lt;p&gt;The best solution that comes to my mind would be to create some kind of &quot;FirstBarNumber subclass&quot;, i.e. an object type derived from BarNumber. That would enable a solution looking like this:&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;\override BarNumber #'self-alignment-X = CENTER&lt;br /&gt; \override FirstBarNumber #'self-alignment-X = LEFT&lt;br /&gt; \override BarNumber #'font-size = -3&lt;br /&gt; \override FirstBarNumber #'font-size = -1&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;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 &lt;i&gt;LyricText&lt;/i&gt;, &lt;i&gt;LyricHyphen&lt;/i&gt; and &lt;i&gt;LyricExtender&lt;/i&gt;. It would be nice if I could specify an override for all of these simultaneously, like this: &lt;code class='spip_code' dir='ltr'&gt;\override Lyrics #'Y-offset = #2&lt;/code&gt;&lt;/p&gt; &lt;p&gt;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 &quot;size&quot; property that would set all these at once?&lt;/p&gt; &lt;p&gt;There are more similar changes that I could suggest, but that's not exactly what this article is about; I hope that GLISS (the &lt;i&gt;Grand LilyPond Syntax Stabilization&lt;/i&gt; project) will happen this year and sort out such issues.&lt;/p&gt; &lt;p&gt;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.&lt;/p&gt; &lt;/div&gt;&lt;/div&gt;
&lt;h3 class=&quot;spip&quot; id=&quot;the_bug_report_s_of_the_month&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;The Bug Report(s) of the month&lt;/h3&gt;
&lt;p&gt;It's been a long time since we haven't had a &quot;bug report of the month&quot;. Therefore, we relied on Janek Warcho&#322; (who else?) to provide us with not &lt;i&gt;one&lt;/i&gt; but &lt;i&gt;dozens&lt;/i&gt; of bug reports. See for example this nice sequenza:&lt;/p&gt; &lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; Bug &lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=2141&quot; class='spip_out' rel='external'&gt;2141&lt;/a&gt;: &lt;i&gt;some accidentals are too far from each other&lt;/i&gt;&lt;/li&gt;&lt;li&gt; Bug &lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=2142&quot; class='spip_out' rel='external'&gt;2142&lt;/a&gt;: &lt;i&gt;accidental right-padding should depend on the tightness of music&lt;/i&gt;&lt;/li&gt;&lt;li&gt; Bug &lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=2143&quot; class='spip_out' rel='external'&gt;2143&lt;/a&gt;: &lt;i&gt;accidental arrangement should depend on tightness of music&lt;/i&gt;&lt;/li&gt;&lt;li&gt; Bug &lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=2144&quot; class='spip_out' rel='external'&gt;2144&lt;/a&gt;: &lt;i&gt;accidentals should be able to slide over/under suspended notes&lt;/i&gt;&lt;/li&gt;&lt;li&gt; Bug &lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=2145&quot; class='spip_out' rel='external'&gt;2145&lt;/a&gt;:
&lt;i&gt;shorter versions of accidentals for use in tight situations&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h3 class=&quot;spip&quot; id=&quot;investor_s_report&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Investor's report&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by &lt;a href=&quot;http://news.lilynet.net/?_David-Kastrup_&quot; class='spip_in'&gt;David Kastrup&lt;/a&gt;&lt;/i&gt;.&lt;/p&gt; &lt;p&gt;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
&lt;a href=&quot;http://news.lilynet.net/?The-LilyPond-Report-24#an_urgent_request_for_funding&quot; class='spip_out'&gt;&lt;i&gt;LilyPond Report #24&lt;/i&gt;&lt;/a&gt;:&lt;/p&gt; &lt;table class=&quot;spip&quot;&gt;
&lt;thead&gt;&lt;tr class='row_first'&gt;&lt;th scope='col'&gt;Onetime payments (&#8364;)&lt;/th&gt;&lt;th scope='col'&gt;Payment plans (&#8364;)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class='row_even'&gt;
&lt;td&gt;2&#215;200&lt;br&gt;150&lt;br&gt;62&lt;br&gt;2&#215;25&lt;br&gt;20&lt;br&gt;&lt;/td&gt;
&lt;td&gt;25+50&lt;br&gt;2&#215;25&lt;br&gt;10&lt;br&gt;4&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd'&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;: 682&lt;/td&gt;
&lt;td&gt; &lt;strong&gt;Total&lt;/strong&gt;: 139&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even'&gt;
&lt;td colspan='2'&gt;&lt;center&gt;&lt;strong&gt;Totals&lt;/strong&gt;: &#8364;821&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;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.&lt;/p&gt; &lt;p&gt;What are the projections for next month?&lt;/p&gt; &lt;table class=&quot;spip&quot;&gt;
&lt;thead&gt;&lt;tr class='row_first'&gt;&lt;th scope='col'&gt;Payment plans (&#8364;)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class='row_even'&gt;
&lt;td&gt;100&lt;br&gt;25+50&lt;br&gt;2&#215;25&lt;br&gt;10&lt;br&gt;4&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd'&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;: 239&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Now what are we to make of it? As explained earlier, I need about
&#8364;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 &#8364;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 &quot;proper'' job I held.&lt;/p&gt; &lt;p&gt;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 &quot;life saver'', his whole payment would have carried over
into April.&lt;/p&gt; &lt;p&gt;But on the other hand, I consider it likely that in April, it
&lt;i&gt;would&lt;/i&gt; 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 &lt;i&gt;variable&lt;/i&gt; 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 &#8364;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.&lt;/p&gt; &lt;p&gt;Now what use was made of the contributions in March?&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;git shortlog -n --since &quot;5 weeks ago&quot;&lt;/code&gt;&lt;/div&gt;
&lt;dl class='spip_document_476 spip_documents spip_documents_right' style='float:right;width:171px;'&gt;
&lt;dt&gt;&lt;a href=&quot;http://news.lilynet.net/IMG/png/dak-shortlog.png&quot; title='PNG - 91.2 kb' type=&quot;image/png&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L171xH200/dak-shortlog-7b94d-65653.png' width='171' height='200' alt='PNG - 91.2 kb' style='height:200px;width:171px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;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 &lt;code class='spip_code' dir='ltr'&gt;\accidentalStyle&lt;/code&gt; and &lt;code class='spip_code' dir='ltr'&gt;\tempo&lt;/code&gt; commands in &lt;code class='spip_code' dir='ltr'&gt;\layout&lt;/code&gt; and &lt;code class='spip_code' dir='ltr'&gt;\midi&lt;/code&gt; 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 &lt;i&gt;all&lt;/i&gt; 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 &lt;i&gt;git&lt;/i&gt; was of the opinion that it had kept them and consequently refused readmitting them.&lt;/p&gt; &lt;p&gt;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.&lt;/p&gt; &lt;p&gt;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.&lt;/p&gt; &lt;p&gt;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.&lt;/p&gt; &lt;p&gt;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 &quot;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.&lt;/p&gt; &lt;p&gt;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
&lt;i&gt;regular&lt;/i&gt; &quot;affordable&quot; 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 &quot;it may
seem insignificant in itself, but it is very important that you do
it'' kind of things.&lt;/p&gt; &lt;p&gt;As a rehash from the article in the last &lt;a href=&quot;http://news.lilynet.net/?The-LilyPond-Report-24&quot; class='spip_in'&gt;LilyPond Report&lt;/a&gt; (probably worth reading if you you haven't done so already), here are the payment schemes I suggested:&lt;/p&gt; &lt;blockquote class=&quot;spip&quot;&gt;
&lt;p&gt;My mail address &lt;a href=&quot;mailto:dak@gnu.org&quot; class='spip_mail'&gt;dak@gnu.org&lt;/a&gt; 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:&lt;/p&gt; &lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; [&lt;strong&gt;Regular&lt;/strong&gt;] &#8364;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.&lt;/li&gt;&lt;li&gt; [&lt;strong&gt;Lifesaver&lt;/strong&gt;] Minimum &#8364;0, cap &#8364;250 per month, monthly target &#8364;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.&lt;/li&gt;&lt;li&gt; [&lt;strong&gt;Torchbearer&lt;/strong&gt;] Minimum &#8364;50, cap &#8364;150 per month, monthly target &#8364;1200. This is a model aimed at being reasonably comfortable for you as well as for me if everything works out.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt; 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.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;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.&lt;/p&gt; &lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_replie blocs_click'&gt;&lt;a href='javascript:;'&gt;And now, a personal appeal from Janek Warcho&#322; on this matter.&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination blocs_invisible blocs_slide'&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;p&gt;Dear LilyPond users around the world,
&lt;br /&gt;as we've read in &lt;a
href=&quot;http://news.lilynet.net/?The-LilyPond-Report-24&amp;lang=en#an_urgent_request_for_funding&quot;&gt;previous
LilyPond Report&lt;/a&gt;, David Kastrup &#8212; one of our most experienced and
skilled developers, and the only one who works on LilyPond full-time &#8212;
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.&lt;/p&gt; &lt;p&gt;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.&lt;/p&gt; &lt;p&gt;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&#8364;, because he has a Spartan lifestyle and enjoys working
on Lily. Can we ever imagine getting a better offer?&lt;/p&gt; &lt;p&gt;There are hundreds of LilyPond users &#8212; it would be a shame if we
failed to find the money needed.&lt;/p&gt; &lt;p&gt;Can you afford giving David 15&#8364; 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.&lt;/p&gt; &lt;p&gt;Ok, some of you may not afford 15&#8364; 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 &#8212; send money for 3 months in advance, and anyway PayPal takes
less than 10% of that.&lt;/p&gt; &lt;p&gt;Please support David. I've already sent him money for April and May.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;h3 class=&quot;spip&quot; id=&quot;lilypond_s_future&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;LilyPond's future&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by Janek Warcho&#322;&lt;/i&gt;.&lt;/p&gt; &lt;p&gt;What is the goal of LilyPond project?&lt;/p&gt; &lt;p&gt;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.&lt;/p&gt; &lt;p&gt;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 &#8212; but can we, and should we, &lt;i&gt;shape&lt;/i&gt; her future?&lt;/p&gt; &lt;p&gt;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: &quot;&lt;i&gt;music engraving for everyone&lt;/i&gt;&quot; and &quot;&lt;i&gt;automatic music engraving&lt;/i&gt;&quot;. Combining these two into &quot;&lt;i&gt;automated music engraving for everyone&lt;/i&gt;&quot; 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:&lt;/p&gt; &lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; making Lily easier to use,&lt;/li&gt;&lt;li&gt; having tasks that appear most commonly even more automated.
&lt;br /&gt;(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).&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;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 &quot;instruments&quot; that would make entering music easier and the code more elegant, i.e.&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;\new Staff = &quot;tenor&quot; { \music }&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;would be equivalent to:&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;\new Staff = &quot;tenor&quot; \with {&lt;br /&gt; \consists Ambitus_engraver&lt;br /&gt; } { &lt;br /&gt; \clef &quot;G_8&quot;&lt;br /&gt; \set Staff.instrumentName = &quot;Tenor&quot;&lt;br /&gt; \set Staff.shortInstrumentName = &quot;T&quot;&lt;br /&gt; \set Staff.midiInstrument = &quot;Choir Aahs&quot;&lt;br /&gt; \autoBeamOff&lt;br /&gt; \music&lt;br /&gt; }&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;One can also argue that it should include putting more effort into creating a fully-featured graphical interface &#8212; that's a topic for a whole other discussion.&lt;/p&gt; &lt;p&gt;Concerning the second area (automating common tasks), there are of course loads of things that could use more automation &#8212; we shall decide which are most important for achieving the &quot;automated music engraving for everyone&quot; goal. In my opinion two types of issues are crucial:&lt;/p&gt; &lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; basic notation,&lt;/li&gt;&lt;li&gt; notation elements that heavily depend on surroundings.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;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).&lt;/p&gt; &lt;p&gt;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:&lt;/p&gt; &lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; notes ( = noteheads, stems, flags, beams, ledger lines)&lt;/li&gt;&lt;li&gt; rests&lt;/li&gt;&lt;li&gt; accidentals&lt;/li&gt;&lt;li&gt; ties&lt;/li&gt;&lt;li&gt; augmentation dots&lt;/li&gt;&lt;li&gt; lyrics&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;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 &quot;perfecting&quot;, because we
already support all basic notation elements &#8212; it's just a matter of
having them work really smartly in any reasonable situation, out of
the box. If you are wondering &quot;what on earth needs improving?
everything is good!&quot;, wait for the next &lt;i&gt;LilyPond Report&lt;/i&gt;, where I'm
going to discuss some real-life examples &#8212; 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!&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;the_game_of_the_month&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;The game of the month&lt;/h3&gt;
&lt;p&gt;Here is a PDF file from a default LilyPond output, compiled by &#8212; you guessed it &#8212; Janek Warcho&#322;.&lt;/p&gt; &lt;dl class='spip_document_479 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;a href=&quot;http://news.lilynet.net/IMG/pdf/Mozart_-_Credo.pdf&quot; title='PDF - 1.3 Mb' type=&quot;application/pdf&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L52xH52/pdf-eb697.png' width='52' height='52' alt='PDF - 1.3 Mb' style='height:52px;width:52px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-479 spip_doc_titre' style='width:120px;'&gt;&lt;strong&gt;Credo (Mozart).&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_replie blocs_click'&gt;&lt;a href='javascript:;'&gt;Can you spot at least seven layout problems?&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination blocs_invisible blocs_slide'&gt;
&lt;p&gt;&lt;iframe src=&quot;http://docs.google.com/viewer?url=http%3A%2F%2Fnews.lilynet.net%2FIMG%2Fpdf%2FMozart_-_Credo.pdf&amp;embedded=true&quot; width=&quot;600&quot; height=&quot;780&quot; style=&quot;border: none;&quot;&gt;&lt;/iframe&gt;&lt;/p&gt; &lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Found it? No?&lt;/p&gt; &lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_replie blocs_click'&gt;&lt;a href='javascript:;'&gt;Okay, here's the answer.&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination blocs_invisible blocs_slide'&gt;
&lt;dl class='spip_document_477 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;a href=&quot;http://news.lilynet.net/IMG/pdf/Coronation_Mass_-_Credo_2-15-33_marked.pdf&quot; title='PDF - 614.6 kb' type=&quot;application/pdf&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L52xH52/pdf-eb697.png' width='52' height='52' alt='PDF - 614.6 kb' style='height:52px;width:52px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-477 spip_doc_titre' style='width:120px;'&gt;&lt;strong&gt;Credo (Mozart), with annotations.&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;&lt;iframe src=&quot;http://docs.google.com/viewer?url=http%3A%2F%2Fnews.lilynet.net%2FIMG%2Fpdf%2FCoronation_Mass_-_Credo_2-15-33_marked.pdf&amp;embedded=true&quot; width=&quot;600&quot; height=&quot;780&quot; style=&quot;border: none;&quot;&gt;&lt;/iframe&gt;&lt;/p&gt; &lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;small&gt;What do these colors mean?&lt;/p&gt; &lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; &lt;i&gt;magenta&lt;/i&gt;: &lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=2142&quot; class='spip_out' rel='external'&gt;accidental spacing&lt;/a&gt; (generally some accidentals take too much
space).&lt;/li&gt;&lt;li&gt; &lt;i&gt;dark violet&lt;/i&gt;: &lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=2456&quot; class='spip_out' rel='external'&gt;lyrics horizontal spacing&lt;/a&gt;, and friends.&lt;/li&gt;&lt;li&gt; &lt;i&gt;dark and medium blue&lt;/i&gt;: &lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=2459&quot; class='spip_out' rel='external'&gt;vertical positioning breaking into segments&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;i&gt;light blue&lt;/i&gt;: &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2012-03/msg00507.html&quot; class='spip_out' rel='external'&gt;vertical spacing should use skyline integrals&lt;/a&gt;&lt;/small&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Stay tuned for more examples of default LilyPond
output in the next &lt;i&gt;LilyPond Report&lt;/i&gt;! &lt;img alt=&quot;:)&quot; title=&quot;:)&quot; class=&quot;no_image_filtrer format_png&quot; src=&quot;http://news.lilynet.net/plugins/auto/couteau_suisse/img/smileys/sourire.png&quot; width=&quot;19&quot; height=&quot;19&quot;/&gt;&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;the_joke_of_the_month&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;The joke of the month&lt;/h3&gt;
&lt;p&gt;This month's quote is from &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2012-03/msg00567.html&quot; class='spip_out' rel='external'&gt;David Kastrup&lt;/a&gt;, but we wouldn't have dreamt of including it if it hadn't been deemed worth it by &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2012-03/msg00568.html&quot; class='spip_out' rel='external'&gt;you-know-who&lt;/a&gt;:&lt;/p&gt; &lt;blockquote class=&quot;spip&quot;&gt;
&lt;p&gt;
&lt;br /&gt;&#8212; &lt;i&gt;What impressed you most about the LilyPond code base?&lt;/i&gt;
&lt;br /&gt;&#8212; &lt;i&gt;No comment.&lt;/i&gt;
&lt;br /&gt;&#8212; &lt;i&gt;But I really want to know!&lt;/i&gt;
&lt;br /&gt;&#8212; &lt;i&gt;I just told you.&lt;/i&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;span class='spip_document_81 spip_documents spip_documents_center'&gt;
&lt;img src='http://news.lilynet.net/local/cache-vignettes/L125xH100/lesite-d163a.png' width='125' height='100' alt=&quot;&quot; style='height:100px;width:125px;' /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;That concludes our twentyfifth issue of the &lt;i&gt;LilyPond Report&lt;/i&gt;.&lt;/p&gt; &lt;p&gt;Cheers,
&lt;br /&gt;Janek Warcho&#322;, Janek Warcho&#322;, Janek Warcho&#322; and Janek Warcho&#322; (&lt;small&gt;some additional help provided by Valentin Villenave and David Kastrup, with special permission from&lt;/small&gt; Janek Warcho&#322;).&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_ps'&gt;&lt;p&gt;(&lt;strong&gt;P.S.&lt;/strong&gt; &lt;i&gt;Editor's note&lt;/i&gt;: No Janek Warcho&#322; was harmed in the making of this &lt;i&gt;Report&lt;/i&gt;.)&lt;/p&gt;&lt;/div&gt;
		</content:encoded>


		
		<enclosure url="http://news.lilynet.net/IMG/gif/clef_comparison.gif" length="24189" type="image/gif" />
		

	</item>
<item xml:lang="en">
		<title>The LilyPond Report #24</title>
		<link>http://news.lilynet.net/?The-LilyPond-Report-24</link>
		<guid isPermaLink="true">http://news.lilynet.net/?The-LilyPond-Report-24</guid>
		<dc:date>2012-03-04T08:28:43Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>en</dc:language>
		<dc:creator>David Kastrup, Valentin Villenave</dc:creator>



		<description>&lt;p&gt;Welcome to this twenty-fourth issue of the &lt;i&gt;LilyPond Report&lt;/i&gt;!&lt;/p&gt;

-
&lt;a href="http://news.lilynet.net/?-LilyPond-Report-" rel="directory"&gt;LilyPond Report&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;This short, informal opinion column is about the &lt;a href=&quot;http://lilypond.org/&quot; class='spip_out' rel='external'&gt;GNU LilyPond&lt;/a&gt; project: its team, its world, its community. It is &lt;i&gt;not&lt;/i&gt;, however, an official &lt;a href=&quot;http://lilypond.org/doc&quot; class='spip_out' rel='external'&gt;documentation resource&lt;/a&gt;. Reader comments welcome; reader &lt;a href=&quot;http://news.lilynet.net/?_LilyPond-Report-Editors_&quot; class='spip_in'&gt;contributions&lt;/a&gt; even more appreciated!&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;div class=&quot;cs_sommaire cs_sommaire_avec_fond&quot; id=&quot;outil_sommaire&quot;&gt; &lt;div class=&quot;cs_sommaire_inner&quot;&gt; &lt;div class=&quot;cs_sommaire_titre_avec_fond&quot;&gt; Table of contents &lt;/div&gt; &lt;ul&gt; &lt;li&gt;&lt;a title=&quot;Editorial&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#editorial&quot;&gt;Editorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;An urgent request for funding&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#an_urgent_request_for_funding&quot;&gt;An urgent request for funding&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Release news&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#release_news&quot;&gt;Release news&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;LilyPond grammar update&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#lilypond_grammar_update&quot;&gt;LilyPond grammar update&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;LilyPond online editors&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#lilypond_online_editors&quot;&gt;LilyPond online editors&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;An addendum to LilyPond Report #23&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#an_addendum_to_lilypond_report_23&quot;&gt;An addendum to LilyPond Report (...)&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; &lt;/div&gt;&lt;p&gt;Greetings everybody, and welcome to this twenty-fourth issue of the &lt;i&gt;LilyPond Report&lt;/i&gt;!&lt;/p&gt; &lt;p&gt;First things first: this slightly unusual issue features a rather important request from our co-editor &lt;a href=&quot;http://news.lilynet.net/?_David-Kastrup_&quot; class='spip_in'&gt;David Kastrup&lt;/a&gt;, who also happens to be arguably the most involved and efficient LilyPond developer at the moment &#8212; and unarguably, our only full-time developer. Also featured in this issue is an overview of some aspects of the new, simplified syntax in LilyPond. At last, we'll be discussing a long-overdue topic, to wit: LilyPond-based web applications, with a long-overdue contribution from &lt;a href=&quot;http://www.scorio.com/&quot; class='spip_out' rel='external'&gt;scorio.com&lt;/a&gt; founder Johannes Feulner!
&lt;br /&gt;As always, you can post your comments at the bottom of the page, or &lt;a href=&quot;http://news.lilynet.net/?_LilyPond-Report-Editors_&quot; class='spip_in'&gt;send your contributions&lt;/a&gt; to the &lt;i&gt;LilyPond Report&lt;/i&gt;'s next issues.&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;editorial&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Editorial&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by Valentin Villenave &amp; Graham Percival.&lt;/i&gt;&lt;/p&gt; &lt;p&gt;The &lt;i&gt;LilyPond Report&lt;/i&gt; was started exactly &lt;a href=&quot;http://news.lilynet.net/?The-LilyPond-Report-0&quot; class='spip_in'&gt;four years ago&lt;/a&gt; this month; although it has been a bumpy ride, with occasional long periods of inactivity, we hope it has proven a valuable medium for the GNU LilyPond project and the Free software world in general. It has given us a chance to meet dozens of interesting developers and contributors, to address various music-related questions and to provide a hindsight into LilyPond's development process. This month however, we are contributing to the LilyPond project in a new, more serious way, upon request from our co-editor and colleague &lt;a href=&quot;http://news.lilynet.net/?_David-Kastrup_&quot; class='spip_in'&gt;David Kastrup&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;While several projects depending on LilyPond have managed to fund full-time developers, LilyPond development itself has not really seen significant monetary support from its users so far. Every so often, however, users ask if they can contribute financially to
LilyPond. Creating a single legal entity to handle such matters
would raise a number of legal and administrative problems which we
are not equipped to handle at the moment. However, we have a
specific place where developers can indicate their interest in
private arrangements:
&lt;br /&gt;&lt;strong&gt;&lt;a href=&quot;http://lilypond.org/sponsoring.html&quot; class='spip_url spip_out' rel='external'&gt;http://lilypond.org/sponsoring.html&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Currently the only developer on this page is David. As
you can see from the &lt;a href=&quot;http://lilypond.org/~graham/gitstats-3months/AUTHORS.html&quot; class='spip_out' rel='external'&gt;git statistics&lt;/a&gt;, he has been very active over
the past few months. Both his self-chosen projects as well as the expertise he has provided for work on our infrastructure and
the projects of others have given LilyPond an important push forward.&lt;/p&gt; &lt;p&gt;As you can see in his &lt;a href=&quot;#an_urgent_request_for_funding&quot; class='spip_ancre'&gt;plea below&lt;/a&gt;, David is in dire financial straits. Unless he receives money to support his LilyPond work, he will need to leave the project and find work elsewhere &#8212; which would be bad news for LilyPond.&lt;/p&gt; &lt;p&gt;Users of LilyPond, contributors and enthusiasts, you now have the chance to secure an important contributor for full-time work. If you are interested in supporting LilyPond financially, we warmly suggest that you sponsor David to fix bugs or add features that interest you.&lt;/p&gt; &lt;p&gt;On a personal note, both of us have unrelatedly sponsored David to add new features for us in the past, and in both cases his work was fast and high-quality.&lt;/p&gt; &lt;p&gt;&lt;i&gt;Graham Percival&lt;/i&gt;, GNU LilyPond project manager;
&lt;br /&gt;&lt;i&gt;Valentin Villenave&lt;/i&gt;, LilyPond newsletter editor.&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;an_urgent_request_for_funding&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;An urgent request for funding&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;David Kastrup&lt;/i&gt;&lt;/p&gt; &lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_replie blocs_click'&gt;&lt;a href='javascript:;'&gt;Read this personal appeal from LilyPond developer David Kastrup.&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination blocs_invisible blocs_slide'&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;p&gt;
Let's begin with the most important bit. At the current point of
time, my financial situation is in free fall with very few slowdowns.
Its terminal velocity may be restrained by my rather basic lifestyle.
But if you think me having to split wood at ten degrees below zero
because of the price of oil heating is helping much, think again: that
shaves off something like maybe &#8364;40 from the monthly bills at best.
It merely spreads my reserves a bit thinner.&lt;/p&gt;
&lt;dl class='spip_document_459 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L500xH375/DK_3-815f1.jpg' width='500' height='375' alt='JPEG - 214.3 kb' style='height:375px;width:500px;' /&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-459 spip_doc_titre' style='width:350px;'&gt;&lt;strong&gt;Splitting wood.&lt;/strong&gt;&lt;/dt&gt;
&lt;dd class='crayon document-descriptif-459 spip_doc_descriptif' style='width:350px;'&gt;&quot;As the temperature has risen above 5 degrees, we fortunately have stopped heating&quot; &#8212; D. Kastrup, 2012
&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;So impact is looming close. The common answer to that is ``Get a
job!''. If you &lt;a href=&quot;http://lilypond.org/~graham/gitstats-3months/AUTHORS.html&quot; class='spip_out' rel='external'&gt;take a look&lt;/a&gt; at the activities in the LilyPond
repository in the recent months, you'll find that I &lt;i&gt;already&lt;/i&gt; have a full-time job. I am working for you, making LilyPond a greater tool to work with for you and other musicians. And much as I like this job and enjoy working for you, the time has come to talk about a raise.&lt;/p&gt; &lt;p&gt;Now I am not the only one working on LilyPond, and you may question
why you should consider paying me instead of someone else for that
work. That is a valid question as long as you &lt;i&gt;are&lt;/i&gt; actually
paying someone else rather than using it as an excuse not to do
anything at all. Check out &lt;a href=&quot;http://www.lilypond.org/sponsoring.html&quot; class='spip_url spip_out' rel='external'&gt;http://www.lilypond.org/sponsoring.html&lt;/a&gt;
for your options at any given point of time. At the time of writing
this article, there are no other requests for funding. I deliver
excellent value, and there is a limited window of opportunity before I
have to close down operations and am no longer available. So buy
yourself in while you still can.&lt;/p&gt; &lt;p&gt;There are others working on LilyPond in their spare time (and some of
them are doing a really fabulous job). Now for one thing, the
rallying point that a full-time developer provides helps even them to
be more effective at what they do and can achieve, even if this
full-time developer would not be first pick for the actual project
lead or other tasks focused on communication skills.&lt;/p&gt; &lt;p&gt;But for another, it turns out that my own situation is somewhat
special, and so I have an additional personal interest in you making
it possible to continue my work on LilyPond, going beyond a mere job
search.&lt;/p&gt; &lt;dl class='spip_document_457 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L500xH375/DK_1-d7b92.jpg' width='500' height='375' alt='JPEG - 162.8 kb' style='height:375px;width:500px;' /&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-457 spip_doc_titre' style='width:350px;'&gt;&lt;strong&gt;Primary means of transportation (front and left).&lt;/strong&gt;&lt;/dt&gt;
&lt;dd class='crayon document-descriptif-457 spip_doc_descriptif' style='width:350px;'&gt;D. Kastrup, 2012.
&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;And so that you know what you buy into and how to make the
most of it, I am telling you.&lt;/p&gt; &lt;p&gt;After figuring out that there were some things affecting my
productivity in a number of ways that don't seem to affect other
people nearly as much, I actually asked for professional opinion and
got diagnosed with several medical conditions. Now &quot;conditions'' are
things to take into account, &quot;medical'' means phenomena fitting a
pattern so that one can focus on approaches that have shown to be
effective in similar cases.&lt;/p&gt; &lt;p&gt;After lots of experimenting around, it turns out that in practice I
mostly have to live with being David, and you have to deal with me
being David, because that is quite solidly hard-wired. And this can
actually be a rather good deal for you and others, even if some parts
of it may seem unusual.&lt;/p&gt; &lt;p&gt;If we cut through the skinny of buzzphrases like &quot;Asperger's'' and
&quot;ADHS'', here are key points worth knowing about me:&lt;/p&gt; &lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; I can't stand things being `wrong' in a number of ways. This means that I am a good fit for working in a setting with ethical principles (call it &quot;ideological'' if you want) like Free Software. It also means that I am uncommonly good at finding and exterminating even more obscure bugs (like tracking down a &lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=1997&quot; class='spip_out' rel='external'&gt;GCC compiler bug&lt;/a&gt; that threatened to make LilyPond unusable on newer systems).&lt;/li&gt;&lt;li&gt; I get irritated and distracted rather easily. That means that I can be spectacularly bad at boring but necessary tasks which is not really good when operating in normal employment situations. It actually is not really good when leading any kind of life, either, but that is a different topic.&lt;/li&gt;&lt;li&gt; I see people react, but am bad at predicting it. If you meet me face to face, cues that are absent in non-interactive communication do a lot for avoiding misunderstandings and annoyances. Like with many other things, this is not unusual in itself but in the degree to which it happens.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;While I do not really shine in human relations when doing `batch
processing', I am pretty good with computers, and indeed I started
working with them at a time when the communication literally consisted
of a batch of punch cards and, a few hours later, output in print.&lt;/p&gt; &lt;p&gt;The low frustration tolerance for `boring' tasks still shows when
working with computers, but I fare rather good at `hard' and
`impossible' tasks as the `mind' of computers tends to be more
accessible to me than that of fellow human beings.&lt;/p&gt; &lt;dl class='spip_document_460 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L500xH667/DK_4-dcca6.jpg' width='500' height='667' alt='JPEG - 96 kb' style='height:667px;width:500px;' /&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-460 spip_doc_titre' style='width:350px;'&gt;&lt;strong&gt;Music is in the Air.&lt;/strong&gt;&lt;/dt&gt;
&lt;dd class='crayon document-descriptif-460 spip_doc_descriptif' style='width:350px;'&gt;D. Kastrup, 2012.
&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;Now at the moment, LilyPond has captured my attention and provides a
lot of motivation, and other developers and their needs and work put
me back on track when I get distracted. That means that I am quite
productive overall, though not necessarily according to any plan. My
actual impetus had been extending LilyPond for typesetting music for
accordion. I have not exactly been making lots of progress on that
front, instead getting myself caught up in improving an increasing
number of areas within LilyPond itself and the workflows focused
around using and developing it, to a degree where I have, in my
single-mindedness, not enough time and focus left doing another job.&lt;/p&gt; &lt;p&gt;As a result of my involvement, programming LilyPond has become quite
more powerful and enjoyable: most of the rather extensive changes in
LilyPond's input and music processing during the 2.15 development
phase are due to me, and its integration with its extension language
Scheme has become more logical and powerful at the same time.&lt;/p&gt; &lt;p&gt;LilyPond has more areas than what I have been working on: there have
been other large improvements particularly in the typesetting stage of
LilyPond, and those improvements did not depend on work I have done.
It is my impression, however, that the motivation of users on
LilyPond's user list to solve problems by writing Scheme code on their
own and teaching others how to do it has picked up. I certainly hope
to see this trend to accelerate after we manage to make the next
stable release, 2.16, and that it will contribute to attracting new
developers over time.&lt;/p&gt; &lt;p&gt;We don't have a general LilyPond development fund at the current point
of time, and it would pose organizational and legal problems that are
not worth tackling before there is positive proof that enough users
are willing to invest in the continued well-being of LilyPond, and put
their money rather than their foot where their mouth is.&lt;/p&gt; &lt;p&gt;Fortunately, my current situation is the perfect litmus test for you
to demonstrate that. It is hard to imagine a more convincing
incentive to contribute more than just talk. I might add that even
with a general fund, you could do worse than contribute to me in
person, since funds play to their strengths when paying for
systematically planned tasks, and I am by far most effective when
working on stuff that just happens to annoy me at a given point of
time.&lt;/p&gt; &lt;dl class='spip_document_458 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L500xH375/DK_2-081a9.jpg' width='500' height='375' alt='JPEG - 101.3 kb' style='height:375px;width:500px;' /&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-458 spip_doc_titre' style='width:350px;'&gt;&lt;strong&gt;Patchy at work.&lt;/strong&gt;&lt;/dt&gt;
&lt;dd class='crayon document-descriptif-458 spip_doc_descriptif' style='width:350px;'&gt;D. Kastrup, 2012.
&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;There would be some things I could apply for even if everything was
run through a fund: the laptop I am currently working on has been paid
by another developer, one who is already putting in more time and
energy than anyone could demand. It is a second-hand system from 2007 and, in spite of being quite better to work with than the system from 2000 I had to use before, is tasked a lot with test runs for LilyPond
since we are just now getting them streamlined enough to be able to
offload them to less experienced developers with better computing
facilities. I am holding a &lt;a href=&quot;http://chemnitzer.linux-tage.de/2012/vortraege/900&quot; class='spip_out' rel='external'&gt;talk&lt;/a&gt; about LilyPond at a &lt;a href=&quot;http://chemnitzer.linux-tage.de/&quot; class='spip_out' rel='external'&gt;major GNU/Linux fair&lt;/a&gt; in Chemnitz (the home
of the Chemnitzer Concertina) in a few weeks, and this incurs
travelling and accommodation costs that are not yet accounted for.&lt;/p&gt; &lt;p&gt;But most of the stuff I do is hard to plan and account for: I do it
because it feels necessary and is the right thing at a given point
of time. And that is enough to compel me. I hope it is for you as
well: if I have to turn to a different endeavor for keeping myself
afloat, I will have to cut out working on LilyPond completely since it
would continue being a distraction, and distractions are something I
can deal with very badly.&lt;/p&gt; &lt;p&gt;My mail address dak[at]gnu[&lt;i&gt;dot&lt;/i&gt;]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:&lt;/p&gt; &lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; [&lt;strong&gt;Regular&lt;/strong&gt;] &#8364;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.&lt;/li&gt;&lt;li&gt; [&lt;strong&gt;Lifesaver&lt;/strong&gt;] Minimum &#8364;0, cap &#8364;250 per month, monthly target &#8364;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.&lt;/li&gt;&lt;li&gt; [&lt;strong&gt;Torchbearer&lt;/strong&gt;] Minimum &#8364;50, cap &#8364;150 per month, monthly target &#8364;1200. This is a model aimed at being reasonably comfortable for you as well as for me if everything works out.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;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.&lt;/p&gt; &lt;p&gt;A tool like LilyPond, providing a simple, open way of describing music
and typesetting it to high standards, is important not just for
personal use, but also as a base to work with music that has already
passed into the public domain and that forms a large part of our
cultural heritage, and that LilyPond can help to make easier to access
and cast into new forms.&lt;/p&gt; &lt;p&gt;I do not suggest that there are no other ways to invest money or
energy for making LilyPond a better tool for working with music. But
don't take that as an excuse to do nothing at all. If you find that
LilyPond would be better served by you working or investing on aspects
not covered by me, then &lt;i&gt;do&lt;/i&gt; it. Don't merely think or talk
about it: that may feel noble, but achieves nothing. Don't postpone
it. You &lt;i&gt;have&lt;/i&gt; a chance of making the world a better place for
music and, if you choose to do it through me, a limited window of
opportunity. Don't blow it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;h3 class=&quot;spip&quot; id=&quot;release_news&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Release news&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by Valentin Villenave.&lt;/i&gt;&lt;/p&gt; &lt;p&gt;Although LilyPond's next stable release, &lt;code class='spip_code' dir='ltr'&gt;2.16&lt;/code&gt;, is getting nearer every day, it will take a little more time and intermediate &quot;&lt;a href=&quot;http://lilypond.org/website/development.html&quot; class='spip_out' rel='external'&gt;development&lt;/a&gt;&quot; versions. As we were &lt;a href=&quot;http://lists.gnu.org/archive/html/info-lilypond/2012-02/msg00002.html&quot; class='spip_out' rel='external'&gt;hoping&lt;/a&gt; to release &lt;code class='spip_code' dir='ltr'&gt;2.16&lt;/code&gt; in early March 2012, a number of new &lt;a href=&quot;http://code.google.com/p/lilypond/issues/list?can=1&amp;q=type=Critical&quot; class='spip_out' rel='external'&gt;critical issues&lt;/a&gt; have been found, thereby delaying the release. The good news is, these issues are now solved and we're ready to proceed with the development cycle &#8212; that is, at least one more Release Candidate will be needed.&lt;/p&gt; &lt;dl class='spip_document_421 spip_documents spip_documents_right' style='float:right;width:160px;'&gt;
&lt;dt&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L160xH96/double-lily-bc04-c3e11.png' width='160' height='96' alt='PNG - 50.5 kb' style='height:96px;width:160px;' /&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;Speaking of which, it is important to point out that, as 2.16 is looming, &lt;strong&gt;you should test the release candidate&lt;/strong&gt; &#8212; by &quot;you&quot; we mean &lt;i&gt;all&lt;/i&gt; users, not just the most adventurous ones: the more people test it and report &lt;strong&gt;any problem&lt;/strong&gt;, regressions or unwanted behavior, the more our &quot;stable&quot; release will be worthy of that name. So, please &lt;a href=&quot;http://lilypond.org/development.html&quot; class='spip_out' rel='external'&gt;download and install&lt;/a&gt; our release candidate!&lt;/p&gt; &lt;p&gt;What will this new stable version bring to the table? We'll take an in-depth look later on, but &lt;a href=&quot;http://lilypond.org/doc/v2.15/Documentation/changes/index.html&quot; class='spip_out' rel='external'&gt;here&lt;/a&gt; is a complete list of the most noteworthy changes, be sure to check it out and discover LilyPond's new, exciting features!&lt;/p&gt; &lt;p&gt;Please also note that the LilyPond team is &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2012-02/msg00036.html&quot; class='spip_out' rel='external'&gt;currently&lt;/a&gt; in &lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=2338#c12&quot; class='spip_out' rel='external'&gt;need&lt;/a&gt; of a new &lt;a href=&quot;http://lilypond.org/website/macos-x.html&quot; class='spip_out' rel='external'&gt;Mac OS X&lt;/a&gt; maintainer. This LilyPond port definitely needs some love, and &lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=1295&quot; class='spip_out' rel='external'&gt;it&lt;/a&gt; &lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=2271&quot; class='spip_out' rel='external'&gt;has&lt;/a&gt; &lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=1943&quot; class='spip_out' rel='external'&gt;proven&lt;/a&gt; &lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=2338&quot; class='spip_out' rel='external'&gt;hard&lt;/a&gt; for regular developers to keep up with Apple's latest &lt;del&gt;broken&lt;/del&gt; &lt;del&gt;incompatible&lt;/del&gt; &lt;del&gt;absurd&lt;/del&gt; fancy new features. If you're experienced enough (both with LilyPond build process and the Mac OS X environment) and feel up to the task, please don't wait and &lt;a href=&quot;http://news.lilynet.net/?_LilyPond-Report-Editors_&quot; class='spip_in'&gt;get in touch&lt;/a&gt;!&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;lilypond_grammar_update&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;LilyPond grammar update&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Some LilyPond Parser Changes:
&lt;br /&gt;Recent Work and Plans&lt;/strong&gt;
&lt;br /&gt;&lt;i&gt;by David Kastrup&lt;/i&gt;.&lt;/p&gt; &lt;p&gt;LilyPond's parser is written using the parser generator &quot;&lt;a href=&quot;http://www.gnu.org/software/bison/&quot; class='spip_out' rel='external'&gt;Bison&lt;/a&gt;''.
Bison generates parsers of the &lt;code class='spip_code' dir='ltr'&gt;LALR(1)&lt;/code&gt; class which basically means
that it makes its parsing decisions by considering a set of rules like&lt;/p&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;property_operation: STRING '=' scalar&lt;br /&gt; | &quot;\unset&quot; simple_string&lt;br /&gt; | &quot;\override&quot; simple_string property_path '=' scalar&lt;br /&gt; | &quot;\revert&quot; simple_string embedded_scm&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;br /&gt;(the LilyPond grammar can be found formatted in that way in the
Notation Reference). It gets &quot;tokens'' (such as integers,
inter-punctuation characters, complete words, note names) as input, and makes its decisions about which rule to apply next based on the
combination of its current state (of which there are about 700
distinct ones), the production on the top of a push-down stack, and
sometimes by looking at the next token. When it applies a rule, it
may execute actions associated with that rule, and when it has reduced
everything to the first rule (the start rule) it is finished.&lt;/p&gt; &lt;p&gt;For a compiler, the actions are commonly used for generating code, or
as a first step to that purpose, a parse tree representing the input.
In contrast, LilyPond works mostly as an interpreter. This means that
it executes the actions associated with input as soon as it is able to
exercise a rule.&lt;/p&gt; &lt;p&gt;Turning the LilyPond input language into a compiler would present
considerable challenges because of the design of the language: some
decisions, like assigning a syntactic class to an escaped
&lt;code class='spip_code' dir='ltr'&gt;\keyword&lt;/code&gt; or an immediate Scheme expression such
as &lt;code class='spip_code' dir='ltr'&gt;$(ly:make-pitch 0 0 0)&lt;/code&gt; are inherently dependent on the current state as evolved by the interpreter.&lt;/p&gt; &lt;p&gt;However, the purpose of the input language is almost exclusively
limited to parsing and generating music lists; and actually
transforming those lists into a printed representation via engravers
and Midi via performers is what takes the bulk of processing time.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Parser developments&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;i&gt;Optional music function arguments&lt;/i&gt;
&lt;br /&gt;Since the last stable versions (2.14), music functions with optional
arguments have &lt;a href=&quot;http://git.savannah.gnu.org/gitweb/?p=lilypond.git;a=commitdiff;h=6b66e44d3d9f2ea8a7ef052db1caac0355d3073c&quot; class='spip_out' rel='external'&gt;made it&lt;/a&gt; into LilyPond. One result has been that a number of syntactic constructs hardwired into LilyPond's grammar could be turned into music functions. For example, in LilyPond 2.14, the command &lt;code class='spip_code' dir='ltr'&gt;\relative&lt;/code&gt; was parsed in the LilyPond
grammar with the rule&lt;/p&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;relative_music:&lt;br /&gt; RELATIVE absolute_pitch music {&lt;br /&gt; Pitch start = *unsmob_pitch ($2);&lt;br /&gt; $$ = make_music_relative (start, $3, @$);&lt;br /&gt; }&lt;br /&gt; | RELATIVE composite_music {&lt;br /&gt; Pitch middle_c (0, 0, 0);&lt;br /&gt; $$ = make_music_relative (middle_c, $2, @$);&lt;br /&gt; }&lt;br /&gt; ;&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;Now it is parsed using the following definition:&lt;/p&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;relative =&lt;br /&gt; #(define-music-function (parser location pitch music)&lt;br /&gt; ((ly:pitch? (ly:make-pitch 0 0 0)) ly:music?)&lt;br /&gt; (_i &quot;Make @var{music} relative to @var{pitch} (default @code{c'}).&quot;)&lt;br /&gt; (ly:make-music-relative! music pitch)&lt;br /&gt; (make-music 'RelativeOctaveMusic&lt;br /&gt; 'element music))&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;
For one thing, having fewer hard-coded exceptions makes the syntax
more regular. For another, the functionality is now documented in the
notation reference together with other music functions (the given
documentation string is tunneled there in the process of creating the
manuals). Another advantage is that changing the functionality does
not require recompilation of LilyPond.&lt;/p&gt; &lt;p&gt;More importantly, users can now create functionality in Scheme (and
thus as part of writing a LilyPond source file) that formerly required
changing and recompiling the parser.&lt;/p&gt; &lt;p&gt;&lt;i&gt;The workhorse &lt;code class='spip_code' dir='ltr'&gt;#{ ... #}&lt;/code&gt;&lt;/i&gt;
&lt;br /&gt;In 2.14, you could employ the construct &lt;code class='spip_code' dir='ltr'&gt;#{ ... #}&lt;/code&gt; for writing sequential music in Scheme. It has been slightly extended to also allow writing pitches, markups, scores, books and bookparts, single music expressions, postevents, context definitions, layout definitions and some other things. Basically, it has turned into a general interface for specifying details in LilyPond syntax when writing in Scheme, and, as one example, now provides a user-friendly alternative for the &lt;code class='spip_code' dir='ltr'&gt;markup&lt;/code&gt; macro. &lt;code class='spip_code' dir='ltr'&gt;markup&lt;/code&gt; is a tricky construct for writing markups with a syntax that is almost, but not quite, entirely unlike LilyPond.&lt;/p&gt; &lt;p&gt;Previously, there was a special interface using &lt;code class='spip_code' dir='ltr'&gt;$&lt;/code&gt; for
getting material from local variables into &lt;code class='spip_code' dir='ltr'&gt;#{ ... #}&lt;/code&gt;. Some aspects of it have been turned into a general feature (&quot;immediate'' Scheme expressions) available throughout LilyPond, but more importantly, all Scheme expressions inside of &lt;code class='spip_code' dir='ltr'&gt;#{ ... #}&lt;/code&gt; are evaluated in `lexical closure', meaning that they can access the local variables of surrounding Scheme code. So &lt;code class='spip_code' dir='ltr'&gt;#{ ... #}&lt;/code&gt; has turned into a quite more powerful feature, at the same time behaving more like `regular' LilyPond.&lt;/p&gt; &lt;p&gt;If we take the above example for relative music and change it such
that the default will be to make the music relative to &lt;code class='spip_code' dir='ltr'&gt;f&lt;/code&gt;
(which means that the first note will actually be written with
absolute pitch), we can call this &lt;i&gt;\ablative&lt;/i&gt; (because it starts
out as absolute, and continues relative):&lt;/p&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;ablative =&lt;br /&gt; #(define-music-function (parser location pitch music)&lt;br /&gt; ((ly:pitch? #{ f #}) ly:music?)&lt;br /&gt; #{ \relative $pitch #music #})&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;br /&gt;We did a few things here typical for user-defined functions: there is
little point in a documentation string, and we generously employ &lt;code class='spip_code' dir='ltr'&gt;#{ ... #}&lt;/code&gt;.
Actually, since &lt;code class='spip_code' dir='ltr'&gt;\relative&lt;/code&gt; remains available, there is little point in accepting an optional pitch argument here, but it makes for a somewhat more interesting example.&lt;/p&gt; &lt;p&gt;Using &lt;code class='spip_code' dir='ltr'&gt;#{ ... #}&lt;/code&gt; extensively makes it possible to employ Scheme mostly as glue code between LilyPond fragments.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Future developments&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;i&gt;Further unification of argument types&lt;/i&gt;
&lt;br /&gt;At the current point of time, there are still two argument types
recognized separately in the grammar: &lt;code class='spip_code' dir='ltr'&gt;ly:duration?&lt;/code&gt; and
&lt;code class='spip_code' dir='ltr'&gt;ly:pitch?&lt;/code&gt;. As a result, the last example had to use an
immediate Scheme expression &lt;code class='spip_code' dir='ltr'&gt;$pitch&lt;/code&gt; (as otherwise the argument would have been interpreted as type &quot;Scheme''), while it was possible to write &lt;code class='spip_code' dir='ltr'&gt;#music&lt;/code&gt; since arguments of type music and of type Scheme are interchangeable already, relying only on evaluation of the predicate for type checking.&lt;/p&gt; &lt;p&gt;Removing those special argument types provides a bit of a challenge.
Pitches are challenging because a pitch is a valid start of a music
expression (and that implies a bit of incremental parsing to make them
fit with the general scheme of things since one does not want to
recognize pitches using lookahead in optional argument settings, and
pitches can contain an arbitrary number of octave marks).&lt;/p&gt; &lt;p&gt;Durations are challenging in a similar manner because of being able to
be confused with numbers, because of optional following dots, and
partly because they can become part of a preceding music expression
such as when preceded by a pitch.&lt;/p&gt; &lt;p&gt;&lt;i&gt;Removal of &quot;closed music'' category&lt;/i&gt;
&lt;br /&gt;At the current point of time, music arguments before durations or
after skipped optional arguments need to be enclosed in braces or
other delimiters in order to avoid ambiguities in the interpretation
of things like &lt;code class='spip_code' dir='ltr'&gt;c 8&lt;/code&gt;: is the 8 part of the music argument, or is it a duration following it? And an optional music function argument has to be first created, then checked against its predicate, and if that does not match, backed up in the grammar. And in a stateful parser like that of LilyPond, backing up is only possible
when the parser has not seen further tokens and/or has entered
into states depending on them.&lt;/p&gt; &lt;p&gt;Some of the more recent changes in the LilyPond parser have been in
the area of resolving such ambiguities by looking at the context and
potentially backtracking and/or parsing stuff incrementally.&lt;/p&gt; &lt;p&gt;The principal idea is that one parses first tentatively without
lookahead, and checking possible expression types that can arise
against the optional argument predicates, even though the actual
expression might not be complete. This means that the argument
predicates must not have side-effects, but just depend on their
arguments, a reasonable assumption.&lt;/p&gt; &lt;p&gt;However, when the expression itself results from a music or scheme
function call, the amount of possible reparsing is limited since
requiring music or scheme functions to be without side-effect would be
excessive: for example the main point of &lt;code class='spip_code' dir='ltr'&gt;\displayMusic&lt;/code&gt; is its side effect. So if
&lt;code class='spip_code' dir='ltr'&gt;\displayMusic&lt;/code&gt; is in itself a potentially
optional argument of a music function, we either have to be able to
parse its argument without lookahead, or we won't be able to back it
up again in case it is not accepted by the optional argument
predicate.&lt;/p&gt; &lt;p&gt;As one example, a &lt;code class='spip_code' dir='ltr'&gt;\repeat&lt;/code&gt; construct at the current point of time is not closed music, because LilyPond needs to be able to parse an item &lt;i&gt;without&lt;/i&gt; lookahead when it may or may not accept it as
an optional argument. And a &lt;code class='spip_code' dir='ltr'&gt;\repeat&lt;/code&gt; construct may be followed by &lt;code class='spip_code' dir='ltr'&gt;\alternatives&lt;/code&gt;, something that is impossible to see without lookahead. The solution is to first parse just up to the conclusion of the &lt;code class='spip_code' dir='ltr'&gt;\repeat&lt;/code&gt;, and then call the optional argument predicate on the resulting music expression. If it is found acceptable, LilyPond can &lt;i&gt;resume&lt;/i&gt; parsing after having made the decision that it will &lt;i&gt;not&lt;/i&gt; skip this optional argument, and the resumed parsing can now work using lookahead tokens freely. If it turns out that the construct &lt;i&gt;with&lt;/i&gt; alternatives is &lt;i&gt;not&lt;/i&gt; acceptable
any more, we blame the user (meaning that we don't deal with
surprising amounts of backtracking).&lt;/p&gt; &lt;p&gt;Removing the concept of &quot;closed music'' (or at least reducing its
impact) would reduce the number of things a user has to understand in
order to create and use music functions. Here is one example of a
set-back: at some point of time, &lt;code class='spip_code' dir='ltr'&gt;\displayMusic&lt;/code&gt; was given an optional port argument before the music expression. Since only closed music expressions are allowed after a skipped optional argument, &lt;code class='spip_code' dir='ltr'&gt;\displayMusic c''&lt;/code&gt; ceased being valid input, a side effect discovered more than a week after making the change. The change has been reverted for now, but at one point of time, it should be possible to bring it back without such repercussions.&lt;/p&gt; &lt;p&gt;The idea is to have the user just see results equivalent to greedy and
backtracking parsing compatible with evaluating the given music
function predicates: this is conceptually easy to understand, explain,
and extend, but mapping this into code that can be tackled by an
&lt;code class='spip_code' dir='ltr'&gt;LALR(1)&lt;/code&gt; parser generator is challenging.&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;lilypond_online_editors&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;LilyPond online editors&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by Valentin Villenave&lt;/i&gt;.&lt;/p&gt; &lt;p&gt;Although some of our youngest readers may not remember, there actually was a time, not too many years ago, where people did rely on their computers to do their computing, where your phone's primary use was to make phone calls, where using a webmail service was considered bad taste (and JavaScript, an unnecessary ugliness), where &lt;a href=&quot;http://en.wikipedia.org/wiki/Light_client&quot; class='spip_out' rel='external'&gt;thin clients&lt;/a&gt; were regarded as subpar computers to be used exclusively in a corporate environment and usually meant your boss was kinda cheap; a time where the &quot;&lt;a href=&quot;http://www.networkworld.com/news/2008/031108-eleven-cloud-computing-vendors-to.html&quot; class='spip_out' rel='external'&gt;cloud computing&lt;/a&gt;&quot; buzzword &#8212; can you imagine &#8212; &lt;i&gt;didn't even exist&lt;/i&gt;!&lt;/p&gt; &lt;p&gt;One of LilyPond's major downsides when it comes to dealing with inexperienced users, and probably one of the reasons why it hasn't seen more widespread adoption amongst musicians, is its setup process that may seem peculiar to people unfamiliar with the notion of &quot;source code&quot;. Installing LilyPond itself &lt;i&gt;has&lt;/i&gt; become increasingly easy over the years; setting up your work environment (text editor, PDF preview, command-line invocation) is a bit more involved... assuming you &lt;i&gt;can&lt;/i&gt; think about it: I can't count the people around me to whom it has never occurred that they &lt;i&gt;could&lt;/i&gt; actually be using something else than the default NotePad application for Windows&#8482;, or the LilyPad text editor we provide for Mac OS X.&lt;/p&gt; &lt;p&gt;In this regard, being given the ability to discover the full potential of LilyPond (including syntax-colored source code and score preview) in a Web browser &lt;i&gt;without&lt;/i&gt; having to install anything whatsoever, may be an excellent introduction. As early as 2006, a notorious visionary &#8212; namely, myself &#8212; predicted that &quot;LilyPond's future might well be web-oriented&quot;. I wasn't, to be fair, the first one: in January 2005, &lt;strong&gt;Sebastiano Vigna&lt;/strong&gt; had &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-user/2005-01/msg00427.html&quot; class='spip_out' rel='external'&gt;introduced&lt;/a&gt; the &lt;a href=&quot;http://lsr.dsi.unimi.it/&quot; class='spip_out' rel='external'&gt;LilyPond Snippet Repository&lt;/a&gt; that provided the very first public LilyPond server. The LSR was intended for documentation purposes and required a bit of work to get around its &lt;a href=&quot;http://erw.dsi.unimi.it/&quot; class='spip_out' rel='external'&gt;ERW&lt;/a&gt;-based interface, but it is still in use today.&lt;/p&gt; &lt;p&gt;Setting it up, to be honest, is quite an involved task and demands more than just courage, but also a bit of masochism and recklessness. By that I am not only referring to Sebastiano's peculiar taste in terms of server-side Java, but the main point is that &lt;i&gt;LilyPond, as a program and as a language, presents an extreme security risk&lt;/i&gt; for any server where you want to run it. Since it allows for embedded Scheme, that in turn can convey system calls, it &lt;i&gt;can&lt;/i&gt; &#8212; and &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-user/2009-05/msg00385.html&quot; class='spip_out' rel='external'&gt;will eventually&lt;/a&gt;, if you leave it open to anyone on the interwebs &#8212; wipe out your system and kill your hamster! That's not the only issue: even perfectly harmless code can eat up a considerable amount of resources, there's also the problem of &lt;code class='spip_code' dir='ltr'&gt;\include&lt;/code&gt; instructions that would require users to upload multiple files and thereby multiply injection risks, etc.&lt;/p&gt; &lt;p&gt;In short: &lt;i&gt;children, do &lt;strong&gt;not&lt;/strong&gt; do it at home&lt;/i&gt;!&lt;/p&gt; &lt;p&gt;But that kind of warnings has never stopped any self-respecting geek, has it?&lt;/p&gt; &lt;p&gt;Interestingly enough, all of the subsequent prototypes, based on Sebastiano's work, weren't conceived as standalone web-applications, but rather tried integrate LilyPond into existing Content Management Systems. In 2006 &lt;strong&gt;Chris Lamb&lt;/strong&gt; came up with a &lt;a href=&quot;https://chris-lamb.co.uk/2006/04/03/lilypond-and-latex-plugin-for-wordpress/&quot; class='spip_out' rel='external'&gt;Wordpress plugin&lt;/a&gt;; slightly later our developer and git expert &lt;strong&gt;Johannes Schindelin&lt;/strong&gt; introduced a &lt;a href=&quot;http://wikisophia.org/wiki/Wikitex&quot; class='spip_out' rel='external'&gt;MediaWiki extension&lt;/a&gt; that raised a lot of eyebrows (man, LilyPond in Wikipedia! &#8212; &lt;a href=&quot;http://www.mediawiki.org/wiki/Extension:LilyPond#Why_is_this_not_available_in_Wikipedia.3F&quot; class='spip_out' rel='external'&gt;hold your horses&lt;/a&gt;, more on that later). In 2007, &lt;strong&gt;Christophe Richard&lt;/strong&gt; also turned it into a &lt;a href=&quot;http://www.musicorum.net/article110.html&quot; class='spip_out' rel='external'&gt;plugin&lt;/a&gt; for the SPIP cms, and it was even added as a &lt;a href=&quot;http://web.archive.org/web/20071012192200/http:/www.cerell.fr/spip/spip.php?article18&quot; class='spip_out' rel='external'&gt;plugin&lt;/a&gt; to the FCK editor. Last but not least, in 2009 &lt;strong&gt;Harmath D&#233;nes&lt;/strong&gt; &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2009-10/msg00103.html&quot; class='spip_out' rel='external'&gt;integrated&lt;/a&gt; LilyPond into Google Wave&lt;sup&gt;&#174;&lt;/sup&gt; the brand-new disruptively-sexy Next Big Thing that was gonna revolutionize the world as we knew it.&lt;/p&gt; &lt;p&gt;In May 2007, I had introduced the first prototype of an online real-time syntax-highlighting and auto-indenting LilyPond editor. It was mostly a hack around the &lt;a href=&quot;http://codepress.sourceforge.net/&quot; class='spip_out' rel='external'&gt;Codepress&lt;/a&gt; Javascript editor, but it was fun to make and it became part of a French effort to provide LilyPond-ready web applications (around the now-defunct lilyserv.net server, modeled after Sebastiano's code). We were beginning to discuss a possible standalone web-application (a then new-and-shiny buzzword, as Gmail&amp;Co were gaining traction). Laurent Ducos even suggested it should sport an online graphical interface such as &lt;a href=&quot;http://denemo.org/&quot; class='spip_out' rel='external'&gt;Denemo&lt;/a&gt; or &lt;a href=&quot;http://lilycomp.sourceforge.net/&quot; class='spip_out' rel='external'&gt;LilyComp&lt;/a&gt;, but that never went anywhere.&lt;/p&gt; &lt;dl class='spip_document_406 spip_documents spip_documents_right' style='float:right;width:250px;'&gt;
&lt;dt&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L250xH188/250px-Fleur_c0ec-21363.jpg' width='250' height='188' alt='JPEG - 10.1 kb' style='height:188px;width:250px;' /&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;Then came what I'd refer to as the &quot;second generation&quot; of LilyPond-based online efforts: the era of standalone, user-friendly web applications. In this regard, the year 2010 certainly was some kind of a turning point. The iPhone&lt;sup&gt;&#174;&lt;/sup&gt; (and its &lt;del&gt;useless&lt;/del&gt; brother the iPad&lt;sup&gt;&#174;&lt;/sup&gt;) was everywhere, and running LilyPond on it wouldn't have been an option; taking advantage of that, a &lt;strong&gt;Daniel Glover&lt;/strong&gt; released the proprietary, LilyPond-reliant &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2010-03/msg00280.html&quot; class='spip_out' rel='external'&gt;Etude App&lt;/a&gt;, that is said to have sold quite well. For those of us who don't have an Apple product and actually care about the open Web, the same year &lt;strong&gt;Mike Blackstock&lt;/strong&gt; (after having tried to set up a LilyPond-friendly wiki &#8212; in vain ) &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-user/2010-04/msg00463.html&quot; class='spip_out' rel='external'&gt;announced&lt;/a&gt; the availability of a collection of online music editing tools, aptly named &lt;a href=&quot;http://www.omet.ca/&quot; class='spip_out' rel='external'&gt;OMET&lt;/a&gt;. Then there was also LilyPondTool contributor &lt;strong&gt;Joshua Koo&lt;/strong&gt; and his &lt;a href=&quot;http://www.facebook.com/note.php?note_id=469571208255&amp;&quot; class='spip_out' rel='external'&gt;project&lt;/a&gt; (beware, that's a Facebook link) of a &quot;&lt;a href=&quot;http://www.slideshare.net/joshuakoo/google-docs-for-music&quot; class='spip_out' rel='external'&gt;Google Docs for music&lt;/a&gt;&quot; that became &lt;a href=&quot;http://jabtunes.com/&quot; class='spip_out' rel='external'&gt;JabTunes&lt;/a&gt; (the homepage is ugly and contains some Flash, but check out his &lt;a href=&quot;http://jabtunes.com/labs/&quot; class='spip_out' rel='external'&gt;labs&lt;/a&gt; for some pretty nifty HTML5 experiments). Finally, the new kid on the block has been announced quite &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-user/2012-02/msg00002.html&quot; class='spip_out' rel='external'&gt;recently&lt;/a&gt; by &lt;strong&gt;Trevor Dixon&lt;/strong&gt; as &lt;a href=&quot;http://www.lilybin.com/&quot; class='spip_out' rel='external'&gt;Lilybin&lt;/a&gt;, that looks quite promising. I've also seen other people (including Dominic Neumann, Eric Knapp, Philip Peterson) announce that they were working on online web interfaces for LilyPond; there definitely is a growing trend here.&lt;/p&gt; &lt;p&gt;As early as May 2009, an unidentified developer &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-user/2009-05/msg00581.html&quot; class='spip_out' rel='external'&gt;appeared&lt;/a&gt; to be working on a project called &lt;a href=&quot;http://weblily.net/&quot; class='spip_out' rel='external'&gt;WebLily&lt;/a&gt;. It wasn't made public until March 2010, as a &lt;i&gt;LilyPond Report&lt;/i&gt; &lt;a href=&quot;http://news.lilynet.net/?The-LilyPond-Report-17#forum560&quot; class='spip_in'&gt;comment&lt;/a&gt;, although we still didn't know (other than through whois) who was behind it. Learning about it made LilyPond project manager Graham Percival &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2010-03/msg00168.html&quot; class='spip_out' rel='external'&gt;unusually enthusiastic&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;p&gt;&lt;i&gt;Interesting! Never heard of it before.&lt;/i&gt; [...] &lt;i&gt;I have to admit that at first I was expecting tons of advertizing (I have a nasty mind), but it all looks legit. The &quot;clickable notation reference&quot; is a neat idea.&lt;/i&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;(Evidently, Graham's usual grumpy self took over soon thereafter, as he &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-user/2010-03/msg00243.html&quot; class='spip_out' rel='external'&gt;roasted&lt;/a&gt; &quot;Mr. WebLily&quot; for his alleged disregard of security risks. [Update: he then &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-user/2010-03/msg00246.html&quot; class='spip_out' rel='external'&gt;apologized&lt;/a&gt;, but his concerns were nothing if not legitimate in the first place.])&lt;/p&gt; &lt;p&gt;&quot;Mr. WebLily&quot; soon appeared to have a name, as he not only maintained his WebLily service but also launched a new, more commercial service: &lt;a href=&quot;http://scorio.com/&quot; class='spip_out' rel='external'&gt;Scorio.com&lt;/a&gt; &#8212; although &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-user/2010-12/msg00224.html&quot; class='spip_out' rel='external'&gt;LilyPond isn't credited prominently&lt;/a&gt; on this new website. &lt;strong&gt;Johannes Feulner&lt;/strong&gt; &#8212; founder of WebLily and Scorio &#8212; also happens to be one of our readers, and he generously sent us the following contribution more than a year ago.&lt;/p&gt; &lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_replie blocs_click'&gt;&lt;a href='javascript:;'&gt;&lt;strong&gt;Scorio.com &#8212; An online WYSIWYG editor for LilyPond?&lt;/strong&gt;
&lt;br /&gt;&lt;i&gt;by Johannes Feulner&lt;/i&gt;&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination blocs_invisible blocs_slide'&gt;
&lt;p&gt;&lt;small&gt;&lt;i&gt;Creative Commons 3.0 BY-SA
&lt;br /&gt;Contact: johannes.feulner[at]scorio[&lt;i&gt;dot&lt;/i&gt;]com&lt;/i&gt;&lt;/small&gt;&lt;/p&gt; &lt;blockquote class=&quot;spip&quot;&gt;
&lt;p&gt;
&lt;a href=&quot;http://en.wikipedia.org/wiki/WYSIWYG&quot; class='spip_out' rel='external'&gt;WYSIWYG&lt;/a&gt;? &#8220;Impossible&#8221;, &#8220;stupid idea&#8221;, &#8220;out of scope&#8221; might well be the first reaction of a passionate LilyPond user and LilyPond lover. However at &lt;a href=&quot;http://scorio.com/&quot; class='spip_out' rel='external'&gt;scorio.com&lt;/a&gt; we tried to tackle the task and you are invited to see how we did.&lt;/p&gt; &lt;p&gt;scorio.com is a website where you can write, edit, publish and share sheet music right from within your web browser. No software installation is needed, it's all HTML running in every browser. The music is engraved by LilyPond, giving you sheet music of its wonderful quality and beauty. Nonetheless, the editor comes with a graphical user interface completely hiding the user from the intricacies and subtle nuances of LilyPond's mighty input language (Ly code).&lt;/p&gt; &lt;p&gt;In this way scorio.com makes LilyPond available to musicians who do not have programming skills or lack the time to acquire them. scorio.com is well suited for beginners and learners. But being a work in progress you may expect it to cover increasingly larger subsets of LilyPond's endless possibilities to make it a useful tool for all sheet music writing musicians.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;How it all began&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;In early 2009 I became excited about GWT, the &lt;a href=&quot;http://code.google.com/webtoolkit/&quot; class='spip_out' rel='external'&gt;Google Web Toolkit&lt;/a&gt; to write &lt;a href=&quot;http://en.wikipedia.org/wiki/Ajax_%28programming%29&quot; class='spip_out' rel='external'&gt;AJAX&lt;/a&gt;-Applications for web browsers in plain Java. The promises were many: No pains with JavaScript to produce effects like Drag&amp;Drop and other AJAX effects, simple server side integration, Eclipse as development tool allowing to debug through client and server side in a single session, runs in any browser, multi language support and many more. Even though I had studied computer science, I've chosen the management track and had not written a line of code for many years. Thus the promise of ease of development was especially alluring to me. And it proved to be true.&lt;/p&gt; &lt;p&gt;Since I am also a professionally trained organist with great love for classical music (my top internet radio station is of course &lt;a href=&quot;http://www.organlive.com/&quot; class='spip_url spip_out' rel='external'&gt;http://www.organlive.com&lt;/a&gt;) I came up with the wild idea of writing a score writer for the internet as a demo project. Wading through Google's search I got the impression, that something like this was not yet available on the net. Only later I learned about &lt;a href=&quot;http://www.noteflight.com/&quot; class='spip_out' rel='external'&gt;Noteflight&lt;/a&gt;, a Flash based score writer, which might already have been in existence at that time.&lt;/p&gt; &lt;p&gt;But the best thing I found during my search was LilyPond. I was impressed and excited about this marvellous piece of software and wondered why I hadn't found it before, because I really do not like the various proprietary &#8220;market leading&#8221; score writers I had been using. Their user interfaces are weird, the music layout they produce has quite some potential for improvement.&lt;/p&gt; &lt;p&gt;So my first idea was to write a web based graphical user interface as a frontend to LilyPond. I decided to stick to GWT (all Java based) and to run LilyPond on the server through system calls from my Java servlet.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;The precursor: WebLily.net&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;After visiting the Google IO 2009 conference I was full of enthusiasm, filled up with positive energy and started to hack right away in evenings and on weekends. This project became &lt;a href=&quot;http://weblily.net/&quot; class='spip_out' rel='external'&gt;WebLily.net&lt;/a&gt;, a website where you have an input window to type in your LilyPond code (things like &lt;code class='spip_code' dir='ltr'&gt;{ c e g }&lt;/code&gt;) and an output window where the graphical result is instantly shown in HTML.&lt;/p&gt; &lt;p&gt;This is pretty much a light version of the &lt;a href=&quot;http://frescobaldi.org/&quot; class='spip_out' rel='external'&gt;Frescobaldi&lt;/a&gt; editor. However, the advantage is that the score display is updated while you are typing your Ly code. This is extremely useful for beginners starting to learn the syntax. The type-translate-review cycle is extremely fast for small examples.&lt;/p&gt; &lt;dl class='spip_document_461 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L500xH376/weblily-44a9b.png' width='500' height='376' alt='PNG - 70.4 kb' style='height:376px;width:500px;' /&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-461 spip_doc_titre' style='width:350px;'&gt;&lt;strong&gt;Screenshot of WebLily.net with textual input (left) and instant HTML rendering (right)&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;As a special feature I added the Clickable LilyPond Reference. Whenever you find an example in the reference you can simply click onto the example to start up WebLily's editor. This is very helpful, when you learn about the various features of LilyPond and want to try them out right away.&lt;/p&gt; &lt;p&gt;Another useful feature is that you can click onto a note head and the position of that note head is marked in the Ly code window.
To produce the HTML-output I wrote an HTML backend to LilyPond. See below for technical details.&lt;/p&gt; &lt;p&gt;Even though it works quite well and WebLily.net has attracted some actual users, I was not really satisfied. Because what I've really wanted in the first place, is an interactive Editor where I could change the pitch of a note by drag&amp;drop and insert new notes by clicking on them.
Doing drag&amp;drop using GWT is not that difficult to realize. However, when you stop the drag&amp;drop operation you must determine the note affected, compute the new pitch and then update the Ly code. WebLily.net uses the point-and-click feature of LilyPond which passes for most graphical objects their line number and character position into the backend. So when I click on a note head I can actually know where this note head has been defined e.g. in line 4 starting at character position 9.&lt;/p&gt; &lt;p&gt;The limitation of this approach is the difficulty to insert the edited changes back into the Ly code. A note head may be a single note (&lt;code class='spip_code' dir='ltr'&gt;c&lt;/code&gt;), part of a chord &lt;code class='spip_code' dir='ltr'&gt;&lt;a c d&gt;&lt;/code&gt;, durations and octaves may be involved (&lt;code class='spip_code' dir='ltr'&gt;c'2&lt;/code&gt;, &lt;code class='spip_code' dir='ltr'&gt;&lt;a,, c d'&gt;4&lt;/code&gt;), there may be trailing parameters (&lt;code class='spip_code' dir='ltr'&gt;c-.\ff&lt;/code&gt;), there may be tweaks (&lt;code class='spip_code' dir='ltr'&gt;&lt;a \tweak #'color #red e d&gt;4&lt;/code&gt;) and due to the expressional power of LilyPond's syntax (including Scheme expressions) there is no easy way to handle arbitrary inputs. This approach might work for a well defined subset of LilyPond. But then you loose many of the syntactic possibilities and advantages. So I stopped at this point and started thinking of a different solution to this problem.&lt;/p&gt; &lt;p&gt;WebLily.net is free to use for all friends of LilyPond and I want to keep it that way as long as I can pay for the server. You may of course support the project by clicking on the wonderful ads beautifying the website.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;The real thing: scorio.com&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;The WebLily.net project convinced me that an HTML-based WYSIWYG editor can be built but that it will take much more effort to do so. I got into contact with Karin H&#246;thker and Dominik H&#246;rnel, both experienced software developers with a strong background in music. We had worked together for several years at Karlsruhe University in a research project on Informational Structures in Music. We made neural networks learn how to create music in the styles of historic composers such as J.S. Bach and others. But then we lost sight of each other. Both were excited about doing a music related project and so we started building scorio.com.&lt;/p&gt; &lt;p&gt;Now our goal is to create a place on the web where musicians can write and edit music in an interactive score writer, publish their works if they want to and to provide a search engine to find the sheet music others have written. All you should need for this is a computer and a web browser. This portal has started in November 2010 with a first, still limited version of the score writer (note editor).&lt;/p&gt; &lt;p&gt;Having learnt from WebLily we decided to use LilyPond as engraver (layout engine) but not to use Ly code as internal representation for our scores. We rather selected MusicXML as internal format. Finding, inserting, updating notes is much easier with MusicXML, since Java provides powerful tools to read, write and modify XML-Documents and MusicXML comes with a (mostly) well defined semantic.&lt;/p&gt; &lt;dl class='spip_document_462 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L500xH434/scorio-35504.png' width='500' height='434' alt='PNG - 65.9 kb' style='height:434px;width:500px;' /&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-462 spip_doc_titre' style='width:350px;'&gt;&lt;strong&gt;Screenshot of scorio.com's note editor&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;So on every click you do on scorio.com we update our MusicXML model (e.g. change a pitch), convert the score into Ly code, run LilyPond with our HTML backend on that code and then display the HTML output as update to the user. Even though this seems a lot to do on each single mouse click the performance is not all that bad (see below). Where WebLily attaches line numbers and character offsets to HTML images, scorio.com uses references into the XML-structure to backlink the HTML output to its corresponding input.&lt;/p&gt; &lt;p&gt;On scorio.com you can produce scores in perfect LilyPond quality. However, there is no way for direct input of Ly code, but you can use the constantly growing (but still limited) repertoire of musical symbols the note editor exposes through its graphical interface. Wouldn't it be nice if someone came up with a &lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=665&quot; class='spip_out' rel='external'&gt;ly2musicxml converter&lt;/a&gt;?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Is scorio.com a WYSIWYG editor for LilyPond?&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;The answer is yes and no, depending on how you look at it. The proper answer might be this: scorio.com offers a WYSIWYG note editor running in your browser using LilyPond to engrave your music. But scorio.com is not a WYSIWYG editor where you could start with an arbitrary piece of Ly code and then edit that code in a meaningful way. Currently I do not even foresee a way to import Ly code into scorio.com. The other way around however, i.e. exporting a score as Ly code is perfectly possible. If our users demand it we'll try to get this and other wonderful features onto our roadmap.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Some technical details&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;For tech savy readers I try to give some technical insights of how scorio.com has been realized.&lt;/p&gt; &lt;p&gt;&lt;i&gt;HTML backend&lt;/i&gt;
&lt;br /&gt;One major task to do was writing an HTML backend to LilyPond. Looking into the socket backend I got an idea how one might do that. A LilyPond backend gets a bunch of so called Grobs (Graphical Objects). Each of these Grobs consists of one or more graphical elements that have to be placed at a certain position onto the page. The elements are of various types such as line (e.g. staffs), polygon (e.g. beams), bezier-sandwich (e.g. slurs), utf-8 string (e.g. composers' name), named-glyph (music symbols such as Clefs and note heads) and some more.&lt;/p&gt; &lt;p&gt;How might one put this into HTML? Our goal is to produce a solution that will run in any browser (including Microsoft's Internet Explorer and the iPad) without the need to install any special add-ons or plugins. I pondered different approaches such as Scaled Vector Graphics (SVG), HTML5, Flash and others. SVG was and is my favourite. But I wanted a solution working with any browser including Internet Explorer 7 and recently the iPad. IE7 and IE8 do not support SVG nor HTML5 (this is now changing with IE9) and the iPAD doesn't support Flash. Since all those wonderful technologies are not available I decided on using HTML images. Not really rocket science, but it works.&lt;/p&gt; &lt;dl class='spip_document_463 spip_documents spip_documents_right' style='float:right;width:120px;'&gt;
&lt;dt&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L113xH91/output-b3963.png' width='113' height='91' alt='PNG - 2.8 kb' style='height:91px;width:113px;' /&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-463 spip_doc_titre' style='width:120px;'&gt;&lt;strong&gt;Graphical output of the simple Ly code &lt;code class='spip_code' dir='ltr'&gt;{ c'}&lt;/code&gt;&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;The simple Ly code &lt;code class='spip_code' dir='ltr'&gt;{ c' }&lt;/code&gt; produces the following Grob elements:&lt;/p&gt; &lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; utf-8-string &#8220; &#8220; outside a Grob, don't really know what that one is for
ledger line spanner with one line element for the note's ledger line&lt;/li&gt;&lt;li&gt; staff symbol with 5 line elements&lt;/li&gt;&lt;li&gt; time signature with the music symbol &#8220;c&#8221; for 4/4&lt;/li&gt;&lt;li&gt; clef with the music symbol for the violin clef&lt;/li&gt;&lt;li&gt; note head with the music symbol for a note head&lt;/li&gt;&lt;li&gt; utf-8-string &#8220;Music engraving by LilyPond &#8230;&#8221; for the tag line&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Since HTML supports positioning objects at absolute pixel positions, I decided to create a div for every Grob element, i.e. every line, utf-8-string, music symbol and so on. The element divs are positioned absolutely according to the Grob's coordinates. Since I want to have an HTML rendering close to the LilyPond print out, I decided to produce an HTML image for every Grob element in perfect LilyPond quality.&lt;/p&gt; &lt;p&gt;A note head may serve as an example. The resulting HTML code is an absolutely positioned div (left/top) and within that div sits the note head as an HTML image. The title attribute holds the Ly code position (the note head is defined in line 1 at position 2) that will be displayed as tooltip when hovering with the mouse over the Grob element's HTML image. Note: Unfortunately not all Grobs do come with a source position, e.g. clefs.&lt;/p&gt; &lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;&lt;div style=&quot;position: absolute; left: 229px; top: 150px;&quot; title=&#8221;Note Head at 1:2&#8221; &gt;&lt;br /&gt; &lt;img style=&quot;position: absolute; left: 0px; top: -5px;&quot;&lt;br /&gt; src=&quot;http://weblily.net/app/service/Engraver&lt;br /&gt; ?gt=char&amp;ff=Emmentaler&amp;fs=40&amp;ut=57654&amp;co=0x000000&quot;&gt;&lt;br /&gt; &lt;/div&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;As can be seen from code the image is not a static image but it's a call to an engraver servlet that will produce the image on demand. The parameters instruct the engraver servlet to produce a single character (gt=char) from the font Emmentaler (ff=Ementaler) at font size 40 (fs=40). The character to be produced has the Unicode code point 57769 (ut=57769) and the color is black (co=0x00000).&lt;/p&gt; &lt;p&gt;The conversion from LilyPond's coordinates to HTML pixels is straight forward&lt;/p&gt; &lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; x-html-pixels = 10 * x-LilyPond-units&lt;/li&gt;&lt;li&gt; y-html-pixels = -10 * y-LilyPond-units (yes, y-directions differ)&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;One of the (unsolvable?) problems arising is that LilyPond uses floating point numbers for its coordinates, but in browsers we only have pixels at integer coordinates. This inevitably leads to rounding errors. Some times a beam and a note stem or a note stem and a note head do not fit tightly and you may note one pixel holes where they shouldn't be.&lt;/p&gt; &lt;p&gt;Another (solvable) problem is the positioning of characters and strings. As you note in the above example the image has a top position of -5px. Why? The reason is that LilyPond quite naturally uses the base line as a reference point. The div is positioned at the characters baseline. However, HTML images are positioned with respect to their upper left corner. There is no notion of a baseline in HTML. Since the note head rises 5 pixels above its base line (this is called the ascent of a character) we must move the image's position up north by that amount. Unfortunately the ascent information is not present in LilyPond's utf-8 callback for backends. So I had to add an additional parameter. This is one of the very few changes I had to apply to LilyPond's C/C++ source code.&lt;/p&gt; &lt;p&gt;Since every Grob element is an HTML image it is easy to use GWT to setup HTML callback functions to handle mouse events, to implement drag&amp;drop, to insert new notes and to select/deselect notes for editor operations.&lt;/p&gt; &lt;p&gt;&lt;i&gt;Performance&lt;/i&gt;
&lt;br /&gt;When using an interactive note editor such as scorio.com every click with the mouse may change the score's layout completely. Think about adding or deleting a note in the middle of your score or changing the time signature. Even though you may find some special cases where the effects of a click are strictly local you end up with the requirement to run LilyPond on the server for nearly each and every click. At first this sounds bizarre but after a while you get used to the thought, at least while working on little test examples. On weblily.net you can monitor the server performance in the lower right corner and see values around 0.6-0.8 seconds editing the simple above mentioned score.&lt;/p&gt; &lt;p&gt;Both project use the very same hardware: Intel XEON E5410, two cores 2.3 GHz, 1.7 GB RAM. On scorio.com some tuning efforts brought this down to 0.2-0.4 seconds.&lt;/p&gt; &lt;p&gt;But we may not forget to add network latency which easily adds 0.3 to 0.6 seconds. This isn't really snappy but since things on the web aren't that fast in many cases I think this is acceptable and makes for a good user experience.&lt;/p&gt; &lt;p&gt;(Solvable?) Problem: LilyPond's processing time grows exponentially with the size of the input score. Waiting 10 seconds for an update after clicking into a three page score is not really acceptable. So we had to resort to partial updates, processing just one system at a time. Thanks to LilyPond's skipTypesetting we found a good way of implementing that. So on scorio.com you will note, that after edit operations the following systems are grayed out, since only the current system is updated and their layout may have become invalid. Click on the gray area for a full score update when you are ready to update the page.&lt;/p&gt; &lt;p&gt;I have great hopes into LilyPond moving to Guile 2.0 which has a built-in compiler for Scheme code. But I am aware that this will make scorio.com snappier (single systems will engrave faster) but it will not solve the problem with larger scores. Maybe some reengineering of LilyPond could be done to provide incremental updates? I'd be happy to get into a discussion about that.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Links&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://www.lilypond.org/&quot; class='spip_url spip_out' rel='external'&gt;http://www.lilypond.org/&lt;/a&gt;
&lt;br /&gt;&lt;a href=&quot;http://www.scorio.com/&quot; class='spip_url spip_out' rel='external'&gt;http://www.scorio.com/&lt;/a&gt;
&lt;br /&gt;&lt;a href=&quot;http://www.weblily.net/&quot; class='spip_url spip_out' rel='external'&gt;http://www.weblily.net/&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Thanks to Johannes for this contribution!&lt;/p&gt; &lt;p&gt;So, what's coming next for &quot;cloud-oriented&quot; LilyPond applications? It certainly is too early to tell, but if history has taught us anything, it's that the LilyPond community closely and strikingly follows the general trends in computing and software development (both Free and proprietary), so we can safely assume that online music interfaces aren't going anywhere anytime soon. &#8212; A trend that's also taken by our &lt;a href=&quot;http://www.screenr.com/3L0&quot; class='spip_out' rel='external'&gt;friends&lt;/a&gt; at &lt;a href=&quot;http://musescore.com/sheetmusic&quot; class='spip_out' rel='external'&gt;MuseScore&lt;/a&gt;. On the WYSIWYG side, I've also noticed with great interest that &lt;strong&gt;Jan Nieuwenhuizen&lt;/strong&gt;'s &lt;a href=&quot;http://lilypond.org/schikkers-list/&quot; class='spip_out' rel='external'&gt;Schikkers List&lt;/a&gt;, which we &lt;a href=&quot;http://news.lilynet.net/?The-LilyPond-Report-22#lilypond_s_companions_1&quot; class='spip_in'&gt;introduced last year&lt;/a&gt;, is based on the GTK3 toolkit, that has an &lt;a href=&quot;http://blogs.gnome.org/alexl/2011/03/15/gtk-html-backend-update/&quot; class='spip_out' rel='external'&gt;HTML canvas backend&lt;/a&gt;. Just sayin'.&lt;/p&gt; &lt;p&gt;Another point that shouldn't be overlooked, is of an ethical matter. Free software advocates have &lt;a href=&quot;http://www.gnu.org/philosophy/who-does-that-server-really-serve.html&quot; class='spip_out' rel='external'&gt;been&lt;/a&gt; &lt;a href=&quot;http://www.guardian.co.uk/technology/2008/sep/29/cloud.computing.richard.stallman&quot; class='spip_out' rel='external'&gt;warning&lt;/a&gt; about the dangers of &quot;cloud computing&quot; and entrusting any third-party (particularly of a private/commercial nature, with the degree of instability and unforeseen policy changes it may imply) with your data. Granted, a music score hardly contains as much personal confidential information as, say, your email account; nevertheless I for one wouldn't ever store my music scores on a webserver that isn't owned by me or a non-profit community I know and trust &#8212; not without a solid local backup, at least.&lt;/p&gt; &lt;p&gt;As I said above, a point certainly can be made that such Web-applications provide an excellent introduction to GNU LilyPond, and a great way of working together on music scores. That is, assuming people &lt;i&gt;know&lt;/i&gt; the app they're using is powered by LilyPond: while it &lt;i&gt;is&lt;/i&gt; mentioned on scorio (albeit not prominently), I couldn't find any mention whatsoever on &lt;a href=&quot;http://etudeapp.com/&quot; class='spip_out' rel='external'&gt;EtudeApp.com&lt;/a&gt;. If anything, we must stay vigilant and make sure LilyPond remains freely and easily accessible other than through proprietary overlays; we also should encourage developers of such web applications to make use of &lt;a href=&quot;http://www.gnu.org/licenses/agpl.html&quot; class='spip_out' rel='external'&gt;Free licenses&lt;/a&gt; whenever they can, knowing that it won't drive people away but on the contrary gain support amongst Free software enthusiasts and the LilyPond community at large!&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;an_addendum_to_lilypond_report_23&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;An addendum to &lt;i&gt;LilyPond Report&lt;/i&gt; #23&lt;/h3&gt;
&lt;p&gt;In our &lt;a href=&quot;http://news.lilynet.net/?The-LilyPond-Report-23&quot; class='spip_in'&gt;previous installment&lt;/a&gt;, we mentioned that some rather simple syntax had been deprecated for several years. However, it turns our that current developments allowed for a further simplification of the LilyPond example presented in the article &quot;&lt;i&gt;Prelude #1 in Scheme&lt;/i&gt;&quot;. Check it out under &lt;a href=&quot;http://news.lilynet.net/?The-LilyPond-Report-23#post_scriptum_prelude_1_in_scheme&quot; class='spip_in'&gt;this link&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;span class='spip_document_81 spip_documents spip_documents_center'&gt;
&lt;img src='http://news.lilynet.net/local/cache-vignettes/L125xH100/lesite-d163a.png' width='125' height='100' alt=&quot;&quot; style='height:100px;width:125px;' /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;That concludes the twentyfourth installment of the &lt;i&gt;LilyPond Report&lt;/i&gt;. Our special guest next month will be &lt;strong&gt;Janek Warcho&#322;&lt;/strong&gt;, a young, enthusiastic LilyPond contributor who'll share with us his passion and ideas. Stay tuned!&lt;/p&gt; &lt;p&gt;Cheers,
&lt;br /&gt;Graham Percival, David Kastrup &amp; Valentin Villenave.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="en">
		<title>The LilyPond Report #23</title>
		<link>http://news.lilynet.net/?The-LilyPond-Report-23</link>
		<guid isPermaLink="true">http://news.lilynet.net/?The-LilyPond-Report-23</guid>
		<dc:date>2012-01-20T17:11:43Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>en</dc:language>
		<dc:creator>David Kastrup, Valentin Villenave</dc:creator>



		<description>&lt;p&gt;Welcome to this twenty-third issue of the &lt;i&gt;LilyPond Report&lt;/i&gt;!&lt;/p&gt;

-
&lt;a href="http://news.lilynet.net/?-LilyPond-Report-" rel="directory"&gt;LilyPond Report&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;This short, informal opinion column is about the &lt;a href=&quot;http://lilypond.org/&quot; class='spip_out' rel='external'&gt;GNU LilyPond&lt;/a&gt; project: its team, its world, its community. It is &lt;i&gt;not&lt;/i&gt;, however, an official &lt;a href=&quot;http://lilypond.org/doc&quot; class='spip_out' rel='external'&gt;documentation resource&lt;/a&gt;. Reader comments welcome; reader &lt;a href=&quot;http://news.lilynet.net/?_LilyPond-Report-Editors_&quot; class='spip_in'&gt;contributions&lt;/a&gt; even more appreciated!&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;div class=&quot;cs_sommaire cs_sommaire_avec_fond&quot; id=&quot;outil_sommaire&quot;&gt; &lt;div class=&quot;cs_sommaire_inner&quot;&gt; &lt;div class=&quot;cs_sommaire_titre_avec_fond&quot;&gt; Table of contents &lt;/div&gt; &lt;ul&gt; &lt;li&gt;&lt;a title=&quot;Editorial&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#editorial&quot;&gt;Editorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Release news&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#release_news&quot;&gt;Release news&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;What&amp;#39;s up with LilyPond?&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#what_s_up_with_lilypond&quot;&gt;What's up with LilyPond?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;An Interview With Mike Solomon&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#an_interview_with_mike_solomon&quot;&gt;An Interview With Mike Solomon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Feature story: Prelude #1 in Scheme&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#feature_story_prelude_1_in_scheme&quot;&gt;Feature story: Prelude #1 in Scheme&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Post-Scriptum: Prelude #1 in Scheme&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#post_scriptum_prelude_1_in_scheme&quot;&gt;Post-Scriptum: Prelude #1 in Scheme&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Bug Report of the Report&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#bug_report_of_the_report&quot;&gt;Bug Report of the Report&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; &lt;/div&gt;&lt;p&gt;Greetings everybody, and welcome to this twenty-third issue of the &lt;i&gt;LilyPond Report&lt;/i&gt;!&lt;/p&gt; &lt;p&gt;Another year, another &lt;i&gt;Report&lt;/i&gt;. This month we're welcoming new &lt;i&gt;LilyPond Report&lt;/i&gt; editor David Kastrup, who (in addition to being a talented developer) has been busy writing about some of the new, awesome features recently added to LilyPond... And speaking of awesomeness, don't miss his interview with composer/contributor Mike Solomon, whose work never ceases to amaze!
&lt;br /&gt;As always, you can post your comments at the bottom of the page, or &lt;a href=&quot;http://news.lilynet.net/?_LilyPond-Report-Editors_&quot; class='spip_in'&gt;send your contributions&lt;/a&gt; to the &lt;i&gt;LilyPond Report&lt;/i&gt;'s next issues.&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;editorial&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Editorial&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by David Kastrup &amp; Valentin Villenave.&lt;/i&gt;&lt;/p&gt; &lt;p&gt;Greetings everybody, and a happy new year to all!&lt;/p&gt; &lt;p&gt;Yes, it's that time again, when the &lt;i&gt;Report&lt;/i&gt; raises back from the dead and its editors make plans to keep it alive a bit further. This year we're back with a slightly larger team, since GNU veteran programmer David Kastrup has joined us to make the Report even deeper and more interesting!&lt;/p&gt; &lt;p&gt;That, however, will obviously not be enough on the long run. Thus, consider this editorial a call to arms: more than ever, &lt;strong&gt;the &lt;i&gt;LilyPond Report&lt;/i&gt; needs more contributions&lt;/strong&gt; from its readers! User testimonies, programmer complaints, nice stories (no matter how fluffy or useless), benchmarks and tests, anything that can make our community a more pleasant or a more efficient place. We're particularly interested, of course, in hearing from the various team involved: translators, bug squad, programmers, documentation writers, this &lt;i&gt;Report&lt;/i&gt; is yours!&lt;/p&gt; &lt;p&gt;Not only is this (sort of) monthly newsletter a fun way to report the overall shape of the LilyPond project to the general public; it's also, for our community itself, a place of choice to call attention to a particular point or problem, that otherwise might get lost in the endlessly-flowing mailing lists.&lt;/p&gt; &lt;p&gt;For example, there may be a need to regain some interest in our reviewing procedures: many pretty good LilyPond programmers don't find the time to take part in reviewing patches. We need to make sure that what ends up in LilyPond can be used and understood by more than just its original author &#8212; which may not happen when things are left underdocumented, or when the contributor, coming from a music background, does not obey basic programming principles. Another matter in need of work and attention is our infrastructure: Graham Percival has recently posted a &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2012-01/msg00583.html&quot; class='spip_out' rel='external'&gt;call&lt;/a&gt; for more tasks to be automated, in order to make the &quot;routine maintenance&quot; less unpleasant and frustrating.&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;release_news&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Release news&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by Valentin Villenave&lt;/i&gt;&lt;/p&gt; &lt;dl class='spip_document_453 spip_documents spip_documents_right' style='float:right;width:160px;'&gt;
&lt;dt&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L160xH96/double-lily-bc04-c3e11.png' width='160' height='96' alt='PNG - 50.5 kb' style='height:96px;width:160px;' /&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;We are now at version &lt;code class='spip_code' dir='ltr'&gt;2.15.26&lt;/code&gt; (the previous unstable version &lt;code class='spip_code' dir='ltr'&gt;2.15.25&lt;/code&gt; having been skipped due to build problems). This development release contains the usual number of bugfixes, and should in particular bring happiness to Microsoft Windows users, who have been previously unable to run &lt;a href=&quot;http://lilypond.org/doc/v2.15/Documentation/usage/lilypond_002dbook&quot; class='spip_out' rel='external'&gt;&lt;code class='spip_code' dir='ltr'&gt;lilypond-book&lt;/code&gt;&lt;/a&gt; due to a particularly annoying &lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=1933&quot; class='spip_out' rel='external'&gt;bug&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Please note, however, that a few &lt;a href=&quot;http://code.google.com/p/lilypond/issues/list?can=2&amp;q=Type%3DCritical&quot; class='spip_out' rel='external'&gt;critical bugs&lt;/a&gt; remain; this is but a &lt;i&gt;development version&lt;/i&gt; &#8212; not even a release candidate &#8212; and ordinary users should preferably use the &lt;a href=&quot;http://lilypond.org/download.html&quot; class='spip_out' rel='external'&gt;stable&lt;/a&gt; &lt;code class='spip_code' dir='ltr'&gt;2.14&lt;/code&gt; version.&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;what_s_up_with_lilypond&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;What's up with LilyPond?&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by Valentin Villenave, David Kastup &amp; Graham Percival&lt;/i&gt;&lt;/p&gt; &lt;p&gt;It has been a long time since the last Report has been published, so it is not surprising that a number of things have happened. In the free software tradition of scratch-your-itch, a few new contributors have appeared and worked on their favorite problems, but there has
been less development activity these past few months than in the summer. Part of the reason might be that new procedures for committing changes have been tested and put into place, and occasional contributors might feel hesitant about what this means for them. In a nutshell, direct commits to &lt;i&gt;master&lt;/i&gt; are discouraged; instead you should push to the &lt;i&gt;staging&lt;/i&gt; branch. After automated testing, the staging branch will get committed to master automatically. The benefit of this procedure is that the little accidents that tended to make master unusable several times a month can be avoided.&lt;/p&gt; &lt;p&gt;Seasoned developers might feel insecure about what procedures to follow. But those are actually simple. Check out the &lt;a href=&quot;http://lilypond.org/doc/latest/Documentation/contributor/summary-for-experienced-developers&quot; class='spip_out' rel='external'&gt;&lt;strong&gt;summary&lt;/strong&gt; for experienced developers&lt;/a&gt;, a very short but important document that should, alongside with the longer &lt;a href=&quot;http://lilypond.org/doc/latest/Documentation/contributor/&quot; class='spip_out' rel='external'&gt;&lt;i&gt;Contributor's Guide&lt;/i&gt;&lt;/a&gt;, tell you all there is to know with regard to our project development and current organization.&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;an_interview_with_mike_solomon&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;An Interview With Mike Solomon&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by David Kastrup&lt;/i&gt;&lt;/p&gt; &lt;p&gt;&lt;i&gt;Our special guest this month is &lt;a href=&quot;http://www.apollinemike.com/mike/&quot; class='spip_out' rel='external'&gt;Mike Solomon&lt;/a&gt;, a valuable LilyPond contributor and a rather unpredictable composer; after having studied and worked in California and Florida, he has been living in France for a couple of years. Our editor David Kastrup had this interview with him via email in December 2011.&lt;/i&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;The LilyPond Report&lt;/strong&gt; &#8212; Hello Mike, thanks for agreeing to do this interview with the &lt;i&gt;LilyPond Report&lt;/i&gt;. You have become one of the more prolific contributors to LilyPond recently, and that of course piques our readers' interest. Of course, we can hardly avoid talking LilyPond, but let's begin with the big picture: How would you describe yourself when music is not a topic?&lt;/p&gt;
&lt;dl class='spip_document_448 spip_documents spip_documents_right' style='float:right;width:200px;'&gt;
&lt;dt&gt;&lt;a href=&quot;http://www.apollinemike.com/mike/manpile.jpg&quot; title='JPEG - 65.1 kb' type=&quot;image/jpeg&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L200xH150/manpilejpg-eeceb-4da18-37025.jpg' width='200' height='150' alt='JPEG - 65.1 kb' style='height:150px;width:200px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-448 spip_doc_titre' style='width:200px;'&gt;&lt;strong&gt;A portrait of Mike Solomon&lt;/strong&gt;&lt;/dt&gt;
&lt;dd class='crayon document-descriptif-448 spip_doc_descriptif' style='width:200px;'&gt;&quot;I'm the one seated on the cellist, facing backwards.&quot;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;&lt;strong&gt;Mike Solomon&lt;/strong&gt; &#8212; That limits me to the 3% of my life that is not musical, which is mostly devoted to comedy writing and &lt;a href=&quot;http://en.wikipedia.org/wiki/New_York_Jets&quot; class='spip_out' rel='external'&gt;New York Jets&lt;/a&gt; football.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;L.R.&lt;/strong&gt; &#8212; Interesting; any links we could share?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Mike&lt;/strong&gt; &#8212; There's not &lt;a href=&quot;http://rarb.org/reviews/532.html&quot; class='spip_out' rel='external'&gt;that&lt;/a&gt; &lt;a href=&quot;http://ramshead.stanford.edu/archives/gaieties/05/history.htm&quot; class='spip_out' rel='external'&gt;much&lt;/a&gt;... But otherwise, comedy is a big part of my work, all of which is downloadable on &lt;a href=&quot;http://www.apollinemike.com/mike&quot; class='spip_out' rel='external'&gt;my personal website&lt;/a&gt;.
&lt;br /&gt;As for the Jets, there's not much to link to - I am a die hard fan and I try to watch the games whenever I can.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;L.R.&lt;/strong&gt; &#8212; A quick back-of-the-envelope calculation makes me guess that you spent about 9 months on those endeavors. At what time of your life would you say that music did become a topic?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Mike&lt;/strong&gt; &#8212; Rumor has it that my father gave me pre-natal piano lessons.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;L.R.&lt;/strong&gt; &#8212; Wouldn't your mother have preferred a smaller instrument for your first home teaching lessons? What would such a lesson have looked like?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Mike&lt;/strong&gt; &#8212; Well, that's a picture you can't post on this website...&lt;/p&gt; &lt;p&gt;&lt;strong&gt;L.R.&lt;/strong&gt; &#8212; Speaking of which, would you say that the photograph you sent me (thereabove) is typical for a gig of yours?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Mike&lt;/strong&gt; &#8212; It's tame.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;L.R.&lt;/strong&gt; &#8212; What instruments do you play yourself, and when did you start with them? What was it that made each instrument important for you to learn?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Mike&lt;/strong&gt; &#8212; I have played piano for 29 years and have sung for 23, in various ensembles, shows and solo gigs in America and Europe.&lt;/p&gt;
&lt;dl class='spip_document_450 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;a href=&quot;http://news.lilynet.net/IMG/jpg/zauberbuch1.jpg&quot; title='JPEG - 55.5 kb' type=&quot;image/jpeg&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L200xH122/zauberbuch1-5e633-6722e.jpg' width='200' height='122' alt='JPEG - 55.5 kb' style='height:122px;width:200px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-450 spip_doc_titre' style='width:200px;'&gt;&lt;strong&gt;Das Zauberbuch (excerpt)&lt;/strong&gt;&lt;/dt&gt;
&lt;dd class='crayon document-descriptif-450 spip_doc_descriptif' style='width:200px;'&gt;M. Solomon, 2011 (&lt;a href=&quot;http://www.apollinemike.com/scores/zauberbuch.pdf&quot; class='spip_out' rel='external'&gt;Original file&lt;/a&gt;.) CC by-sa.
&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;&lt;strong&gt;L.R.&lt;/strong&gt; &#8212; Looking at the information so far, that would have made you start singing at the age of 5 or 6...&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Mike&lt;/strong&gt; &#8212; Piano was never really a choice - it was just always kinda around. I am not a very good player, but it is tough for me to conceive of my life without the piano - it's where my hands feel most at home.
&lt;br /&gt;Singing was thanks to the American public school system: the best for music education in the world.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;L.R.&lt;/strong&gt; &#8212; Considering the music education I received in Germany (my &quot;Early Musical Education&quot; classes started before primary school so that I actually learnt sight reading earlier than reading), the assertiveness of this statement rather piques my curiosity.
&lt;br /&gt;In what respects would you consider the American school system to have given you a better musical education than that you see pupils in France getting?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Mike&lt;/strong&gt; &#8212; I can't speak for how music education is done in 2011, but the extent of most French twenty-somethings' musical education was learning to play the flute for a couple years unless their parents enrolled them in a conservatory. Several localities have gone well beyond this, and I have the good fortune of working for one of them (Dunkirk) that is great about bringing music into the public schools.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;L.R.&lt;/strong&gt; &#8212; Oh, and of course a question that every artist (and programmer of free software) can't avoid hearing occasionally: is that how you make a living?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Mike&lt;/strong&gt; &#8212; Yes, and every score that has been part of the making of this living has been typeset using LilyPond.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;L.R.&lt;/strong&gt; &#8212; Looking at examples of your scores, one gets the impression that you focus on different things than one would usually expect from composers (I'd actually say that your code exhibits a similar style). Putting this focus to paper would, for that reason, appear to favor tools that have not specialized too much on standard tasks.
&lt;br /&gt;Can you tell us when LilyPond caught your interest, and what it was that made it appeal to you?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Mike&lt;/strong&gt; &#8212; It's not that I found LilyPond to be the ideal tool suited to my ideas, but rather that my manner of creating work changed as I discovered LilyPond. When I was a graduate student at the University of Florida, the bottom 2/5 of my G4 PowerBook's monitor started to randomly black out. One day, while waiting for the bus, a cyclist riding on the sidewalk hit me in the back in full stride. I had my PowerBook in my backpack and this sealed the deal for the lower 2/5 of my monitor. So, not able to use a GUI (Finale) anymore, I turned to LilyPond (with which I had until then only experimented).&lt;/p&gt; &lt;p&gt;&lt;strong&gt;L.R.&lt;/strong&gt; &#8212; It seems like the best prospects for recruiting high-profile LilyPond developers should then be in the Netherlands, the motherland of bicycling. Given your rather special requirements, what is your preferred editor for creating LilyPond scores?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Mike&lt;/strong&gt; &#8212; Joe's Own Editor. I've tried them all and got speediest fastest with joe. I've since had no need to switch.
&lt;br /&gt;Using the tool helped me realize that the true value of free software is not that it lacks a purchase price, but that it gives you the freedom to do whatever you want. So, the &quot;focus&quot; of which you speak is something that, to a large extent, exists because of LilyPond.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;L.R.&lt;/strong&gt; &#8212; That's quite an inspiring endorsement for the founding principles of Free Software.
&lt;br /&gt;What made you start working on LilyPond rather than with it in earnest?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Mike&lt;/strong&gt; &#8212; I had a gig coming up where I needed woodwind fingering charts and LilyPond didn't have them, so I made them.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;L.R.&lt;/strong&gt; &#8212; Now I am curious: what was it that you could express using a fingering chart that was not possible to convey musically using notes?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Mike&lt;/strong&gt; &#8212; Multiphonics and bisbigliandi.&lt;/p&gt; &lt;dl class='spip_document_451 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;a href=&quot;http://news.lilynet.net/IMG/jpg/granini1.jpg&quot; title='JPEG - 93.7 kb' type=&quot;image/jpeg&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L200xH96/granini1-74f1c-5b670.jpg' width='200' height='96' alt='JPEG - 93.7 kb' style='height:96px;width:200px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-451 spip_doc_titre' style='width:200px;'&gt;&lt;strong&gt;granini di luce beccucciati da uccelli di silenzio (excerpt)&lt;/strong&gt;&lt;/dt&gt;
&lt;dd class='crayon document-descriptif-451 spip_doc_descriptif' style='width:200px;'&gt;M. Solomon, 2009. (&lt;a href=&quot;http://www.apollinemike.com/scores/granini.pdf&quot; class='spip_out' rel='external'&gt;Original file&lt;/a&gt;) CC by-sa
&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;&lt;strong&gt;L.R.&lt;/strong&gt; &#8212; And you did not mention playing woodwind instruments yourself: so how have you acquired instrument-specific knowledge that is so special that its notation requires fingering charts?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Mike&lt;/strong&gt; &#8212; Lots of reading - there are lots of great texts and websites out there with audio examples that provide solid information to start you off. But multiphonics vary a great deal from player to player and from instrument to instrument and I needed a tool that could make these diagrams fast as I got feedback from performers.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;L.R.&lt;/strong&gt; &#8212; I have to add that as a violinist I found it quite liberating to work with Urtext editions of Bach's solo partitas and sonatas: while Bach did not write down fingerings, they were inherent in the notes, and reading the mind of the composer over wide passages by playing the singularly anatomically reasonable fingering was actually quite an elating experience.
&lt;br /&gt;Do you think that exercising this kind of tight control over the performer and his instrument leads to results that better match your musical vision?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Mike&lt;/strong&gt; &#8212; Absolutely. That's not to say that all forms of specificity lead to better results, but anything that gives more information about the mechanics of how to play an instrument in notationally-ambiguous situations seems almost universally welcome. Sometimes, the tight control doesn't line up with a musical vision as much as a &quot;what would happen if I...&quot; thought experiment. For example, the work &lt;a href=&quot;http://www.apollinemike.com/saint-chamond/cercles.svg&quot; class='spip_out' rel='external'&gt;six cercles for six players&lt;/a&gt; (takes a while to download - best viewed via Opera) is meant to garner a response from the performers that less precision would have a difficult time conjuring up. This work, like all of my recent work, is heavily indebted to LilyPond and other open source software.
&lt;br /&gt;The same holds true for footnotes and a few other features. Doing these things helped me to get to know certain corners of the LilyPond code base well, so each subsequent change is not that taxing. If I see a request for a feature, I can usually estimate how much time it'll take to implement and, if I have the time, I implement it.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;L.R.&lt;/strong&gt; &#8212; Would you say that the availability of LilyPond has had an influence on how you compose music? Or do create your compositions mostly independently from how you end up typesetting them? Have you changed decisions in your compositions because of typesetting problems?&lt;/p&gt; &lt;dl class='spip_document_449 spip_documents spip_documents_right' style='float:right;width:200px;'&gt;
&lt;dt&gt;&lt;a href=&quot;http://news.lilynet.net/IMG/jpg/lucky_wok1.jpg&quot; title='JPEG - 59.4 kb' type=&quot;image/jpeg&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L200xH98/lucky_wok1-1eeab-a3b7d.jpg' width='200' height='98' alt='JPEG - 59.4 kb' style='height:98px;width:200px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-449 spip_doc_titre' style='width:200px;'&gt;&lt;strong&gt;Lucky Wok (excerpt)&lt;/strong&gt;&lt;/dt&gt;
&lt;dd class='crayon document-descriptif-449 spip_doc_descriptif' style='width:200px;'&gt;Mike Solomon, 2012. This is a short preview of a yet-to-be-published score.
&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;&lt;strong&gt;Mike&lt;/strong&gt; &#8212; I only ever conceive of (non-video) works in terms of how they will sound. I record myself singing mock-ups of the entire work before a single note is committed to the page and then transcribe it through LilyPond. The idea that something I do is not transcribable does not enter my head: I have confidence that if I want a sound, the only limitation in my getting it is my own failure to notate it, not LilyPond's failure to provide a means of notating it. I have never run into a typesetting problem that was not solvable through LilyPond, InkScape, or JavaScript. The only time I ever change my mind in terms of typesetting is a question of expediency: sometimes, I'll need to use a crude hack to get something done instead of finding an elegant and extensible solution. I try not to do this too often.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;L.R.&lt;/strong&gt; &#8212; Where would you want to see LilyPond heading? What areas in LilyPond are you comfortable working on? What areas would you like to see more work on? Are there areas where you would have wanted to do work on, but have found too hard to navigate?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Mike&lt;/strong&gt; &#8212; There are certainly areas of LilyPond that I do not know at all. &lt;a href=&quot;http://en.wikipedia.org/wiki/Metafont&quot; class='spip_out' rel='external'&gt;MetaFont&lt;/a&gt;, for example, is a magical black box out of which LilyPond's fonts appear. The build system is a black forest of commands that somehow assemble LilyPond. At a certain time, all of LilyPond appeared like this to me, but the code is well written and, if you follow the order of what things are called when, it can't not make sense.
&lt;br /&gt;I'd love to see more work on certain basic structural features of LilyPond that, by design, limit how fast it can evolve. For example, the way that non-musical objects (like markups) are laid out in LilyPond is underdeveloped compared to musical layout. I'd like to see this streamlined into a unified system that creates graphical objects and puts them on a given medium via various layout managers. I would also like to see LilyPond adopt linear programming so that certain constraints do not have to be solved one-after-the-other but instead can be solved in concord based on a given goal.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;L.R.&lt;/strong&gt; &#8212; Now being able to interface the inner linear programming blackboxes with user-defined typesetting tasks actually has been one pet peeve of mine with TeX, so if you figure out how to do this reasonably well and transparently, you'll certainly have my blessings.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Mike&lt;/strong&gt; &#8212; Lastly, I'd like to represent graphical objects' boundaries with more precision so that collision avoidance can be more fine-tuned and uniform.
&lt;br /&gt;I see LilyPond becoming like SCORE with easier input syntax and more extensibility. I think that, if the program gets more modular and can drum up development teams around certain issues whose progress does not impede work on other issues, it can get there in the next five years. I, as well as several other LilyPond users and developers working in France, have been trying to integrate LilyPond into music pedagogy in hopes that students find it useful and, if so, that they contribute to the development of the program.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;L.R.&lt;/strong&gt; &#8212; Well, it certainly sounds like something that LilyPond could make use of, and perhaps this task will become easier as LilyPond progresses.
&lt;br /&gt;Thank you for this rather inspiring interview, and all the best for your work with and without LilyPond!&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Mike&lt;/strong&gt; &#8212; Thanks!&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;feature_story_prelude_1_in_scheme&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Feature story: &lt;i&gt;Prelude #1 in Scheme&lt;/i&gt; &lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by David Kastrup&lt;/i&gt;&lt;/p&gt; &lt;p&gt;Now as an illustration of the impact of the recent work on LilyPond
programming, I want to pick up an example that Nicolas Sceaux has made
the topic of
&lt;a href=&quot;http://nicolas.sceaux.free.fr/prelude/prelude.html&quot;&gt;a LilyPond programming article&lt;/a&gt; on his website.&lt;/p&gt; &lt;p&gt;First thing to note is that his analysis and solution remain fully
valid for now: after running &lt;code class='spip_code' dir='ltr'&gt;convert-ly&lt;/code&gt; on his input file to
account for some comparatively minor syntax changes since when it was
written, the file runs and compiles.&lt;/p&gt; &lt;p&gt;Nicolas starts his analysis by showing the results of an evaluating
several expressions at the Guile prompt in order to figure out the
structure of his input expressions, as well as the structure of the
output expressions he is going to create from them:&lt;/p&gt; &lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;guile&gt; (display-scheme-music #{ \notemode { c' e' g' c'' e'' } #})&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;The article does not actually mention how to arrive at such a prompt
but the current version of LilyPond offers in its Scheme tutorial the
advice to start&lt;/p&gt; &lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;lilypond scheme-sandbox&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;for that purpose, and if it had been available at that time, it would have worked similarly. A noteworthy difference, however, is that&lt;/p&gt; &lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;guile&gt; (display-scheme-music #{ c' e' g' c'' e'' #})&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;is now sufficient (and does not produce unwanted additional output).
As the next step in his tutorial, Nicolas defines a macro &lt;code class='spip_code' dir='ltr'&gt;-&gt;&lt;/code&gt;
that is used as a syntactical shortcut to traverse through the layers
of the
&lt;code class='spip_code' dir='ltr'&gt;SequentialMusic &#8594; EventChord &#8594; NoteEvent&lt;/code&gt;
hierarchy. Now this actually touches a sore point in LilyPond: there
are no established standards for conveniently deconstructing a music
expression. LilyPond has ad hoc functions in several modules for
doing this kind of operation. Some of these ways are more robust to
changes of LilyPond (like if the intermediate layer of
&lt;code class='spip_code' dir='ltr'&gt;EventChord&lt;/code&gt; were to become optional,
&lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=2070&quot;&gt;Issue 2070&lt;/a&gt;), some less so. But there is no published interface.&lt;/p&gt; &lt;p&gt;Addressing this deficiency should be a future target, but in the mean
time, things have become quite more relaxed because music functions
can recognize a lot more argument types, including pitches. Since
pitches are readily available as music function arguments, there is no
more need to deconstruct whole music expressions in order to have
access to the actually required information, the pitch. As a
consequence, the main task of converting five pitches to a one-measure
phrase (distributed across three voices) can be done with the simple
function&lt;/p&gt; &lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;ph = #(define-music-function (parser location p1 p2 p3 p4 p5)&lt;br /&gt; (ly:pitch? ly:pitch? ly:pitch? ly:pitch? ly:pitch?)&lt;br /&gt; #{&lt;br /&gt; \repeat unfold 2 { $p1 2 } |&lt;br /&gt; \repeat unfold 2 { r16 $p2 8. ~ $p2 4 } |&lt;br /&gt; \repeat unfold 2 { r8 $p3 16 $p4 $p5 $p3 $p4 $p5 } |&lt;br /&gt; #})&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;The other trick we are employing here is using &lt;code class='spip_code' dir='ltr'&gt;&quot;\parallelMusic&quot;&lt;/code&gt;
for distributing material across three voices. To be fair,
&lt;code class='spip_code' dir='ltr'&gt;\parallelMusic&lt;/code&gt; received a few tweaks upstream to cooperate
better with music functions in the course of this article, but nothing
that would not be equally desirable for a number of other things.&lt;/p&gt; &lt;p&gt;The last design decision leading to simple code is not to use an
iterating construct over a single long music sequence, but rather call
the above macro manually for each five-note pattern. While the
automatic repetition did not add significant complexity to Nicolas'
rendition of the problem, it does not really fit well with the
simplicity we can now achieve.&lt;/p&gt; &lt;p&gt;All in all, the meat of this piece can now be presented as&lt;/p&gt; &lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;\parallelMusic #'(low middle high)&lt;br /&gt; {&lt;br /&gt; \ph c' e' g' c'' e''&lt;br /&gt; [...]&lt;br /&gt; \ph a c' e' g' c''&lt;br /&gt; \voiceTwo | \change Staff = &quot;down&quot; \voiceOne | \oneVoice |&lt;br /&gt; \ph d a d' fis' c''&lt;br /&gt; [...]&lt;br /&gt; \ph c, c g bes e'&lt;br /&gt; c,2~ c, | r16 c8. ~ c4 ~ c2&lt;br /&gt; | r8 f16 a c' f' c' a c' a f a f d f d |&lt;br /&gt; c,2~ c, | r16 b,8. ~ b,4 ~ b,2&lt;br /&gt; | r8 g'16 b' d'' f'' d'' b' d'' b' g' b' d' f' e' d' |&lt;br /&gt; c,1\fermata | c1 | &lt;e' g' c''&gt;1\fermata \bar &quot;|.&quot; |&lt;br /&gt; } &lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;This sets up the three music variables &lt;code class='spip_code' dir='ltr'&gt;low&lt;/code&gt;, &lt;code class='spip_code' dir='ltr'&gt;middle&lt;/code&gt;, and
&lt;code class='spip_code' dir='ltr'&gt;high&lt;/code&gt; with the appropriate material for the respective voices.&lt;/p&gt;
&lt;dl class='spip_document_454 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;a href=&quot;http://news.lilynet.net/IMG/jpg/praeludium.jpg&quot; title='JPEG - 215.8 kb' type=&quot;image/jpeg&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L200xH115/praeludium-2da35-f0484.jpg' width='200' height='115' alt='JPEG - 215.8 kb' style='height:115px;width:200px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_replie blocs_click'&gt;&lt;a href='javascript:;'&gt;Full code&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination blocs_invisible blocs_slide'&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;ph = #(define-music-function (parser location p1 p2 p3 p4 p5)&lt;br /&gt; (ly:pitch? ly:pitch? ly:pitch? ly:pitch? ly:pitch?)&lt;br /&gt; #{&lt;br /&gt; \repeat unfold 2 { $p1 2 } |&lt;br /&gt; \repeat unfold 2 { r16 $p2 8. ~ $p2 4 } |&lt;br /&gt; \repeat unfold 2 { r8 $p3 16 $p4 $p5 $p3 $p4 $p5 } |&lt;br /&gt; #}) &lt;br /&gt; \parallelMusic #'(low middle high)&lt;br /&gt; {&lt;br /&gt; \ph c' e' g' c'' e''&lt;br /&gt; R1*7 | \skip 1*7 | \oneVoice R1*7 \voiceOne |&lt;br /&gt; \ph a c' e' g' c''&lt;br /&gt; \voiceTwo | \change Staff = &quot;down&quot; \voiceOne | \oneVoice |&lt;br /&gt; \ph d a d' fis' c''&lt;br /&gt; \oneVoice R1*21 \voiceTwo | \skip 1*21 | R1*21 |&lt;br /&gt; \ph c, c g bes e'&lt;br /&gt; c,2~ c, | r16 c8. ~ c4 ~ c2&lt;br /&gt; | r8 f16 a c' f' c' a c' a f a f d f d |&lt;br /&gt; c,2~ c, | r16 b,8. ~ b,4 ~ b,2&lt;br /&gt; | r8 g'16 b' d'' f'' d'' b' d'' b' g' b' d' f' e' d' |&lt;br /&gt; c,1\fermata | c1 | &lt;e' g' c''&gt;1\fermata \bar &quot;|.&quot; |&lt;br /&gt; }&lt;br /&gt; \score {&lt;br /&gt; \new PianoStaff &lt;&lt;&lt;br /&gt; \new Staff = &quot;up&quot; {&lt;br /&gt; &lt;&lt; \high \\ \middle &gt;&gt;&lt;br /&gt; }&lt;br /&gt; \new Staff = &quot;down&quot; {&lt;br /&gt; \clef bass&lt;br /&gt; \low&lt;br /&gt; }&lt;br /&gt; &gt;&gt;&lt;br /&gt; &lt;br /&gt; \midi {&lt;br /&gt; \context {&lt;br /&gt; \Score&lt;br /&gt; \with \settingsFrom { \tempo 4 = 80 }&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; \layout {&lt;br /&gt; \context {&lt;br /&gt; \Score&lt;br /&gt; \with \settingsFrom { \compressFullBarRests }&lt;br /&gt; }&lt;br /&gt; \context {&lt;br /&gt; \Staff&lt;br /&gt; \with \settingsFrom { \accidentalStyle modern }&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt; }&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;One advantage of using an explicit macro &lt;code class='spip_code' dir='ltr'&gt;\ph&lt;/code&gt; for each occurence
of the default phrase is that we can just fudge in stuff like the
staff change and the ending directly.&lt;/p&gt; &lt;p&gt;The spine of the piece can now be put together as&lt;/p&gt; &lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;\score {&lt;br /&gt; \new PianoStaff &lt;&lt;&lt;br /&gt; \new Staff = &quot;up&quot; {&lt;br /&gt; &lt;&lt; \high \\ \middle &gt;&gt;&lt;br /&gt; }&lt;br /&gt; \new Staff = &quot;down&quot; {&lt;br /&gt; \clef bass&lt;br /&gt; \low&lt;br /&gt; }&lt;br /&gt; &gt;&gt;&lt;br /&gt; &lt;br /&gt; \midi {&lt;br /&gt; \context {&lt;br /&gt; \Score&lt;br /&gt; \with \settingsFrom { \tempo 4 = 80 }&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; \layout {&lt;br /&gt; \context {&lt;br /&gt; \Staff&lt;br /&gt; \with \settingsFrom { \accidentalStyle modern }&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt; }&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;The context definitions introduce us to &lt;code class='spip_code' dir='ltr'&gt;\settingsFrom&lt;/code&gt;, another
addition. While the Midi definition looks like a step backwards from
the original&lt;/p&gt; &lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt; \midi { \tempo 4 = 80 }&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;it turns out that this syntax has been deprecated since version 2.9.16 [&lt;strong&gt;UPDATE&lt;/strong&gt;: &lt;i&gt;see David's Post-Scriptum below&lt;/i&gt;]
and would have required rewriting as:&lt;/p&gt; &lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt; \midi {&lt;br /&gt; \context {&lt;br /&gt; \Score&lt;br /&gt; tempoWholesPerMinute = #(ly:make-moment 80 4)&lt;br /&gt; }&lt;br /&gt; }&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;dl class='spip_document_452 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;a href=&quot;http://news.lilynet.net/IMG/zip/prelude.ly.zip&quot; title='Zip - 914 bytes' type=&quot;application/zip&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L52xH52/zip-2bcd4.png' width='52' height='52' alt='Zip - 914 bytes' style='height:52px;width:52px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-452 spip_doc_titre' style='width:120px;'&gt;&lt;strong&gt;Pr&#230;ludium BWV 846&lt;/strong&gt;&lt;/dt&gt;
&lt;dd class='crayon document-descriptif-452 spip_doc_descriptif' style='width:120px;'&gt;Download the complete LilyPond example.
&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;Nicolas' original version did not set an accidental style, something
we achieve score-wide with another use of &lt;code class='spip_code' dir='ltr'&gt;\settingsFrom&lt;/code&gt;.
Instead he manually forced the natural in measure 29. We cannot do
this in input to &lt;code class='spip_code' dir='ltr'&gt;\ph&lt;/code&gt; since forced accidentals are not a
property of the pitch but rather of the note event, and thus are no
longer accepted. But accepting a forced natural is not the same as
actually interpreting it, and the original code failed to extract this
information in addition to the pitch itself, and thus did not work as
intended anyway.&lt;/p&gt; &lt;p&gt;So if we recapitulate in what respects the current version of LilyPond
has made it easier to tackle this particular challenge, we can note
the following points:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The actual information we wanted to process had been a sequence of pitches. Not having to extract them from single notes has been the major simplification of the original code.
&lt;li&gt;&lt;code class='spip_code' dir='ltr'&gt;\parallelMusic&lt;/code&gt; has been improved to a degree where we could employ it for this task. We have, however, been lucky that our basic phrase length has been a single measure: if it would have been half a measure, changing voices with a bar check would have resulted in warnings. Probably &lt;code class='spip_code' dir='ltr'&gt;\parallelMusic&lt;/code&gt; should be changed to just remove the bar checks, and instead check that every set of fragments is consistent in its length.
&lt;li&gt;&lt;code class='spip_code' dir='ltr'&gt;\settingsFrom&lt;/code&gt; is a convenient tool for creating context modifications.
&lt;li&gt;The addition of a simplistic (and documented) Scheme sandbox actually provides an environment where one can carry out the experiments that Nicolas showcased.
&lt;/ul&gt;
While user-level programming of LilyPond has a lot of potential for
further improvements, this real-life example shows that we are on a
good road for bringing the complexity down to a level where a user can
actually expect to achieve useful results with a justifiable
investment of learning.
&lt;h3 class=&quot;spip&quot; id=&quot;post_scriptum_prelude_1_in_scheme&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Post-Scriptum: Prelude #1 in Scheme&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Update from March 1., 2012&lt;/strong&gt;:
&lt;br /&gt;In one of the examples above, we wrote that some syntax has been deprecated for several years; well it turns out that the upcoming version &lt;code class='spip_code' dir='ltr'&gt;2.15.32&lt;/code&gt; will now allow writing the above &lt;code class='spip_code' dir='ltr'&gt;\midi&lt;/code&gt; and &lt;code class='spip_code' dir='ltr'&gt;\layout&lt;/code&gt; blocks just as&lt;/p&gt; &lt;blockquote class=&quot;spip&quot;&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt; \midi { \tempo 4 = 80 }&lt;br /&gt; &lt;br /&gt; \layout { \accidentalStyle modern }&lt;/code&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;
thus no longer requiring you to know which contexts actually require
context modifications for the given functionality. This works with most
property-setting music commands and makes it much easier to set global styles for music.
&lt;br /&gt;&lt;i&gt;D.K.&lt;/i&gt;&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;bug_report_of_the_report&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Bug Report of the Report&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;Valentin Villenave&lt;/i&gt;&lt;/p&gt; &lt;p&gt;From its &lt;a href=&quot;http://news.lilynet.net/?The-LilyPond-Report-0&quot; class='spip_in'&gt;very first&lt;/a&gt; issue nearly four years ago, the &lt;i&gt;LilyPond Report&lt;/i&gt; has always had a &quot;favorite quote&quot; or &quot;favorite bug report&quot; section. Of course, it's been a while since I've looked at our bug tracker; nevertheless, I've been keeping some quotes for a rainy day.&lt;/p&gt; &lt;p&gt;&lt;span class='spip_document_456 spip_documents spip_documents_right' style='float:right; width:200px;'&gt;&lt;a href=&quot;http://lcweb2.loc.gov/service/pnp/cph/3c20000/3c27000/3c27200/3c27236r.jpg&quot; type=&quot;image/jpeg&quot; title=&quot;Louis Armstrong &#8212; Library of Congress&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L200xH164/3c27236rjpg-1576-eee48-42753.jpg' width='200' height='164' alt='Louis Armstrong &#8212; Library of Congress {JPEG}' style='height:164px;width:200px;' /&gt;&lt;/a&gt;&lt;/span&gt;One of these doesn't come from an actual bug report, but from a &lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=1672&quot; class='spip_out' rel='external'&gt;patch&lt;/a&gt; which Mike Solomon (our special guest this month) proposed in May 2011: &lt;a href=&quot;http://codereview.appspot.com/4547058/}&quot; class='spip_out' rel='external'&gt;&lt;i&gt;Allow LilyPond to ignore certain note-heads in a stem&lt;/i&gt;&lt;/a&gt;. Seeing Mike (then a rather new contributor) tackle such a useful work made our Project Manager &lt;a href=&quot;http://percival-music.ca/&quot; class='spip_out' rel='external'&gt;Graham Percival&lt;/a&gt;... well, quite &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2011-05/msg00428.html&quot; class='spip_out' rel='external'&gt;inspired&lt;/a&gt;:&lt;/p&gt; &lt;blockquote class=&quot;spip&quot;&gt;
&lt;p&gt;
&lt;i&gt;I see trees of green, red roses too,
&lt;br /&gt;I watch them bloom for me and you and the broken &lt;a href=&quot;http://git.savannah.gnu.org/gitweb/?p=lilypond.git;a=blob;f=input/regression/drums.ly;hb=HEAD&quot; class='spip_out' rel='external'&gt;input/regression/drums.ly&lt;/a&gt;
&lt;br /&gt;And I think to myself, what a wonderful world.&lt;/i&gt;&lt;/p&gt; &lt;p&gt;&lt;i&gt;I hear babies cry, I watch them grow,
&lt;br /&gt;They'll learn much more, than I'll ever know, like a ton of programming&lt;/i&gt;
&lt;small&gt;&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;error: Grob direction requested while calculation in progress.&lt;br /&gt; continuing, cross fingers errors.&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;&lt;/small&gt;
&lt;i&gt;And I think to myself, ohh &lt;a href=&quot;http://www.youtube.com/watch?v=E2VCwBzGdPM&quot; class='spip_out' rel='external'&gt;what a wonderful world&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Got any public email, patch, request or bug report worth quoting? Then please do chip in!&lt;/p&gt; &lt;p&gt;&lt;span class='spip_document_81 spip_documents spip_documents_center'&gt;
&lt;img src='http://news.lilynet.net/local/cache-vignettes/L125xH100/lesite-d163a.png' width='125' height='100' alt=&quot;&quot; style='height:100px;width:125px;' /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;That concludes the twenty-third issue of The &lt;i&gt;LilyPond Report&lt;/i&gt;. Although we have no plans for a predictable publishing schedule yet, Our next installment is to be expected somewhere in February 2012. Lots of things are happening currently, so this &lt;i&gt;Report&lt;/i&gt; will be outdated by then &#8212; which is a Good Thing&#8482;.
&lt;br /&gt;In the meantime, feel free to &lt;a href=&quot;http://news.lilynet.net/?_LilyPond-Report-Editors_&quot; class='spip_in'&gt;send us&lt;/a&gt; your contributions !&lt;/p&gt; &lt;p&gt;Cheers,
&lt;br /&gt;Graham Percival, David Kastrup &amp; Valentin Villenave&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="en">
		<title>The LilyPond Report #22</title>
		<link>http://news.lilynet.net/?The-LilyPond-Report-22</link>
		<guid isPermaLink="true">http://news.lilynet.net/?The-LilyPond-Report-22</guid>
		<dc:date>2010-11-03T18:01:31Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>en</dc:language>
		<dc:creator>Valentin Villenave</dc:creator>



		<description>&lt;p&gt;Welcome to this twenty-second issue of the &lt;i&gt;LilyPond Report&lt;/i&gt;!&lt;/p&gt;

-
&lt;a href="http://news.lilynet.net/?-LilyPond-Report-" rel="directory"&gt;LilyPond Report&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;This informal opinion column is about the &lt;a href=&quot;http://news.lilynet.net/http:/lilypond.org&quot; class='spip_out'&gt;GNU LilyPond&lt;/a&gt; project: its team, its world, its community. It is not meant to be an exhaustive documentation resource. Reader comments are, of course, welcome (see at the bottom of this page).&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;div class=&quot;cs_sommaire cs_sommaire_avec_fond&quot; id=&quot;outil_sommaire&quot;&gt; &lt;div class=&quot;cs_sommaire_inner&quot;&gt; &lt;div class=&quot;cs_sommaire_titre_avec_fond&quot;&gt; Table of contents &lt;/div&gt; &lt;ul&gt; &lt;li&gt;&lt;a title=&quot;Editorial&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#editorial&quot;&gt;Editorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Release news&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#release_news&quot;&gt;Release news&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;A list of LilyPond communities?&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#a_list_of_lilypond_communities&quot;&gt;A list of LilyPond communities?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;News from the Frog Pond&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#news_from_the_frog_pond&quot;&gt;News from the Frog Pond&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;LilyPond&amp;#39;s Companions (1)&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#lilypond_s_companions_1&quot;&gt;LilyPond's Companions (1)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;LilyPond&amp;#39;s companions (2)&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#lilypond_s_companions_2&quot;&gt;LilyPond's companions (2)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Snippet of the Report&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#snippet_of_the_report&quot;&gt;Snippet of the Report&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; &lt;/div&gt;&lt;p&gt;Welcome to this twenty-second issue of the &lt;i&gt;LilyPond Report&lt;/i&gt;!&lt;/p&gt; &lt;p&gt;Here's a new &lt;i&gt;Report&lt;/i&gt;, full of surprises and exciting news for our community! To be found in this issue is an up-to-date, complete list of all LilyPond mailing lists and forums around the world &#8212; and we do mean: &lt;i&gt;complete&lt;/i&gt;. Also, for the very first time our special guest today is LilyPond's co-founder and core developper Jan Nieuwenhuizen, who has been busy these past months &#8212; read on to find out what for! As always, you are warmly invited to post comments at the bottom of the page, or even contribute to the &lt;i&gt;LilyPond Report&lt;/i&gt;'s next issues, by contacting &lt;a href=&quot;http://news.lilynet.net/?_Valentin-Villenave_&quot; class='spip_in'&gt;Valentin&lt;/a&gt; or &lt;a href=&quot;http://news.lilynet.net/?_Graham-Percival_&quot; class='spip_in'&gt;Graham&lt;/a&gt;.&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;editorial&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Editorial&lt;/h3&gt;
&lt;p&gt;(&lt;i&gt;by Valentin Villenave&lt;/i&gt;)&lt;/p&gt; &lt;p&gt;What's not to love with &lt;a href=&quot;http://lilypond.org/&quot; class='spip_out' rel='external'&gt;GNU LilyPond&lt;/a&gt;? Meaning: is it at all possible, either to mildly appreciate it, or perhaps even to hate the hell out of it?&lt;/p&gt; &lt;p&gt;On our &lt;a href=&quot;http://lilypond.org/reviews.html&quot; class='spip_out' rel='external'&gt;reviews page&lt;/a&gt;, I recently stumbled upon &lt;a href=&quot;http://nicolas.sceaux.free.fr/&quot; class='spip_out' rel='external'&gt;Nicolas Sceaux&lt;/a&gt;'s statement that he used to have &quot;a love-hate relationship&quot; with LilyPond.
Coming from arguably the most &lt;a href=&quot;http://repo.or.cz/w/nenuvar.git&quot; class='spip_out' rel='external'&gt;skilled&lt;/a&gt; LilyPonder in the world, this is somehow surprising.&lt;/p&gt; &lt;dl class='spip_document_421 spip_documents spip_documents_right' style='float:right;width:160px;'&gt;
&lt;dt&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L160xH96/double-lily-bc04-c3e11.png' width='160' height='96' alt='PNG - 50.5 kb' style='height:96px;width:160px;' /&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;Thinking about it, however, I soon realized that my own involvement in the LilyPond project could accurately be described as some kind of a bipolar disorder: sometimes I can get very excited, eager to help, eager to please, and nothing seems to go fast enough. However, a &lt;i&gt;contrecoup&lt;/i&gt; is always to be expected: at some point, things suddenly seem to go too fast for me to keep up, and I find myself not doing anything for months. Finally, on rare occasions, &lt;i&gt;something&lt;/i&gt; gets me frustrated &#8212; and then, for a short time that feels like forever, everything is tainted with bitterness and rage.&lt;/p&gt; &lt;p&gt;Getting the &lt;i&gt;Report&lt;/i&gt; out (almost) on time, in this regard, is always a challenge. So many exciting things to talk about... or, depending on how I look at it, so many saddening things that I would rather not talk about. This month we're having plenty of each, and therefore the &lt;i&gt;LilyPond Report&lt;/i&gt; is unfortunately not getting any shorter; if you only have one thing to read though, please skip directly to our &lt;a href=&quot;#outil_sommaire_5&quot;&gt;interview with Jan-&lt;/a&gt;, who has some pretty awesome news for all of us!&lt;/p&gt; &lt;p&gt;&lt;span class='spip_document_430 spip_documents spip_documents_center'&gt;
&lt;img src='http://news.lilynet.net/local/cache-vignettes/L500xH441/Schermafdruk-iKLi--missed-ly-7b65f.png' width='500' height='441' alt=&quot;What might that be? Read on to find out!&quot; title=&quot;What might that be? Read on to find out!&quot; style='height:441px;width:500px;' /&gt;&lt;/span&gt;&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;release_news&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Release news&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;(by Graham Percival &amp; Valentin Villenave.)&lt;/i&gt;&lt;/p&gt; &lt;p&gt;Work continues towards 2.14; the &lt;a href=&quot;http://lists.gnu.org/archive/html/info-lilypond/2010-10/msg00002.html&quot; class='spip_out' rel='external'&gt;fourth alpha test&lt;/a&gt;, 2.13.38, is now
online! This release still has &lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=1336&quot; class='spip_out' rel='external'&gt;one crash&lt;/a&gt;
and two cases of &lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=1252&quot; class='spip_out' rel='external'&gt;suspicious&lt;/a&gt;
&lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=1290&quot; class='spip_out' rel='external'&gt;spacing&lt;/a&gt;, so we cannot recommend it for daily production use. The current
stable &lt;a href=&quot;http://lilypond.org/web/install/&quot; class='spip_out' rel='external'&gt;release&lt;/a&gt; is 2.12.3-2.&lt;/p&gt; &lt;p&gt;We have been experiencing several problems with our &lt;a href=&quot;http://download.linuxaudio.org/lilypond/binaries/&quot; class='spip_out' rel='external'&gt;download mirror&lt;/a&gt;, but it seems to be fixed now. In case that happens again, and to alleviate the load of our bandwidth sponsor, it may be a good idea to set up a BitTorrent server/tacker somewhere (on LilyNet?), or to use an existing one (preferably free-software friendly). Does that sound appropriate to you? Would you be interested in downloading/sharing/seeding LilyPond binaries over the network? Please let us know!&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;a_list_of_lilypond_communities&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;A list of LilyPond communities?&lt;/h3&gt;
&lt;p&gt;(&lt;i&gt;by Xavier Scheuer&lt;/i&gt;)&lt;/p&gt; &lt;blockquote class=&quot;spip&quot;&gt;
&lt;dl class='spip_document_422 spip_documents spip_documents_right' style='float:right;width:126px;'&gt;
&lt;dt&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L126xH90/rightpng-5725727-9751d.png' width='126' height='90' alt='PNG - 39.2 kb' style='height:90px;width:126px;' /&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;&lt;i&gt;This month, Valentin suggested me to draw up an updated list of LilyPond communities for the &lt;i&gt;LilyPond Report&lt;/i&gt;, but I decided to extend it to every LilyPond-related &quot;Useful Addresses&quot;. This will also help keeping our &lt;a href=&quot;http://lilypond.org/contact.html&quot; class='spip_out' rel='external'&gt;contact page&lt;/a&gt; up-to-date; please help us complete this list if you know of any addresses that should be included here.&lt;/i&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;GENERAL, INTERNATIONAL &quot;OFFICIAL&quot; LILYPOND MAILING LISTS
(ENGLISH-SPEAKINKG)&lt;/strong&gt;&lt;/p&gt; &lt;p&gt; &lt;i&gt;User mailing list&lt;/i&gt;: lilypond-user_at_gnu.org
&lt;br /&gt;Info &amp; subscribe: &lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lilypond-user&quot; class='spip_out' rel='external'&gt;http://lists.gnu.org/mailman/listin...&lt;/a&gt;
&lt;br /&gt;Archive: &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-user/&quot; class='spip_out' rel='external'&gt;http://lists.gnu.org/archive/html/l...&lt;/a&gt;
&lt;br /&gt;Administrator: David R. Linn&lt;/p&gt; &lt;p&gt; &lt;i&gt;Releases mailing list&lt;/i&gt;: info-lilypond_at_gnu.org
&lt;br /&gt;Info &amp; subscribe: &lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/info-lilypond&quot; class='spip_out' rel='external'&gt;http://lists.gnu.org/mailman/listin...&lt;/a&gt;
&lt;br /&gt;Archive: &lt;a href=&quot;http://lists.gnu.org/archive/html/info-lilypond/&quot; class='spip_out' rel='external'&gt;http://lists.gnu.org/archive/html/i...&lt;/a&gt;
&lt;br /&gt;Administrator: David R. Linn&lt;/p&gt; &lt;p&gt; &lt;i&gt;Developer mailing list&lt;/i&gt;: lilypond-devel_at_gnu.org
&lt;br /&gt;Info &amp; subscribe: &lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lilypond-devel&quot; class='spip_out' rel='external'&gt;http://lists.gnu.org/mailman/listin...&lt;/a&gt;
&lt;br /&gt;Archive: &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/&quot; class='spip_out' rel='external'&gt;http://lists.gnu.org/archive/html/l...&lt;/a&gt;
&lt;br /&gt;Administrator: David R. Linn&lt;/p&gt; &lt;p&gt; &lt;i&gt;Bug mailing list&lt;/i&gt;: bug-lilypond_at_gnu.org
&lt;br /&gt;Info &amp; subscribe: &lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/bug-lilypond&quot; class='spip_out' rel='external'&gt;http://lists.gnu.org/mailman/listin...&lt;/a&gt;
&lt;br /&gt;Archive: &lt;a href=&quot;http://lists.gnu.org/archive/html/bug-lilypond/&quot; class='spip_out' rel='external'&gt;http://lists.gnu.org/archive/html/b...&lt;/a&gt;
&lt;br /&gt;Administrator: David R. Linn&lt;/p&gt; &lt;p&gt;&lt;strong&gt;LOCALE, LANGUAGE SPECIFIC MAILING LISTS, FORUMS, GOOGLE GROUPS, ...&lt;/strong&gt;&lt;/p&gt; &lt;p&gt; &lt;strong&gt;DE&lt;/strong&gt;
&lt;br /&gt;&lt;i&gt;Deutsches Lilypond Forum&lt;/i&gt;: &lt;a href=&quot;http://www.lilypondforum.de/&quot; class='spip_out' rel='external'&gt;http://www.lilypondforum.de/&lt;/a&gt;
&lt;br /&gt;Info &amp; subscribe: &lt;a href=&quot;http://www.lilypondforum.de/&quot; class='spip_out' rel='external'&gt;http://www.lilypondforum.de/&lt;/a&gt;
&lt;br /&gt;Archive: &lt;a href=&quot;http://www.lilypondforum.de/&quot; class='spip_out' rel='external'&gt;http://www.lilypondforum.de/&lt;/a&gt;
&lt;br /&gt;Administrator: Till Paala&lt;/p&gt; &lt;p&gt; &lt;strong&gt;ES&lt;/strong&gt; &lt;i&gt;Lista de usuarios de LilyPond en espa&#241;ol&lt;/i&gt;: lilypond-es_at_gnu.org
&lt;br /&gt;Info &amp; subscribe: &lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lilypond-es&quot; class='spip_out' rel='external'&gt;http://lists.gnu.org/mailman/listin...&lt;/a&gt;
&lt;br /&gt;Archive: &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-es/&quot; class='spip_out' rel='external'&gt;http://lists.gnu.org/archive/html/l...&lt;/a&gt;
&lt;br /&gt;Administrator: Francisco Vila&lt;/p&gt; &lt;p&gt; &lt;strong&gt;FR&lt;/strong&gt;
&lt;br /&gt;&lt;i&gt;LilyPond French Users&lt;/i&gt;: lilypond-user-fr_at_gnu.org
&lt;br /&gt;Info &amp; subscribe: &lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lilypond-fr&quot; class='spip_out' rel='external'&gt;http://lists.gnu.org/mailman/listin...&lt;/a&gt;
&lt;br /&gt;Archive: &lt;a href=&quot;http://lilypond-french-users.1298960.n2.nabble.com/&quot; class='spip_out' rel='external'&gt;http://lilypond-french-users.129896...&lt;/a&gt;
&lt;br /&gt;Administrators: John Mandereau, Valentin Villenave&lt;/p&gt; &lt;p&gt; &lt;strong&gt;HU&lt;/strong&gt;
&lt;br /&gt;&lt;i&gt;Magyar LilyPond-felhaszn&#225;l&#243;k k&#246;z&#246;ss&#233;ge&lt;/i&gt;: lilypond-user-hu_at_googlegroups.com
&lt;br /&gt;Info &amp; subscribe: &lt;a href=&quot;http://groups.google.com/group/lilypond-user-hu&quot; class='spip_out' rel='external'&gt;http://groups.google.com/group/lily...&lt;/a&gt;
&lt;br /&gt;Archive: &lt;a href=&quot;http://groups.google.com/group/lilypond-user-hu&quot; class='spip_out' rel='external'&gt;http://groups.google.com/group/lily...&lt;/a&gt;
&lt;br /&gt;Administrator: D&#233;nes Harmath(?)&lt;/p&gt; &lt;p&gt; &lt;strong&gt;NL&lt;/strong&gt;
&lt;br /&gt;&lt;i&gt;Nederlandstalig LilyPond forum&lt;/i&gt;: &lt;a href=&quot;http://www.lilypondforum.nl/&quot; class='spip_out' rel='external'&gt;http://www.lilypondforum.nl/&lt;/a&gt;
&lt;br /&gt;Info &amp; subscribe: &lt;a href=&quot;http://www.lilypondforum.nl/&quot; class='spip_out' rel='external'&gt;http://www.lilypondforum.nl/&lt;/a&gt;
&lt;br /&gt;Archive: &lt;a href=&quot;http://www.lilypondforum.nl/&quot; class='spip_out' rel='external'&gt;http://www.lilypondforum.nl/&lt;/a&gt;
&lt;br /&gt;Administrator: Wilbert Berendsen&lt;/p&gt; &lt;p&gt; &lt;strong&gt;PT (BR)&lt;/strong&gt;
&lt;br /&gt;&lt;i&gt;Lilypond-Brasil&lt;/i&gt;: lilypond-brasil_at_googlegroups.com
&lt;br /&gt;Info &amp; subscribe: &lt;a href=&quot;http://groups.google.com/group/lilypond-brasil&quot; class='spip_out' rel='external'&gt;http://groups.google.com/group/lily...&lt;/a&gt;
&lt;br /&gt;Archive: &lt;a href=&quot;http://groups.google.com/group/lilypond-brasil&quot; class='spip_out' rel='external'&gt;http://groups.google.com/group/lily...&lt;/a&gt;
&lt;br /&gt;Administrator: Hugo Ribeiro&lt;/p&gt; &lt;p&gt;&lt;strong&gt;UNOFFICIAL LILYNET.NET MAILING LISTS&lt;/strong&gt;&lt;/p&gt; &lt;p&gt; &lt;i&gt;LilyPond Frogs&lt;/i&gt;: frogs_at_lilynet.net
&lt;br /&gt;Info &amp; subscribe: &lt;a href=&quot;http://lists.lilynet.net/frogs/&quot; class='spip_out' rel='external'&gt;http://lists.lilynet.net/frogs/&lt;/a&gt;
&lt;br /&gt;Archive: &lt;a href=&quot;http://lists.lilynet.net/frogs/&quot; class='spip_out' rel='external'&gt;http://lists.lilynet.net/frogs/&lt;/a&gt;
&lt;br /&gt;Administrator: Valentin Villenave, Carl D. Sorensen&lt;/p&gt; &lt;p&gt; &lt;i&gt;LilyPond's support for tablatures&lt;/i&gt;: tablatures_at_lilynet.net
&lt;br /&gt;Info &amp; subscribe: &lt;a href=&quot;http://lists.lilynet.net/tablatures/&quot; class='spip_out' rel='external'&gt;http://lists.lilynet.net/tablatures/&lt;/a&gt;
&lt;br /&gt;Archive: &lt;a href=&quot;http://lists.lilynet.net/tablatures/&quot; class='spip_out' rel='external'&gt;http://lists.lilynet.net/tablatures/&lt;/a&gt;
&lt;br /&gt;Administrator: Valentin Villenave&lt;/p&gt; &lt;p&gt; &lt;i&gt;LilyPond translations&lt;/i&gt;: translations_at_lilynet.net
&lt;br /&gt;Info &amp; subscribe: &lt;a href=&quot;http://lists.lilynet.net/translations/&quot; class='spip_out' rel='external'&gt;http://lists.lilynet.net/translations/&lt;/a&gt;
&lt;br /&gt;Archive: &lt;a href=&quot;http://lists.lilynet.net/translations/&quot; class='spip_out' rel='external'&gt;http://lists.lilynet.net/translations/&lt;/a&gt;
&lt;br /&gt;Administrator: Valentin Villenave, John Mandereau&lt;/p&gt; &lt;p&gt; &lt;i&gt;LilyPond Midi discussions&lt;/i&gt;: midi_at_lilynet.net
&lt;br /&gt;Info &amp; subscribe: &lt;a href=&quot;http://lists.lilynet.net/midi/&quot; class='spip_out' rel='external'&gt;http://lists.lilynet.net/midi/&lt;/a&gt;
&lt;br /&gt;Archive: &lt;a href=&quot;http://lists.lilynet.net/midi/&quot; class='spip_out' rel='external'&gt;http://lists.lilynet.net/midi/&lt;/a&gt;
&lt;br /&gt;Administrator: Valentin Villenave, John Mandereau&lt;/p&gt; &lt;p&gt; &lt;i&gt;LilyPond proposals list&lt;/i&gt;: proposals_at_lilynet.net
&lt;br /&gt;Info &amp; subscribe: &lt;a href=&quot;http://lists.lilynet.net/proposals/&quot; class='spip_out' rel='external'&gt;http://lists.lilynet.net/proposals/&lt;/a&gt;
&lt;br /&gt;Archive: &lt;a href=&quot;http://lists.lilynet.net/proposals/&quot; class='spip_out' rel='external'&gt;http://lists.lilynet.net/proposals/&lt;/a&gt;
&lt;br /&gt;Administrators: Carl Sorensen, Graham Percival.&lt;/p&gt; &lt;p&gt; &lt;i&gt;The GLISS project has begun!&lt;/i&gt;: syntax_at_lilynet.net
&lt;br /&gt;Info &amp; subscribe: &lt;a href=&quot;http://lists.lilynet.net/syntax/&quot; class='spip_out' rel='external'&gt;http://lists.lilynet.net/syntax/&lt;/a&gt;
&lt;br /&gt;Archive: &lt;a href=&quot;http://lists.lilynet.net/syntax/&quot; class='spip_out' rel='external'&gt;http://lists.lilynet.net/syntax/&lt;/a&gt;
&lt;br /&gt;Administrator: Valentin Villenave, Graham Percival&lt;/p&gt; &lt;p&gt;[&lt;i&gt;Editor's note: These last two lists are not active yet; of course the &lt;i&gt;Report&lt;/i&gt; will let you know when/if they are.&lt;/i&gt;]&lt;/p&gt; &lt;p&gt;&lt;strong&gt;VERY (TOO?) UNOFFICIAL, INFORMAL&lt;/strong&gt;&lt;/p&gt; &lt;p&gt; &lt;a href=&quot;http://lists.lilynet.net/devel-chat/&quot; class='spip_out' rel='external'&gt;http://lists.lilynet.net/devel-chat/&lt;/a&gt;
&lt;br /&gt;Other &quot;secret&quot; mailing lists? ;p&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_replie blocs_click'&gt;&lt;a href='javascript:;'&gt;&lt;i&gt;Post-scriptum&lt;/i&gt; by V. Villenave.&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination blocs_invisible blocs_slide'&gt;
&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; The &lt;code class='spip_code' dir='ltr'&gt;devel-chat&lt;/code&gt; mailing list &lt;i&gt;is&lt;/i&gt; a public mailing list, that was &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2010-01/msg00611.html&quot; class='spip_out' rel='external'&gt;officially announced&lt;/a&gt; a year ago. Subscription is &lt;a href=&quot;http://lists.lilynet.net/devel-chat&quot; class='spip_out' rel='external'&gt;freely allowed&lt;/a&gt;, and everybody's invited &#8212; provided that you don't expect serious discussions &lt;img alt=&quot;:)&quot; title=&quot;:)&quot; class=&quot;no_image_filtrer format_png&quot; src=&quot;http://news.lilynet.net/plugins/auto/couteau_suisse/img/smileys/sourire.png&quot; width=&quot;19&quot; height=&quot;19&quot;/&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; A country is missing from that list: Italy. Our Italian contributor &lt;a href=&quot;http://www.gnurag.net/&quot; class='spip_out' rel='external'&gt;Federico Bruni&lt;/a&gt;, whom we asked about it, told us that he was considering creating an Italian LilyPond community as soon as he'd be able to translate some part of the Documentation. He does need help, so feel free to give him a hand on the &lt;code class='spip_code' dir='ltr'&gt;translations&lt;/code&gt; mailing list!&lt;/li&gt;&lt;/ul&gt;
&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; Another point is to be made here. When Xavier asked around to find if he hadn't forgotten any mailing list, nobody bothered answering him [&lt;a href='#nb1' class='spip_note' rel='footnote' title='Unanswered mails are probably not uncommon in any Free Software community, (...)' id='nh1'&gt;1&lt;/a&gt;]; it would be rude enough in itself, if it weren't for one annoying detail.
&lt;br /&gt;There actually &lt;strong&gt;is&lt;/strong&gt; a secret mailing list.
&lt;br /&gt;
&lt;br /&gt;&lt;strong&gt;The case of the Hidden Mailing List&lt;/strong&gt;
&lt;br /&gt;The LilyPond community as I see it, is divided in two parts: there are those who know about &lt;i&gt;-hackers&lt;/i&gt;, and those who don't. Oh, you can search everywhere on the Web, on our archives or anywhere else, for the &lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lilypond-hackers&quot; class='spip_out' rel='external'&gt;&lt;code class='spip_code' dir='ltr'&gt;lilypond-hackers&lt;/code&gt; mailing list&lt;/a&gt;: chances are you won't find anything. Its archives are, of course, well-kept; it is not even mentioned in the &lt;a href=&quot;http://lists.gnu.org/mailman/listinfo&quot; class='spip_out' rel='external'&gt;list of GNU mailing lists&lt;/a&gt;.
&lt;br /&gt;Earlier this month, it was merely &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2010-10/msg00404.html&quot; class='spip_out' rel='external'&gt;alluded to&lt;/a&gt; on the developers' mailing list (read: the &lt;i&gt;one&lt;/i&gt; developers' mailing list we &lt;i&gt;do&lt;/i&gt; know about), and nobody seemed to take issue with the fact that important questions were admittedly discussed privately. &#8212; As a matter of fact, I do.
&lt;br /&gt;
&lt;br /&gt;Full disclosure: I am not a member of this mailing list. Would it make me happy to be one? It certainly would, albeit in a very childish way. Would I deserve it? Obviously not. Does it make me feel sick? Hell yes.
&lt;br /&gt;However, whilst I have to acknowledge my own frustration not to be part of the Cool Kids Club&#8482;, I highly doubt I'd ever be comfortable being part of something I find abnormal, unethical and deceiving. I fail to see, indeed, how such practices are compatible with the openness, transparency, mutual respect that any community-based project requires. Any decent one, that is.
&lt;br /&gt;&lt;center&gt;&lt;img src=&quot;http://news.lilynet.net/local/cache-vignettes/L60xH60/120px-Rotaryd723-3bec9.png&quot; width='60' height='60' style='height:60px;width:60px;' /&gt;&lt;/img&gt;&lt;/center&gt;
&lt;br /&gt;Granted, private mailing lists are not entirely uncommon in Free Software. Granted, if no such list existed, then the Cool Kids would probably exchange private e-mails on occasion, for &quot;frank discussions that might otherwise hurt other people's feelings&quot;. Does this make it okay to open a &lt;i&gt;whole frigging mailing list&lt;/i&gt; only dedicated to that purpose? This question should be open to debate, which it is not. If and when such lists exist, people usually know about it, know &lt;i&gt;who&lt;/i&gt; takes part in these discussions, and &lt;i&gt;why&lt;/i&gt;. Nothing comparable is to be found in the LilyPond project &#8212; yet one of the most friendly communities I've been involved with (or so I thought). &lt;br /&gt;
&lt;br /&gt;I first heard (by accident) about the lp-hackers mailing list a few years ago, and that made me bitter enough. By that time I was already spending most of my time contributing to the LilyPond community (albeit in my usual fluffy, unreliable, non-productive way). Discovering that there was a non-trivial part to it that I knew nothing about (and that contributors weren't deemed important enough to be told about it), made me consider leaving the project altogether. After a few weeks, as I was assured that this mailing list really was but a memory of the &quot;old&quot; development team, that nobody was using it any more, and that there was nothing to worry about, I eventually decided to suck it up, stay, try and make things better &#8212; one of the reasons why I started the &lt;i&gt;LilyPond Report&lt;/i&gt;. Discovering, today, that it actually is still very much active and intended to stay that way, makes me wonder if that was the right thing to do.
&lt;br /&gt;
&lt;br /&gt;Like I said, I certainly have a highly emotional point of view on this subject, and it doesn't make it easy to get a balanced perspective. Am I overreacting? Is there really nothing to talk about? I am looking forward to reading the community's reactions, the development team &lt;del&gt;excuses&lt;/del&gt; reasons, and most importantly, what You, dear reader, might have to say about that!&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;[&lt;strong&gt;UPDATE&lt;/strong&gt;: Please read the Post-Scriptum at the bottom of this issue, just above the comments.]&lt;/p&gt; &lt;/div&gt;&lt;/div&gt;
&lt;h3 class=&quot;spip&quot; id=&quot;news_from_the_frog_pond&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;News from the Frog Pond&lt;/h3&gt;
&lt;p&gt;(&lt;i&gt;by Graham Percival&lt;/i&gt;).&lt;/p&gt; &lt;blockquote class=&quot;spip&quot;&gt;
&lt;p&gt;
&lt;span class='spip_document_337 spip_documents spip_documents_left' style='float:left; width:133px;'&gt;
&lt;img src='http://news.lilynet.net/local/cache-vignettes/L133xH80/g5792-ecf1c.png' width='133' height='80' alt=&quot;&quot; style='height:80px;width:133px;' /&gt;&lt;/span&gt;The Frogs are ordinary LilyPond users who have chosen to get involved in their favorite software's development. Fixing bugs,
implementing new features, documenting the source code: there's a
lot to be done, but most importantly: this is a chance for everyone to learn more about LilyPond, about Free Software, about programming&#8230; and to have fun!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;All Frog action in the past month has centered around &lt;a href=&quot;http://www.gnu.org/software/guile/&quot; class='spip_out' rel='external'&gt;guile 2.0&lt;/a&gt; work. The new major version of this GNU Free-Software &lt;a href=&quot;http://en.wikipedia.org/wiki/Scheme_%28programming_language%29&quot; class='spip_out' rel='external'&gt;Scheme&lt;/a&gt; interpreter (and now, compiler!) is expected within weeks, and LilyPond is getting ready to fully support it!&lt;/p&gt; &lt;p&gt;Hopefully once LilyPond 2.14 is out, we might get more new volunteers
interested in improving our source code; if you are interested, remember that the word is: &lt;a href=&quot;http://frogs.lilynet.net/&quot; class='spip_out' rel='external'&gt;join the Frogs&lt;/a&gt;!&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;lilypond_s_companions_1&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;LilyPond's Companions (1)&lt;/h3&gt;
&lt;p&gt;(&lt;i&gt;by Valentin Villenave&lt;/i&gt;)&lt;/p&gt; &lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_replie blocs_click'&gt;&lt;a href='javascript:;'&gt;Part One: &lt;strong&gt;The Quest of the Lost Interface&lt;/strong&gt;&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination blocs_invisible blocs_slide'&gt;
&lt;p&gt;Up to this day, LilyPond is, has always been, and remains, a non-graphical program. No windows, no staves and notes that you can move around with the mouse, like in other music notation software (proprietary or &lt;a href=&quot;http://musescore.org/&quot; class='spip_out' rel='external'&gt;not&lt;/a&gt;) you may be familiar with.&lt;/p&gt; &lt;p&gt;The idea of a LilyPond &lt;a href=&quot;http://en.wikipedia.org/wiki/Graphical_user_interface&quot; class='spip_out' rel='external'&gt;GUI&lt;/a&gt; has long been the &lt;a href=&quot;http://en.wikipedia.org/wiki/Monty_Python_and_the_Holy_Grail&quot; class='spip_out' rel='external'&gt;Holy Grail&lt;/a&gt; of LilyPond users, for generations. Some see it as a myth, others keep hope of finding it someday, while others have been engaging in &lt;a href=&quot;http://denemo.org/&quot; class='spip_out' rel='external'&gt;endless quests&lt;/a&gt; to build their own. Most newcomers to LilyPond &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-user/2009-12/msg00236.html&quot; class='spip_out' rel='external'&gt;often&lt;/a&gt; &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-user/2006-02/msg00084.html&quot; class='spip_out' rel='external'&gt;feel&lt;/a&gt; &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-user/2006-10/msg00446.html&quot; class='spip_out' rel='external'&gt;frustrated&lt;/a&gt; (myself &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-user/2006-10/msg00383.html&quot; class='spip_out' rel='external'&gt;included&lt;/a&gt;).&lt;/p&gt; &lt;p&gt;Eventually, everybody either gives up or gets used to writing LilyPond code on their own, and the closest thing to a GUI that we can think of is but an improved source-code editing environment, such as &lt;a href=&quot;http://lilypondtool.organum.hu/&quot; class='spip_out' rel='external'&gt;LilyPondTool&lt;/a&gt; or &lt;a href=&quot;http://frescobaldi.org/&quot; class='spip_out' rel='external'&gt;Frescobaldi&lt;/a&gt; (which we &lt;a href=&quot;http://news.lilynet.net/?The-LilyPond-Report-17#outil_sommaire_4&quot; class='spip_in'&gt;reviewed&lt;/a&gt; a few months ago). At best, even the most idealistic of us in their wildest dreams, can't imagine anything but to eventually ship LilyPond alongside with a &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2010-07/msg00281.html&quot; class='spip_out' rel='external'&gt;lightweight editor and PDF viewer&lt;/a&gt;.&lt;/p&gt;
&lt;dl class='spip_document_425 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L396xH279/pngkb0dr7W3Ra51c-eb852.png' width='396' height='279' alt='PNG - 26.7 kb' style='height:279px;width:396px;' /&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;Little do we remember, however, that the founders of the LilyPond project themselves, developers &lt;strong&gt;Han-Wen Nienhuys&lt;/strong&gt; and &lt;strong&gt;Jan Nieuwenhuizen&lt;/strong&gt; haven't been exactly deaf to these calls for user-friendliness (and smooth shiny blingy interfaces). In 2004, Jan first &lt;a href=&quot;http://git.savannah.gnu.org/gitweb/?p=lilypond.git;a=commit;h=12fe81f3722e08e6dc6c64ec611638f0bf1beda9&quot; class='spip_out' rel='external'&gt;tried&lt;/a&gt; and displayed music objects on a &lt;a href=&quot;http://developer.gnome.org/doc/whitepapers/canvas/canvas.html&quot; class='spip_out' rel='external'&gt;GNOME canvas&lt;/a&gt;. Then in 2005, Han-Wen launched his own &lt;a href=&quot;http://git.savannah.gnu.org/gitweb/?p=lilypond.git;a=shortlog;h=refs/heads/ikebana&quot; class='spip_out' rel='external'&gt;project&lt;/a&gt;, codenamed &lt;a href=&quot;http://en.wikipedia.org/wiki/Ikebana&quot; class='spip_out' rel='external'&gt;Ikebana&lt;/a&gt;.&lt;/p&gt; &lt;dl class='spip_document_424 spip_documents spip_documents_right' style='float:right;width:120px;'&gt;
&lt;dt&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L110xH187/220px-Paesagf91c-a1fe1.jpg' width='110' height='187' alt='JPEG - 10.1 kb' style='height:187px;width:110px;' /&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;&quot;&lt;i&gt;Ikebana&lt;/i&gt;, Jan recalls, &lt;i&gt;was created by Han-Wen in 2005, as a demo/proof of concept for integrating LilyPond (2.6 at the time) with a big 3rd-party commercial sequencer. Ikebana is 99,98732% Han-Wen's work. I just resurrected it.&lt;/i&gt;&quot;&lt;/p&gt; &lt;p&gt;In March 2009 indeed, Jan noted on his &lt;a href=&quot;http://lilypond.org/blog/janneke/&quot; class='spip_out' rel='external'&gt;blog&lt;/a&gt;: &quot;&lt;i&gt;Pleased to find there's a new release of &lt;a href=&quot;http://ooolilypond.sourceforge.net/&quot; class='spip_out' rel='external'&gt;OOoLilyPond&lt;/a&gt; which makes it *much* easier to install. Now, who's going to resurrect and tie Ikebana up with this? Or better yet, build on Erik Sandberg's &lt;a href=&quot;http://lilypond.org/web/images/thesis-erik-sandberg.pdf&quot; class='spip_out' rel='external'&gt;Music Streams&lt;/a&gt; work and start a true interactive GUI?&lt;/i&gt;&quot;&lt;/p&gt; &lt;p&gt;It wasn't until this summer where Jan &lt;a href=&quot;http://git.savannah.gnu.org/gitweb/?p=lilypond.git;a=commit;h=ed0860bd2963dabcdfa8b026c07464949677f647&quot; class='spip_out' rel='external'&gt;resurrected&lt;/a&gt; Ikebana, made it work with recent LilyPond versions (2.13.29 at the time), and started to seriously think about its possible future. However, he wasn't very optimistic: &quot;&lt;i&gt;Ikebana&lt;/i&gt;, he told us, &lt;i&gt;was never intended as a LilyPond GUI effort. It is unsupported, does not work very well, won't be developed any further. But, it's very interesting, isn't it? Has been on my mind too.&lt;/i&gt;&quot;&lt;/p&gt; &lt;p&gt;A few days later, he added: &quot;&lt;i&gt;I've been talking with Wingo&lt;/i&gt; [Editor's note: &lt;a href=&quot;http://wingolog.org/&quot; class='spip_out' rel='external'&gt;Andy Wingo&lt;/a&gt;, lead developer of the guile-gnome bindings]. &lt;i&gt;I'm thinking of maybe starting Ikebana afresh, in guile &#8212; for obvious reasons &#8212; with some major changes.&lt;/i&gt;&lt;/p&gt; &lt;p&gt;That was on September 22. Just the day after, Jan's new project was &lt;a href=&quot;https://github.com/janneke/schikkers-list/commit/c12aac2d1a54134bfc27fc88fffeaf285ab664f4&quot; class='spip_out' rel='external'&gt;born&lt;/a&gt;...&lt;/p&gt; &lt;/div&gt;&lt;/div&gt;
&lt;h3 class=&quot;spip&quot; id=&quot;lilypond_s_companions_2&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;LilyPond's companions (2)&lt;/h3&gt;
&lt;p&gt;(&lt;i&gt;by Valentin Villenave&lt;/i&gt;)&lt;/p&gt; &lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_click'&gt;&lt;a href='javascript:;'&gt;&lt;i&gt;Part Two: &lt;strong&gt;A man, a Scheme, a program: Schikkers List!&lt;/strong&gt; &lt;/i&gt;
&lt;br /&gt;Interview with Jan Nieuwenhuizen.&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination'&gt;
&lt;p&gt;&lt;strong&gt; &lt;i&gt;The LilyPond Report&lt;/i&gt; &lt;/strong&gt; &#8212; Greetings Jan! Wow, it is an honor for the &lt;i&gt;Report&lt;/i&gt; to meet with you today; for years I guess I've just been too intimidated to suggest an interview with either you or Han-Wen...&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Jan Nieuwenhuizen&lt;/strong&gt; - - Hi Valentin! Yeah, I love the &lt;i&gt;Report&lt;/i&gt;. Good, great!&lt;/p&gt; &lt;p&gt;&lt;strong&gt;TLR&lt;/strong&gt; &#8212; Thanks! Let's get started then. What exactly is &lt;a href=&quot;http://github.com/janneke/schikkers-list&quot; class='spip_out' rel='external'&gt;Schikkers List&lt;/a&gt;? Never mind &#8212; let me quote your &lt;a href=&quot;https://github.com/janneke/schikkers-list/blob/master/README&quot; class='spip_out' rel='external'&gt;README&lt;/a&gt; file for you:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;README&lt;/strong&gt; &#8212;&lt;/p&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;p&gt;
Schikkers List is a LilyPond GUI in the prototype phase. I have no
idea if this approach could even result in a usable program. [...]
The basic is to have LilyPond render only a small bit of the music:
the bit that changed. [...] Simple LilyPond files can be entered and saved as .scm or exported as .ly files.&lt;/p&gt; &lt;p&gt;This is targeted at hackers and mainly presented as an invitation for
comments and possibly for patches.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;JN&lt;/strong&gt; &#8212; That's right. There are so many bugs/missing features
that I'll only be taking patches for now; at least until v0.1 or so.&lt;/p&gt; &lt;dl class='spip_document_428 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L327xH245/Schermafdruk-iKLi_--_untitled-8377a.png' width='327' height='245' alt='PNG - 79.5 kb' style='height:245px;width:327px;' /&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-428 spip_doc_titre' style='width:327px;'&gt;&lt;strong&gt;Schikkers List's {iKLi} interface&lt;/strong&gt;&lt;/dt&gt;
&lt;dd class='crayon document-descriptif-428 spip_doc_descriptif' style='width:327px;'&gt;courtesy of Jan Nieuwenhuizen.
&lt;br /&gt;&lt;i&gt;Animated PNG: you need Firefox or Opera to see it...&lt;/i&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;&lt;strong&gt;TLR&lt;/strong&gt; &#8212; Okay, now that you've made this clear, let me ask you the question everyone must be asking themselves by now: what's with the &lt;strong&gt; &lt;i&gt;name&lt;/i&gt; &lt;/strong&gt;?? I mean, &quot;Schikkers List&quot;? Really?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;JN&lt;/strong&gt; &#8212; I know. &quot;Schikkers List&quot; is probably just as incapable of surviving as &quot;Ikebana&quot;, but well &lt;img alt=&quot;:-)&quot; title=&quot;:-)&quot; class=&quot;no_image_filtrer format_png&quot; src=&quot;http://news.lilynet.net/plugins/auto/couteau_suisse/img/smileys/sourire.png&quot; width=&quot;19&quot; height=&quot;19&quot;/&gt;&lt;/p&gt; &lt;p&gt;&lt;i&gt;List&lt;/i&gt; is the dutch translation of &quot;a guile scheme&quot;. It does not
mean list[en], that word is &lt;i&gt;lijst&lt;/i&gt; (&lt;i&gt;Liste&lt;/i&gt; in German). Translating
Ikebana into Dutch, you get &lt;i&gt;Bloemschikken&lt;/i&gt; where &lt;i&gt;bloem&lt;/i&gt; == flower. The person who performs Ikebana would be a &lt;i&gt;Bloemschikker&lt;/i&gt; (arranger of flowers).&lt;/p&gt; &lt;p&gt;&lt;strong&gt;TLR&lt;/strong&gt; &#8212; ...&lt;/p&gt; &lt;p&gt;&lt;strong&gt;JN&lt;/strong&gt; &#8212; Wait, it gets worse: one such &lt;i&gt;schikker&lt;/i&gt;/arranger had a &lt;a href=&quot;http://en.wiktionary.org/wiki/guile&quot; class='spip_out' rel='external'&gt;guile&lt;/a&gt; &lt;a href=&quot;http://en.wiktionary.org/wiki/scheme&quot; class='spip_out' rel='external'&gt;scheme&lt;/a&gt;: only recompute the part that changed to arrange notes, and in contrast to Ikebana who used &lt;a href=&quot;http://python.org/&quot; class='spip_out' rel='external'&gt;python&lt;/a&gt;, this one uses &lt;a href=&quot;http://www.gnu.org/software/guile&quot; class='spip_out' rel='external'&gt;GUILE Scheme&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;TLR&lt;/strong&gt; &#8212; Er. Okay, we'll let our audience re-read this a couple of times... For the record: I didn't even know that &quot;&lt;a href=&quot;http://en.wikipedia.org/wiki/Guile_%28Street_Fighter%29&quot; class='spip_out' rel='external'&gt;guile&lt;/a&gt;&quot; was actually a word &lt;img alt=&quot;:-)&quot; title=&quot;:-)&quot; class=&quot;no_image_filtrer format_png&quot; src=&quot;http://news.lilynet.net/plugins/auto/couteau_suisse/img/smileys/sourire.png&quot; width=&quot;19&quot; height=&quot;19&quot;/&gt;&lt;/p&gt; &lt;dl class='spip_document_429 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L366xH575/Schermafdruk-Key_bindings-f285a.png' width='366' height='575' alt='PNG - 37.4 kb' style='height:575px;width:366px;' /&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-429 spip_doc_titre' style='width:350px;'&gt;&lt;strong&gt;Schikkers List's key bindings&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;&lt;strong&gt;TLR&lt;/strong&gt; &#8212; (&lt;i&gt;*cough*&lt;/i&gt;) Back on track. Obviously, the GNOME-Canvas plan has been on the table for some time now; I also can understand why you chose Guile/Scheme over python (since most of LilyPond itself is natively implemented in this language). What else inspired you?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;JN&lt;/strong&gt; &#8212; I was inspired first by Frescobaldi: how quick that was, but discouraged by how fully it is entangled with &lt;a href=&quot;http://en.wikipedia.org/wiki/Kde&quot; class='spip_out' rel='external'&gt;KDE&lt;/a&gt;, and it's still a text editor that will never compete with &lt;a href=&quot;http://www.gnu.org/software/emacs/&quot; class='spip_out' rel='external'&gt;Emacs&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Then I was inspired by the &lt;a href=&quot;http://gummi.midnightcoding.org/&quot; class='spip_out' rel='external'&gt;gummi editor&lt;/a&gt;: I wrote a 20-line &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2010-07/msg00281.html&quot; class='spip_out' rel='external'&gt;patch&lt;/a&gt; that made some sort of frescobaldi-like gui.&lt;/p&gt; &lt;p&gt;Then I was inspired by how fast and how usable Ikebana was.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;TLR&lt;/strong&gt; &#8212; Wait &#8212; &quot;usable&quot;??? How come all of us haven't been using it ever since then?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;JN&lt;/strong&gt; &#8212; Well, it wasn't just like that in 2005: it was neither fast, nor usable. Also, LilyPond has come a long way since 2004...&lt;/p&gt; &lt;p&gt;I want to learn programming in scheme, that seems such a nice language and I'm such a novice. I had to do all that alone because nobody can know
about it, as I should be working on my open source consultancy startup company, and anything else is &lt;a href=&quot;http://structuredprocrastination.com/&quot; class='spip_out' rel='external'&gt;procrastination&lt;/a&gt;, which looks real bad.&lt;/p&gt; &lt;p&gt;I also think you should be have some real code before you start to talk vaporware, which is why I had to start alone. But I'm not going to do a project like this on my own, so if others are interested that would really help.&lt;/p&gt; &lt;center&gt;&lt;img src=&quot;http://news.lilynet.net/local/cache-vignettes/L466xH332/Schermafdruk64f3-2555f.png&quot; width='466' height='332' style='height:332px;width:466px;' /&gt;&lt;/img&gt;&lt;/center&gt;
&lt;p&gt;&lt;strong&gt;TLR&lt;/strong&gt; &#8212; I'd be happy to help, except for one thing: I'm a KDE guy. There's no way I'll *ever* install &lt;a href=&quot;http://en.wikipedia.org/wiki/GNOME&quot; class='spip_out' rel='external'&gt;GNOME&lt;/a&gt; on my system. So, I guess this is good-bye...&lt;/p&gt; &lt;p&gt;&lt;strong&gt;JN&lt;/strong&gt; &#8212; Not at all! Schikkers List is not gnome dependent, just &lt;a href=&quot;http://en.wikipedia.org/wiki/Gtk&quot; class='spip_out' rel='external'&gt;GTK&lt;/a&gt;. I started off using the pangocairo backend, which requires very recent builds of guile-gnome (later than 2.16.1). However, the GNOME canvas was not deprecated after all, so I'm using this as a backend now, which allows running with guile-gnome 2.16.1 (or possibly even 2.16).&lt;/p&gt; &lt;p&gt;&lt;strong&gt;TLR&lt;/strong&gt; &#8212; Interesting. Now for the embarrassing part. For almost fifteen years, we've seen Han-Wen and you telling people that a GUI was just The Wrong Way, that LilyPond would never have a GUI because it wasn't meant to in the first place and it would be useless anyway. So I hope you won't mind me asking: &lt;i&gt;who are you kidding&lt;/i&gt;, really? Was all that non-GUI motto just a pile of hypocrite bullshit?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;JN&lt;/strong&gt; &#8212; Keep it cool... LilyPond is &lt;strong&gt;not&lt;/strong&gt; conceived, indeed, to be used in a GUI setting. Period.&lt;/p&gt; &lt;p&gt;There are so many good reasons why GUI programs in general, and a GUI for setting text or music specifically, are a bad idea! You get &quot;expert users&quot; and tricks and mouse-click video's on YouTube etc. Can't script it anymore.&lt;/p&gt; &lt;p&gt;&lt;i&gt;However.&lt;/i&gt; LilyPond was created to free the world of badly typeset
music and to help *all* musicians. Of course, we want everyone to
enjoy the freedom of Linux and move there. However, this was the
mind-shift that caused us to make the Windows/mingw and Apple/darwin
ports. We cannot demand that people change their OS for their
own good, happiness and health.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;TLR&lt;/strong&gt; &#8212; Well, &lt;i&gt;I&lt;/i&gt; certainly would, but...&lt;/p&gt; &lt;p&gt;&lt;strong&gt;JN&lt;/strong&gt; &#8212; The idea of my &lt;i&gt;ikli&lt;/i&gt; interface is to do away with the text editor (there may be a structured text editor one day) because I think that the vast majority of potential users will never /start/ with lilypond if they have to enter text, even if there's visual feedback.&lt;/p&gt; &lt;p&gt;If the mere fact that LilyPond does not have a very good GUI, will mean that in the end we as musicians are still stuck (again stuck)
with badly typeset music because &quot;people /will/ use a GUI even
if it handcuffs them&quot;, it's bad for their health and happiness etc.,
what's a hacker to do?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;TLR&lt;/strong&gt; &#8212; ... Well, you tell me!&lt;/p&gt; &lt;p&gt;&lt;strong&gt;JN&lt;/strong&gt; &#8212; We/I have been &quot;waiting&quot; for years to get &lt;a href=&quot;http://lilypond.org/web/images/thesis-erik-sandberg.pdf&quot; class='spip_out' rel='external'&gt;Eric Sandberg's work&lt;/a&gt;
completed and have full-blown music streams in LilyPond. That
would be the first step towards the remote possibility of a
GUI. This did not happen and I do not foresee it to happen
any time soon.&lt;/p&gt; &lt;p&gt;So, Schikkers List is another guile scheme to turn this dependency
around. Instead of first waiting for boring, useless work to
be done that should enable a gui, just make a gui first and
when it grows, we can always decide that music streams are
essential, integrate Schikkers List with LilyPond and just
finish them.&lt;/p&gt; &lt;p&gt;On the other hand, it could well be that there will never be a v0.0.2
and this is just another silly pipe dream.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;TLR&lt;/strong&gt; &#8212; I sure hope not!&lt;/p&gt; &lt;dl class='spip_document_426 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L500xH473/Schermafdruk-iKLi_--_-home-janneke-vc-schiklistig-input-standchen-ly-3be79.png' width='500' height='473' alt='PNG - 60.4 kb' style='height:473px;width:500px;' /&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-426 spip_doc_titre' style='width:350px;'&gt;&lt;strong&gt;A real-world score: &quot;St&#228;ndchen&quot;&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;&lt;strong&gt;JN&lt;/strong&gt; &#8212; If you get to use Schikkers List, you'll see that, as I said, LilyPond is not conceived for a GUI approach &#8212; however, it may
just be good enough. I don't know. The big question here is: who can tell [me] what the very minimal set of requirements is that makes a gui useful, esp. for people who would never use text entry for music, and is there a path from this minimal version to more useful versions for real world music?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;TLR&lt;/strong&gt; &#8212; Well, perhaps our readers can help answering that question &lt;img alt=&quot;:-)&quot; title=&quot;:-)&quot; class=&quot;no_image_filtrer format_png&quot; src=&quot;http://news.lilynet.net/plugins/auto/couteau_suisse/img/smileys/sourire.png&quot; width=&quot;19&quot; height=&quot;19&quot;/&gt; However, isn't there a risk that you may reinventing the wheel here? You do know that &lt;a href=&quot;http://denemo.org/&quot; class='spip_out' rel='external'&gt;Denemo&lt;/a&gt; development has been revived for the past couple of years, and produces a nice interface already... Besides, many users appreciate the Frescobaldi/LilyPondTool &quot;code on the left, preview on the right&quot; paradigm; can you seriously believe that anyone will want to use a GUI program that hides the LilyPond code from the user?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;JN&lt;/strong&gt; &#8212; Let me be clear. Backed with the right amount of hacking effort, Schikkers List will just &lt;i&gt;totally blow away&lt;/i&gt; all the other efforts.&lt;/p&gt; &lt;p&gt;Of course, the lily code will also be available in a separate
window and we'll have some sort of structure-editor that feels
like a text editor but is very annoying because it has to
make sure you cannot enter invalid lily code &lt;img alt=&quot;:-)&quot; title=&quot;:-)&quot; class=&quot;no_image_filtrer format_png&quot; src=&quot;http://news.lilynet.net/plugins/auto/couteau_suisse/img/smileys/sourire.png&quot; width=&quot;19&quot; height=&quot;19&quot;/&gt; We'll also have a music-tree view window where you can select/edit
the underlying music structure.&lt;/p&gt; &lt;p&gt;For years to come however, Denemo will be a great GUI. As for Frescobaldi/LilyPondTool, these aim at people who want to write code &#8212; those are not real GUIs, are they? People who would benefit from
Frescobaldi will probably also use lilypond without this nice
preview...&lt;/p&gt; &lt;p&gt;&lt;strong&gt;TLR&lt;/strong&gt; &#8212; Well, thank you Jan, and good luck: you'll need it! Anything we normal people can do to help, other than turning into programmer-demigods and sending you patches? How about suggesting a nice logo for Schikkers List?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;JN&lt;/strong&gt; &#8212; A logo. Man, this is a pile of rubbish, get real! Love, peace, thanks.&lt;/p&gt; &lt;p&gt;&lt;i&gt;Many thanks to Jan Nieuwenhuizen for this interview.&lt;/i&gt;&lt;/p&gt; &lt;/div&gt;&lt;/div&gt;
&lt;h3 class=&quot;spip&quot; id=&quot;snippet_of_the_report&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Snippet of the Report&lt;/h3&gt;
&lt;p&gt;(&lt;i&gt;by Valentin Villenave&lt;/i&gt;)&lt;/p&gt; &lt;p&gt;Let's be honest: for a while, this month's snippet tasted like a conflict of interest. I had written a snippet that &#8212; I thought &#8212; was just &lt;i&gt;way too cool&lt;/i&gt; not to make it as the &quot;Snippet of the month&quot;: &lt;a href=&quot;http://lsr.dsi.unimi.it/LSR/Item?id=726&quot; class='spip_out' rel='external'&gt;&lt;strong&gt;Colored-background staves&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;When browsing the &lt;a href=&quot;http://lsr.dsi.unimi.it/&quot; class='spip_out' rel='external'&gt;LSR&lt;/a&gt; to retrieve my snippet's URL, however, I stumbled upon this other one &#8212; and realized I simply couldn't compete.&lt;/p&gt; &lt;center&gt;&lt;a href=&quot;http://lsr.dsi.unimi.it/LSR/Item?id=700&quot; class='spip_out' rel='external'&gt;&lt;strong&gt;Coloring individual staff lines&lt;/strong&gt;&lt;/a&gt;&lt;/center&gt;
&lt;dl class='spip_document_420 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L217xH57/Imageid700-ff99a-7e6bf.png' width='217' height='57' alt='PNG - 2.2 kb' style='height:57px;width:217px;' /&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;Now, how cool is &lt;i&gt;that&lt;/i&gt;? The worst part is, though, that we have no idea who posted this snippet: it doesn't include a &lt;code class='spip_code' dir='ltr'&gt;%LSR&lt;/code&gt; comment, nor has it been announced on the mailing lists. If you wrote it and happen to read this, please do let us know!&lt;/p&gt; &lt;p&gt;[Update: unsurprisingly, &lt;strong&gt;Neil Puttock&lt;/strong&gt; is actually to thank for this cool snippet. Cheers!]&lt;/p&gt; &lt;p&gt;&lt;span class='spip_document_81 spip_documents spip_documents_center'&gt;
&lt;img src='http://news.lilynet.net/local/cache-vignettes/L125xH100/lesite-d163a.png' width='125' height='100' alt=&quot;&quot; style='height:100px;width:125px;' /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;That concludes the twenty-second issue of The LilyPond Report. Next
instalment is expected on December 1st, and will be the last of the year 2010!&lt;/p&gt; &lt;p&gt;Cheers,
&lt;br /&gt;Graham Percival &amp; Valentin Villenave&lt;/p&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;p&gt;&lt;span class=&quot;csfoo htmla&quot;&gt;&lt;/span&gt;[&lt;a href='#nh1' id='nb1' class='spip_note' title='Footnotes 1' rev='footnote'&gt;1&lt;/a&gt;] &lt;span class=&quot;csfoo htmlb&quot;&gt;&lt;/span&gt;Unanswered mails are probably not uncommon in any Free Software community, but that's not to say we shouldn't do our best not to let that happen. On a related note, I was flabbergasted that Jan's &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2010-10/msg00341.html&quot; class='spip_out' rel='external'&gt;announcement&lt;/a&gt; about Schikkers List went totally unnoticed: how on Earth is that possible? &#8212; To be fair, &lt;i&gt;I&lt;/i&gt; did not answer him either; I do hope that today's &lt;i&gt;LilyPond Report&lt;/i&gt; feature will make it up to him...&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_ps'&gt;&lt;p&gt;&lt;strong&gt;Post-scriptum&lt;/strong&gt;
&lt;br /&gt;&lt;i&gt;by Valentin Villenave&lt;/i&gt;.&lt;/p&gt; &lt;p&gt;As was to be expected, my emotional testimony about the private &lt;span class=&quot;csfoo htmla&quot;&gt;&lt;/span&gt;&lt;code class='spip_code' dir='ltr'&gt;lilypond-hackers&lt;/code&gt;&lt;span class=&quot;csfoo htmlb&quot;&gt;&lt;/span&gt; mailing list raised a lot of strong reactions, mostly from the &lt;i&gt;Report&lt;/i&gt;'s co-editor Graham Percival, LilyPond's project manager, himself a member of this &quot;secret&quot; mailing list, and incidentally a friend of mine (which makes it all the more saddening).&lt;/p&gt; &lt;p&gt;If anything, I have to make absolutely clear that my goal was never to mock or insult any of the LilyPond developers, but to merely state how uncomfortable I feel, as a contributor, about this particular subject in an otherwise pleasant and enjoyable Free-Software community.&lt;/p&gt; &lt;p&gt;In addition to the comments below, a &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-devel/2010-11/msg00076.html&quot; class='spip_out' rel='external'&gt;discussion&lt;/a&gt; susequently took place on the public &lt;span class=&quot;csfoo htmla&quot;&gt;&lt;/span&gt;&lt;code class='spip_code' dir='ltr'&gt;lilypond-devel&lt;/code&gt;&lt;span class=&quot;csfoo htmlb&quot;&gt;&lt;/span&gt; mailing list. Whilst the controversy is not solved yet, a first step has been taken thanks to our contributor Carl (&lt;i&gt;not&lt;/i&gt; a member of &lt;span class=&quot;csfoo htmla&quot;&gt;&lt;/span&gt;&lt;code class='spip_code' dir='ltr'&gt;lilypond-hackers&lt;/code&gt;&lt;span class=&quot;csfoo htmlb&quot;&gt;&lt;/span&gt;), who &lt;a href=&quot;http://git.savannah.gnu.org/gitweb/?p=lilypond.git;a=commitdiff;h=c467e8f32a49ee397160d7eeccc287e65bc88e5c&quot; class='spip_out' rel='external'&gt;added&lt;/a&gt; the first official mention (ever!) of this private mailing list, to our Documentation. Thanks Carl!&lt;/p&gt;&lt;/div&gt;
		</content:encoded>


		
		<enclosure url="http://upload.wikimedia.org/wikipedia/commons/thumb/9/95/Rotary_international_emblem.svg/120px-Rotary_international_emblem.svg.png" length="21099" type="image/png" />
		

	</item>
<item xml:lang="en">
		<title>The LilyPond Report #21</title>
		<link>http://news.lilynet.net/?The-LilyPond-Report-21</link>
		<guid isPermaLink="true">http://news.lilynet.net/?The-LilyPond-Report-21</guid>
		<dc:date>2010-10-04T00:05:21Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>en</dc:language>
		<dc:creator>Valentin Villenave</dc:creator>



		<description>&lt;p&gt;Welcome to this twenty-first issue of the &lt;i&gt;LilyPond Report&lt;/i&gt;!&lt;/p&gt;

-
&lt;a href="http://news.lilynet.net/?-LilyPond-Report-" rel="directory"&gt;LilyPond Report&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;This short, informal opinion column is about the &lt;a href=&quot;http://lilypond.org/&quot; class='spip_out' rel='external'&gt;GNU LilyPond&lt;/a&gt; project: its team, its world, its community. It is &lt;i&gt;not&lt;/i&gt; meant to be an exhaustive &lt;a href=&quot;http://lilypond.org/web/documentation&quot; class='spip_out' rel='external'&gt;documentation resource&lt;/a&gt;. Reader comments are, of course, welcome (see at the bottom of this page).&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;div class=&quot;cs_sommaire cs_sommaire_avec_fond&quot; id=&quot;outil_sommaire&quot;&gt; &lt;div class=&quot;cs_sommaire_inner&quot;&gt; &lt;div class=&quot;cs_sommaire_titre_avec_fond&quot;&gt; Table of contents &lt;/div&gt; &lt;ul&gt; &lt;li&gt;&lt;a title=&quot;Editorial&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;id_rubrique=26#editorial&quot;&gt;Editorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Release news&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;id_rubrique=26#release_news&quot;&gt;Release news&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;News from the Frog Pond&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;id_rubrique=26#news_from_the_frog_pond&quot;&gt;News from the Frog Pond&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Feature story: microtonal notation in LilyPond&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;id_rubrique=26#feature_story_microtonal_notation_in_lilypond&quot;&gt;Feature story: microtonal notation (...)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Bug Report of the Report&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;id_rubrique=26#bug_report_of_the_report&quot;&gt;Bug Report of the Report&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;On the mailing lists&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;id_rubrique=26#on_the_mailing_lists&quot;&gt;On the mailing lists&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;LilyPond tricks&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;id_rubrique=26#lilypond_tricks&quot;&gt;LilyPond tricks&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; &lt;/div&gt;&lt;p&gt;Greetings everybody, and welcome to this twenty-first issue of the &lt;i&gt;LilyPond Report&lt;/i&gt;!&lt;/p&gt; &lt;p&gt;Autumnal and microtonal: that's how one could describe this &lt;i&gt;Report&lt;/i&gt;'s issue. Microtonal notation support has indeed been at the center of a number of discussions recently: bug reports, feature requests, frogs contributions: read on to know all about it. On other news, we have been digging through the mailing lists archive to bring you some nice tricks (LilyPond made portable, anyone?) and overlooked announcements.
&lt;br /&gt;As always, you can post your comments at the bottom of the page, or even &lt;a href=&quot;http://news.lilynet.net/spip.php?action=inscription&amp;focus=nom_inscription&amp;mode=redac&quot; class='spip_out'&gt;register&lt;/a&gt; and &lt;a href=&quot;http://news.lilynet.net/ecrire/?exec=articles_edit&amp;new=oui&quot; class='spip_out'&gt;contribute&lt;/a&gt; to the &lt;i&gt;LilyPond Report&lt;/i&gt;'s next issues.&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;editorial&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;id_rubrique=26#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Editorial&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;Valentin Villenave&lt;/i&gt;&lt;/p&gt; &lt;dl class='spip_document_418 spip_documents spip_documents_right' style='float:right;width:200px;'&gt;
&lt;dt&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L200xH150/800px-View_o3228-2a83e.jpg' width='200' height='150' alt='JPEG - 114.8 kb' style='height:150px;width:200px;' /&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-418 spip_doc_titre' style='width:200px;'&gt;&lt;strong&gt;Paris, boulevard Diderot&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;As a beautiful Autumn is beginning here in Paris, France, it looks like the year 2010 will not end without some interesting events in the LilyPond community. Firstly, the upcoming stable 2.14 release is in good shape, as Graham will elaborate on below; our &lt;a href=&quot;http://news.lilynet.net/?The-LilyPond-Report-17#outil_sommaire_1&quot; class='spip_in'&gt;new website&lt;/a&gt; is now online at last, and even more interesting things are coming down the road: the &lt;a href=&quot;http://news.lilynet.net/?The-LilyPond-Report-16#outil_sommaire_0&quot; class='spip_in'&gt;&lt;strong&gt;Grand LilyPond Input Syntax Stabilization&lt;/strong&gt;&lt;/a&gt; project, which we'll talk about extensively in months to come, our online &lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=815&quot; class='spip_out' rel='external'&gt;AJAX-powered&lt;/a&gt; documentation (of which Reinhold already maintains a &lt;a href=&quot;http://kainhofer.com/~lilypond/Documentation/notation&quot; class='spip_out' rel='external'&gt;preview&lt;/a&gt; on his personal website), etc.&lt;/p&gt; &lt;dl class='spip_document_381 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L500xH324/screenshot-2-7c3db.jpg' width='500' height='324' alt='JPEG - 146.4 kb' style='height:324px;width:500px;' /&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;As far as the LilyNet.net community website is concerned, we'll be migrating to a more powerful server this fall, that will allow us to do quite a bunch of cool things (a lot of ideas are already floating around). Due to increasing spam, we may also be applying stronger rules to our &lt;a href=&quot;http://wiki.lilynet.net/&quot; class='spip_out' rel='external'&gt;Wiki&lt;/a&gt;. Your &lt;a href=&quot;http://valentin.villenave.net/&quot; class='spip_out' rel='external'&gt;fluffy editor&lt;/a&gt; is also eagerly waiting to introduce some geeky pet projects of his... Anyways [&lt;a href='#nb1' class='spip_note' rel='footnote' title='As I was wondering whether anyways was a correct form or not, I stumbled (...)' id='nh1'&gt;1&lt;/a&gt;], stay tuned!&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;release_news&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;id_rubrique=26#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Release news&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;Graham Percival&lt;/i&gt;&lt;/p&gt; &lt;p&gt;The big news is that we've released the alpha milestone for 2.14
stable! So far we've had &lt;a href=&quot;http://lists.gnu.org/archive/html/info-lilypond/2010-09/msg00002.html&quot; class='spip_out' rel='external'&gt;two&lt;/a&gt; &quot;&lt;a href=&quot;http://lists.gnu.org/archive/html/info-lilypond/2010-09/msg00003.html&quot; class='spip_out' rel='external'&gt;alpha test version&lt;/a&gt;&quot;, and users have
been &lt;a href=&quot;http://lilypond.org/bug-reports.html&quot; class='spip_out' rel='external'&gt;helpfully&lt;/a&gt; discovering odd cases where the test version produces
questionable output. The latest such release is &lt;a href=&quot;http://lilypond.org/development.html&quot; class='spip_out' rel='external'&gt;&lt;strong&gt;2.13.35&lt;/strong&gt;&lt;/a&gt;, which has 5
known regressions against the previous stable version.&lt;/p&gt; &lt;p&gt;Speaking of which, the current stable release is still &lt;a href=&quot;http://lilypond.org/download.html&quot; class='spip_out' rel='external'&gt;&lt;strong&gt;2.12.3-2&lt;/strong&gt;&lt;/a&gt;. Despite
all the excitement over the nearing end of 2.13 and the new stable
version, all normal users should be engraving with 2.12.3 for any
serious work.&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;news_from_the_frog_pond&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;id_rubrique=26#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;News from the Frog Pond&lt;/h3&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;p&gt;&lt;i&gt;The Frogs are ordinary LilyPond users who have chosen to get
involved in their favorite software's development. Fixing bugs,
implementing new features, documenting the source code: there's a lot
to be done, but most importantly: this is a chance for everyone to
learn more about LilyPond, about Free Software, about programming&#8230; and
to have fun. If you're curious about any of it, then the word is: Join
the Frogs!&lt;/i&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Most of the &quot;frog pond&quot; work this month has focused on &lt;a href=&quot;http://www.gnu.org/software/guile/&quot; class='spip_out' rel='external'&gt;guile 2.0&lt;/a&gt;
compatibility issues, but one very interesting possibility arose in
the middle of a discussion of microtonal music: Wol
&lt;a href=&quot;http://lilypond-frogs.2124236.n2.nabble.com/Re-Lilypond-s-internal-pitch-representation-and-microtonal-notation-tp5551835p5556067.html&quot; class='spip_out' rel='external'&gt;announced&lt;/a&gt;
that he had written a &quot;sample 'starting' engraver&quot;, which could be
&lt;a href=&quot;http://lilypond-frogs.2124236.n2.nabble.com/Re-Lilypond-s-internal-pitch-representation-and-microtonal-notation-tp5551835p5556092.html&quot; class='spip_out' rel='external'&gt;very&lt;/a&gt;
&lt;a href=&quot;http://lilypond-frogs.2124236.n2.nabble.com/Re-Lilypond-s-internal-pitch-representation-and-microtonal-notation-tp5551835p5558059.html&quot; class='spip_out' rel='external'&gt;valuable&lt;/a&gt;
for other people if it was added to the Contributor's Guide.
Hopefully we'll gave a patch that adds this soon, so that any future
Frogs will have an easier time understanding lilypond internals!&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;feature_story_microtonal_notation_in_lilypond&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;id_rubrique=26#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Feature story: microtonal notation in LilyPond&lt;/h3&gt;
&lt;p&gt;What exactly do people mean when they're talking about microtonal notation? The &lt;i&gt;LilyPond Report&lt;/i&gt; has asked some of our most specialized contributors (namely Graham Breed, Joe Wakeling and Hans &#197;berg) if they could elaborate on this topic. Hans was patient enough to answer our question thoroughly, and here is his contribution that we proudly publish below.&lt;/p&gt; &lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_replie blocs_click'&gt;&lt;a href='javascript:;'&gt;&lt;strong&gt;Why microtonality?&lt;/strong&gt;
&lt;br /&gt;&lt;i&gt;by Hans &#197;berg&lt;/i&gt;&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination blocs_invisible blocs_slide'&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;p&gt;Sometime after World War II, a common misconception starts to take hold: the basis of Western music is E12, the 12-equal temperament. In fact, it has never been, and despite the widespread use of E12 in popular music, jazz, and some, but certainly not all, fixed pitch instruments, CPP (Common Practice Period) orchestras have not shifted away from the adaptive Just intonation that they always have used. And if the music is not written with CPP harmonic rules, variable pitched instruments are likely to switch to something like Pythagorean tuning, even if the music is specifically called for being written in E12 (like some atonal music).&lt;/p&gt; &lt;p&gt;So even if one decides to stay within the realms of Western CPP derived music, there are good reasons for using at least some microtonality. If one wants to do some limited microtonality, what is required?&lt;/p&gt; &lt;p&gt;The to the modern mind surprising answer is: really nothing, because the staff system that LilyPond focuses on is perfectly capable of expressing different tunings. Our ancestors though, that devised this staff system at the end of the Renaissance, experimenting heavily with different tunings, might have been rather surprised to learn that we have forgotten about it.&lt;/p&gt; &lt;p&gt;If you want your music score to be retunable into say extended quarter-comma meantone tuning, which sets the major thirds exactly to the interval ratio 5/4, or Pythagorean tuning, all you have to do is making sure to not apply E12 enharmonic equivalence in ways that make the shift in pitch too obvious. So if used at all, only apply it at some sections in whole as a part of notational simplification. The overall pitch will shift, but typically only by a tonestep of E31, which is close to meantone, or E53, which is close to Pythagorean tuning, or between 20 to 40 cents.&lt;/p&gt; &lt;p&gt;And then you need a program that can translate this into correct pitches. And it is here where microtonality capabilities in LilyPond may play an important role. If implemented in full, writing complex microtonality should be no more difficult than any other type of music.&lt;/p&gt; &lt;p&gt;Beware, though, would you decide to walk down this road, that you may soon start to loath all those synth orchestras that only play in E12. And you may start to appreciate the adaptive pitch-work of real musicians a lot more. But those are side effect you probably can live with.&lt;/p&gt; &lt;p&gt;Let us now move beyond the simple retuning of a standard music score, to see why that might be needed. But first a bit of background:&lt;/p&gt; &lt;p&gt;During Medieval times, the Pythagorean tuning was common, built up by solely the octave interval ratio 2 and the pure fifth 3/2. This involves only the prime numbers 2 and 3, which is called the 3-limit. This tuning works perfectly fine if one not emphasizes the thirds harmonically strongly, and is still a good bet in for example Balkan music. Towards the Renaissance one wanted in West to add the interval major third 5/4, decreasing the beat rates of the Pythagorean major third (the difference between these two major thirds is the syntonic comma 81/80), and in the near East: Arab, Persia, and Turkey, one instead added an intermediate pitch, and in some descriptions these intervals involve the prime number 5. So all this is 5-limit music, though one should note that in the quarter-comma meantone tuning, the augmented 6th is very close to the interval 7/4, and if included, this is the 7-limit.&lt;/p&gt; &lt;p&gt;Above, the word &quot;adaptive&quot; was thrown in before Just intonation. If one adheres to CPP pivoting on the chords, then some chord sequences, for example I IV ii V I, will drift in pitch a small amount, called &quot;comma pumps&quot;. So Just intonation may be impossible to play without some kind pitch adaptation. One can even out the small adaptation needed between all pitches played, which is called tempering, but a real musician playing a variable pitch instrument can do a little better; exactly what is needed is not known.&lt;/p&gt; &lt;p&gt;In addition, on variable pitched instruments, there is other pitch adaptation going on. This is well known in for example Arab music, where the tendency of moving some pitches together for musical expression is called the &quot;principle of gravity&quot;. The exact description of this adaptation process is not well known, but probably helps giving the music life.&lt;/p&gt; &lt;p&gt;Here, we have so far stayed within the 5-limit. One might want to experiment with interval ratios involving more primes: the 7, 11 and perhaps the 13-limit. And we also implicitly assumed that it is better to be close to a rational interval. Being close helps up the harmonic flexibility, but in for example gamelan music, the beat rates typically around 8 Hz but up to 20 Hz, seem to be built into the tuning. In some music, the full scale, the diapason, may not have seven scale degrees, and one may also drop the requirement that the diapason is the interval ratio 2, the latter which happens in for example Georgian music and the Bohlen-Pierce scale.&lt;/p&gt; &lt;p&gt;Overall, the topic of different tunings may seem difficult and elusive, but with a way to easy produce these pitches accurately, it is more like choosing different stops on a pipe organ. The choice of tuning helps giving the music character, and different types of music and music styles will require different tunings. The feedback from being able to produce these tunings combined with the experience of the result will make the choice no more difficult than any other musical feature.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;h3 class=&quot;spip&quot; id=&quot;bug_report_of_the_report&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;id_rubrique=26#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Bug Report of the Report&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;Graham Percival&lt;/i&gt;&lt;/p&gt; &lt;p&gt;Speaking of microtonality, I think the most interesting exchange this month was precisely about microtonal
notation issue. We have an old &lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=694&quot; class='spip_out' rel='external'&gt;issue 694&lt;/a&gt;
about microtonal accidentals, but the whole thing began with somebody
who didn't know about the microtonal notation that was already present
in lilypond. Discussion then veered off into transposition, year-old
patches, and the result was a confusing mess. It wasn't obvious what,
if anything, people were requesting (in terms of code, documentation,
fonts, or what).&lt;/p&gt; &lt;p&gt;After almost deleting this issue, we had some discussion about what
was actually sought, and came up with a new
&lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=1278&quot; class='spip_out' rel='external'&gt;issue 1278&lt;/a&gt;. The new issue is great &#8212; there's a clear description of what's
required, backed up by a strong reference in music notation (Kurt
Stone's &quot;Music Notation in the Twentieth Century&quot;), and a two-line
lilypond input segment (not counting braces and comments).&lt;/p&gt; &lt;blockquote class=&quot;spip&quot; style=&quot;width:30%;float:right&quot;&gt;&quot;Brevity is the soul of wit.&quot;&lt;/blockquote&gt;
&lt;p&gt;Remember folks, we have over 400 open issues, so if it takes longer
than 30 seconds to understand what your pet issue is requesting, then
chances are that nobody will look at it. Once you think you've
finished writing a feature request, spend another 10 minutes staring
at your request and try to figure out how it could be simplified.&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;on_the_mailing_lists&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;id_rubrique=26#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;On the mailing lists&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;Valentin Villenave&lt;/i&gt;&lt;/p&gt; &lt;p&gt;It is with great pleasure that I'm opening this new regular section of the &lt;i&gt;LilyPond Report&lt;/i&gt;. The principle behind it is simple: our community is large and vibrant, with numerous &lt;a href=&quot;http://lilypond.org/contact.html&quot; class='spip_out' rel='external'&gt;mailing lists&lt;/a&gt; (even more so if you count the &lt;a href=&quot;http://lists.lilynet.net/&quot; class='spip_out' rel='external'&gt;unofficial lilynet.net mailing lists&lt;/a&gt;, and many intelligent people producing many interesting discussions. Over time, some clever proposals or remarks are bound to get lost in the flow; this section aims to salvage some posts that might otherwise go unnoticed or get forgotten.&lt;/p&gt; &lt;p&gt;A good example is this &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-user/2009-03/msg00459.html&quot; class='spip_out' rel='external'&gt;announcement&lt;/a&gt; from our Brazilian contributor Alberto Sim&#245;es, in March 2009:&lt;/p&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;p&gt;I am working on a new Portuguese web-site.
It is available at &lt;a href=&quot;http://musica-liturgica.net/&quot; class='spip_url spip_out' rel='external'&gt;http://musica-liturgica.net/&lt;/a&gt;, and includes Portuguese
liturgical music.&lt;/p&gt; &lt;p&gt;Probably it will not be that useful for most of the readers of this
list, but I think I owe Lilypond a lot &lt;img alt=&quot;:)&quot; title=&quot;:)&quot; class=&quot;no_image_filtrer format_png&quot; src=&quot;http://news.lilynet.net/plugins/auto/couteau_suisse/img/smileys/sourire.png&quot; width=&quot;19&quot; height=&quot;19&quot;/&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Do you, too, know of a good LilyPond website we might not have heard of? Has one of your own posts or announcements gone unnoticed? Is there any project that our readers might be interested in discovering? Then there's a good chance the &lt;i&gt;Report&lt;/i&gt; can help you; please &lt;a href=&quot;http://news.lilynet.net/?_Valentin-Villenave_&quot; class='spip_in'&gt;let us know&lt;/a&gt;!&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;lilypond_tricks&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;id_rubrique=26#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;LilyPond tricks&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;Valentin Villenave&lt;/i&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Running LilyPond run from a USB key on Windows&lt;/strong&gt;
&lt;br /&gt;This question is frequently raised (and addressed) on the &lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lilypond-user-fr&quot; class='spip_out' rel='external'&gt;French-speaking list&lt;/a&gt;. Earlier this month, a user named Jean-Christophe D. posted a &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-user-fr/2010-09/msg00233.html&quot; class='spip_out' rel='external'&gt;complete howto&lt;/a&gt; in French, that might interest other users as well.&lt;/p&gt; &lt;blockquote class=&quot;spip&quot;&gt;
&lt;p&gt;
As was requested, here are some instructions to make LilyPond portable, to whomever may find it useful.&lt;/p&gt; &lt;p&gt;Reminder: being written in DOS shell, these scripts will only work with Microsoft Windows&#174;. [&lt;i&gt;Note from the editor: GNU/Linux users may have quite a few other ways to make this work on their end, although this specific feature might be more needed amongst MS Winsows users...&lt;/i&gt;]&lt;/p&gt; &lt;p&gt;It works in a very simple way.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Installation:&lt;/strong&gt;&lt;/p&gt; &lt;dl class='spip_document_188 spip_documents spip_documents_right' style='float:right;width:180px;'&gt;
&lt;dt&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L180xH155/180px-ASUS_E05ac-51681.jpg' width='180' height='155' alt='JPEG - 7.1 kb' style='height:155px;width:180px;' /&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;1 - Install LilyPond on your computer (if not already done ;o))&lt;/p&gt; &lt;p&gt;2 - Copy the LilyPond directory (typically located in C:\Program Files\) on your USB key&lt;/p&gt; &lt;p&gt;There you go, it's installed!&lt;/p&gt; &lt;p&gt;Note: you may alternatively want to install LilyPond *directly* on your USB key. I haven't tried it, and therefore do not know if it's possible [&lt;i&gt;Editor's note: It is, but not recommended &#8212; as it will make your computer, in the future, look for libraries that will not be on your main hard drive partitions.&lt;/i&gt;]&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Usage:&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;1 - Download the latest version of the following small script (written by &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-user-fr/2010-08/msg00096.html&quot; class='spip_out' rel='external'&gt;Eluze on the French list&lt;/a&gt;, or below by myself). It can be either a .exe or a .bat file; in the latter case, you may open it with the notepad if you want to read or modify the code.[&lt;i&gt;Editor's note: this can be achieved easily through right-click&gt;&quot;modify&quot;.&lt;/i&gt;]&lt;/p&gt; &lt;p&gt;2 - Copy this script in the directory where your .ly files are located: it can be either on your Desktop, in a folder, on your USB key,...&lt;/p&gt; &lt;p&gt;3 - Instead of double-clicking on your .ly file to generate a PDF score, just drag-and-drop it on the script's icon. That's all!&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Rationale:&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;The small script file is going to look for any file named LilyPond.exe on any drive (E:, F:, etc.). Whenever it has found one, it uses it to generate the requested PDF.&lt;/p&gt; &lt;p&gt;Below is the latest version of my script.&lt;/p&gt; &lt;p&gt;For advanced users: it can even recover BOTH log files (%1 and %2), and will delete the first one ONLY if empty!&lt;/p&gt; &lt;center&gt;&lt;a href=&quot;http://lilypond-french-users.1298960.n2.nabble.com/file/n5569553/_portableLily.zip&quot; class='spip_out' rel='external'&gt;Jean-Christophe's script&lt;/a&gt;&lt;/center&gt;
&lt;/blockquote&gt;
&lt;p&gt;Well, thanks a lot to Jean-Christophe, Eluze, and all our users who helped establish and improve this method! As you can see, it is still a little hackish and involves moving/copying files around, but with a bit of luck the community will come up with more proper solutions in the future. In the meantime this will do the trick!&lt;/p&gt; &lt;p&gt;&lt;span class='spip_document_81 spip_documents spip_documents_center'&gt;
&lt;img src='http://news.lilynet.net/local/cache-vignettes/L125xH100/lesite-d163a.png' width='125' height='100' alt=&quot;&quot; style='height:100px;width:125px;' /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;That concludes the twenty-first issue of The &lt;i&gt;LilyPond Report&lt;/i&gt;. Next
installment is expected on November 1st; please &lt;a href=&quot;http://news.lilynet.net/?_Valentin-Villenave_&quot; class='spip_in'&gt;send&lt;/a&gt; &lt;a href=&quot;http://news.lilynet.net/?_Graham-Percival_&quot; class='spip_in'&gt;us&lt;/a&gt; your contributions before October 22!&lt;/p&gt; &lt;p&gt;Cheers,
&lt;br /&gt;Graham Percival &amp; Valentin Villenave&lt;/p&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;p&gt;&lt;span class=&quot;csfoo htmla&quot;&gt;&lt;/span&gt;[&lt;a href='#nh1' id='nb1' class='spip_note' title='Footnotes 1' rev='footnote'&gt;1&lt;/a&gt;] &lt;span class=&quot;csfoo htmlb&quot;&gt;&lt;/span&gt;As I was wondering whether &lt;i&gt;anyways&lt;/i&gt; was a correct form or not, I stumbled upon &lt;a href=&quot;http://web.uvic.ca/wguide/Pages/UsAnyway.html&quot; class='spip_out' rel='external'&gt;this website&lt;/a&gt; which I think Graham might appreciate...&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="en">
		<title>The LilyPond Report #20</title>
		<link>http://news.lilynet.net/?The-LilyPond-Report-20</link>
		<guid isPermaLink="true">http://news.lilynet.net/?The-LilyPond-Report-20</guid>
		<dc:date>2010-09-02T14:54:22Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>en</dc:language>
		<dc:creator>Phil Holmes, Valentin Villenave</dc:creator>



		<description>&lt;p&gt;Welcome to this twentieth issue of the &lt;i&gt;LilyPond Report&lt;/i&gt;!&lt;/p&gt;

-
&lt;a href="http://news.lilynet.net/?-LilyPond-Report-" rel="directory"&gt;LilyPond Report&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;This short, informal opinion column is about the &lt;a href=&quot;http://lilypond.org/&quot; class='spip_out' rel='external'&gt;GNU LilyPond&lt;/a&gt; project: its team, its world, its community. It is not meant to be an exhaustive &lt;a href=&quot;http://lilypond.org/doc/&quot; class='spip_out' rel='external'&gt;documentation resource&lt;/a&gt;. Reader comments are, of course, welcome (see at the bottom of this page).&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;div class=&quot;cs_sommaire cs_sommaire_avec_fond&quot; id=&quot;outil_sommaire&quot;&gt; &lt;div class=&quot;cs_sommaire_inner&quot;&gt; &lt;div class=&quot;cs_sommaire_titre_avec_fond&quot;&gt; Table of contents &lt;/div&gt; &lt;ul&gt; &lt;li&gt;&lt;a title=&quot;Editorial&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#editorial&quot;&gt;Editorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Release news&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#release_news&quot;&gt;Release news&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;OMET: Online Music Editing Tools&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#omet_online_music_editing_tools&quot;&gt;OMET: Online Music Editing Tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;News from the Frog Pond&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#news_from_the_frog_pond&quot;&gt;News from the Frog Pond&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Bug Report of the Report&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#bug_report_of_the_report&quot;&gt;Bug Report of the Report&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;LSR Snippets&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#lsr_snippets&quot;&gt;LSR Snippets&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; &lt;/div&gt;&lt;p&gt;Welcome to this twentieth issue of the &lt;i&gt;LilyPond Report&lt;/i&gt;!
&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;editorial&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Editorial&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by Graham Percival&lt;/i&gt;&lt;/p&gt; &lt;p&gt;Here's another LilyPond Report. Enjoy.&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;release_news&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Release news&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by Graham Percival&lt;/i&gt;&lt;/p&gt; &lt;p&gt;The current stable release is 2.12.3-2; all normal users should be
engraving with this version. We have no plans on making any more
2.12 releases.&lt;/p&gt; &lt;p&gt;The current development release is 2.13.31. This release
currently has 5 known Critical issues, but 3 of those were
recorded after the previous Report. We're definitely making
progress towards the first alpha release of 2.14. Finally, the
infamous issue 989 has finally been fixed; many thanks to
everybody who worked on it, especially Phil Holmes and James Lowe!&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;omet_online_music_editing_tools&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;OMET: Online Music Editing Tools&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Leveraging Ajax, the DOM and Lilypond for a web-based notation editor&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Mike Blackstock wrote a nice review of his tool:&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://www.omet.ca/lilyreport/lilypondreport.html&quot; class='spip_out' rel='external'&gt;http://www.omet.ca/lilyreport/lilypondreport.html&lt;/a&gt;&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;news_from_the_frog_pond&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;News from the Frog Pond&lt;/h3&gt;
&lt;p&gt;The Frogs are ordinary LilyPond users who have chosen to get
&lt;br /&gt;involved in their favorite software's development. Fixing bugs,
implementing new features, documenting the source code: there's a
lot to be done, but most importantly: this is a chance for
everyone to learn more about LilyPond, about Free Software, about
programming&#8230; and to have fun. If you're curious about any of it,
then the word is: Join the Frogs!&lt;/p&gt; &lt;p&gt;The Frogs have two new members: Wols (working on a capo option to
the chordname engraver), and William (cleaning up our CSS files).
Ian continues the difficult task of upgrading our scheme files to
work with the upcoming guile 2.0.&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;bug_report_of_the_report&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Bug Report of the Report&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by Phil Holmes&lt;/i&gt;&lt;/p&gt; &lt;p&gt;Patrick Schmidt reported &lt;a href=&quot;http://lists.gnu.org/archive/html/bug-lilypond/2010-08/msg00330.html&quot; class='spip_out' rel='external'&gt;some difficulties&lt;/a&gt; with \autoBeamOff when setting some vocal music. He reported that it has no effect on other voices, even when used in a global variable. He also noted some strange effects in combination with 16th notes and \partcombine.&lt;/p&gt; &lt;p&gt;Carl Sorensen replied that \autoBeamOff is simply an alias for \set autoBeaming = ##f, which means that, by default, it actually only applies in the Voice context. Given that this is not documented, it's not surprising that it's not obvious. I then found an almost identical bug report from 2003, and suggested it was time to fix the documentation.
Ralph Palmer raised it as Issue #1227, and Carl provided a fix in
build 2.13.31.&lt;/p&gt; &lt;p&gt;Carl also commented that the bug Patrick identified when using
\partcombine is very challenging to try to fix. However, it can be worked around using set Staff.autoBeaming = ##f&lt;/p&gt; &lt;p&gt;Why have I selected this as bug report of the report? Well - I thought it was interesting to be reminded about how it's important to consider which context contains the property you're trying to change. And secondly, it was nice to be able to report that an untracked bug from 2003 has been fixed.&lt;/p&gt; &lt;p&gt;So remember to watch your contexts if you're using \autoBeamOff!&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;lsr_snippets&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;lang=en#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;LSR Snippets&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by Valentin Villenave&lt;/i&gt;&lt;/p&gt; &lt;p&gt;If you're a newcomer to LilyPond, you might not be familiar with the LSR yet; the &lt;a href=&quot;http://lsr.dsi.unimi.it/&quot; class='spip_out' rel='external'&gt;LilyPond Snippet Repository&lt;/a&gt; is a user-contributed library of LilyPond tricks, ranging from simple yet helpful examples to sophisticated mind-challenging code magic.&lt;/p&gt; &lt;p&gt;Browsing through our mailing list archives, I recently found this &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-user/2008-09/msg00083.html&quot; class='spip_out' rel='external'&gt;nice trick&lt;/a&gt; that Trevor Daniels shared with us about two years ago; of course I immediately added it to the LSR:&lt;/p&gt; &lt;center&gt;&lt;strong&gt;&lt;a href=&quot;http://lsr.dsi.unimi.it/LSR/Item?id=699&quot; class='spip_out' rel='external'&gt;Background color&lt;/a&gt;&lt;/strong&gt;&lt;/center&gt;
&lt;p&gt;&lt;span class='spip_document_417 spip_documents spip_documents_center'&gt;
&lt;img src='http://news.lilynet.net/local/cache-vignettes/L275xH57/Image-9-09601.png' width='275' height='57' alt=&quot;&quot; style='height:57px;width:275px;' /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;This simple yet efficient snippet takes advantage of LilyPond's ability to manage different layers ans superimpose them through the, well, &lt;code class='spip_code' dir='ltr'&gt;'layer&lt;/code&gt; property. A very, very large colored rectangle is drawn in a &lt;code class='spip_code' dir='ltr'&gt;markup&lt;/code&gt; object all over the page.&lt;/p&gt; &lt;p&gt;A few questions remain: how to automatically make the rectangle size match the page dimensions? How to use images instead of plain colors, for a nice watermark effect? how to find a better anchor point for the markup? etc.&lt;/p&gt; &lt;p&gt;If you have ideas to improve this method, please &lt;a href=&quot;http://news.lilynet.net/?_Valentin-Villenave_&quot; class='spip_in'&gt;let me know&lt;/a&gt; and send us your nicely decorated music sheets!&lt;/p&gt; &lt;p&gt;&lt;span class='spip_document_81 spip_documents spip_documents_center'&gt;
&lt;img src='http://news.lilynet.net/local/cache-vignettes/L125xH100/lesite-d163a.png' width='125' height='100' alt=&quot;&quot; style='height:100px;width:125px;' /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;That concludes the twentieth issue of The LilyPond Report. Next
installment is expected on October 1st; please &lt;a href=&quot;http://news.lilynet.net/?_Valentin-Villenave_&quot; class='spip_in'&gt;send&lt;/a&gt; &lt;a href=&quot;http://news.lilynet.net/?_Graham-Percival_&quot; class='spip_in'&gt;us&lt;/a&gt; your contributions before September 22!&lt;/p&gt; &lt;p&gt;Cheers,
&lt;br /&gt;Graham Percival, Valentin Villenave&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="en">
		<title>The LilyPond Report #19</title>
		<link>http://news.lilynet.net/?The-LilyPond-Report-19</link>
		<guid isPermaLink="true">http://news.lilynet.net/?The-LilyPond-Report-19</guid>
		<dc:date>2010-08-03T21:47:46Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>en</dc:language>
		<dc:creator>Valentin Villenave</dc:creator>



		<description>&lt;p&gt;Welcome to this nineteenth issue of the &lt;i&gt;LilyPond Report&lt;/i&gt;!&lt;/p&gt;

-
&lt;a href="http://news.lilynet.net/?-LilyPond-Report-" rel="directory"&gt;LilyPond Report&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;This short, informal opinion column is about the &lt;a href=&quot;http://lilypond.org/&quot; class='spip_out' rel='external'&gt;GNU LilyPond&lt;/a&gt; project: its team, its world, its community. It is not meant to be an exhaustive documentation resource. Reader comments are, of course, welcome (see at the bottom of this page).&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;div class=&quot;cs_sommaire cs_sommaire_avec_fond&quot; id=&quot;outil_sommaire&quot;&gt; &lt;div class=&quot;cs_sommaire_inner&quot;&gt; &lt;div class=&quot;cs_sommaire_titre_avec_fond&quot;&gt; Table of contents &lt;/div&gt; &lt;ul&gt; &lt;li&gt;&lt;a title=&quot;Editorial&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;id_rubrique=26#editorial&quot;&gt;Editorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Coming up next month...&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;id_rubrique=26#coming_up_next_month&quot;&gt;Coming up next month&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Release news&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;id_rubrique=26#release_news&quot;&gt;Release news&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Conference sightings!&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;id_rubrique=26#conference_sightings&quot;&gt;Conference sightings!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;News from the Frog Pond&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;id_rubrique=26#news_from_the_frog_pond&quot;&gt;News from the Frog Pond&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Snippet of the Report&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;id_rubrique=26#snippet_of_the_report&quot;&gt;Snippet of the Report&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Bug Report of the Report&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;id_rubrique=26#bug_report_of_the_report&quot;&gt;Bug Report of the Report&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; &lt;/div&gt;&lt;p&gt;Welcome to this nineteenth issue of the &lt;i&gt;LilyPond Report&lt;/i&gt;!&lt;/p&gt; &lt;p&gt;Let's open this issue with a disclaimer: yes, this installment was supposed to go online on July the 1st (per special request of Graham). Although it has been mostly ready for more than a month, one of the editors felt unhappy with the lack of long articles, thorough features and verbose investigations. (Which may give you a hint as to why said editor is regularly qualified as &lt;i&gt;fluffy&lt;/i&gt; by his colleague Graham Percival.)&lt;/p&gt; &lt;p&gt;Anyway, my sincere apologies about the delay; let me wish you a (late) happy Canada Day, Independence Day, &lt;a href=&quot;http://en.wikipedia.org/wiki/X-Day_%28Church_of_the_SubGenius%29&quot; class='spip_out' rel='external'&gt;X day&lt;/a&gt;, to all!
&lt;br /&gt;&lt;i&gt;Valentin &quot;fluffy&quot; Villenave&lt;/i&gt;&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;editorial&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;id_rubrique=26#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Editorial&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by Valentin Villenave&lt;/i&gt;.&lt;/p&gt; &lt;p&gt;Here's that time again, where everything seems to take forever, when the &lt;i&gt;LilyPond Report&lt;/i&gt; is unbelievably late, etc.&lt;/p&gt; &lt;p&gt;It is probably true of any Free Software community: time tends to lengthen and things tend to decay. Take any given deadline, forecast, roadmap or whatnot... but when you come back months later, chances are nothing has worked out according to plan.&lt;/p&gt; &lt;p&gt;This, of course, can be observed a lot more in volunteer-driven projects like ours, but the (somehow) good news is, we're not alone.&lt;/p&gt;
&lt;dl class='spip_document_410 spip_documents spip_documents_right' style='float:right;width:207px;'&gt;
&lt;dt&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L207xH169/Logo_UsageGua42a-fcce7.png' width='207' height='169' alt='PNG - 8.7 kb' style='height:169px;width:207px;' /&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;Look, for instance, at the &lt;a href=&quot;http://fedoraproject.org/&quot; class='spip_out' rel='external'&gt;Fedora project&lt;/a&gt;, arguably one of the top-three most interesting GNU/Linux distributions out there: in a &lt;a href=&quot;http://poelcat.wordpress.com/2010/06/30/shipping-on-time-is-a-feature-for-fedora-14/&quot; class='spip_out' rel='external'&gt;recent blog post&lt;/a&gt;, its Program Manager John Poelstra has asked for &quot;&lt;i&gt;more discipline and fortitude&lt;/i&gt;&quot;, and presented as a &quot;&lt;i&gt;challenge&lt;/i&gt;&quot; that the distribution's 14th release would ship on time... Time will tell.&lt;/p&gt; &lt;p&gt;On a similar note, a while back we had &lt;a href=&quot;http://news.lilynet.net/?The-LilyPond-Report-15#outil_sommaire_2&quot; class='spip_in'&gt;noted&lt;/a&gt; that Linus Torvalds was &lt;a href=&quot;http://kerneltrap.org/mailarchive/linux-kernel/2008/7/15/2497614&quot; class='spip_out' rel='external'&gt;thinking about&lt;/a&gt; changing the Linux Kernel version numbering scheme: &quot;&lt;i&gt;instead of releasing 2.6.26, maybe we could have 2008.7 instead&lt;/i&gt;&quot;
&lt;br /&gt;Two years later, we're at 2.6.35... and the old numbering scheme has never been better (thanks for asking).&lt;/p&gt; &lt;p&gt;To anyone who's been involved with the LilyPond project, such situations will probably look quite familiar. Our &quot;stable&quot; releases are a good example thereof: waiting for 2.10 to appear seemed like an eternity, but was nothing compared to the wait for 2.12 (as &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-user/2008-01/msg00480.html&quot; class='spip_out' rel='external'&gt;Mats alluded to&lt;/a&gt;), and whilst 2.14 was supposed to include a smaller number of new features, and be out of the door in no time, this release has yet to appear. Let's not even mention the next major version: as we &lt;a href=&quot;http://news.lilynet.net/?The-LilyPond-Report-15#outil_sommaire_2&quot; class='spip_in'&gt;already pointed out&lt;/a&gt;, LilyPond 3.0 has been discussed since 2004!&lt;/p&gt; &lt;p&gt;What causes such phenomena? Is there something we can do to improve the situation (hint: the answer is yes, obviously)? Quite a few answers are to be found in Graham's recent and insightful &lt;a href=&quot;http://percival-music.ca/blog/2010-08-01-sustainable-development.html&quot; class='spip_out' rel='external'&gt;paper&lt;/a&gt; which we'll talk more about below.&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;coming_up_next_month&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;id_rubrique=26#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Coming up next month...&lt;/h3&gt;
&lt;p&gt;What about the &lt;i&gt;LilyPond Report&lt;/i&gt;? Can we expect to reach a more regular release cycle? Well, we're working on it. Starting next month, the &lt;i&gt;Report&lt;/i&gt; will be run on a &lt;strong&gt;monthly&lt;/strong&gt; basis, with a slightly revamped layout, and a new shorter, &quot;low-fluff&quot; writing style. The installments should be shorter, easier to read, and more to the point.&lt;/p&gt; &lt;p&gt;Next issue will be published on September the 1st, and it should include a feature about online LilyPond editors &#8212; no installation required; just surf to a website, type away, and view the output! Please &lt;a href=&quot;http://news.lilynet.net/?_Valentin-Villenave_&quot; class='spip_in'&gt;contact&lt;/a&gt; &lt;a href=&quot;http://news.lilynet.net/?_Graham-Percival_&quot; class='spip_in'&gt;us&lt;/a&gt; if you are working on such a system. All contributions are to be sent before August 22; anything that we'll receive after this point will be... preciously kept for our October issue!&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;release_news&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;id_rubrique=26#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Release news&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by Graham&lt;/i&gt;&lt;/p&gt; &lt;p&gt;The current stable release is 2.12.3-2; all normal users should be
engraving with this version. We have no plans on making any more
2.12 releases.&lt;/p&gt; &lt;p&gt;The current development release is 2.13.28. This release has 8
Critical issues (plus 7 affecting the new website), with patches pending for some of them. The good
news is that half of these issues were added since the last
Report, so we &lt;emph&gt;are&lt;/emph&gt; making progress. The bad news is
that &lt;a href=&quot;http://code.google.com/p/lilypond/issues/detail?id=989&quot; class='spip_out' rel='external'&gt;issue 989&lt;/a&gt; (ensure that no information is only in the
regtests) is still open &#8212; but Phil Holmes and James Lowe have
recently begun seriously working on this, so I'm optimistic that it
will be resolved before the next Report. &lt;img alt=&quot;:)&quot; title=&quot;:)&quot; class=&quot;no_image_filtrer format_png&quot; src=&quot;http://news.lilynet.net/plugins/auto/couteau_suisse/img/smileys/sourire.png&quot; width=&quot;19&quot; height=&quot;19&quot;/&gt;&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;conference_sightings&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;id_rubrique=26#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Conference sightings!&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;by Valentin&lt;/p&gt; &lt;dl class='spip_document_416 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L480xH320/php7jMBtRPM-7d302.jpg' width='480' height='320' alt='JPEG - 44.5 kb' style='height:320px;width:480px;' /&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-416 spip_doc_titre' style='width:350px;'&gt;&lt;strong&gt;The 2010 Libre Software Meeting&lt;/strong&gt;&lt;/dt&gt;
&lt;dd class='crayon document-descriptif-416 spip_doc_descriptif' style='width:350px;'&gt;Unfortunately, none of your editors appears thereabove. But still, you get the picture.
&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;Obviously, this summer's bigger event (with regards to the LilyPond community) was the &lt;a href=&quot;http://2010.rmll.info/&quot; class='spip_out' rel='external'&gt;&lt;strong&gt;2010 Libre Software Meeting&lt;/strong&gt;&lt;/a&gt; in Bordeaux, France, where our Graham &quot;Grumpy&quot; Percival had been officially invited (thanks to our French contributor John Mandereau, who had the brilliant idea to get in touch with the LSM staff).&lt;/p&gt; &lt;p&gt;This gave Graham a chance to &lt;a href=&quot;http://percival-music.ca/blog/2010-07-12-bordeaux-city.html&quot; class='spip_out' rel='external'&gt;discover some French oddities&lt;/a&gt;, and to meet with a few members of our French community, namely John, yours truly and &#8212; last but not least &#8212; &lt;i&gt;Master&lt;/i&gt; &lt;a href=&quot;http://nicolas.sceaux.free.fr/&quot; class='spip_out' rel='external'&gt;Nicolas Sceaux&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;As announced in the previous &lt;i&gt;Report&lt;/i&gt;, Graham was to give a &lt;a href=&quot;http://2010.rmll.info/Sustainability-in-F-OSS-developers-as-a-non-renewable-resource.html&quot; class='spip_out' rel='external'&gt;lecture&lt;/a&gt; entitled &lt;i&gt;Sustainability in F/OSS: developers as a non-renewable resource&lt;/i&gt;. Here's the pitch:&lt;/p&gt; &lt;blockquote class=&quot;spip&quot;&gt;
&lt;p&gt;
The time and energy which developers spend on open-source projects is not an infinite resource. Developer effort can stall due to external demands on their time (such as family, career, or health), but also due to internal factors (such as a loss of motivation or interest). Long-term projects (5+ years old) should try to engage in sustainable development practices. How can we retain developer interest? How can we prepare for the inevitable loss of developers? How can we train the next generation of developers?&lt;/p&gt; &lt;p&gt; This talk draws upon experiences from GNU/LilyPond (a 14-year old sheet music typesetter), but makes general suggestions (and warnings!) for users, developers, and project leaders.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Graham's talk was quite interesting (however it had unfortunately not been given any visibility whatsoever, which caused Graham to give his talk to a merely empty classroom...). It did raise several questions and quite a few interesting answers; Graham was kind enough to put his slides &lt;a href=&quot;http://percival-music.ca/blog/2010-08-01-sustainable-development.html&quot; class='spip_out' rel='external'&gt;on his blog&lt;/a&gt;, in a slightly improved and clarified version, so feel free to have a look!&lt;/p&gt; &lt;dl class='spip_document_412 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;a href=&quot;http://percival-music.ca/blogfiles/sustainable.pdf&quot; title='PDF - 333.2 kb' type=&quot;application/pdf&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L52xH52/pdf-eb697.png' width='52' height='52' alt='PDF - 333.2 kb' style='height:52px;width:52px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;To be honest, this kind of official, big-time events can get really boring really quick. However, it did allow us to make a few acquaintances: some people in this &lt;a href=&quot;http://ofset.org/&quot; class='spip_out' rel='external'&gt;&lt;strong&gt;OFSET&lt;/strong&gt;&lt;/a&gt; (Organization for Free Software in Education and Teaching) were very much interested in LilyPond, and we also had a meeting with a couple of &lt;a href=&quot;http://musescore.org/&quot; class='spip_out' rel='external'&gt;&lt;strong&gt;MuseScore&lt;/strong&gt;&lt;/a&gt; developers (whom we now know they do read the &lt;i&gt;LilyReport&lt;/i&gt;! Hi guys! &lt;img alt=&quot;;)&quot; title=&quot;;)&quot; class=&quot;no_image_filtrer format_png&quot; src=&quot;http://news.lilynet.net/plugins/auto/couteau_suisse/img/smileys/clin_d-oeil.png&quot; width=&quot;19&quot; height=&quot;19&quot;/&gt; )&lt;/p&gt; &lt;p&gt;And of course, nothing can be compared to the experience of meeting the actual Graham Percival for the first time, face-to-face. However, let's not spoil it in case it could happen to you in the future, dear readers: this is one of these things one has to live by oneself.&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;news_from_the_frog_pond&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;id_rubrique=26#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;News from the Frog Pond&lt;/h3&gt;
&lt;blockquote class=&quot;spip&quot;&gt;
&lt;p&gt;
The Frogs are ordinary LilyPond users who have chosen to get
involved in their favorite software's development. Fixing bugs,
implementing new features, documenting the source code: there's a
lot to be done, but most importantly: this is a chance for
everyone to learn more about LilyPond, about Free Software, about
programming&#8230; and to have fun. If you're curious about any of it,
then the word is: Join the Frogs!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The Frog Pond has been fairly still for the past two months; work
has continued on preparing for our switch to &lt;a href=&quot;http://www.gnu.org/software/guile/news.html&quot; class='spip_out' rel='external'&gt;guile 2.0&lt;/a&gt;, and mixing ties and harmonics in tablature.&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;snippet_of_the_report&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;id_rubrique=26#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Snippet of the Report&lt;/h3&gt;
&lt;p&gt;This month's snippet has been (re-)discovered by &lt;a href=&quot;http://www.laymusic.org/&quot; class='spip_out' rel='external'&gt;Laura Conrad&lt;/a&gt;, thanks to a &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-user/2010-03/msg00537.html&quot; class='spip_out' rel='external'&gt;post&lt;/a&gt; by Kieren MacMillan in March.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;How to multiply (or divide) note values in Lily&lt;/strong&gt;
&lt;br /&gt;&lt;i&gt;by Laura Conrad&lt;/i&gt;&lt;/p&gt; &lt;blockquote class=&quot;spip&quot;&gt;
&lt;p&gt;
I use Lily mainly to transcribe Renaissance music, which I then play with the &lt;a href=&quot;http://www.laymusic.org/windband.html&quot; class='spip_out' rel='external'&gt;Cantabile Band&lt;/a&gt;, and publish on &lt;a href=&quot;http://www.serpentpublications.org/&quot; class='spip_out' rel='external'&gt;SerpentPublications.org&lt;/a&gt;. I believe that it's easier to play without the confusing barlines that modern editors insist on inserting. Sometimes I transcribe from the facsimiles as they were printed in the sixteenth or early seventeenth century, but often, I'm transcribing from a modern edition.&lt;/p&gt; &lt;p&gt;Besides inserting confusing barlines, modern editors often change the note values &#8212; if the composer was thinking in a whole note beat, and using quarter notes for runs and ornaments, a twentieth century editor will often turn the whole notes into quarter notes, and the quarter notes into sixteenth notes.&lt;/p&gt; &lt;p&gt;I originally started transcribing in &lt;a href=&quot;http://abcnotation.com/&quot; class='spip_out' rel='external'&gt;ABC&lt;/a&gt;, which has a default note length, so doubling or quadrupling the note values is just a matter of changing all the L: statements to use a different default.&lt;/p&gt; &lt;p&gt;This is a feature I had missed in lilypond, but then last March there was a &lt;a href=&quot;http://lists.gnu.org/archive/html/lilypond-user/2010-03/msg00537.html&quot; class='spip_out' rel='external'&gt;post&lt;/a&gt; that called my attention to &lt;a href=&quot;http://lsr.dsi.unimi.it/LSR/Item?id=305&quot; class='spip_out' rel='external'&gt;&lt;strong&gt;this snippet&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;So now I have a file called &quot;slower.ly&quot;, which I include in my lilypond for pieces where I need to change the note values. It looks like this:&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;looksSlower =&lt;br /&gt;
#(define-music-function (parser location music) (ly:music?)&lt;br /&gt; (let ((new-music (ly:music-deep-copy music)))&lt;br /&gt; (shift-duration-log new-music -1 0)&lt;br /&gt; new-music))&lt;/code&gt;&lt;/div&gt;
&lt;dl class='spip_document_413 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;a href=&quot;http://news.lilynet.net/IMG/zip/slower.ly.zip&quot; title='Zip - 236 bytes' type=&quot;application/zip&quot;&gt;&lt;img src='http://news.lilynet.net/local/cache-vignettes/L52xH52/zip-2bcd4.png' width='52' height='52' alt='Zip - 236 bytes' style='height:52px;width:52px;' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;This doubles the note values. The first number in (shift-duration-log new-music -1 0) would be &quot;-2&quot; if I needed to quadruple them, or &quot;1&quot; if I wanted to halve them.&lt;/p&gt; &lt;p&gt;In my code that prints the part or the score, I have the line:&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;\include &quot;slower.ly&quot;&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;And when I've finished the proofreading where I have to keep referring back to my original source, I change the lines:&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;\context Staff=&quot;default&quot;&lt;br /&gt;
{&lt;br /&gt; \testnotes&lt;br /&gt;
}&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;to:&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;\context Staff=&quot;default&quot;&lt;br /&gt;
{&lt;br /&gt;
\looksSlower{\testnotes}&lt;br /&gt;
}&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;So here you can see the same note entry producing both note values:
&lt;span class='spip_document_414 spip_documents spip_documents_center'&gt;
&lt;img src='http://news.lilynet.net/local/cache-vignettes/L500xH123/test-2-83cb0.png' width='500' height='123' alt=&quot;&quot; style='height:123px;width:500px;' /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 class=&quot;spip&quot; id=&quot;bug_report_of_the_report&quot;&gt;&lt;a title=&quot;Table of contents&quot; href=&quot;http://news.lilynet.net/spip.php?page=backend&amp;id_rubrique=26#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Bug Report of the Report&lt;/h3&gt;
&lt;p&gt;The big news about bugs is our vastly-expanded &lt;a href=&quot;http://lilypond.org/doc/v2.13/Documentation/contributor/bug-squad-setup&quot; class='spip_out' rel='external'&gt;Bug Squad&lt;/a&gt;! We now
have 8 Bug Squad members; one for each day of the week, with two
on Friday. In addition, we have now caught up on all the old bug
reports sent to &lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/bug-lilypond&quot; class='spip_out' rel='external'&gt;&lt;code class='spip_code' dir='ltr'&gt;bug-lilypond&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;If you have reported a bug which was not fixed in 2.13.28 and is
not in our issue tracker, please report it again by following the
instructions on:&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://lilypond.org/website/bug-reports.html&quot; class='spip_url spip_out' rel='external'&gt;http://lilypond.org/website/bug-rep...&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Please note that emails to &lt;code class='spip_code' dir='ltr'&gt;lilypond-user&lt;/code&gt; or
&lt;code class='spip_code' dir='ltr'&gt;lilypond-devel&lt;/code&gt; do &lt;emph&gt;not&lt;/emph&gt; consistute proper
bug reports &#8212; we only have enough resources to deal with the
dedicated &lt;code class='spip_code' dir='ltr'&gt;bug-lilypond&lt;/code&gt; mailing list.&lt;/p&gt; &lt;p&gt;&lt;span class='spip_document_81 spip_documents spip_documents_center'&gt;
&lt;img src='http://news.lilynet.net/local/cache-vignettes/L125xH100/lesite-d163a.png' width='125' height='100' alt=&quot;&quot; style='height:100px;width:125px;' /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;That concludes the nineteenth issue of The LilyPond Report. Next
installment is expected on September 1st; please &lt;a href=&quot;http://news.lilynet.net/?_Valentin-Villenave_&quot; class='spip_in'&gt;send&lt;/a&gt; &lt;a href=&quot;http://news.lilynet.net/?_Graham-Percival_&quot; class='spip_in'&gt;us&lt;/a&gt; your contributions before August 22!&lt;/p&gt; &lt;p&gt;Cheers,
&lt;br /&gt;Graham Percival &amp; Valentin Villenave&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>



</channel>

</rss>
