LilyPond is "a computer program and file format for music engraving" (quote from Wikipedia). There's a LilyPond tag on Stack Overflow and a LilyPond tag on Stack Exchange site Music: Practice & Theory.

I recently asked a question about how to do something in LilyPond on Stack Overflow here, but I got downvoted and another user (not the down-voter) pointed out that it is not a programming question. But it is. I've asked too on the Music Stack Exchange site here, but I am confused. Where should such a question live on Stack Exchange? Is it OK to cross-post to two relevant Stack Exchange sites? Why is LilyPond frowned upon on Stack Overflow?

  • 2
    (Cross posted on meta-Music here) – dumbledad Jan 16 '16 at 14:48
  • 24
    Formatting data to be suitable to be consumed by a program is not programming. – Hans Passant Jan 16 '16 at 14:49
  • 2
    But understanding which commands are available and how to use them is – dumbledad Jan 16 '16 at 14:50
  • 3
    @HansPassant It's possibly an edge case. Creating some procedure (be it rendering or whatever) in a DSL could mean programming actually. – πάντα ῥεῖ Jan 16 '16 at 14:55
  • 8
    No, "understanding which commands are available and how to use them" is not programming. By that definition, anything involving a computer would be on-topic, and that's not true. – Andrew Medico Jan 16 '16 at 14:56
  • 29
    OK - but questions about HTML and CSS are fine for SO. I can't see the difference. – dumbledad Jan 16 '16 at 14:58
  • 24
    I personally don't think HTML and CSS are programming per se either (they don't do computation in the computer science sense), but they're too inextricably linked with web application development to separate out. I think the closest analog here is TeX/LaTeX - highly technical and computer-y, but not programming so it has its own site: tex.stackexchange.com – Andrew Medico Jan 16 '16 at 15:22
  • 15
    @HansPassant: I'm not going to argue on this one way or the another, but have you used LilyPond? "LilyPond uses the Scheme programming language, both as part of the input syntax, and as internal mechanism to glue modules of the program together." Using it doesn't have to include "actual" programming, but without being familiar with the software/language, you can't really tell from the question whether it's analogous to a simple syntax question about eg. Python. – Aleksi Torhamo Jan 16 '16 at 22:54
  • 1
    A-hem, Lilypond is for all intents and purpouses LaTeX for music, but why not here? music.stackexchange.com/questions/tagged/lilypond – Tobia Tesan Jan 16 '16 at 23:01
  • 13
    Lilypond doesn't seem all that different from any other DSL. You could argue that questions about SQL aren't really about programming either (but proprietary languages like PLpgSQL or PL/SQL are). – cimmanon Jan 16 '16 at 23:20
  • @TobiaTesan other than the nature of the workflow, there is almost no overlap in the details of lilypond and LaTeX -- I don't think that the LaTeX community would or should want to take on what is effectively a different language. – Dave Jan 18 '16 at 14:51
  • @Dave of course not, what makes you think otherwise? I was suggesting that, while Lilypond should be roughly as on topic as LaTeX is, Music SE seems like a good place to ask anyway :) – Tobia Tesan Jan 18 '16 at 15:52
  • @TobiaTesan poor reading comprehension! (sorry) – Dave Jan 18 '16 at 15:53
  • 3
    @HansPassant you mean like text data for example? Consumed by a compiler or interpreter program? – null Jan 18 '16 at 23:35
  • 4
    @HansPassant say that if you want but it's the content of a huge amount of SO questions. Many times a person is debugging their code and they find the actual underlying problem to be in the format of the data they're consuming. They post the question as "json this" or "xml that", what does it matter? The problem is their code fails to read a file. How is it's format relevant? I don't care if it's music specific. There are also a ton of music specific software applications. If I want to write something to parse finale music files I can't ask about it on SO? No one can reasonably draw that line. – evanmcdonnal Jan 18 '16 at 23:40

We do cover languages that have a lot of similarities to Lilypond's DSL like HTML, CSS, SVG, XML, SQL, and even Logo. Aside from Logo (which I'm not familiar with), these languages are commonly used in the process of creating a program or application.

Lilypond, on the other hand, is a tool almost exclusively for musicians. As a result, it would be better suited to Music.SE than here.

Just to clarify here: I'm not suggesting that questions regarding Lilypond are off-topic. A number of questions on SO could just as easily be on-topic on other sites (DBA, Programmers, CodeReview, etc.). Being a better fit on another site doesn't make a question off-topic here. However, posting on the appropriate site is going to make you more likely to get a better answer.

If I were to ask a question about crafting Oboe reeds, where should I post it? It could possibly be on-topic over on Woodworking.SE, but I'm probably going to get a better answer on Music.SE.

  • 15
    ... but we also allow questions on Excel functions - which are not used in the process of creating a program or application. – Richard Le Mesurier Jan 18 '16 at 8:04
  • 2
    This seems like a good place as any other to semi-jokingly suggest that if the notation software you are developing doesn't output Lilypond, it's useless. – Tobia Tesan Jan 18 '16 at 15:54
  • 5
    Allowing questions on HTML and disallowing Lilypond is totally arbitrary. And it makes much more sense to ask a programming question here (a place full of programmers) than at music.SE (a place full of musicians), considering that any problems a person has with Lilypond will have very little to do with music, and very much to do with programming. – Steve Bennett Jan 19 '16 at 2:43
  • How are HTML, CSS or SVG 'commonly used in the process of creating a program or application'? – jwg Jan 19 '16 at 13:33
  • 5
    @jwg Perhaps you've heard of the "web application" fad? Or Cordova (PhoneGap)? I follow the Sass tag (a language with variables and control structures that compiles source files to CSS) and about 10% of the questions people ask about it are due to their lack of understanding of CSS. Even JavaScript questions have a bit of overlap with CSS (you can't change how something looks via JavaScript without understanding CSS, since that's the only way to modify a good number of properties). – cimmanon Jan 19 '16 at 13:39
  • 1
    @jwg every web application (there's quite a few of them now, like SO) uses two or three of those technologies. – user393219 Jan 19 '16 at 13:53
  • @SteveBennett It also makes sense that musicians would use LilyPond to make sheet music for other musicians especially ones who are exposed to the SE network so I'm not seeing why Music SE being for musicians would be a limiting factor. Sure in-depth function creation would be more on the programming side, but most if not all LilyPond questions on music SE are about how to engrave certain aspects of sheet music which could be asked about similar programs like Finale or Sibelius on music SE. – Dom Jan 19 '16 at 17:09
  • 3
    Right, so questions about how to use LilyPond to solve musical problems should be (and are) asked on music.SE. Questions about LilyPond as a language (as opposed to the domain it's used within) are fine here, IMHO. Just like many GIS questions are asked here if they relate to Leaflet, PostGIS querying, etc - but pure GIS questions obviously belong on gis.SE. – Steve Bennett Jan 20 '16 at 0:48
  • @SteveBennett What is the benefit of dividing up the knowledge and experts to draw from, though? Seems like it would only confuse users as to which the "correct" place to post their questions. It would also make it more difficult to deal with cross-site duplicates. – cimmanon Jan 20 '16 at 0:56
  • 2
    I'm not "dividing up" anything, I'm just rejecting the artificial grouping that comes from lumping everything "lilypond-related" together. Just like you wouldn't lump everything "java-related" together, when that covers a vast range of things, many of which have nothing to do with programming. – Steve Bennett Jan 20 '16 at 2:47
  • @RichardLeMesurier If you consult the "What topics can I ask about here?" you'll see that it permits "a software algorithm", which Excel functions are. – DBedrenko Jan 20 '16 at 8:38
  • 1
    @NewWorld I'm not saying they should be OT. That was a different post a long time back. But since they are, so should things like Latex (which is), HTML (which is) and hence Lilypond. What's good for the goose must be good for the gander. – Richard Le Mesurier Jan 20 '16 at 8:41

Surveying the questions here yields (ordered by "recently active"):

  1. How to add lyrics -- lilypond usage (N.B. this was posted by the OP of this question).
  2. programatically make midi from lilypond -- ultimately not programming (in lilypond at least) since the solution is to write a script to modify the lilypond content, but a bit more of a border line case
  3. Annotate score... -- lilypond usage
  4. Lilypond function to interpolate two notes -- this looks like a programming question to me -- "how do I write a function to do X in language Y" (though it's not a great question in terms of what's been put into it); unanswered might be the equivalent of writing a custom TeX macro or might involve getting into the object model that you can access via Scheme
  5. Transpose by circle of fifths -- arguably an "algorithm question"; solution is expressed just as a set of Lilypond macros.
  6. Extract pitch names from music -- here the solution required knowing something about the lilypond internals and non-trivial scheme coding.
  7. Enabling lilypond emacs mode -- off topic, more of an an Emacs configuration question than either a programming or lilypond-usage question
  8. How to make a lilypond parser using JISON -- this is about constructing new code to interpret lilypond syntax.
  9. Parsing lilypond with Python -- similar to previous
  10. how to crop lilypond output -- solution involved separate bash script, but I interpret it as program usage.

A few of these questions are straightforward "I'm a user of lilypond and I can't get it to produce the output that I want"

A few are what I'd consider "programming questions" that just involve handling lilypond syntax or getting into the guts of the lilypond parser.

Then a few are in the grey area, they involve programming, but more like "macro" programming in the lilypond input.

Questions that are just about straightforward usage of lilypond (How do I get this music output?) will get better answers faster on Music SE (or the lilypond mailing list) than here. This carries over into questions that involve even more extensive "macro" level programming. It's not clear to me that the users at Music have knowledge of the "guts" of lilypond -- we don't see those kinds of questions there, so there is likely to still need to be room for these kinds of question here (where at least there are qualified Lispers).

  • 1
    2. seems to be a programming question, since the answer involves modifying a file using Perl. – jwg Jan 19 '16 at 13:34

Here's one definition of "computer programming" (from Wikipedia):


Opinions and specific wording may vary, but I'd say that definition does a good job of focusing on what makes programming programming: it's a process in which you create executable instructions for a computer. To me, "executable" means a verb or series of verbs instructing a computer to do something.

Arguably, markup languages like e.g. HTML, CSS, RTF, PDF, TeX/LaTeX, and (it appears to me) LilyPond aren't so much instructions as they are descriptions interpreted by a computer program. They are made up almost entirely or entirely of nouns and adjectives.

As noted by commenter Andrew above, HTML and CSS weasel their way in by virtue of being an integral part of programming in general. They aren't programming languages per se, but they are so tightly tied to languages like JavaScript, PHP, Ruby, etc. that they get to survive here on Stack Overflow riding in on the coattails of the true programming languages.

Contrast to "languages" that are more purely about display and rendering, like RTF, PDF, and TeX. To me, these are clearly not programming languages; they are more like the numbered sheet for a paint-by-numbers kit, where the instructions are simply "fill in each space with the appropriate color for the number". And indeed, TeX gets its entirely separate site; it's a worthwhile topic, but doesn't fit as programming per se.

Ultimately, however, it comes down to the judgment of the community. LilyPond does have unclosed questions here on Stack Overflow. But, only fifty-nine. That's not a very large number, and it could easily change if someone decided to sponsor a movement to remove the questions altogether.

More to the point, I don't see how LilyPond fits into the basic description of what's on-topic for SO:

if your question generally covers…
• a specific programming problem, or
• a software algorithm, or
• software tools commonly used by programmers; and is
• a practical, answerable problem that is unique to software development

… then you’re in the right place to ask your question!

Perhaps it's my bias as a professional programmer, but I view describing how some notes on a page should be rendered as very different from telling a computer specifically how to render the notes on a page. The latter is the actual program; the former is just a description of what they should look like.


The above discussion pertains to the Stack Overflow question that prompted this Meta question. Please note that while LilyPond does include a programming language (it uses Scheme as an extension language), the program LilyPond it not itself a programming language (any more than e.g. Excel is…they are programs, not languages), nor is the rendering markup language that is used (i.e. the one that is being asked about in the question at hand) a programming language.

I'm surprised that there are Stack Overflow participants that are unable to comprehend this distinction. It's my hope that making it more explicit here will help them understand the context well enough for them to not draw false analogies and comparisons.

  • 10
    "LilyPond uses the Scheme programming language, both as part of the input syntax, and as internal mechanism to glue modules of the program together." Using LilyPond can definitely include programming. (Whether the question in question qualifies is another matter, though) – Aleksi Torhamo Jan 16 '16 at 22:56
  • 5
    Re: "I view describing how some notes on a page should be rendered as very different from telling a computer specifically how to render the notes on a page": This distinction is a bit subtle for me, but it sounds like you'd rather stick to imperative and concrete languages rather than declarative and abstract ones? So, like, C code is on-topic (tells a computer specifically how to calculate a value), but Haskell code is not (merely describes how a value should be calculated)? – ruakh Jan 16 '16 at 23:04
  • 4
    @Aleksi: as I understand it (and I'm not a LilyPond expert, so bear with me), the use of Scheme in LilyPond is not an integral part of the product, but more akin to the use e.g. of VBA in Excel and Word. I assume no one would take the stance that being a question related to Excel or Word is in and of itself sufficient to qualify as a "programming question", even as specific questions related to VBA obviously would be. The question at issue here looks to me to be completely unrelated to writing any sort of extension to the LilyPond program. – Peter Duniho Jan 17 '16 at 5:09
  • 4
    @ruakh: you've completely misinterpreted my point. Even declarative/functional languages (I don't even know what you mean by "abstract") are at their core general purpose languages that lead to an executable program. Nothing in my answer is intended to be construed as ruling out such languages as true programming languages. See "Turing complete" for a conceptual framework that would more closely match where and how I'd draw the line. – Peter Duniho Jan 17 '16 at 5:13
  • @PeterDuniho: Re: "I don't even know what you mean by 'abstract'": I don't mean it as any precise term of art -- I just mean, abstract. Like, drawRectangle(x1,y1,x2,y2) is more abstract than a sequence of commands to draw each pixel in a certain order, and drawRectangleAtAppropriatePlace() is more abstract yet. More abstract = giving the computer less-specific instructions about exactly how to do something. – ruakh Jan 17 '16 at 5:25
  • 1
    @ruakh: well, then your use of the term "abstract" to describe a particular kind of programming language eludes me. All programming languages are "abstract" in some sense, and the level of abstraction has nothing to do with whether the language is e.g. declarative, imperative, functional, OO, etc. – Peter Duniho Jan 17 '16 at 5:27
  • @PeterDuniho: I'm not saying that imperative = concrete and that declarative = abstract, merely that your sentence seemed to prefer imperative and concrete (such as typical C code) rather than declarative and abstract (such as typical Haskell code). (That said, I guess I didn't express myself terribly well. I mean, there exists declarative C code at a high level of abstraction, and there probably exists imperative Haskell code at a low level of abstraction. So it's not categorically a property of the language.) – ruakh Jan 17 '16 at 5:45
  • 2
    Thanks for a great answer. I'm a professional programmer too, but the thing that makes me uncomfortable with the answer is that writing LilyPond, and more importantly getting stuck writing LilyPond, feels very much like writing software. I am also active on the Music.SE but there I tend to ask/answer questions about playing the violin, singing, musical notation, etc. That feels very different. So, I agree - but I don't feel like I agree! – dumbledad Jan 17 '16 at 10:30
  • 2
    Non-default hacks in Lilypond require a non-trivial amount of Scheme (the Lisp derivative) language knowledge, since Lilypond's extensibility comes from Scheme. Although I agree that Lilypond is much more at home in TeX.SE. – Iwillnotexist Idonotexist Jan 17 '16 at 22:48
  • 1
    @Iwill: that's fine. But I would suggest that only means Scheme questions would be on-topic on Stack Overflow. That's not really what we seem to be looking at here. I.e. back to my previous analogy: as general Excel/Word questions are not on-topic here, but VBA questions related to Excel/Word would be, so too would Scheme questions related to LilyPond be on-topic, even as LilyPond questions in general would not be (including those related to just marking up for rendered output). – Peter Duniho Jan 18 '16 at 0:19
  • 1
    But @Peter, Excel formula questions are on topic here, which seems much closer to this situation than Excel "how do I change the margin" questions. – Richard Le Mesurier Jan 18 '16 at 5:20
  • @Richard: really? That surprises me. I would definitely vote to close any question I saw asking simply about how to write an Excel formula. I don't see that as programming at all. To me, that falls squarely in the middle of "product documentation". But in any case, Excel formulae are at least comparable to e.g. functional language constructs, as opposed to a rendering markup language. – Peter Duniho Jan 18 '16 at 5:42
  • 3
    Since you quote Wikipedia: According to wikipedia, LilyPond is a programming language – Christoph Jan 19 '16 at 11:48
  • 1
    @PeterDuniho Is it your position that if Lilypond were Turing complete, then questions about it would be on-topic? – jwg Jan 19 '16 at 13:38
  • 1
    @Christoph: again, I am not using Turing-completeness as the actual litmus test; it's just that I find that a useful point of reference for the question. That said, I will point out that that TeX includes a Turing-complete programming engine does not mean that all questions about TeX are programming questions, nor that TeX itself is a programming language. Same thing goes for LilyPond. – Peter Duniho Jan 19 '16 at 18:38

Is it OK to cross-post to two relevant SE's?

If you own up to the cross-posting within the question (ideally at the bottom, since it is not critical information) and you have waited a couple of days after posting one, then I think it is fine.

I personally recommend not posting duplicates at the same time - it is a common hallmark of the help vampire, and may earn you downvotes that you do not deserve.

Generally I recommend adding a message of this kind:

Note: I have also posted this question over at the Foobar Widgets site [here].

It is much better to give people an opportunity to check that duplicate posts have not already been adequately answered, rather that to let people waste their time on an answer you don't need - especially if they are to find out later.

  • Thanks - I am definitely not a vampire (I've stayed on 3rd beach and vampires are not allowed there.) Good idea to include the note - I often include it as a comment. – dumbledad Jan 17 '16 at 22:47
  • You don't look like a vampire to me, @dumbledad! :-) – halfer Jan 17 '16 at 22:47

So what makes a real language - that seems to be the jist of it. In my old days, if you didn't write it in ASM you weren't a real man.

Of course the real men who used punchcards looked down at me for using such high level code...

It has been excused that HTML and CSS are not real languages (or are they...?) but they slip in here because the internet does use some real languages.

But what about Excel formulas? Not VBA, just the =if(and(...),do something, do something else) functions.

Some time back I argued that Excel formulas are not real programming, because they do not execute, and are a way to convince an application to do certain things automatically.

I fail to see the difference between Excel formulas and LilyPond. If we allow one set of words that don't create executable programs, we can allow the other set too.

  • 4
    I like your "or are they": if CSS is Turing complete all bets are off! – dumbledad Jan 18 '16 at 9:31
  • My first job when I was 16 or so was writing software to replace Excel files that did file format conversion. You took a text file, pasted it's contents into the excel sheet, and it would give the data to you in a different file format. (They converted clients' file formats to the company's internal file format) When I first saw it, I was both amazed ("You can actually do that in Excel?? Holy shit!") and disgusted. I believe they were done with Excel formulas. And they handled money. As such, as much as it pains me to say it, I would definitely count Excel formulas as programming after that. – Aleksi Torhamo Jan 19 '16 at 12:32
  • 1
    What about Latex? 4,505 questions and counting. – mfitzp Jan 19 '16 at 12:47
  • @mfitzp looks like Latex is also "on topic" here... – Richard Le Mesurier Jan 19 '16 at 14:15
  • 2
    @RichardLeMesurier Exactly. I can't conceptually see a difference between what is a music markup language and a document markup language. If one (Latex) is OK surely so is the other? – mfitzp Jan 19 '16 at 14:23
  • "It has been excused that HTML and CSS are not real languages" ... well, yes they are. "Language" is the "L" in the "HTML" initalism: it's a markup language. CSS is a stylesheet language. There is no debate about whether these are real languages. – DBedrenko Jan 20 '16 at 8:42
  • @NewWorld ... "or are they...?" – Richard Le Mesurier Jan 20 '16 at 9:20
  • @RichardLeMesurier Yes, and my correction was that it's not a question at all whether they're real languages. – DBedrenko Jan 20 '16 at 9:29
  • 1
    @NewWorld unfortunately (or not) there are some on this thread who believe otherwise – Richard Le Mesurier Jan 20 '16 at 10:33

It is both the privilege and the responsibility of SO's stakeholders to provide a well defined scope to their user community. Despite the well-intentioned efforts of many here, it is impossible to draw a clear line around the scope as it is communicated at present.

There are and there will be topics which fit the wording of the rules or the rules give room to interpretation, but are not appreciated by the SO's owners or its community.

On the other hand side there are topics which hardly satisfy the rules, but they are well accepted. Hardware description languages fall into this category.

There are several ways how to deal with this problem:

  1. Keep amending the scope definition by explicitly ruling-in or -out all occuring corner cases
  2. Continue discussions like this one
  3. Accept the corner cases, as there are no significant adverse effects on other topics
  • 2
    Good points, though I'd reword "futile discussions like this one" as it sounds insulting. – dumbledad Jan 18 '16 at 10:00
  • 1
    @dumbledad Point taken! :) – bogl Jan 18 '16 at 10:20

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .