Re: [RFC] Transition to Guile 3.0

2024-04-10 Thread Michael Käppler via Discussions on LilyPond development




Am 08.04.2024 um 23:40 schrieb Jonas Hahnfeld:

Thanks for testing! I assume this is also enabling Guile optimizations
during LilyPond runtime? It would be interesting to see if there's a
gain from just compiling the bytecode with optimizations. That would be
a one-time cost that may be worth paying, especially if we had proper
standalone bytecode compilation that parallelizes...

Btw, I get a mass of warning messages during bytecode compilation about
possibly
unbound variables. IIUC, the reason is that we do not import our "own"
modules
(the ones in (lily)) from the files that need them, rather relying on
loading all modules
during startup one after another. Is this correct?
That would explain that Guile fails to sort out the dependencies between
the modules.

Michael


Re: [RFC] Transition to Guile 3.0

2024-04-10 Thread Michael Käppler via Discussions on LilyPond development




Am 08.04.2024 um 23:40 schrieb Jonas Hahnfeld:

[snip]

Thanks for testing! I assume this is also enabling Guile optimizations
during LilyPond runtime? It would be interesting to see if there's a
gain from just compiling the bytecode with optimizations. That would be
a one-time cost that may be worth paying, especially if we had proper
standalone bytecode compilation that parallelizes...

IIUC, this will only enable Guile optimizations during runtime when
calling LilyPond
with -dcompile-scheme-code=#t.  My measurements were done without this
option,
so this is already the case you mentioned.

Out of curiosity, I tested setting the optimization level to the maximum
value (9).
Bytecode compilation speed is exactly the same as with the default (2),
runtime speed
is not better than with level 2, however.

Btw, I'm curious if -dcompile-scheme-code will work on Windows with your
recent fixes
for Guile on mingw64. Currently, it even segfaults for me.

Michael


Re: [RFC] Transition to Guile 3.0

2024-04-08 Thread Jonas Hahnfeld via Discussions on LilyPond development
On Tue, 2024-04-02 at 16:40 +0200, Michael Käppler wrote:
> Am 01.04.2024 um 22:03 schrieb Jonas Hahnfeld via Discussions on LilyPond 
> development:
> > As pointed out by Han-Wen in November, this is actually fairly little
> > code that gets dropped; we need to keep some related to optimizations
> > for compatibility with 3.0.0 up to 3.0.2; see also below.
> 
>  Just to share some numbers: It is still the case with current Guile master,
>  that bytecode compilation is nearly 10x slower with the default optimization 
> level than
>  with optimizations switched off.
>  
>  make bytecode with default optimization level:
>  real    2m0,875s
>  user    1m59,989s
>  sys    0m0,796s
>  
>  make bytecode without optimizations:
>  real    0m16,535s
>  user    0m14,209s
>  sys    0m0,810s
>  
>  What concerns LilyPond processing speed, I did a comparison with the 
> medium-sized score
>  I also used for the JIT vs. non-JIT timings on Windows and got for 10 
> subsequent runs:
>  
>  Without optimizations:
>  real    9m1,511s
>  user    8m52,375s
>  sys    0m11,423s
> 
>  With default optimization level:
>  real    8m34,762s
>  user    8m23,027s
>  sys    0m14,562s
> 
>  That would be -5% in compilation time. Does not pay off, I think.

Thanks for testing! I assume this is also enabling Guile optimizations
during LilyPond runtime? It would be interesting to see if there's a
gain from just compiling the bytecode with optimizations. That would be
a one-time cost that may be worth paying, especially if we had proper
standalone bytecode compilation that parallelizes...

Jonas


signature.asc
Description: This is a digitally signed message part


Re: [RFC] Transition to Guile 3.0

2024-04-02 Thread Michael Käppler via Discussions on LilyPond development




Am 01.04.2024 um 22:03 schrieb Jonas Hahnfeld via Discussions on
LilyPond development:

This is now up for review in the following merge request:
https://gitlab.com/lilypond/lilypond/-/merge_requests/2293

As pointed out by Han-Wen in November, this is actually fairly little
code that gets dropped; we need to keep some related to optimizations
for compatibility with 3.0.0 up to 3.0.2; see also below.

Just to share some numbers: It is still the case with current Guile master,
that bytecode compilation is nearly 10x slower with the default
optimization level than
with optimizations switched off.

make bytecode with default optimization level:
real    2m0,875s
user    1m59,989s
sys    0m0,796s

make bytecode without optimizations:
real    0m16,535s
user    0m14,209s
sys    0m0,810s

What concerns LilyPond processing speed, I did a comparison with the
medium-sized score
I also used for the JIT vs. non-JIT timings on Windows and got for 10
subsequent runs:

Without optimizations:
real    9m1,511s
user    8m52,375s
sys    0m11,423s

With default optimization level:
real    8m34,762s
user    8m23,027s
sys    0m14,562s

That would be -5% in compilation time. Does not pay off, I think.

Michael


Re: [RFC] Transition to Guile 3.0

2024-04-01 Thread Jonas Hahnfeld via Discussions on LilyPond development
On Sun, 2023-11-05 at 22:36 +0100, Jonas Hahnfeld wrote:
> Step 4: Remove compatibility code for Guile 2.2
> This can happen after we made one or two releases with only Guile 3.0.

This is now up for review in the following merge request:
https://gitlab.com/lilypond/lilypond/-/merge_requests/2293

As pointed out by Han-Wen in November, this is actually fairly little
code that gets dropped; we need to keep some related to optimizations
for compatibility with 3.0.0 up to 3.0.2; see also below.

> Step 5? Move to Ubuntu 22.04 for testing and bump requirement to Guile
> 3.0.7? Then we could remove some more compatibility code, but let's
> discuss this at some later point.

I still want to go there, pending concrete assessment and
implementation.

Cheers
Jonas


signature.asc
Description: This is a digitally signed message part


Re: [RFC] Transition to Guile 3.0

2024-01-07 Thread Jonas Hahnfeld via Discussions on LilyPond development
On Mon, 2023-12-04 at 21:55 +0100, Jonas Hahnfeld wrote:
> On Sun, 2023-11-05 at 22:36 +0100, Jonas Hahnfeld wrote:
> 
> > then remove automatic detection of Guile 2.2 from configure.
> 
> I did not yet upload a merge request to make Guile 3.0 the default for
> all builds: After more thought, I believe it's better to do this
> together with the removal of automatic configure support for Guile 2.2,
> to avoid the situation where we assume that Guile 3.0 is the default,
> but building from source will gracefully configure with Guile 2.2, for
> example because the system is missing the development package for Guile
> 3.0...

This next step (requiring Guile 3.0 and removing automatic detection of
Guile 2.2 from configure) is now available as
https://gitlab.com/lilypond/lilypond/-/merge_requests/2228

Jonas


signature.asc
Description: This is a digitally signed message part


Re: [RFC] Transition to Guile 3.0

2023-12-04 Thread Werner LEMBERG


>> then remove automatic detection of Guile 2.2 from configure.
> 
> I did not yet upload a merge request to make Guile 3.0 the default
> for all builds: After more thought, I believe it's better to do this
> together with the removal of automatic configure support for Guile
> 2.2, to avoid the situation where we assume that Guile 3.0 is the
> default, but building from source will gracefully configure with
> Guile 2.2, for example because the system is missing the development
> package for Guile 3.0...

+1


Werner



Re: [RFC] Transition to Guile 3.0

2023-12-04 Thread Jonas Hahnfeld via Discussions on LilyPond development
On Sun, 2023-11-05 at 22:36 +0100, Jonas Hahnfeld wrote:
> Step 3: Switch to Guile 3.0
> Afterwards, we can merge
> https://gitlab.com/lilypond/lilypond/-/merge_requests/2163

I put the merge request back on Patch::review, along with
https://gitlab.com/lilypond/lilypond/-/merge_requests/2170 for the
documentation build. Then we could have a release next weekend or the
one after. If next weekend, the first release in January might be a bit
bigger, we'll have to see...

> then remove automatic detection of Guile 2.2 from configure.

I did not yet upload a merge request to make Guile 3.0 the default for
all builds: After more thought, I believe it's better to do this
together with the removal of automatic configure support for Guile 2.2,
to avoid the situation where we assume that Guile 3.0 is the default,
but building from source will gracefully configure with Guile 2.2, for
example because the system is missing the development package for Guile
3.0...

Jonas


signature.asc
Description: This is a digitally signed message part


Re: LilyPond 2.25.10 with Guile 3.0

2023-11-16 Thread Jonas Hahnfeld via Discussions on LilyPond development
On Thu, 2023-11-16 at 11:11 -0600, Karlin High wrote:
> On Sun, Nov 12, 2023 at 6:26 AM Jonas Hahnfeld via LilyPond user
> discussion  wrote:
> > If you have some time, please test them in your setups and report back in 
> > case of problems!
> 
> Seems OK so far. Windows 11 21H2, Intel Core i5-1135G7.
> 
> "
> > lilypond.exe scheme-sandbox
> GNU LilyPond 2.25.10 (running Guile 3.0)
> Processing 
> `C:/Users/owner/AppData/Local/frescobaldi/frescobaldi/lilypond-binaries/lilypond-2.25.10/share/lilypond/2.25.10/ly/scheme-sandbox.ly'
> Parsing...
> GNU Guile 3.0.9
> "

Great, thanks for testing!

> When I run convert-ly, it makes version statements "2.25.9". I can't
> remember if that is expected or not for the 2.25.10 binaries. No
> warnings of outdated versions are given when compiling the results.

Yes, that's expected because there were no conversion rules for 2.25.10
and convert-ly doesn't force-update the version number (unless --
current-version is passed).

Jonas


signature.asc
Description: This is a digitally signed message part


Re: LilyPond 2.25.10 with Guile 3.0

2023-11-16 Thread Karlin High
On Sun, Nov 12, 2023 at 6:26 AM Jonas Hahnfeld via LilyPond user
discussion  wrote:
> If you have some time, please test them in your setups and report back in 
> case of problems!

Seems OK so far. Windows 11 21H2, Intel Core i5-1135G7.

"
>lilypond.exe scheme-sandbox
GNU LilyPond 2.25.10 (running Guile 3.0)
Processing 
`C:/Users/owner/AppData/Local/frescobaldi/frescobaldi/lilypond-binaries/lilypond-2.25.10/share/lilypond/2.25.10/ly/scheme-sandbox.ly'
Parsing...
GNU Guile 3.0.9
"

When I run convert-ly, it makes version statements "2.25.9". I can't
remember if that is expected or not for the 2.25.10 binaries. No
warnings of outdated versions are given when compiling the results.
-- 
Karlin High
Missouri, USA



Re: LilyPond 2.25.10 with Guile 3.0

2023-11-12 Thread Jean Abou Samra
> “_” needs to be replaced with “G_”. Already in Guile 2, but Guile 3 checks for
> it more eagerly.


Fixed in LSR.



signature.asc
Description: This is a digitally signed message part


Re: LilyPond 2.25.10 with Guile 3.0

2023-11-12 Thread Jean Abou Samra



> Le 12 nov. 2023 à 19:14, Robin Bannister  a écrit :
> 
> If I take the code of LSR1098 [1] , without the demo part,
> Guile3 errors the input-warning call:
> 
> GNU LilyPond 2.25.10 (running Guile 3.0)
> Processing `1.ly'
> Parsing...
> 1.ly:38:2: error: Guile signaled an error for the expression beginning here
> #
> (define-music-function (name-tweaks left-indent right-indent)
> 
> Syntax error:
> 1.ly:40:64: _: bad use of '_' syntactic keyword in subform (_ " pseudoIndents 
> ~s ~s is stretching staff; expect distorted layout") of (_ " pseudoIndents ~s 
> ~s is stretching staff; expect distorted layout")


“_” needs to be replaced with “G_”. Already in Guile 2, but Guile 3 checks for 
it more eagerly.





Re: LilyPond 2.25.10 with Guile 3.0

2023-11-12 Thread Robin Bannister

Jonas Hahnfeld wrote:

On Sat, 2023-11-11 at 19:37 +0100, Jonas Hahnfeld wrote:

We are happy to announce the release of LilyPond 2.25.10.


And here are the binaries with Guile 3.0, built using
https://gitlab.com/lilypond/lilypond/-/merge_requests/2163 and
https://gitlab.com/lilypond/lilypond/-/merge_requests/2170 :
https://gitlab.com/lilypond/lilypond/-/packages/20197593

If you have some time, please test them in your setups and report back
in case of problems!



If I take the code of LSR1098 [1] , without the demo part,
Guile3 errors the input-warning call:

GNU LilyPond 2.25.10 (running Guile 3.0)
Processing `1.ly'
Parsing...
1.ly:38:2: error: Guile signaled an error for the expression beginning here
#
 (define-music-function (name-tweaks left-indent right-indent)

Syntax error:
1.ly:40:64: _: bad use of '_' syntactic keyword in subform (_ " 
pseudoIndents ~s ~s is stretching staff; expect distorted layout") of (_ 
" pseudoIndents ~s ~s is stretching staff; expect distorted layout")

1.ly:1: warning: no \version statement found, please add

\version "2.25.10"

for future compatibility
fatal error: failed files: "1.ly"


If I include the rest of the file, I get a lot more errors.


[1] https://lsr.di.unimi.it/LSR/Item?id=1098


Cheers,
Robin



LilyPond 2.25.10 with Guile 3.0

2023-11-12 Thread Jonas Hahnfeld via Discussions on LilyPond development
On Sat, 2023-11-11 at 19:37 +0100, Jonas Hahnfeld wrote:
> We are happy to announce the release of LilyPond 2.25.10.

And here are the binaries with Guile 3.0, built using
https://gitlab.com/lilypond/lilypond/-/merge_requests/2163 and
https://gitlab.com/lilypond/lilypond/-/merge_requests/2170 :
https://gitlab.com/lilypond/lilypond/-/packages/20197593

If you have some time, please test them in your setups and report back
in case of problems!

Jonas


signature.asc
Description: This is a digitally signed message part


Re: [RFC] Transition to Guile 3.0

2023-11-11 Thread Jonas Hahnfeld via Discussions on LilyPond development
On Sat, 2023-11-11 at 18:37 +0100, Han-Wen Nienhuys wrote:
> On Sun, Nov 5, 2023 at 10:36 PM Jonas Hahnfeld wrote:
> > Hi all,
> > 
> > I hear LilyPond hasn't changed its Guile version since some time (more
> > than 18 months). So before we get too comfortable with the current
> > situation, let me propose to move to Guile 3.0. Below is a plan for
> > that switch, with a transition period to test the official binaries.
> > Last time, when going from Guile 1.8 to version 2.2, the switch had to
> > coincide with moving away from GUB. Between Guile 2.2 and 3.0, we could
> > in principle support both versions for a longer period. However, I
> > personally think that a full transition and dropping support for Guile
> > 2.2 is the more reasonable approach: It will reduce testing
> > configurations (both for development and user reports) and hopefully
> > enable some future cleanups in the code.
> 
> Could you say a bit more about the benefits/disadvantages for the user?
> I had the impression that Guile 3 had different (worse?) performance
> characteristics relative to 2.2, but it's been a while.

As far as I can tell from my limited tests so far, LilyPond built
against Guile 2.2 or 3.0 has similar speeds. At least if you have
compiled bytecode (that generates faster with Guile 3.0, but that's not
really an advantage for users). The build with Guile 3.0 seems to have
a slightly lower startup time, which is good for small scores, but we
will be able to test in full tomorrow when I build the other binaries.

> IIRC, one of the arguments to drop 1.8 is that Guile pre-2.x did not
> support installing multiple versions alongside each other, which forced
> distributions to choose whether to ship LilyPond or a recent version of
> Guile. With 2.2 and later, that dilemma disappeared.

Not quite: While it's true that Guile 1.8 was not prepared to be co-
installed with later versions, it worked in practice because Guile 2.0
had the necessary modifications. What happened instead is that Linux
distributions wanted to get rid of Guile 1.8, and some did before
LilyPond was able to fully work with Guile 2.2. The same is currently
happening again, for example we had to do quite some convincing to keep
Guile 2.2 in Debian 12 Bookworm released this summer. So IMHO we really
want to support Guile 3.0; Jean already did the hard work here last
year, up to the point that some already build LilyPond 2.24.x with
Guile 3.0 right now.

> I quickly grepped over the source (grepping for SCM_MAJOR_VERSION),
> but the bifurcations look very modest.

In principle yes, we could continue to support Guile 2.2 and it
wouldn't cause too many issues at first. However, we know from
experience that supporting two versions of Guile has a certain cost,
and I think we are better off just supporting Guile 3.0 going forward.

Jonas


signature.asc
Description: This is a digitally signed message part


Re: [RFC] Transition to Guile 3.0

2023-11-11 Thread Han-Wen Nienhuys
On Sun, Nov 5, 2023 at 10:36 PM Jonas Hahnfeld via Discussions on LilyPond
development  wrote:

> Hi all,
>
> I hear LilyPond hasn't changed its Guile version since some time (more
> than 18 months). So before we get too comfortable with the current
> situation, let me propose to move to Guile 3.0. Below is a plan for
> that switch, with a transition period to test the official binaries.
> Last time, when going from Guile 1.8 to version 2.2, the switch had to
> coincide with moving away from GUB. Between Guile 2.2 and 3.0, we could
> in principle support both versions for a longer period. However, I
> personally think that a full transition and dropping support for Guile
> 2.2 is the more reasonable approach: It will reduce testing
> configurations (both for development and user reports) and hopefully
> enable some future cleanups in the code.
>

Could you say a bit more about the benefits/disadvantages for the user? I
had the impression that Guile 3 had different (worse?) performance
characteristics relative to 2.2, but it's been a while.

IIRC, one of the arguments to drop 1.8 is that Guile pre-2.x did not
support installing multiple versions alongside each other, which forced
distributions to choose whether to ship LilyPond or a recent version of
Guile. With 2.2 and later, that dilemma disappeared.

I quickly grepped over the source (grepping for SCM_MAJOR_VERSION), but the
bifurcations look very modest.


-- 
Han-Wen Nienhuys - hanw...@gmail.com - http://www.xs4all.nl/~hanwen


Re: Plan for LilyPond 2.24.3 and Transition to Guile 3.0

2023-11-09 Thread Werner LEMBERG

>> Step 1: Officially support Guile 3.0 and add optional CI testing I
>> opened https://gitlab.com/lilypond/lilypond/-/merge_requests/2162
>> to add some compatibility with earlier versions of Guile 3.0 and
>> then implement detection support in configure. It also creates
>> Docker images and adds optional CI testing, as we had it for the
>> transition to Guile 2.2.
> 
> The MR is nominally on countdown right now, do we have a consensus
> on this?

+1 from me.

> Please ping me on other fixes that you think should be part of 2.24.3,

Perhaps !2093, !2105, !2137 (if of relevance), and !2152.


Werner


Plan for LilyPond 2.24.3 and Transition to Guile 3.0

2023-11-09 Thread Jonas Hahnfeld via Discussions on LilyPond development
On Sun, 2023-11-05 at 22:36 +0100, Jonas Hahnfeld wrote:
> Step 1: Officially support Guile 3.0 and add optional CI testing
> I opened https://gitlab.com/lilypond/lilypond/-/merge_requests/2162 to
> add some compatibility with earlier versions of Guile 3.0 and then
> implement detection support in configure. It also creates Docker images
> and adds optional CI testing, as we had it for the transition to Guile
> 2.2.

The MR is nominally on countdown right now, do we have a consensus on
this? I'm fully ok with delaying this, but then it will miss the next
unstable release that I would like to do this weekend, and the backport
to the stable version tentatively planned for the next weekend (see
below).

> Step 2a: Assuming this testing goes fine, I would like to backport the
> changes from the first step to stable/2.24 and release a new stable
> version. The idea is that distributions wanting to drop their package
> for Guile 2.2 can switch LilyPond 2.24 to Guile 3.0. Note that the
> official binaries will stay Guile 2.2 for future bug fix releases, it's
> only about officially supporting the later version. However, we also
> have to see how the situation develops with Ghostscript 10.02.1, so
> let's postpone discussion on this topic for now...

So https://gitlab.com/lilypond/lilypond/-/merge_requests/2160 seems to
work now, and I think we should get this out in an unstable release
(next weekend) and then a bug fix release the weekend after. For other
bug fixes, I marked a number of merge requests with the Backport label:
https://gitlab.com/lilypond/lilypond/-/merge_requests?scope=all=merged_name[]=Backport
Please ping me on other fixes that you think should be part of 2.24.3,
or any of the above that should not be backported. For the support of
Guile 3.0, it depends on whether we merge it for 2.25.10 and if people
think it should be backported.

Cheers,
Jonas


signature.asc
Description: This is a digitally signed message part


Re: [RFC] Transition to Guile 3.0

2023-11-05 Thread Werner LEMBERG

>> Please let me know of your comments!
> 
> I'm very happy that you got Guile 3.0 working on Windows. Kudos for
> that (and I guess we need to send big thanks to Mike Gran too).

+1

> What I don't really understand is why you want to add compatibility
> with Guile 3.0.x for small x.  [...]

I think what Jonas does is the right way – support for Guile 3 in
general to accommodate with as many distributions as possible.


Werner


Re: [RFC] Transition to Guile 3.0

2023-11-05 Thread Jean Abou Samra
Le lundi 06 novembre 2023 à 01:11 +0100, David Kastrup a écrit :
> I have not checked recently, but last time I looked, Guile's versioning
> system more or less worked so that the development branch (and the
> corresponding versions) was Andy Wingo's playground.  It was not
> concerned with APIs in any manner.  Any API development and
> corresponding changes consequently had to be done in the stable branch
> and eventually forwardported into the development branch.


Currently, as far as I am aware, there is not even a development branch
separate from the stable branch. The branch "main" receives all development
and 3.0.x releases are simply cut from it.

That's even worse for stability than the setup you describe.



signature.asc
Description: This is a digitally signed message part


Re: [RFC] Transition to Guile 3.0

2023-11-05 Thread David Kastrup
Jean Abou Samra  writes:

> What I don't really understand is why you want to add compatibility
> with Guile 3.0.x for small x. Upstream completely breaks the normal
> expectation from what you would find in a point release, by putting
> features and even severely backwards incompatible changes (like
> cross-module inlining in 3.0.8 *cough*), so I think this is definitely
> going to be more work to keep supporting (in particular: testing) than
> with dependencies that don't have this peculiarity. I'd rather define
> a minimum version in the 3.0.x series that we want to support.

I have not checked recently, but last time I looked, Guile's versioning
system more or less worked so that the development branch (and the
corresponding versions) was Andy Wingo's playground.  It was not
concerned with APIs in any manner.  Any API development and
corresponding changes consequently had to be done in the stable branch
and eventually forwardported into the development branch.

If that is still how things are done, the kind of feature/API stability
we can depend on from distributions based on how much they can depend on
being able to rely on version numbers for stability choices is limited.

We use Guile as infrastructure, not as a Scheme hacking playground.  But
while Guile is historically sold as infrastructure, its community setup
does not accommodate it.  And for resolving that mess, we as the likely
most competent party with an interest in that mess will be tasked with
the consequences, for better or worse.

-- 
David Kastrup



Re: [RFC] Transition to Guile 3.0

2023-11-05 Thread Jonas Hahnfeld via Discussions on LilyPond development
On Sun, 2023-11-05 at 22:48 +0100, Jean Abou Samra wrote:
> What I don't really understand is why you want to add compatibility
> with Guile 3.0.x for small x. Upstream completely breaks the normal
> expectation from what you would find in a point release, by putting
> features and even severely backwards incompatible changes (like
> cross-module inlining in 3.0.8 *cough*), so I think this is definitely
> going to be more work to keep supporting (in particular: testing) than
> with dependencies that don't have this peculiarity. I'd rather define
> a minimum version in the 3.0.x series that we want to support.

Sure, but that is currently defined by Ubuntu 20.04 having Guile 3.0.1.
We could of course move "Step 5" earlier in the process, but then I
argue we still need to pay attention to what versions of Guile are in
the wild, the next one probably being Guile 3.0.5 in Debian Bullseye...


signature.asc
Description: This is a digitally signed message part


Re: [RFC] Transition to Guile 3.0

2023-11-05 Thread Jean Abou Samra
Le dimanche 05 novembre 2023 à 22:36 +0100, Jonas Hahnfeld via Discussions on 
LilyPond development a écrit :

> Please let me know of your comments!

I'm very happy that you got Guile 3.0 working on Windows. Kudos for
that (and I guess we need to send big thanks to Mike Gran too).

What I don't really understand is why you want to add compatibility
with Guile 3.0.x for small x. Upstream completely breaks the normal
expectation from what you would find in a point release, by putting
features and even severely backwards incompatible changes (like
cross-module inlining in 3.0.8 *cough*), so I think this is definitely
going to be more work to keep supporting (in particular: testing) than
with dependencies that don't have this peculiarity. I'd rather define
a minimum version in the 3.0.x series that we want to support.


Jean



signature.asc
Description: This is a digitally signed message part


[RFC] Transition to Guile 3.0

2023-11-05 Thread Jonas Hahnfeld via Discussions on LilyPond development
Hi all,

I hear LilyPond hasn't changed its Guile version since some time (more
than 18 months). So before we get too comfortable with the current
situation, let me propose to move to Guile 3.0. Below is a plan for
that switch, with a transition period to test the official binaries.
Last time, when going from Guile 1.8 to version 2.2, the switch had to
coincide with moving away from GUB. Between Guile 2.2 and 3.0, we could
in principle support both versions for a longer period. However, I
personally think that a full transition and dropping support for Guile
2.2 is the more reasonable approach: It will reduce testing
configurations (both for development and user reports) and hopefully
enable some future cleanups in the code.

Step 1: Officially support Guile 3.0 and add optional CI testing
I opened https://gitlab.com/lilypond/lilypond/-/merge_requests/2162 to
add some compatibility with earlier versions of Guile 3.0 and then
implement detection support in configure. It also creates Docker images
and adds optional CI testing, as we had it for the transition to Guile
2.2.

Step 2: Release unstable version and test new binaries
https://gitlab.com/lilypond/lilypond/-/merge_requests/2163 has the
changes to produce official binaries with Guile 3.0(.9). For Windows,
it currently relies on a number of patches that I also sent upstream.
In some sense, the situation is not worse than Guile 2.2 where we also
had patches. Or arguably it is better because there is the possibility
that the changes will be merged upstream...

I propose to not merge the changes for our binaries immediately, but
instead produce an additional set of binaries with the next unstable
release. That way, users can test on all platforms and make sure the
setup works. Again, this is similar to what we had in LilyPond 2.23.6
when switching to Guile 2.2.

Step 2a: Assuming this testing goes fine, I would like to backport the
changes from the first step to stable/2.24 and release a new stable
version. The idea is that distributions wanting to drop their package
for Guile 2.2 can switch LilyPond 2.24 to Guile 3.0. Note that the
official binaries will stay Guile 2.2 for future bug fix releases, it's
only about officially supporting the later version. However, we also
have to see how the situation develops with Ghostscript 10.02.1, so
let's postpone discussion on this topic for now...

Step 3: Switch to Guile 3.0
Afterwards, we can
merge https://gitlab.com/lilypond/lilypond/-/merge_requests/2163 and
then remove automatic detection of Guile 2.2 from configure. It would
still be possible to build LilyPond with GUILE_FLAVOR=guile-2.2 for
some limited time, until ...

Step 4: Remove compatibility code for Guile 2.2
This can happen after we made one or two releases with only Guile 3.0.

Step 5? Move to Ubuntu 22.04 for testing and bump requirement to Guile
3.0.7? Then we could remove some more compatibility code, but let's
discuss this at some later point.

Please let me know of your comments!
Jonas


signature.asc
Description: This is a digitally signed message part


Re: Guile 3.0

2022-05-23 Thread Jean Abou Samra

Le 23/05/2022 à 23:00, Wol a écrit :

On 23/05/2022 20:19, Han-Wen Nienhuys wrote:

Vendoring Guile seems totally impractical. The Guile compilation does
some sort of bootstrapping, which makes building it from scratch
glacially slow (like: O(1 hour)), so it would be impossible for day to
day development work.


Just an idea, if "current" Guile has issues - could you just vendor 
Guile in the stable release?




As said above, current Guile has issues, but not issues that are very 
pressing for us.



That way at least you're not committed to supporting old Guiles 
indefinitely, but you can create a temporary fork to get a working 
release out the door ...



The binary creation system actually builds dependencies in an isolated 
environment and supports applying patches to them.


Jean




Re: Guile 3.0

2022-05-23 Thread David Kastrup
Wol  writes:

> On 23/05/2022 20:19, Han-Wen Nienhuys wrote:
>> Vendoring Guile seems totally impractical. The Guile compilation does
>> some sort of bootstrapping, which makes building it from scratch
>> glacially slow (like: O(1 hour)), so it would be impossible for day to
>> day development work.
>
> Just an idea, if "current" Guile has issues - could you just vendor
> Guile in the stable release?

Well, Guile upstream has a strange notion of what "stable release" is
supposed to mean, so in effect one would have to create one's own
"stable release" and cherry-pick actual fixes instead of the entirety of
what is stable more in the Augeas sense.

-- 
David Kastrup



Re: Guile 3.0

2022-05-23 Thread Wol

On 23/05/2022 20:19, Han-Wen Nienhuys wrote:

Vendoring Guile seems totally impractical. The Guile compilation does
some sort of bootstrapping, which makes building it from scratch
glacially slow (like: O(1 hour)), so it would be impossible for day to
day development work.


Just an idea, if "current" Guile has issues - could you just vendor 
Guile in the stable release?


That way at least you're not committed to supporting old Guiles 
indefinitely, but you can create a temporary fork to get a working 
release out the door ...


(And I run gentoo, so if Guile takes an hour to build - well so be it. 
Whenever Rust, Firefo or Thunderbird update I'm looking at all day for 
an update to complete :-)


Cheers,
Wol



Re: Guile 3.0

2022-05-23 Thread Luca Fascione
On Mon, May 23, 2022 at 9:19 PM Han-Wen Nienhuys  wrote:

> I'm missing the context for this proposal.
>

Something in the original thread from Jonas made me think some distros were
wrangling keeping up distributing
guile only for lilypond's benefit. It's possible I misunderstood and he
actually meant that just regarding v 1.8, and that 2.2.x would be available
even without lilypond. But the question remains for a time when they'd like
to not ship 2.2.x and we're not ready to move to 3.x.y.
I do realize neither is very likely and I know Jean showed we work just
fine with 3.0.8, actually there are certain advantages there,
if you squint at it just the right way.

That led me to think that if guile is such a rare dependency, we wouldn't
want lilypond to be held ransom, you see.

The other half of the thought was a response to Jean's frustration of
feeling unable to land a simple bugfix into the guile project:
I'm sensitive to that, it's a kind of behaviour that gives me a hard time
too.


> Shipping dependencies ("vendoring") can be very useful, because it
> reduces the combinatorial space of version combinations that you have
> to support. Ghostscript does this with a lot of its dependencies (for
> example, libpng, IIRC)
>

Yes, I thought to us there would be the added advantage of being able to
apply a small set of fixes,
while we wait for mainline to mop them up. If that while is a time period
measured in lustra, I thought this could help us stay fresh

Jean expressed the hope to instead find a way to help the guile project
kick back into some kind of gear,
which if achievable I would agree would be a substantially better outcome


> Vendoring Guile seems totally impractical. The Guile compilation does
> some sort of bootstrapping, which makes building it from scratch
> glacially slow (like: O(1 hour)), so it would be impossible for day to
> day development work.
>

Yes, somebody else was saying the same, maybe Jean?
I wasn't aware of that, I had just casually browse the repo, where the C
part doesn't look big,
and assumed it was just about standing that up.
It occurs to me recompiling guile without a change in guile itself wouldn't
happen very often,
it'd still be set up as an external library as seen by the lilypond repo's
pov, so maybe
this is not the first concern for developers, but it'd certainly be
annoying for maintainers
and CI, both of which I completely agree would be undesirable burdens.

Cheers,
L

-- 
Luca Fascione


Re: Guile 3.0

2022-05-23 Thread Han-Wen Nienhuys
On Sun, May 22, 2022 at 7:48 PM Luca Fascione  wrote:
> I would like to bring up an option that I'd expect fair few of you will
> _really_ not like.
> I'm doing this not because I necessarily believe it to be a
> particularly good way forward,
> rather because I feel it is sometimes useful to articulate in words why an
> "obviously awful idea" is, in fact, awful. Or maybe it isn't

I'm missing the context for this proposal. However, here is my $0.02:

Shipping dependencies ("vendoring") can be very useful, because it
reduces the combinatorial space of version combinations that you have
to support. Ghostscript does this with a lot of its dependencies (for
example, libpng, IIRC)

Vendoring Guile seems totally impractical. The Guile compilation does
some sort of bootstrapping, which makes building it from scratch
glacially slow (like: O(1 hour)), so it would be impossible for day to
day development work.

-- 
Han-Wen Nienhuys - hanw...@gmail.com - http://www.xs4all.nl/~hanwen



Re: Guile 3.0

2022-05-23 Thread Luca Fascione
This also makes a lot of sense to me, yes.

L

On Mon, 23 May 2022, 13:12 Jean Abou Samra,  wrote:

>
>
> Le 22/05/2022 à 21:52, Luca Fascione a écrit :
> >
> > On Sun, May 22, 2022 at 9:05 PM Jonas Hahnfeld  wrote:
> >
> > On Sun, 2022-05-22 at 20:14 +0200, Luca Fascione wrote:
> > > So at the cost of rocking the cage a bit hard, I came asking the
> > > uncomfortable question:
> > > what would happen if (for this unique circumstance) we'd do what
> one
> > > would normally consider poor practice?
> >
> > Let's call your proposal by its true, scary name: we would
> essentially
> > *fork* Guile and, in the longer term, make it fit exactly what we
> need
> > for LilyPond.
> >
> >
> > Well, I was not thinking the delta between "true" Guile and "ours"
> > would ever get big.
> > If it did, that is what I'd call a fork. And no, I'm _not_ advocating
> > that.
> >
> > I'm more thinking something along the lines of make 3.81, actually:
> > largely "mainline",
> > plus a few small patches to adjust little details. (*)
> >
> > It's clear that a real fork is not useful here, I agree with you
> > completely
> > (*) 3.81 is famously incompatible with 3.82, and many large make
> > systems are stuck in .81 land.
> > So it's common for folks in that condition to build their own make
> > applying a few (3? maybe 4) small
> > patches to fix a few problems with the program instead. Effectively
> > they run some kind of 3.81+
> >
> > The second implication is that we get technologically stuck.
> >
> >
> > Well, the idea is that much like now you'd state a dependency against
> > Guile 2.2.x,
> > you would then just ship the version you want. I don't see much of a
> > difference there.
> > (Again, the key in mind is that the changes from us are a _small_ set,
> > so the fact that
> > we would on occasion change the base checkout and reapply the diffs
> > should be a
> > small overhead. If you compound this with changed built to maximize
> > the chances of
> > eventual adoption, you'd risk eventually getting into a place where
> > these changes are zero)
> >
> > With all that said, I think there are good reasons why things are
> > considered bad practice.
> >
> >
> > There were what felt like good reasons at the time when the practices
> > were established, yes.
> >
> > However, as the hypotheses mutate, it can come a point where the
> > conclusions don't follow any longer.
> >
> > For example:
> > one doesn't want to fork because
> >  - it duplicates code and it's difficult to keep up the two diverged
> > branches
> >   -> with RCS _definitely_, with git I'm not so sure. Space cost of
> > duplication these days is zero. Time taken compiling one more repo,
> > also zero.
> >   -> this means that now this part of the reason is reduced to
> > understanding whether the divergence is large or small
> >
> > I've seen things that were bad practice when I was a student become
> > acceptable or recommended now.
> > I've come to see that "old wisdom" is sometimes not that wise after
> > all (premature optimization for example,
> > although in that case that's more an issue of misunderstanding of the
> > original meaning, than actual change).
> >
> > Similar discussions have already taken place
> > before, and I'm not sure if we're adding value by repeating them.
> > Maybe
> > we can come back to the original topic of this thread?
> >
> >
> > Forgive me for making poor use of your and the others' time.
> > I thought this might turn out to be pertinent if it opened up new ways
> > of thinking about this choice.
>
>
>
> I might have introduced confusion with the mention of the bug
> with source locations. In the specific case of LilyPond, this
> bug is not very important. Almost all the warnings Guile gives
> are pure noise in our case anyway (I haven't taken the time to
> prepare an MR for silencing them yet). It was to illustrate the
> fact that there can be serious bugs in Guile, and one could
> well affect us.
>
> Apart from that, including the Guile sources in our tree and
> building with them is something I would only do in a desperate
> situation, e.g. Guile introducing changes that are fundamentally
> incompatible with LilyPond's use case. It will be a nuisance
> not to be able to use a Guile from the system since Guile these
> days is quite slow to build. (The C code compiles fast,
> but there is a whole bootstrap sequence to generate Scheme
> compilers from Scheme code, which takes a lot of time.)
> It will require synchronization with upstream if that is
> desired. Also, while upstream isn't really active, they
> do keep it at least building which is already something.
> Rather, if it becomes clear that Guile is stuck, it would be
> more reasonable to create a fork of Guile separate from LilyPond,
> put it in a repository somewhere, invite the folks from guile-devel
> who'd appreciate commit access on Guile but don't have it to
> hack on it, advertise it for distros, 

Re: Guile 3.0

2022-05-23 Thread Jean Abou Samra




Le 22/05/2022 à 21:52, Luca Fascione a écrit :


On Sun, May 22, 2022 at 9:05 PM Jonas Hahnfeld  wrote:

On Sun, 2022-05-22 at 20:14 +0200, Luca Fascione wrote:
> So at the cost of rocking the cage a bit hard, I came asking the
> uncomfortable question:
> what would happen if (for this unique circumstance) we'd do what one
> would normally consider poor practice?

Let's call your proposal by its true, scary name: we would essentially
*fork* Guile and, in the longer term, make it fit exactly what we need
for LilyPond. 



Well, I was not thinking the delta between "true" Guile and "ours" 
would ever get big.
If it did, that is what I'd call a fork. And no, I'm _not_ advocating 
that.


I'm more thinking something along the lines of make 3.81, actually: 
largely "mainline",

plus a few small patches to adjust little details. (*)

It's clear that a real fork is not useful here, I agree with you 
completely
(*) 3.81 is famously incompatible with 3.82, and many large make 
systems are stuck in .81 land.
So it's common for folks in that condition to build their own make 
applying a few (3? maybe 4) small
patches to fix a few problems with the program instead. Effectively 
they run some kind of 3.81+


The second implication is that we get technologically stuck. 



Well, the idea is that much like now you'd state a dependency against 
Guile 2.2.x,
you would then just ship the version you want. I don't see much of a 
difference there.
(Again, the key in mind is that the changes from us are a _small_ set, 
so the fact that
we would on occasion change the base checkout and reapply the diffs 
should be a
small overhead. If you compound this with changed built to maximize 
the chances of
eventual adoption, you'd risk eventually getting into a place where 
these changes are zero)


With all that said, I think there are good reasons why things are
considered bad practice. 



There were what felt like good reasons at the time when the practices 
were established, yes.


However, as the hypotheses mutate, it can come a point where the 
conclusions don't follow any longer.


For example:
one doesn't want to fork because
 - it duplicates code and it's difficult to keep up the two diverged 
branches
  -> with RCS _definitely_, with git I'm not so sure. Space cost of 
duplication these days is zero. Time taken compiling one more repo, 
also zero.
  -> this means that now this part of the reason is reduced to 
understanding whether the divergence is large or small


I've seen things that were bad practice when I was a student become 
acceptable or recommended now.
I've come to see that "old wisdom" is sometimes not that wise after 
all (premature optimization for example,
although in that case that's more an issue of misunderstanding of the 
original meaning, than actual change).


Similar discussions have already taken place
before, and I'm not sure if we're adding value by repeating them.
Maybe
we can come back to the original topic of this thread?


Forgive me for making poor use of your and the others' time.
I thought this might turn out to be pertinent if it opened up new ways 
of thinking about this choice.




I might have introduced confusion with the mention of the bug
with source locations. In the specific case of LilyPond, this
bug is not very important. Almost all the warnings Guile gives
are pure noise in our case anyway (I haven't taken the time to
prepare an MR for silencing them yet). It was to illustrate the
fact that there can be serious bugs in Guile, and one could
well affect us.

Apart from that, including the Guile sources in our tree and
building with them is something I would only do in a desperate
situation, e.g. Guile introducing changes that are fundamentally
incompatible with LilyPond's use case. It will be a nuisance
not to be able to use a Guile from the system since Guile these
days is quite slow to build. (The C code compiles fast,
but there is a whole bootstrap sequence to generate Scheme
compilers from Scheme code, which takes a lot of time.)
It will require synchronization with upstream if that is
desired. Also, while upstream isn't really active, they
do keep it at least building which is already something.
Rather, if it becomes clear that Guile is stuck, it would be
more reasonable to create a fork of Guile separate from LilyPond,
put it in a repository somewhere, invite the folks from guile-devel
who'd appreciate commit access on Guile but don't have it to
hack on it, advertise it for distros, apply patches from
the tracker, and try to either get upstream to realize its
model is not working and change it, or to make that a new
Guile with a community around it that can survive for the
decades to come. If we get a need to fork Guile (I don't
see a pressing need at the moment now that we are on
Guile 2/3), let's not do it in isolation.

Jean




Re: Guile 3.0

2022-05-22 Thread Luca Fascione
On Sun, May 22, 2022 at 9:05 PM Jonas Hahnfeld  wrote:

> On Sun, 2022-05-22 at 20:14 +0200, Luca Fascione wrote:
> > So at the cost of rocking the cage a bit hard, I came asking the
> > uncomfortable question:
> > what would happen if (for this unique circumstance) we'd do what one
> > would normally consider poor practice?
>
> Let's call your proposal by its true, scary name: we would essentially
> *fork* Guile and, in the longer term, make it fit exactly what we need
> for LilyPond.


Well, I was not thinking the delta between "true" Guile and "ours" would
ever get big.
If it did, that is what I'd call a fork. And no, I'm _not_ advocating that.

I'm more thinking something along the lines of make 3.81, actually: largely
"mainline",
plus a few small patches to adjust little details. (*)

It's clear that a real fork is not useful here, I agree with you completely

(*) 3.81 is famously incompatible with 3.82, and many large make systems
are stuck in .81 land.
So it's common for folks in that condition to build their own make applying
a few (3? maybe 4) small
patches to fix a few problems with the program instead. Effectively they
run some kind of 3.81+

The second implication is that we get technologically stuck.


Well, the idea is that much like now you'd state a dependency against Guile
2.2.x,
you would then just ship the version you want. I don't see much of a
difference there.
(Again, the key in mind is that the changes from us are a _small_ set, so
the fact that
we would on occasion change the base checkout and reapply the diffs should
be a
small overhead. If you compound this with changed built to maximize the
chances of
eventual adoption, you'd risk eventually getting into a place where these
changes are zero)


> With all that said, I think there are good reasons why things are
> considered bad practice.


There were what felt like good reasons at the time when the practices were
established, yes.

However, as the hypotheses mutate, it can come a point where the
conclusions don't follow any longer.

For example:
one doesn't want to fork because
 - it duplicates code and it's difficult to keep up the two diverged
branches
  -> with RCS _definitely_, with git I'm not so sure. Space cost of
duplication these days is zero. Time taken compiling one more repo, also
zero.
  -> this means that now this part of the reason is reduced to
understanding whether the divergence is large or small

I've seen things that were bad practice when I was a student become
acceptable or recommended now.
I've come to see that "old wisdom" is sometimes not that wise after all
(premature optimization for example,
although in that case that's more an issue of misunderstanding of the
original meaning, than actual change).


> Similar discussions have already taken place
> before, and I'm not sure if we're adding value by repeating them. Maybe
> we can come back to the original topic of this thread?
>

Forgive me for making poor use of your and the others' time.
I thought this might turn out to be pertinent if it opened up new ways of
thinking about this choice.

L

-- 
Luca Fascione


Re: Guile 3.0

2022-05-22 Thread Jonas Hahnfeld via Discussions on LilyPond development
On Sun, 2022-05-22 at 20:14 +0200, Luca Fascione wrote:
> So at the cost of rocking the cage a bit hard, I came asking the
> uncomfortable question:
> what would happen if (for this unique circumstance) we'd do what one
> would normally consider poor practice?

Let's call your proposal by its true, scary name: we would essentially
*fork* Guile and, in the longer term, make it fit exactly what we need
for LilyPond. This has a bunch of implications, one of which is that we
take on the burden of maintaining that forked version. If you don't
believe that will cause problems, I would just like to remind you that
Guile 1.8 was fundamentally incompatible with 64-bit Windows. Nobody
can foresee what will be the next problem; maybe there are none but I
would doubt it; but any time spent on the maintenance of a fork is
already too much in my eyes for a community that is comparably small.

The second implication is that we get technologically stuck. As bad as
the current situation is, it has given incentive to move on. For
example, I'm thinking of Han-Wen's work on the structure of output
backends that was originally meant to reduce the penalty with Guile 2.2
but in the end resulted in a net improvement overall. And after
dropping support Guile 1.8 (and lots of related code!), Jean is already
making good use of some of the new constructs. There are probably other
parts that work around deficiencies in Guile 1.8 which could be cleaned
up now (just search for "crazy bug" in scm/output-lib.scm).

With all that said, I think there are good reasons why things are
considered bad practice. Similar discussions have already taken place
before, and I'm not sure if we're adding value by repeating them. Maybe
we can come back to the original topic of this thread?

Jonas


signature.asc
Description: This is a digitally signed message part


Re: Guile 3.0

2022-05-22 Thread Luca Fascione
On Sun, May 22, 2022 at 8:02 PM David Kastrup  wrote:

> What do you mean with "shipped"?


I mean that when you clone the lilypond repo you'd find one more directory,
say
guile-2.2.7+/
or
guile-3.0.8+/
or something like that.
In fact we'd likely end up compiling a slightly different version thereof,
as I was saying,
because we'd apply a patch or two before building


> I don't
> think it makes sense with stuff that is supposed to be up to date with
> current versions.
>

I would normally definitely agree with you if these two conditions were met:
 - the project was evolving at a non-geologic speed
 - there was evidence that if we encountered a problem, they would assist us

I mean: the guile subsystem is the heart of lilypond, being held ransom (or
rather, completely ignored) by a group of people that
seems to show no interest in our issues is not what I'd considered a
strategy of growth and fruitful collaboration.

Besides: you say "current" version, but we're in this thread exactly
because we can't, in fact, use the current version.
(By a mile, I think the only one that works well is 2.2.7, right?) This
hodgerypockery would at least give us true current,
but we'd have to patch it, then again we'd be in a position where we _can_
patch it.

So at the cost of rocking the cage a bit hard, I came asking the
uncomfortable question:
what would happen if (for this unique circumstance) we'd do what one would
normally consider poor practice?

L

-- 
Luca Fascione


Re: Guile 3.0

2022-05-22 Thread David Kastrup
Luca Fascione  writes:

> I would like to bring up an option that I'd expect fair few of you will
> _really_ not like.
> I'm doing this not because I necessarily believe it to be a
> particularly good way forward,
> rather because I feel it is sometimes useful to articulate in words why an
> "obviously awful idea" is, in fact, awful. Or maybe it isn't
>
> So here it goes: what if we shipped the guile source? (I mean, in a
> subdirectory of lilypond's source)

What do you mean with "shipped"?  In the repository (which is not what
we ship)?  That would have made some sense with Guile 1.8.  I don't
think it makes sense with stuff that is supposed to be up to date with
current versions.

-- 
David Kastrup



Re: Guile 3.0

2022-05-22 Thread Luca Fascione
I would like to bring up an option that I'd expect fair few of you will
_really_ not like.
I'm doing this not because I necessarily believe it to be a
particularly good way forward,
rather because I feel it is sometimes useful to articulate in words why an
"obviously awful idea" is, in fact, awful. Or maybe it isn't

So here it goes: what if we shipped the guile source? (I mean, in a
subdirectory of lilypond's source)

At a quick look, it doesn't seem to be particularly hard to build
(comparatively speaking),
and its dependencies are mostly fairly benign stuff that appear to be
runtime dependencies anyways
(like libgc and such, point being, you need to install all that when you
install guile anyways; if I read it right only 'gnu-sed' is a compile-only
dependency).

One benefit I see is that we could ship it as vX.Y.X + a single patch, so
that it fundamentally documents what we've done to it (albeit git history
could also serve this purpose).
As an example, it seems to me that for 3.0.8 we'd want Jean's patch about
the line number reporting in errors, and I recall a discussion about
storing precompiled scripts that
at that point we might consider fixing in the guile source ourselves. I am
confused in this second whether this compiled scripts issue is problematic
in 2.2.x also or not.

I'm saying this because it seems to me that, different from python, there's
no real collaboration/interaction between the
guile installed on one's system and the interpreter inside lilypond, and
this would completely decouple us from the rest of
the distribution's concerns about which version of guile to ship (and seen
some distro use lilypond as an element of deciding the version
it's possible they wouldn't ship it at all if it wasn't for lilypond?)

Of course I'm seeing this as a possibly viable "lesser evil" kinda approach
only because the evidence we have is that the project activity is minimal
and their interest in addressing our needs (as exemplified by the post
Jean's shared) is also near-zero.
Which implies: we unblock ourselves without taking on this huge burden of
staying caught-up with the upstream
(and as an added "bonus" we also can decide to apply someone else's patches
should they fix a problem we have)

L

On Sun, May 22, 2022 at 5:42 PM David Kastrup  wrote:

> Jean Abou Samra  writes:
>
> > Le 22/05/2022 à 17:04, David Kastrup a écrit :
> >> [...]
> >>> Also see
> >>>
> >>> guile$ git shortlog -ns --since="2 months ago"
> >>>   2  Timothy Sample
> >>>   1  Ludovic Courtès
> >>>   1  Mikael Djurfeldt
> >> Well, it's the stable release branch.
> >
> >
> > What would be the development branch?
> >
> > $ git branch --show-current
> > main
> > $ git shortlog -ns v3.0.8..HEAD
> >  6  Ludovic Courtès
> >  2  Timothy Sample
> >  1  Andy Wingo
> >  1  Mikael Djurfeldt
> >  1  Rob Browning
> >  1  Sergei Trofimovich
> >  1  Vijay Marupudi
>
> I am not in control of Guile's development models or lack thereof.  I
> simply reported the information on their website that distributors would
> go by.
>
> >> [...]
> >> No, Guile is in trouble then.  I mean, it is in trouble now.  But if
> >> distributors can easily do version-hopping on their own initiative and
> >> end up with one version of Guile they are going to ship for their whole
> >> distro, it would be good if that does not end up in making LilyPond
> >> disappear.  That's all.
> >>
> >> What we _recommend_ and use ourselves is an entirely different matter.
> >
> >
> > OK, but in that case, what is your request concretely?
> > Current LilyPond master works with Guile 3.0.
>
> That's essentially all.  I wasn't sure of that from the discussion and
> from what I remembered from previous exchanges.
>
> > Do you want to add it to the CI?
>
> I am afraid that I am not tracking the development of Guile and the CI
> resources of LilyPond well enough to venture any opinion that would be
> more qualified than that of the current developers.
>
> --
> David Kastrup
>
>

-- 
Luca Fascione


Re: Guile 3.0

2022-05-22 Thread David Kastrup
Jean Abou Samra  writes:

> Le 22/05/2022 à 17:04, David Kastrup a écrit :
>> [...]
>>> Also see
>>>
>>> guile$ git shortlog -ns --since="2 months ago"
>>>   2  Timothy Sample
>>>   1  Ludovic Courtès
>>>   1  Mikael Djurfeldt
>> Well, it's the stable release branch.
>
>
> What would be the development branch?
>
> $ git branch --show-current
> main
> $ git shortlog -ns v3.0.8..HEAD
>  6  Ludovic Courtès
>  2  Timothy Sample
>  1  Andy Wingo
>  1  Mikael Djurfeldt
>  1  Rob Browning
>  1  Sergei Trofimovich
>  1  Vijay Marupudi

I am not in control of Guile's development models or lack thereof.  I
simply reported the information on their website that distributors would
go by.

>> [...]
>> No, Guile is in trouble then.  I mean, it is in trouble now.  But if
>> distributors can easily do version-hopping on their own initiative and
>> end up with one version of Guile they are going to ship for their whole
>> distro, it would be good if that does not end up in making LilyPond
>> disappear.  That's all.
>>
>> What we _recommend_ and use ourselves is an entirely different matter.
>
>
> OK, but in that case, what is your request concretely?
> Current LilyPond master works with Guile 3.0.

That's essentially all.  I wasn't sure of that from the discussion and
from what I remembered from previous exchanges.

> Do you want to add it to the CI?

I am afraid that I am not tracking the development of Guile and the CI
resources of LilyPond well enough to venture any opinion that would be
more qualified than that of the current developers.

-- 
David Kastrup



Guile 3.0 (was: Thinking about the next stable release)

2022-05-22 Thread Jean Abou Samra

Le 22/05/2022 à 17:04, David Kastrup a écrit :

[...]

Also see

guile$ git shortlog -ns --since="2 months ago"
  2  Timothy Sample
  1  Ludovic Courtès
  1  Mikael Djurfeldt

Well, it's the stable release branch.



What would be the development branch?

$ git branch --show-current
main
$ git shortlog -ns v3.0.8..HEAD
 6  Ludovic Courtès
 2  Timothy Sample
 1  Andy Wingo
 1  Mikael Djurfeldt
 1  Rob Browning
 1  Sergei Trofimovich
 1  Vijay Marupudi




[...]
No, Guile is in trouble then.  I mean, it is in trouble now.  But if
distributors can easily do version-hopping on their own initiative and
end up with one version of Guile they are going to ship for their whole
distro, it would be good if that does not end up in making LilyPond
disappear.  That's all.

What we _recommend_ and use ourselves is an entirely different matter.



OK, but in that case, what is your request concretely?
Current LilyPond master works with Guile 3.0. Do you
want to add it to the CI?

Jean




Re: guile-3.0 and LilyPond - here: /input/regression/context-defaultchild-cycle.ly fails

2020-01-21 Thread David Kastrup
Thomas Morley  writes:

> Am Mi., 22. Jan. 2020 um 00:59 Uhr schrieb David Kastrup :
>>
>>
>>  #(ly:set-option 'warning-as-error #t)
>>  %% not sure why these warnings appear twice [dfe]
>> -#(ly:expect-warning (_ "default child context begins a cycle: `~a'") 'Score)
>> -#(ly:expect-warning (_ "cannot find or create new `~a'") 'Bottom)
>> -#(ly:expect-warning (_ "default child context begins a cycle: `~a'") 'Score)
>> -#(ly:expect-warning (_ "cannot find or create new `~a'") 'Bottom)
>> +#(ly:expect-warning (_ "default child context begins a cycle: ~a") 'Score)
>> +#(ly:expect-warning (_ "cannot find or create context: ~a") 'Bottom)
>> +#(ly:expect-warning (_ "default child context begins a cycle: ~a") 'Score)
>> +#(ly:expect-warning (_ "cannot find or create context: ~a") 'Bottom)
>>
>>  \header {
>>texidoc = "A @code{\\defaultchild} cycle does not induce an endless loop.
>
> Got it, many thanks
>
>>
>> So why is that patch not in your
>> input/regression/context-defaultchild-cycle ?
>
> Obviously I patched this regtest (to reflect new guile-3 shortcut of
> gettext), _before_ Dan corrected it.
> And prefered my patch during solving the merge-conflict, without
> noticing the correction.

Ah right, that gettext thing.  Forgot about that.

-- 
David Kastrup



Re: guile-3.0 and LilyPond - here: /input/regression/context-defaultchild-cycle.ly fails

2020-01-21 Thread Thomas Morley
Am Mi., 22. Jan. 2020 um 00:59 Uhr schrieb David Kastrup :
>
> Thomas Morley  writes:
>
> > Hi,
> >
> > some remarks:
> >
> > Guile-3.0
> > First I compiled successfully guile-master from their repo, giving GNU
> > Guile 3.0.0.6-f3298
> > Trying to compile LilyPond with that guile (ofcourse adding a bunch of
> > patches) I had some problems pointing configure to the correct guile
> > and guile-config to the correct places. This was due to my setup with
> > too many guile-versions around. So I did some clean up.
> >
> > LilyPond
> > Afterwards I've got a successful ´make´ with current LilyPond-master.
> > ´make LANGS='' doc´ failed, though.
> >
> > The problem is /input/regression/context-defaultchild-cycle.ly
> > I do not understand how this regtest survives any compilation.
> > It contains
> > #(ly:set-option 'warning-as-error #t)
> > and some
> > #(ly:expect-warning ...)
> > If I compile it, separetly I always get warnings (after disabling
> > 'warning-as-error )
> > warning: default child context begins a cycle: Score
> > warning: cannot find or create context: Bottom
> > warning: default child context begins a cycle: Score
> > warning: cannot find or create context: Bottom
> > warning: 4 expected warning(s) not encountered:
> > default child context begins a cycle: `Score'
> > cannot find or create new `Bottom'
> > default child context begins a cycle: `Score'
> > cannot find or create new `Bottom'
> >
> > As far as I understand it errors always.
>
> commit 51b6513eeeaea69293bd4f554f8021529ae85a49
> Author: Dan Eble 
> Date:   Mon Jul 2 13:36:48 2018 -0400
>
> Issue 5366: Move warnings out of find/create context functions
>
> The motivation for this is that Context::find_create_context () and
> find_context_near () should probably be merged for maintainability,
> but one of the differences between them that must be dealt with is
> that find_create_context () logs when it fails and find_context_near
> () does not.  Adding warnings to find_context_near () risks being too
> noisy, leaving the option taken here.
>
> The new method Context::diagnostic_id (name, id) returns a formatted
> string (e.g. "Voice" or "Voice = mel") for use in a log message.  It
> is used for the warnings that are being moved as well as a few other
> existing warnings to increase consistency.
>
> diff --git a/input/regression/context-defaultchild-cycle.ly 
> b/input/regression/context-defaultchild-cycle.ly
> index f62532f8bb..46de604dfd 100644
> --- a/input/regression/context-defaultchild-cycle.ly
> +++ b/input/regression/context-defaultchild-cycle.ly
> @@ -2,10 +2,10 @@
>
>  #(ly:set-option 'warning-as-error #t)
>  %% not sure why these warnings appear twice [dfe]
> -#(ly:expect-warning (_ "default child context begins a cycle: `~a'") 'Score)
> -#(ly:expect-warning (_ "cannot find or create new `~a'") 'Bottom)
> -#(ly:expect-warning (_ "default child context begins a cycle: `~a'") 'Score)
> -#(ly:expect-warning (_ "cannot find or create new `~a'") 'Bottom)
> +#(ly:expect-warning (_ "default child context begins a cycle: ~a") 'Score)
> +#(ly:expect-warning (_ "cannot find or create context: ~a") 'Bottom)
> +#(ly:expect-warning (_ "default child context begins a cycle: ~a") 'Score)
> +#(ly:expect-warning (_ "cannot find or create context: ~a") 'Bottom)
>
>  \header {
>texidoc = "A @code{\\defaultchild} cycle does not induce an endless loop.

Got it, many thanks

>
> So why is that patch not in your
> input/regression/context-defaultchild-cycle ?

Obviously I patched this regtest (to reflect new guile-3 shortcut of
gettext), _before_ Dan corrected it.
And prefered my patch during solving the merge-conflict, without
noticing the correction.

Thanks,
  Harm



Re: guile-3.0 and LilyPond - here: /input/regression/context-defaultchild-cycle.ly fails

2020-01-21 Thread David Kastrup
Thomas Morley  writes:

> Hi,
>
> some remarks:
>
> Guile-3.0
> First I compiled successfully guile-master from their repo, giving GNU
> Guile 3.0.0.6-f3298
> Trying to compile LilyPond with that guile (ofcourse adding a bunch of
> patches) I had some problems pointing configure to the correct guile
> and guile-config to the correct places. This was due to my setup with
> too many guile-versions around. So I did some clean up.
>
> LilyPond
> Afterwards I've got a successful ´make´ with current LilyPond-master.
> ´make LANGS='' doc´ failed, though.
>
> The problem is /input/regression/context-defaultchild-cycle.ly
> I do not understand how this regtest survives any compilation.
> It contains
> #(ly:set-option 'warning-as-error #t)
> and some
> #(ly:expect-warning ...)
> If I compile it, separetly I always get warnings (after disabling
> 'warning-as-error )
> warning: default child context begins a cycle: Score
> warning: cannot find or create context: Bottom
> warning: default child context begins a cycle: Score
> warning: cannot find or create context: Bottom
> warning: 4 expected warning(s) not encountered:
> default child context begins a cycle: `Score'
> cannot find or create new `Bottom'
> default child context begins a cycle: `Score'
> cannot find or create new `Bottom'
>
> As far as I understand it errors always.

commit 51b6513eeeaea69293bd4f554f8021529ae85a49
Author: Dan Eble 
Date:   Mon Jul 2 13:36:48 2018 -0400

Issue 5366: Move warnings out of find/create context functions

The motivation for this is that Context::find_create_context () and
find_context_near () should probably be merged for maintainability,
but one of the differences between them that must be dealt with is
that find_create_context () logs when it fails and find_context_near
() does not.  Adding warnings to find_context_near () risks being too
noisy, leaving the option taken here.

The new method Context::diagnostic_id (name, id) returns a formatted
string (e.g. "Voice" or "Voice = mel") for use in a log message.  It
is used for the warnings that are being moved as well as a few other
existing warnings to increase consistency.

diff --git a/input/regression/context-defaultchild-cycle.ly 
b/input/regression/context-defaultchild-cycle.ly
index f62532f8bb..46de604dfd 100644
--- a/input/regression/context-defaultchild-cycle.ly
+++ b/input/regression/context-defaultchild-cycle.ly
@@ -2,10 +2,10 @@
 
 #(ly:set-option 'warning-as-error #t)
 %% not sure why these warnings appear twice [dfe]
-#(ly:expect-warning (_ "default child context begins a cycle: `~a'") 'Score)
-#(ly:expect-warning (_ "cannot find or create new `~a'") 'Bottom)
-#(ly:expect-warning (_ "default child context begins a cycle: `~a'") 'Score)
-#(ly:expect-warning (_ "cannot find or create new `~a'") 'Bottom)
+#(ly:expect-warning (_ "default child context begins a cycle: ~a") 'Score)
+#(ly:expect-warning (_ "cannot find or create context: ~a") 'Bottom)
+#(ly:expect-warning (_ "default child context begins a cycle: ~a") 'Score)
+#(ly:expect-warning (_ "cannot find or create context: ~a") 'Bottom)
 
 \header {
   texidoc = "A @code{\\defaultchild} cycle does not induce an endless loop.

So why is that patch not in your
input/regression/context-defaultchild-cycle ?

-- 
David Kastrup



Re: guile-3.0 and LilyPond - here: /input/regression/context-defaultchild-cycle.ly fails

2020-01-21 Thread Thomas Morley
Am Mi., 22. Jan. 2020 um 00:41 Uhr schrieb Karlin High :
>
> On 1/21/2020 5:10 PM, Thomas Morley wrote:
> > Afterwards I've got a successful ´make´ with current LilyPond-master.
>
> So it's a functional LilyPond with guile-3.0? How does it perform if fed
> something big? I'm thinking of the thread on benchmarking that used
> Vaughan McAlley's MDSM.ly, the Robert Carver "Missa Dum sacrum mysterium."
>
> <https://lists.gnu.org/archive/html/lilypond-user/2016-11/msg00700.html>
> --
> Karlin High
> Missouri, USA

Hi Karlin,

no idea.
I'll first try to get a succesfull ´make doc´ and then try to get
´make test-baseline´ work, which failed for other recent
guile-versions.
Currently I commented the problematic code in the mentioned regtest,
continuing with ´make doc´. Testing how far I'll get.


Cheers,
  Harm



Re: guile-3.0 and LilyPond - here: /input/regression/context-defaultchild-cycle.ly fails

2020-01-21 Thread Karlin High

On 1/21/2020 5:10 PM, Thomas Morley wrote:

Afterwards I've got a successful ´make´ with current LilyPond-master.


So it's a functional LilyPond with guile-3.0? How does it perform if fed 
something big? I'm thinking of the thread on benchmarking that used 
Vaughan McAlley's MDSM.ly, the Robert Carver "Missa Dum sacrum mysterium."


<https://lists.gnu.org/archive/html/lilypond-user/2016-11/msg00700.html>
--
Karlin High
Missouri, USA



guile-3.0 and LilyPond - here: /input/regression/context-defaultchild-cycle.ly fails

2020-01-21 Thread Thomas Morley
Hi,

some remarks:

Guile-3.0
First I compiled successfully guile-master from their repo, giving GNU
Guile 3.0.0.6-f3298
Trying to compile LilyPond with that guile (ofcourse adding a bunch of
patches) I had some problems pointing configure to the correct guile
and guile-config to the correct places. This was due to my setup with
too many guile-versions around. So I did some clean up.

LilyPond
Afterwards I've got a successful ´make´ with current LilyPond-master.
´make LANGS='' doc´ failed, though.

The problem is /input/regression/context-defaultchild-cycle.ly
I do not understand how this regtest survives any compilation.
It contains
#(ly:set-option 'warning-as-error #t)
and some
#(ly:expect-warning ...)
If I compile it, separetly I always get warnings (after disabling
'warning-as-error )
warning: default child context begins a cycle: Score
warning: cannot find or create context: Bottom
warning: default child context begins a cycle: Score
warning: cannot find or create context: Bottom
warning: 4 expected warning(s) not encountered:
default child context begins a cycle: `Score'
cannot find or create new `Bottom'
default child context begins a cycle: `Score'
cannot find or create new `Bottom'

As far as I understand it errors always.

Currently I can't test with a guile-1-build of recent master (my
mentioned cleanup was a little to thorough it seems)

Hints?


Cheers,
  Harm



lilydev-3.0.iso -- not mounting on mac osx

2015-03-03 Thread Paul Morris
Hi all,  On mac osx 10.10.2 I get the following when trying to install LilyDev 
3:
___
Warning
The following disk images couldn’t be opened
Image
  lilydev-3.0.iso 
Reason
  no mountable file systems
___

…after downloading from here:
http://www.et.byu.edu/~sorensen/lilydev-3.0.iso 
http://www.et.byu.edu/~sorensen/lilydev-3.0.iso

...as linked from here:
http://lilypond.org/doc/v2.19/Documentation/contributor/lilydev 
http://lilypond.org/doc/v2.19/Documentation/contributor/lilydev

Has anyone else had this problem?

Thanks,
-Paul
___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: lilydev-3.0.iso -- not mounting on mac osx

2015-03-03 Thread Paul Morris
Paul Morris wrote
 Hi all,  On mac osx 10.10.2 I get the following when trying to install
 LilyDev 3:

Nevermind... I was doing it wrong.  Seems to be working fine now.

-Paul



--
View this message in context: 
http://lilypond.1069038.n5.nabble.com/lilydev-3-0-iso-not-mounting-on-mac-osx-tp172556p172561.html
Sent from the Dev mailing list archive at Nabble.com.

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: 3.0?

2014-01-12 Thread Janek Warchoł
2014/1/12 Carl Peterson carlopeter...@gmail.com:
 What I would *ultimately* like is the ability for someone to visually write
 each part on separate staves (or using two staves with two voices each),
 then those parts are translated into the template without any direct code
 manipulation. The visual interface would be like the single-line view in
 Finale (where it's not trying to deal with line lengths/spacing, etc.). This
 is basically what I do in MuseScore or Finale Notepad from the compositional
 side, but I'm trying to find the most efficient workflow to go from that to
 my template. I don't know if it's practical, possible, or what. I don't know
 whether this would be a Frescobaldi thing or a Denemo thing.


I think this is exactly a Denemo thing.

best,
Janek

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: 3.0?

2014-01-12 Thread David Kastrup
Janek Warchoł janek.lilyp...@gmail.com writes:

 2014/1/12 Carl Peterson carlopeter...@gmail.com:
 What I would *ultimately* like is the ability for someone to visually
 write each part on separate staves (or using two staves with two
 voices each), then those parts are translated into the template
 without any direct code manipulation. The visual interface would be
 like the single-line view in Finale (where it's not trying to deal
 with line lengths/spacing, etc.). This is basically what I do in
 MuseScore or Finale Notepad from the compositional side, but I'm
 trying to find the most efficient workflow to go from that to my
 template. I don't know if it's practical, possible, or what. I don't
 know whether this would be a Frescobaldi thing or a Denemo thing.


 I think this is exactly a Denemo thing.

Well, the question is how much one could pluginize Denemo.  Like,
marking a passage in Emacs which then turns into a small Denemo display
window (the keyboard commands would still travel via Emacs) and back
again...

This could be interesting technology...

-- 
David Kastrup

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: 3.0?

2014-01-12 Thread Urs Liska


Janek Warchoł janek.lilyp...@gmail.com schrieb:
2014/1/12 Carl Peterson carlopeter...@gmail.com:
 What I would *ultimately* like is the ability for someone to visually
write
 each part on separate staves (or using two staves with two voices
each),
 then those parts are translated into the template without any direct
code
 manipulation. The visual interface would be like the single-line view
in
 Finale (where it's not trying to deal with line lengths/spacing,
etc.). This
 is basically what I do in MuseScore or Finale Notepad from the
compositional
 side, but I'm trying to find the most efficient workflow to go from
that to
 my template. I don't know if it's practical, possible, or what. I
don't know
 whether this would be a Frescobaldi thing or a Denemo thing.


I think this is exactly a Denemo thing.

Please add your doubts to the Frescobaldi issue.

Urs


best,
Janek

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


-- 
Urs Liska
openlilylib.org

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: 3.0?

2014-01-11 Thread Janek Warchoł
2014/1/10 Urs Liska u...@openlilylib.org:

 Well,
 compiling a few measures of a single staff feels nearly instantaneous, and
 when you're editing an orchestral score this makes a huge difference.

 Generally I'd think it would be a good idea to have such an interface in
 Frescobaldi.


I know that this is not exactly what we're talking about, but i
believe that things like this (previewing music, partially compiled
scores, instant feedback sacrificing some quality) are exactly what
Denemo is for.  I honestly believe that Denemo would be invaluable to
LilyPond if only it could open all Lily files, not just those created
by itself.  (and if the UIUX kinks would be ironed out).

best,
Janek

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: 3.0?

2014-01-11 Thread David Kastrup
Janek Warchoł janek.lilyp...@gmail.com writes:

 2014/1/10 Urs Liska u...@openlilylib.org:

 Well,
 compiling a few measures of a single staff feels nearly instantaneous, and
 when you're editing an orchestral score this makes a huge difference.

 Generally I'd think it would be a good idea to have such an interface in
 Frescobaldi.


 I know that this is not exactly what we're talking about, but i
 believe that things like this (previewing music, partially compiled
 scores, instant feedback sacrificing some quality) are exactly what
 Denemo is for.  I honestly believe that Denemo would be invaluable to
 LilyPond if only it could open all Lily files, not just those created
 by itself.  (and if the UIUX kinks would be ironed out).

One very nice integrated experience is offered by preview-latex
URL:http://www.gnu.org/software/auctex/preview-latex.  preview-latex
has no clue about the documents itself and does not actually import
them.  It does not parse them and does not touch the input or create a
representation of it.  There are several things it does for fast update
of single items (the first run is per-document, though):

a) it dumps a preloaded format including all document classes and
document styles, namely everything before \begin{document}.  This
operation is optional.

b) When rerunning material in a single item, it cuts it out, precedes it
with what it considers the document preamble, follows it by what it
considers the document ending, and runs that through.  That means,
obviously, that any macros you refer to have to be defined in the
document preamble or stuff won't work.  It's quite uncommon to arrange
a LaTeX source using actual macros, so that usually works pretty well.

When wanting to do that approach using LilyPond, the preloaded format
thing can be accommodated quite better than with TeX (which is taken
as-is as a binary): we can just have a LilyPond process waiting for
action, and use the session mechanism for providing a reasonably
prepared situation without needing a new process each time.

The problem is that LilyPond sources more often than not _are_ arranged
with macro definitions, so we need to get those dependencies right.

-- 
David Kastrup

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: 3.0?

2014-01-11 Thread Carl Sorensen


On Jan 10, 2014, at 11:41 PM, Paul Morris p...@paulwmorris.com wrote:

   Seems like getting just the notes (not layout) out of an
 imported musicXML file should be an easy and straightforward thing, but I
 guess not?
 
I can't speak for Carl P's work.  For me, effective LP input files require 
structure (variables, contexts) that MusicXML knows nothing of. And it's 
generally easier to create them than to fix them on import.

Carl S.



___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: 3.0?

2014-01-11 Thread Janek Warchoł
2014/1/11 David Kastrup d...@gnu.org:
 One very nice integrated experience is offered by preview-latex
 URL:http://www.gnu.org/software/auctex/preview-latex.


Indeed, this is very nice.  Although i haven't used it, i know i would
enjoy it :)

j

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: 3.0?

2014-01-11 Thread David Kastrup
Janek Warchoł janek.lilyp...@gmail.com writes:

 2014/1/11 David Kastrup d...@gnu.org:
 One very nice integrated experience is offered by preview-latex
 URL:http://www.gnu.org/software/auctex/preview-latex.


 Indeed, this is very nice.  Although i haven't used it, i know i would
 enjoy it :)

Well, actually it's a lot better than you'd guess from the screenshots:
the proof-of-concept took about two weeks, and the screen shots would
not have been much different then (apart from the descenders being
wrong).

There's been years of development going into it afterwards.  It's
technology that does not get in the way, is fast and reliable, and
integrates with personal workflows seamlessly.

I wish we'd have something like that for the LilyPond manuals.

-- 
David Kastrup

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: 3.0?

2014-01-11 Thread Urs Liska
Am Donnerstag, den 09.01.2014, 10:13 -0500 schrieb Carl Peterson:
 On Thu, Jan 9, 2014 at 6:20 AM, David Kastrup d...@gnu.org wrote:
  Another problem is that LilyPond has a usage philosophy and workflow
  that strongly penalizes manual tweaks.  Graphically/manually oriented
  workflows detract from the importance of getting good default
  typesetting.
 
 I don't know that I agree with this, entirely. I use MuseScore,
 Scorio, and Finale Notepad (depending on where I am and how I feel)
 for compositional work because they provide ease of note entry in the
 composing process and the ability to have instant aural feedback on
 what I've written (particularly if I'm not at my keyboard to play what
 I've written). Once I have the draft of the music written, I will
 manually retype the music into my LilyPond template because of the
 good default typesetting it provides. Now, consider an IDE/GUI setup
 (perhaps an extension of Frescobaldi) that would allow me to define a
 variable for a voice, then pop up a musical staff to enter and play
 back the notes for that variable without dealing with the whole
 compilation process. No manual tweaking of notes, just the entry of
 the entry and playback of the notes, and I don't have to insert the
 notes into the music itself yet or deal with whatever may or may not
 be wrong with the rest of my file. I realize that this would not
 necessarily work for all use cases, but I think for a large number of
 them, this could be beneficial. It would reduce a number of my
 transcription errors without me having to compile, scan for errors,
 potentially figure out where the errors are (depending on workflow),
 correct, recompile, etc.
 
 Carl

https://github.com/wbsoft/frescobaldi/issues/345



___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: 3.0?

2014-01-11 Thread Paul Morris
Carl Sorensen-3 wrote
 I can't speak for Carl P's work.  For me, effective LP input files require
 structure (variables, contexts) that MusicXML knows nothing of. And it's
 generally easier to create them than to fix them on import.

I see what you mean.  Unfortunately it makes it harder to use other tools
that are optimized for composing with LilyPond...  Seems like capturing just
the musical content from a MusicXML file and then pasting it into a LP
template or file that has the LP structure should be easier than re-typing
it.  But I defer to those with more experience in this area, as I've only
done musicXML import a few times.  



David Kastrup wrote
 One very nice integrated experience is offered by preview-latex
 lt;URL:http://www.gnu.org/software/auctex/preview-latexgt;.
 snip
 I wish we'd have something like that for the LilyPond manuals.

This does look good.  It would be really nice to have something like this
for the manuals.



Urs Liska wrote
 https://github.com/wbsoft/frescobaldi/issues/345

I'm not sure about this.  Seems like you could get basically the same
workflow by using a second file as a sketchpad without having to introduce a
new UI component.  See my comment at the link above for more of my thoughts
on this.

-Paul




--
View this message in context: 
http://lilypond.1069038.n5.nabble.com/3-0-tp157489p157682.html
Sent from the Dev mailing list archive at Nabble.com.

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: 3.0?

2014-01-11 Thread Carl Peterson
On Sat, Jan 11, 2014 at 11:50 PM, Paul Morris p...@paulwmorris.com wrote:

 Carl Sorensen-3 wrote
  I can't speak for Carl P's work.  For me, effective LP input files
 require
  structure (variables, contexts) that MusicXML knows nothing of. And it's
  generally easier to create them than to fix them on import.

 I see what you mean.  Unfortunately it makes it harder to use other tools
 that are optimized for composing with LilyPond...  Seems like capturing
 just
 the musical content from a MusicXML file and then pasting it into a LP
 template or file that has the LP structure should be easier than re-typing
 it.  But I defer to those with more experience in this area, as I've only
 done musicXML import a few times.

 Urs Liska wrote
  https://github.com/wbsoft/frescobaldi/issues/345

 I'm not sure about this.  Seems like you could get basically the same
 workflow by using a second file as a sketchpad without having to introduce
 a
 new UI component.  See my comment at the link above for more of my thoughts
 on this.

 -Paul


Allow me to extend my use case a bit further. My own work is similar to
what I understand of Carl S's work. I have a file where I define each of my
SATB parts, each lyrical verse, and calls a template file that takes the
parts and creates the two staves for the music, with both a part-combined
voice for display purposes and separated voices for MIDI and lyric purposes
(the separated notes are hidden and non-colliding, etc., in the layout). I
have a second file where I include this master file and create either the
paper hymnal layout or slides for projection (depending upon which layout
template I call).

I've done the two file workflow before, typically when I've created the
four parts using a basic SATB template, then copied and pasted into the
variables of my own template. That said, I am also trying to think about
features which would make this more productive for someone who *isn't*
inclined to work multiple files, variables, etc.

What I would *ultimately* like is the ability for someone to visually write
each part on separate staves (or using two staves with two voices each),
then those parts are translated into the template without any direct code
manipulation. The visual interface would be like the single-line view in
Finale (where it's not trying to deal with line lengths/spacing, etc.).
This is basically what I do in MuseScore or Finale Notepad from the
compositional side, but I'm trying to find the most efficient workflow to
go from that to my template. I don't know if it's practical, possible, or
what. I don't know whether this would be a Frescobaldi thing or a Denemo
thing. Since Denemo is already a GUI experience, it may be the better place
to try to get this kind of functionality.
___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: 3.0?

2014-01-10 Thread Carl Peterson
On Fri, Jan 10, 2014 at 12:46 AM, Paul Morris p...@paulwmorris.com wrote:

 Carl Peterson wrote
  I use MuseScore,
  Scorio, and Finale Notepad (depending on where I am and how I feel)
  for compositional work because they provide ease of note entry in the
  composing process and the ability to have instant aural feedback on
  what I've written (particularly if I'm not at my keyboard to play what
  I've written). Once I have the draft of the music written, I will
  manually retype the music into my LilyPond template because of the
  good default typesetting it provides.

 Hi Carl,  Do you find that manually retyping is easier or better than
 export
 - musicXML - import?  Curious to hear your thoughts as I would assume
 that
 import/export would be the ideal way to use a workflow like this.


Retyping by far. I pretty much write exclusively a cappella SATB, and I
have developed a very specific template/workflow for the part combining and
layout. I've tried a few different ways of getting the music from these
formats into LP, and in each case, I found myself spending longer in
cleaning up the resulting LilyPond code than if I had just transcribed it
manually from the other program. That is why I suggested an IDE feature
that would allow for creating a variable, and then providing a basic visual
note-entry tool that can handle single or chorded notes (whether it allows
polyphonic music may be a more challenging question), then return minimal
code (just the notes).

I know someone suggested just turning off the PDF conversion to speed
things up, but it's not just a matter of instantaneous aural feedback.
There's a visual component and a matter of input error reduction, because I
have been known to enter incorrect octaves or durations and not realize it
until I've finished typing and have compiled the entire score.

Carl
___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: 3.0?

2014-01-10 Thread karl
Carl Peterson:
...
 I know someone suggested just turning off the PDF conversion to speed
 things up, but it's not just a matter of instantaneous aural feedback.

Ok.

 There's a visual component and a matter of input error reduction, because I
 have been known to enter incorrect octaves or durations and not realize it
 until I've finished typing and have compiled the entire score.

A quick-n-dirty test mode would probably solve your need, just to 
check for typing errors and such (as you write above).

What should such a mode need/disregard, what speedups are possible for 
such a test mode ?

Regards,
/Karl Hammar

---
Aspö Data
Lilla Aspö 148
S-742 94 Östhammar
Sweden
+46 173 140 57



___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: 3.0?

2014-01-10 Thread Urs Liska

Am 10.01.2014 22:23, schrieb k...@aspodata.se:

Carl Peterson:
...

I know someone suggested just turning off the PDF conversion to speed
things up, but it's not just a matter of instantaneous aural feedback.


Ok.


There's a visual component and a matter of input error reduction, because I
have been known to enter incorrect octaves or durations and not realize it
until I've finished typing and have compiled the entire score.


A quick-n-dirty test mode would probably solve your need, just to
check for typing errors and such (as you write above).

What should such a mode need/disregard, what speedups are possible for
such a test mode ?



Well,
compiling a few measures of a single staff feels nearly instantaneous, 
and when you're editing an orchestral score this makes a huge difference.


Generally I'd think it would be a good idea to have such an interface in 
Frescobaldi. UI-wise it wouldn't be too hard to add that. However, there 
is one thing I've thought about several times and that doesn't make the 
issue so easy:
If you have a short segment of a score, say in a variable, how can you 
guarantee that LilyPond has the right context for that (I'm not talking 
of \context, but of things like key, time signature, transposition etc.)?


Urs


Regards,
/Karl Hammar

---
Aspö Data
Lilla Aspö 148
S-742 94 Östhammar
Sweden
+46 173 140 57



___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel




--
Urs Liska
www.openlilylib.org

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: 3.0?

2014-01-10 Thread karl
Carl Peterson:
...
 Retyping by far. I pretty much write exclusively a cappella SATB, and I
 have developed a very specific template/workflow for the part combining and
 layout. I've tried a few different ways of getting the music from these
 formats into LP, and in each case, I found myself spending longer in
 cleaning up the resulting LilyPond code than if I had just transcribed it
 manually from the other program.
...

What if the midi-lilypond conversion could be made better?
I'm currently looking into that.

Regards,
/Karl Hammar

---
Aspö Data
Lilla Aspö 148
S-742 94 Östhammar
Sweden
+46 173 140 57



___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: 3.0?

2014-01-10 Thread karl
Urs Liska:
 Am 10.01.2014 22:23, schrieb k...@aspodata.se:
  Carl Peterson:
...
  There's a visual component and a matter of input error reduction, because I
  have been known to enter incorrect octaves or durations and not realize it
  until I've finished typing and have compiled the entire score.
 
  A quick-n-dirty test mode would probably solve your need, just to
  check for typing errors and such (as you write above).
 
  What should such a mode need/disregard, what speedups are possible for
  such a test mode ?
 
 
 Well,
 compiling a few measures of a single staff feels nearly instantaneous, 
 and when you're editing an orchestral score this makes a huge difference.

Denpends on the computer you are using,

 http://turkos.aspodata.se/git/musik/ALotti/missa_a3_la_minore/04_agnus.ly

is 17bars, 3voices with lyrics, and it still takes 5s on my box,

 Generally I'd think it would be a good idea to have such an interface in 
 Frescobaldi. UI-wise it wouldn't be too hard to add that. However, there 
 is one thing I've thought about several times and that doesn't make the 
 issue so easy:
 If you have a short segment of a score, say in a variable, how can you 
 guarantee that LilyPond has the right context for that (I'm not talking 
 of \context, but of things like key, time signature, transposition etc.)?

If you are only interested in checking octaves and durations, the
context doesn't matter too much.

Regards,
/Karl Hammar

---
Aspö Data
Lilla Aspö 148
S-742 94 Östhammar
Sweden
+46 173 140 57



___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: 3.0?

2014-01-10 Thread Carl Sorensen


On 1/9/14 9:43 PM, SoundsFromSound soundsfromso...@gmail.com wrote:

dak wrote
 Joseph Rushton Wakeling lt;That must be the reason why the typical
Word document features the
 consistent use of document styles for arriving at typographically
 superior results.
 
 -- 
 David Kastrup
 
 ___

I honestly have never seen ONE Word document make use of styles. I'm not
kidding. In all the docs I've come across in all areas, people never use
them. Seriously! :)

I use styles anytime I have to make a serious Word document (i.e. when I
can't use LaTeX).  Of course, that's probably part of the reason that I
like LilyPondŠ.

Carl


___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: 3.0?

2014-01-10 Thread Carl Peterson
On Fri, Jan 10, 2014 at 4:25 PM, Urs Liska u...@openlilylib.org wrote:


 Well,
 compiling a few measures of a single staff feels nearly instantaneous, and
 when you're editing an orchestral score this makes a huge difference.

 Generally I'd think it would be a good idea to have such an interface in
 Frescobaldi. UI-wise it wouldn't be too hard to add that. However, there is
 one thing I've thought about several times and that doesn't make the issue
 so easy:
 If you have a short segment of a score, say in a variable, how can you
 guarantee that LilyPond has the right context for that (I'm not talking of
 \context, but of things like key, time signature, transposition etc.)?

 Couple of possibilities. Just thinking about Frescobaldi, since it seems
to do a pretty good job of tracing things through the document(s), would it
be possible to look for the reference to that variable and try to determine
the context?

Another option is that this is not a compilation feature (i.e., Fresco is
not passing the variable to LP to compile), but rather it would allow a
dialog box/popup and there would be the option to change certain things
like time signature, transposition, etc.

I actually think it should be some kind of bare-bones parser apart from LP
proper (a bypass) that doesn't factor in articulations, manual tweaks,
etc., but only considers absolutely essential components (notes, slurs,
ties, chords, etc.).

Carl
___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: 3.0?

2014-01-10 Thread Urs Liska
Am 10.01.2014 23:37, schrieb Carl Peterson:
 On Fri, Jan 10, 2014 at 4:25 PM, Urs Liska u...@openlilylib.org wrote:


 Well,
 compiling a few measures of a single staff feels nearly instantaneous, and
 when you're editing an orchestral score this makes a huge difference.

 Generally I'd think it would be a good idea to have such an interface in
 Frescobaldi. UI-wise it wouldn't be too hard to add that. However, there is
 one thing I've thought about several times and that doesn't make the issue
 so easy:
 If you have a short segment of a score, say in a variable, how can you
 guarantee that LilyPond has the right context for that (I'm not talking of
 \context, but of things like key, time signature, transposition etc.)?

 Couple of possibilities. Just thinking about Frescobaldi, since it seems
 to do a pretty good job of tracing things through the document(s), would it
 be possible to look for the reference to that variable and try to determine
 the context?

I think that wouldn't be reliable because there are so many 
possibilities one couldn't really preview.


 Another option is that this is not a compilation feature (i.e., Fresco is
 not passing the variable to LP to compile), but rather it would allow a
 dialog box/popup and there would be the option to change certain things
 like time signature, transposition, etc.

 I actually think it should be some kind of bare-bones parser apart from LP
 proper (a bypass) that doesn't factor in articulations, manual tweaks,
 etc., but only considers absolutely essential components (notes, slurs,
 ties, chords, etc.).

 Carl


Actually I think you're considering something like Denemo does: create a 
mock-up editor with output that will later be replaced by LilyPond's output.

But now I see how it could be done.
What you want is a tool that creates LilyPond input for you, isn't it? 
Like the keyboard is a tool, midi input is one and xml import is one.
So you don't actually need the segment to be taken from the real file or 
even be related to it.

What Frescobaldi can do is take some input code, 
put it in a scratch area and let LilyPond compile that as a temporary file.
That's what it does when you compile a file that doesn't have a name yet.
Or when you're in the New Score Wizard and click Preview.

So what one could implement is a tool that provides some, but not too much space
to edit text, a small preview pane and a set of UI elements for setting the 
musical
context. From there it can wrap the source in a score template, respecting the
settings of time, key etc. and compile this (maybe continuously).
Then there are two buttons to copy/cut the source to the clipboard or to insert 
it
at the current cursor position.

Actually there already is a similar tool: Edit in place.
When you right click on an item in the Music View and select Edit in Place it 
fires
a small editor window where you can edit the current line in the source file.

-- 
Urs Liska
www.openlilylib.org



___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: 3.0?

2014-01-10 Thread Paul Morris
Carl Peterson wrote
 Retyping by far. I pretty much write exclusively a cappella SATB, and I
 have developed a very specific template/workflow for the part combining
 and
 layout. I've tried a few different ways of getting the music from these
 formats into LP, and in each case, I found myself spending longer in
 cleaning up the resulting LilyPond code than if I had just transcribed it
 manually from the other program.

Hmmm, I'm curious what kind of cleanup is needed?  Is it the part combining
of SATB that's the problem, with the musicXML having the music represented
as harmonies / chords, and needing to isolate the different parts? ...or
something else?  Seems like getting just the notes (not layout) out of an
imported musicXML file should be an easy and straightforward thing, but I
guess not?


 That is why I suggested an IDE feature
 that would allow for creating a variable, and then providing a basic
 visual
 note-entry tool that can handle single or chorded notes (whether it allows
 polyphonic music may be a more challenging question), then return minimal
 code (just the notes).

This makes me wonder if Schikker's List could work for this, either as a
separate tool or possibly integrated into Frescobaldi?  (It's written in
Scheme whereas Frescobaldi is in Python, so that may be an obstacle?)  It
seems that if, as Urs is suggesting here, Frescobaldi moves towards more
graphical features then we're headed for some duplication of effort between
it and Schikker's List.

Just this week I came across LilyComp (http://lilycomp.sourceforge.net/)
which I haven't tried, and is probably too simple to be much help.  But if
it or something like it was integrated into Frescobaldi with the new
auto-compile feature, perhaps just rendering a limited number of notes at a
time in a separate window, that might start to be interesting.  (It's
written in python and is licensed under the GPL.)

-Paul



--
View this message in context: 
http://lilypond.1069038.n5.nabble.com/3-0-tp157489p157612.html
Sent from the Dev mailing list archive at Nabble.com.

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


3.0?

2014-01-09 Thread Urs Liska
Please don't beat me up, but that's something I wondered about for quite 
some time:

Is there _any_ notion what a LilyPond 3.0 may be?
I mean 2.0 followed on 1.8, and now we're already towards .20

Is there any general idea about what would make the next major program 
version?


Urs

--
Urs Liska
www.openlilylib.org

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: 3.0?

2014-01-09 Thread Jan Nieuwenhuizen
Urs Liska writes:

 Is there _any_ notion what a LilyPond 3.0 may be?

I could imagine that if LilyPond were made into an engraving library,
and/or heavy rewiring to make it deeply integrated with a gui, or accept
another native input language like the lilypond-driven fixed fresh
release of MusicXML 4.0; something like that would warrant 3.0.

 I mean 2.0 followed on 1.8, and now we're already towards .20

We had major language changes and a deep incorporation of Guile, those
made good excuses to move away from the 1.0 series.

Jan

-- 
Jan Nieuwenhuizen jann...@gnu.org | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar®  http://AvatarAcademy.nl  

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: 3.0?

2014-01-09 Thread Phil Holmes
- Original Message - 
From: Urs Liska u...@openlilylib.org

To: LilyPond Development Team lilypond-devel@gnu.org
Sent: Thursday, January 09, 2014 10:53 AM
Subject: 3.0?


Please don't beat me up, but that's something I wondered about for quite 
some time:

Is there _any_ notion what a LilyPond 3.0 may be?
I mean 2.0 followed on 1.8, and now we're already towards .20

Is there any general idea about what would make the next major program 
version?


Urs



Fundamental changes to the approach taken?

--
Phil Holmes

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: 3.0?

2014-01-09 Thread Urs Liska

Am 09.01.2014 12:03, schrieb Jan Nieuwenhuizen:

Urs Liska writes:


Is there _any_ notion what a LilyPond 3.0 may be?


I could imagine that if LilyPond were made into an engraving library,
and/or heavy rewiring to make it deeply integrated with a gui,


Hm, this is something I was also thinking about: Of course LilyPond 
itself will never get graphical editing but remains a dedicated 
engraving tool.
But it would probably make it more attractive for the consumer market if 
it had a nice default GUI. I personally would be pleased to see 
Frescobaldi become such a default GUI (of course not cutting out other 
options). Particularly given the prospect of Frescobaldi providing 
graphical editing capabilities soon (and provided we'll get the Mac OSX 
installation sorted out).


Would such a step be _conceptually_ acceptable or should LilyPond remain 
GUI-agnostic?



or accept
another native input language like the lilypond-driven fixed fresh
release of MusicXML 4.0; something like that would warrant 3.0.



In that context: Does anybody have experience/knowledge/contact with MEI 
(www.music-encoding.org)?



I mean 2.0 followed on 1.8, and now we're already towards .20


We had major language changes and a deep incorporation of Guile, those
made good excuses to move away from the 1.0 series.


Ah, OK:

Urs


Jan




--
Urs Liska
www.openlilylib.org

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: 3.0?

2014-01-09 Thread Mike Solomon

On Jan 9, 2014, at 1:07 PM, Urs Liska u...@openlilylib.org wrote:

 Am 09.01.2014 12:03, schrieb Jan Nieuwenhuizen:
 Urs Liska writes:
 
 Is there _any_ notion what a LilyPond 3.0 may be?
 
 I could imagine that if LilyPond were made into an engraving library,
 and/or heavy rewiring to make it deeply integrated with a gui,
 
 Hm, this is something I was also thinking about: Of course LilyPond itself 
 will never get graphical editing but remains a dedicated engraving tool.
 But it would probably make it more attractive for the consumer market if it 
 had a nice default GUI. I personally would be pleased to see Frescobaldi 
 become such a default GUI (of course not cutting out other options). 
 Particularly given the prospect of Frescobaldi providing graphical editing 
 capabilities soon (and provided we'll get the Mac OSX installation sorted 
 out).
 
 Would such a step be _conceptually_ acceptable or should LilyPond remain 
 GUI-agnostic”?


GUI agnostic - there should be a clear separation between front end and 
backend.  LilyPond is technically already GUI agnostic, as joe and vim (my two 
favorite GUIs) both act commendably as front ends to my LilyPond code.

The best thing, by far, would to make LilyPond a modular engraving library with 
public APIs for each module.  This way, building a GUI just means mapping 
visual symbols to API calls and displaying the result.

GUIDO (for which I’m a developer) already works like this and has been embedded 
in several commercial and open-source apps.

Cheers,
MS
___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: 3.0?

2014-01-09 Thread Graham Percival
On Thu, Jan 09, 2014 at 12:07:07PM +0100, Urs Liska wrote:
 But it would probably make it more attractive for the consumer
 market if it had a nice default GUI. I personally would be pleased
 to see Frescobaldi become such a default GUI (of course not cutting
 out other options). Particularly given the prospect of Frescobaldi
 providing graphical editing capabilities soon (and provided we'll
 get the Mac OSX installation sorted out).
 
 Would such a step be _conceptually_ acceptable or should LilyPond
 remain GUI-agnostic?

I don't think that such a step would be conceptually acceptable
(we could always provide a stripped down binary package without
the editor).  However, cross-compiling and distributing
Frescobaldi would be a huge undertaking.

- Graham

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: 3.0?

2014-01-09 Thread David Kastrup
Urs Liska u...@openlilylib.org writes:

 Am 09.01.2014 12:03, schrieb Jan Nieuwenhuizen:
 Urs Liska writes:

 Is there _any_ notion what a LilyPond 3.0 may be?

 I could imagine that if LilyPond were made into an engraving library,
 and/or heavy rewiring to make it deeply integrated with a gui,

 Hm, this is something I was also thinking about: Of course LilyPond
 itself will never get graphical editing but remains a dedicated
 engraving tool.
 But it would probably make it more attractive for the consumer market
 if it had a nice default GUI.

It's not for the consumer market anyway.  Too much thinking.

 I personally would be pleased to see Frescobaldi become such a default
 GUI (of course not cutting out other options).

Frescobaldi is not a GUI but an IDE.  It runs on fewer platforms than
LilyPond.

 Particularly given the prospect of Frescobaldi providing graphical
 editing capabilities soon (and provided we'll get the Mac OSX
 installation sorted out).

 Would such a step be _conceptually_ acceptable or should LilyPond
 remain GUI-agnostic?

That question does not make sense.  You don't describe such a step, I
don't see what concepts are involved here, and there is no point in
not adding support code for particular applications.  One problem with
GUI proponents is that they more often than not are of the opinion it
should work good on Windows, let the rest be d***ed, and it is the
position of the GNU project _not_ to introduce material that promotes
the use of proprietary platforms over free ones.

Another problem is that LilyPond has a usage philosophy and workflow
that strongly penalizes manual tweaks.  Graphically/manually oriented
workflows detract from the importance of getting good default
typesetting.

-- 
David Kastrup

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: 3.0?

2014-01-09 Thread David Kastrup
Urs Liska u...@openlilylib.org writes:

 Please don't beat me up, but that's something I wondered about for
 quite some time:
 Is there _any_ notion what a LilyPond 3.0 may be?
 I mean 2.0 followed on 1.8, and now we're already towards .20

 Is there any general idea about what would make the next major program
 version?

Not without GUILEv2 and likely some other architectural overhaul.  The
early 2.0 phase mostly got rid of TeX.

-- 
David Kastrup

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: 3.0?

2014-01-09 Thread karl
Carl Peterson:
...
 Now, consider an IDE/GUI setup
 (perhaps an extension of Frescobaldi) that would allow me to define a
 variable for a voice, then pop up a musical staff to enter and play
 back the notes for that variable without dealing with the whole
 compilation process. No manual tweaking of notes, just the entry of
 the entry and playback of the notes, and I don't have to insert the
 notes into the music itself yet or deal with whatever may or may not
 be wrong with the rest of my file. I realize that this would not
 necessarily work for all use cases, but I think for a large number of
 them, this could be beneficial. It would reduce a number of my
 transcription errors without me having to compile, scan for errors,
 potentially figure out where the errors are (depending on workflow),
 correct, recompile, etc.

Sounds like a performance problem, you want to hear (quickly) how the 
things you entered sounds. That can be done with lilypond as is, just
skip the ps/pdf generation, us a test file like:

ma = { your_music }

targetpitch = c
midi_tempo = { \tempo 2 = 100 }
\score {
  \unfoldRepeats \transpose c \targetpitch 
\new Staff \ma
  
  \midi {
\midi_tempo
  }
}

///

 As an example take:

http://turkos.aspodata.se/git/musik/ALotti/missa_a3_la_minore/

Compiling it takes 15s on my box.

$ time lilypond 01_kyrie.ly
GNU LilyPond 2.19.0
Processing `01_kyrie.ly'


real0m14.844s
user0m10.914s
sys 0m0.291s

 Skipping the to-pdf conversion saves me 2s
$ time lilypond --ps 01_kyrie.ly
...
real0m12.674s
user0m9.368s
sys 0m0.220s

 And doing only midi is fast, 2.5s:

$ time lilypond 01_kyrie.ly
GNU LilyPond 2.19.0
Processing `01_kyrie.ly'
Parsing...
Interpreting music...
MIDI output to `01_kyrie.midi'...
Success: compilation successfully completed

real0m2.437s
user0m1.652s
sys 0m0.140s

 So running 

$ lilypond file.ly  timidity file.midi

would probably solve your stated need.

Regards,
/Karl Hammar

---
Aspö Data
Lilla Aspö 148
S-742 94 Östhammar
Sweden
+46 173 140 57



___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: 3.0?

2014-01-09 Thread Joseph Rushton Wakeling

On 09/01/14 12:20, David Kastrup wrote:

Another problem is that LilyPond has a usage philosophy and workflow
that strongly penalizes manual tweaks.  Graphically/manually oriented
workflows detract from the importance of getting good default
typesetting.


I'm not sure that's necessarily the case.  Making it easy to experiment with 
manual tweaks could be a very good way of working out how things need to be 
engraved, and thus provide guidance for better automated typesetting.



___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: 3.0?

2014-01-09 Thread David Kastrup
Joseph Rushton Wakeling joseph.wakel...@webdrake.net writes:

 On 09/01/14 12:20, David Kastrup wrote:
 Another problem is that LilyPond has a usage philosophy and workflow
 that strongly penalizes manual tweaks.  Graphically/manually oriented
 workflows detract from the importance of getting good default
 typesetting.

 I'm not sure that's necessarily the case.  Making it easy to
 experiment with manual tweaks could be a very good way of working out
 how things need to be engraved, and thus provide guidance for better
 automated typesetting.

That must be the reason why the typical Word document features the
consistent use of document styles for arriving at typographically
superior results.

-- 
David Kastrup

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: 3.0?

2014-01-09 Thread Urs Liska


David Kastrup d...@gnu.org schrieb:
Joseph Rushton Wakeling joseph.wakel...@webdrake.net writes:

 On 09/01/14 12:20, David Kastrup wrote:
 Another problem is that LilyPond has a usage philosophy and workflow
 that strongly penalizes manual tweaks.  Graphically/manually
oriented
 workflows detract from the importance of getting good default
 typesetting.

 I'm not sure that's necessarily the case.  Making it easy to
 experiment with manual tweaks could be a very good way of working out
 how things need to be engraved, and thus provide guidance for better
 automated typesetting.

That must be the reason why the typical Word document features the
consistent use of document styles for arriving at typographically
superior results.

LOL!


-- 
Urs Liska
openlilylib.org

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: 3.0?

2014-01-09 Thread Joseph Rushton Wakeling

On 09/01/14 21:05, David Kastrup wrote:

That must be the reason why the typical Word document features the
consistent use of document styles for arriving at typographically
superior results.


I'm not sure that I feel happy about your benchmark for comparison.  I think 
Lilypond's user base is a bit smarter than that ... ;-)



___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: 3.0?

2014-01-09 Thread SoundsFromSound
dak wrote
 Joseph Rushton Wakeling lt;

 joseph.wakeling@

 gt; writes:
 
 On 09/01/14 12:20, David Kastrup wrote:
 Another problem is that LilyPond has a usage philosophy and workflow
 that strongly penalizes manual tweaks.  Graphically/manually oriented
 workflows detract from the importance of getting good default
 typesetting.

 I'm not sure that's necessarily the case.  Making it easy to
 experiment with manual tweaks could be a very good way of working out
 how things need to be engraved, and thus provide guidance for better
 automated typesetting.
 
 That must be the reason why the typical Word document features the
 consistent use of document styles for arriving at typographically
 superior results.
 
 -- 
 David Kastrup
 
 ___
 lilypond-devel mailing list

 lilypond-devel@

 https://lists.gnu.org/mailman/listinfo/lilypond-devel

I honestly have never seen ONE Word document make use of styles. I'm not
kidding. In all the docs I've come across in all areas, people never use
them. Seriously! :)

Now, LibreOffice Writer on the other hand...



-
composer | sound designer 
LilyPond Tutorials (for beginners) -- http://bit.ly/bcl-lilypond
--
View this message in context: 
http://lilypond.1069038.n5.nabble.com/3-0-tp157489p157553.html
Sent from the Dev mailing list archive at Nabble.com.

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: 3.0?

2014-01-09 Thread Paul Morris
Carl Peterson wrote
 I use MuseScore,
 Scorio, and Finale Notepad (depending on where I am and how I feel)
 for compositional work because they provide ease of note entry in the
 composing process and the ability to have instant aural feedback on
 what I've written (particularly if I'm not at my keyboard to play what
 I've written). Once I have the draft of the music written, I will
 manually retype the music into my LilyPond template because of the
 good default typesetting it provides. 

Hi Carl,  Do you find that manually retyping is easier or better than export
- musicXML - import?  Curious to hear your thoughts as I would assume that
import/export would be the ideal way to use a workflow like this.

Thanks,
-Paul



--
View this message in context: 
http://lilypond.1069038.n5.nabble.com/3-0-tp157489p157554.html
Sent from the Dev mailing list archive at Nabble.com.

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Lilypond Syntax Development and 3.0

2009-08-21 Thread Reinhold Kainhofer
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Am Samstag, 1. August 2009 09:52:59 schrieb Trevor Daniels:
  CRESCENDO
 
  Reinhold and Frederick: as you may have guessed, I'm proposing
  that your patch waits until 3.0.  Anything requiring such manual
  tweaks will make some people very unhappy, such as mutopia.
 
  This also serves as test of developers: we've avoided getting
  pinned down with the input syntax because that would limit
  development.  How do you two feel about your hard work on the \cr
  stuff being delayed by up to a year?  I don't like asking this,
  but I think there are solid reasons for it.

 This would be a pity.  I've now forgotten the
 details of the cr changes, but cannot a way be
 found to introduce the new versions now while
 retaining the deprecated versions until 3.0?
 Even a partial introduction now would help users.

New patch, just for the backend:
http://codereview.appspot.com/109072

The definition of \cresc etc. is still unchanged, but one can now define one's 
own command instead (or overwrite the definition of \cresc).

Cheers,
Reinhold
- -- 
- --
Reinhold Kainhofer, reinh...@kainhofer.com, http://reinhold.kainhofer.com/
 * Financial  Actuarial Math., Vienna Univ. of Technology, Austria
 * http://www.fam.tuwien.ac.at/, DVR: 0005886
 * LilyPond, Music typesetting, http://www.lilypond.org
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (GNU/Linux)

iD8DBQFKjy5STqjEwhXvPN0RAuctAJ4sCgw2JuB1jDcFMkWXLQC2WbzMoACfbTb9
YllPxoJxkaelcczQPDeLiek=
=646x
-END PGP SIGNATURE-


___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Lilypond Syntax Development and 3.0

2009-08-03 Thread Graham Percival
On Sun, Aug 02, 2009 at 08:48:01PM +0200, John Mandereau wrote:
 Le lundi 27 juillet 2009 à 03:22 -0700, Graham Percival a écrit :
  One of the biggest complaints people have with lilypond -- other
  than that silly there's no gui -- is the changing syntax.  Now,
 
 IMHO this project should be an opportunity to promote Erik Sandberg's
 music streams as a more stable music data representation before making
 syntax changes that can't be handled by regular expressions and that
 break a lot of source files.

I think that's beyond us.  Unless Erik or Han-Wen decide to
implement it, I'm almost certain that this work will go nowhere.
And since it's been 3 years since the thesis was finished, I think
that if they wanted to do it, they'd have finished it.
Understanding somebody else's half-finished work can be harder
than doing it from scratch, after all!

Basically, I don't see an overabundance of programmers with deep
knowledge of lilypond internals (which is what the music streams
would require).  I *do* see an overabundance of intelligent people
who see the value of creating general principals and rules.  I'm
certain that we can simplify+standarize the lilypond input
notation, and I'm certain that I can organize such an effort.  I'm
not *at all* certain[1] that I could organize an attempt to
implement the music streams.

Umm, I don't mean overabundance as in there's too any of them.
I'm using some other meaning of overabundance here.  :)

[1] or rather: I'm certain that if I cared deeply about this, I
could do it.  I simply don't care deeply about it -- I mean, I
wouldn't sacrifice any academic matters in favor of working on
music streams, whereas I _would_ sacrifice some academic matters
in favor of GLISS or the normal lilypond maintenance.


I n any case, I don't anticipate that GLISS would create many
non-convert-ly changes.  The main manual change would be the
prefix - postfix change (\cr, \[, maybe one or two others).  In
theory, those could be automated, but since we probably won't have
anybody who feels like writing python rules for that, we could
just change \cr to \PREcr.  That would identify the places were
\PREcr needs to be moved and changed to \cr.

Cheers,
- Graham


___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Lilypond Syntax Development and 3.0

2009-08-02 Thread John Mandereau
Le lundi 27 juillet 2009 à 03:22 -0700, Graham Percival a écrit :
 One of the biggest complaints people have with lilypond -- other
 than that silly there's no gui -- is the changing syntax.  Now,
 inventing a language or standards is difficult.  If you set it in
 stone too soon, you risk being stuck with decisions which may
 limit matters.  If you keep on updating the syntax, interaction
 with older data (and other programs!) becomes complex.

IMHO this project should be an opportunity to promote Erik Sandberg's
music streams as a more stable music data representation before making
syntax changes that can't be handled by regular expressions and that
break a lot of source files.

Best,
John



signature.asc
Description: Ceci est une partie de message numériquement signée
___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Lilypond Syntax Development and 3.0

2009-08-01 Thread Trevor Daniels


Graham Percival wrote Monday, July 27, 2009 11:22 AM


Lilypond Syntax Development   (tentative name)

However, I think we now have a critical mass of interested users,
experience with the syntax, and developers.  I therefore propose
to have a Grand Project devoted to stabilizing the lilypond input
format.


The time is right for this.  I'd like to help.


- We're going to have lots and lots of emails flying around.  They
 don't really fit into either -devel or -user, so we'll use a
 mailist on lilynet.net.  Maybe the already-created proposals
 mailist, maybe a syn...@lilynet.net mailist.

- I could be convinced to use the lilynet wiki for this project,
 although we'd need account-locked pages, and it would increase
 my workload.


No, stick to a simple maillist.



CRESCENDO

Reinhold and Frederick: as you may have guessed, I'm proposing
that your patch waits until 3.0.  Anything requiring such manual
tweaks will make some people very unhappy, such as mutopia.

This also serves as test of developers: we've avoided getting
pinned down with the input syntax because that would limit
development.  How do you two feel about your hard work on the \cr
stuff being delayed by up to a year?  I don't like asking this,
but I think there are solid reasons for it.


This would be a pity.  I've now forgotten the
details of the cr changes, but cannot a way be
found to introduce the new versions now while
retaining the deprecated versions until 3.0?
Even a partial introduction now would help users.


- Graham


Trevor 




___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Lilypond Syntax Development and 3.0

2009-07-28 Thread Frédéric Bron
 Reinhold and Frederick: as you may have guessed, I'm proposing
 that your patch waits until 3.0.  Anything requiring such manual
 tweaks will make some people very unhappy, such as mutopia.

 I think we should make *all* manual changes at once, but reassure
 people that this will (probably) be the last time (for non-tweaked
 scores, at least).

No issue for me. I can wait; I have now my own tricks... However, the
quicker, the better...
Great project that you propose to make syntax uniform.

Frédéric


___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Lilypond Syntax Development and 3.0

2009-07-27 Thread Graham Percival
I was going to hold off introducing this until the 3-4 major
development issues had been sorted out, but the third time I found
myself writing yes, I have a plan for this, but I'm going to wait
a bit before discussing it, I decided I was behaving like a
smarmy teenager.

There's nothing time-critical in this thread, so if you're
currently working on anything important, skip this email and come
back to it later.  We won't make any real decisions for a week or
so.


Lilypond Syntax Development   (tentative name)

One of the biggest complaints people have with lilypond -- other
than that silly there's no gui -- is the changing syntax.  Now,
inventing a language or standards is difficult.  If you set it in
stone too soon, you risk being stuck with decisions which may
limit matters.  If you keep on updating the syntax, interaction
with older data (and other programs!) becomes complex.

However, I think we now have a critical mass of interested users,
experience with the syntax, and developers.  I therefore propose
to have a Grand Project devoted to stabilizing the lilypond input
format.


SUMMARY

Start: Sep 2009.

Length: 6-9 months.  We're not going to rush this.

Goal: define an input format which we commit to being
machine-updateable for the forseeable future.  Any future patches
which change the syntax in a non-convert-ly-able format will be
rejected.  (subject to the limitations, below)
Once this is finished, we will release lilypond 3.0.


LIMITATIONS and SCOPE

- tweaks will not be included.  Anything with \override, \set,
  \overrideProperty, \tweak, \revert, \unset, #(blah blah) ...
  including even those names themselves... is still fair game for
  NOT_SMART convert-ly updates.

- other than that, everything is on the table.  Is it a problem to
  have the tagline inside \header?  What should the default
  behavior of \include be?  When we abolish \times, do we move
  to \tuplet 3:2 or \tuplet 2/3 or what (for typical triplets
  in 4/4 time)?

- we need to get standards for commands.  This will help users
  remember them, and reduce the options for future names (and
  potential renamings later on).  \commandOn and \commandOff
  seem to work well (should we *always* have an Off command?),
  but what about the command part?  Should it be \nounVerbOn,
  or \verbNounOn ?  Or \verbNotesWithExtraInformationOn ?

- we need standards for the location of commands.  Ligature
  brackets, I'm looking at you.  (non-postfix notation must die!)

- this Grand Project doesn't change whether we have a 2.16 or
  not.  The main problem will be deciding what to do (with a
  bit of messiness anticipated for \tuplet); we could definitely
  release a 2.16 before merging _any_ of these changes.

- we obviously can't /guarantee/ that we'll /never/ make any
  non-convert-ly changes in the basic format.  But we *can*
  guarantee that such changes would force lilypond 4.0, and
  that we would only do so for overwhelmingly good reasons.


WORKFLOW

- We're going to have lots and lots of emails flying around.  They
  don't really fit into either -devel or -user, so we'll use a
  mailist on lilynet.net.  Maybe the already-created proposals
  mailist, maybe a syn...@lilynet.net mailist.

- I could be convinced to use the lilynet wiki for this project,
  although we'd need account-locked pages, and it would increase
  my workload.

- after the initial discussion of proposals has died down, I'll
  bring it to -devel.  We're not going to make any (significant)
  changes without discussing it on -devel, but we're going to
  have huge threads about English grammar and silly ideas, and
  I don't want to clutter up -devel.  Once whatever chaotic
  silliness on the syntax list is settled down, I'll bring the
  ideas to -devel.

- as with GDP, I'll moderate the discussion.  Not as with mailist
  moderation, but rather by introducing issues at specific
  times.  We don't want a free-for-all discussion of all parts
  of the syntax at once; nothing will get resolved.


DISCUSSION

Don't respond to any of the specifics yet.  Yes, we all have our
pet irritations (like what the mao is up with \paper and
\layout?!).  There will be plenty of time to discuss them.  At
the moment, I'm looking for comments about the mandate -- what's
the scope, how much interest is there, and does anybody object to
such work?


CRESCENDO

Reinhold and Frederick: as you may have guessed, I'm proposing
that your patch waits until 3.0.  Anything requiring such manual
tweaks will make some people very unhappy, such as mutopia.

I think we should make *all* manual changes at once, but reassure
people that this will (probably) be the last time (for non-tweaked
scores, at least).

This also serves as test of developers: we've avoided getting
pinned down with the input syntax because that would limit
development.  How do you two feel about your hard work on the \cr
stuff being delayed by up to a year?  I don't like asking this,
but I think there are solid reasons

Re: Lilypond Syntax Development and 3.0

2009-07-27 Thread David Kastrup

A few comments from a consumer...

Graham Percival gra...@percival-music.ca writes:

 SUMMARY

 Start: Sep 2009.

 Length: 6-9 months.  We're not going to rush this.

 Goal: define an input format which we commit to being
 machine-updateable for the forseeable future.  Any future patches
 which change the syntax in a non-convert-ly-able format will be
 rejected.  (subject to the limitations, below)

 LIMITATIONS and SCOPE

 - We're going to have lots and lots of emails flying around.  They
   don't really fit into either -devel or -user, so we'll use a
   mailist on lilynet.net.  Maybe the already-created proposals
   mailist, maybe a syn...@lilynet.net mailist.

Huh?  Why would a discussion about syntax not fit into -devel?

Anyway, here is my thought: we want a reliably machine-readable and
writable input.  Everything that does not concern the art of typesetting
should be accessable easily from a C parser library.  Of course I have
my own pet language for manipulating score material (Lua), but then many
people do.

If one has something like a flex/bison syntax and/or a parser library
and/on definite rules for what can, can't be done, then one has a lot of
flexibility.

The level one would like is that reading lilyput input and writing a
lilyput input file that does the same, just transposing a voice, should
not take more than 10 lines of code/script.  Also reading an input file
and writing an equivalent input file (just not using \input anymore)
should be easy to do.

In a similar vein, score editors should be able to export and import
Lilypond code with an expectation of not having information loss occur
(short of whitespace/source formatting, and possibly that can be
preserved using intelligent schemes as well that keep track of manual
source line breaks, indentation and comments).

-- 
David Kastrup



___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Lilypond Syntax Development and 3.0

2009-07-27 Thread Graham Percival
On Mon, Jul 27, 2009 at 01:31:35PM +0200, David Kastrup wrote:
 
 Graham Percival gra...@percival-music.ca writes:
 
  - We're going to have lots and lots of emails flying around.  They
don't really fit into either -devel or -user, so we'll use a
mailist on lilynet.net.  Maybe the already-created proposals
mailist, maybe a syn...@lilynet.net mailist.
 
 Huh?  Why would a discussion about syntax not fit into -devel?

Because many suggestions will be silly.  Many suggestions will be
obviously impractical to developers, but not users.  Many threads
will devolve into discussions about historical music pedagogical
terms.  In short, there will be a lot of non-focused chit-chat.

In the context of brainstorming and trying to pin down the format,
I welcome silly/impractical suggestions (as long as they pertain
to the syntax element(s) in question).  But in the context of
people with limited time trying to get serious work done, easily
90% of the emails about syntax changes will be unwelcome.

That's why I propose that the initial discussions take place on a
separate list with a mixture of interested users and developers.
Once that group has finished discussing a particular syntax
change, I'll bring it to -devel.

Cheers,
- Graham


___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Lilypond Syntax Development and 3.0

2009-07-27 Thread Carl Sorensen



On 7/27/09 4:22 AM, Graham Percival gra...@percival-music.ca wrote:

 I was going to hold off introducing this until the 3-4 major
 development issues had been sorted out, but the third time I found
 myself writing yes, I have a plan for this, but I'm going to wait
 a bit before discussing it, I decided I was behaving like a
 smarmy teenager.
 
 There's nothing time-critical in this thread, so if you're
 currently working on anything important, skip this email and come
 back to it later.  We won't make any real decisions for a week or
 so.
 
 
 Lilypond Syntax Development   (tentative name)

Are you on mind-altering drugs? ;)

 
 One of the biggest complaints people have with lilypond -- other
 than that silly there's no gui -- is the changing syntax.  Now,
 inventing a language or standards is difficult.  If you set it in
 stone too soon, you risk being stuck with decisions which may
 limit matters.  If you keep on updating the syntax, interaction
 with older data (and other programs!) becomes complex.
 
 However, I think we now have a critical mass of interested users,
 experience with the syntax, and developers.  I therefore propose
 to have a Grand Project devoted to stabilizing the lilypond input
 format.


There's probably another reason why it makes sense to do this at this time:
the syntax has largely settled down.

 
 
 SUMMARY
 
 Start: Sep 2009.
 
 Length: 6-9 months.  We're not going to rush this.
 
 Goal: define an input format which we commit to being
 machine-updateable for the forseeable future.  Any future patches
 which change the syntax in a non-convert-ly-able format will be
 rejected.  (subject to the limitations, below)
 Once this is finished, we will release lilypond 3.0.
 
 
 LIMITATIONS and SCOPE
 
 - tweaks will not be included.  Anything with \override, \set,
   \overrideProperty, \tweak, \revert, \unset, #(blah blah) ...
   including even those names themselves... is still fair game for
   NOT_SMART convert-ly updates.

One nice thing about this limitation is that it allows ongoing syntax
development outside of the base syntax.  That is, if somebody wants to
develop a new feature that is incompatible with the existing base syntax,
they can do so in the form of a tweak (in the general sense, not the \tweak
sense).  They can work out the bugs, get the functionality going, and have
usable output, even if it can't be added to the base syntax yet.  So this
preserves flexibility for development, while stabilizing syntax for standard
usage.

 
 DISCUSSION
 
 Don't respond to any of the specifics yet.  Yes, we all have our
 pet irritations (like what the mao is up with \paper and
 \layout?!).  There will be plenty of time to discuss them.  At
 the moment, I'm looking for comments about the mandate -- what's
 the scope, how much interest is there, and does anybody object to
 such work?
 

I'm a bit skeptical that we will be able to really do this job right; and
doing it wrong is worse (IMO) than not doing it at all.  But I think that
it's worth trying (maybe on a separate development branch) so that we can
evaluate it before we commit to it.

 
 CRESCENDO
 
 Reinhold and Frederick: as you may have guessed, I'm proposing
 that your patch waits until 3.0.  Anything requiring such manual
 tweaks will make some people very unhappy, such as mutopia.

What if we added the new crescendo syntax as new syntax (e.g. with something
like \newcresc), and kept the old syntax as well (so as not to break
existing scores)?  This would allow the use of the new syntax in current
scores, and get the work going right now.  By using different names, we
could easily do the convert-ly when it came time to upgrade scores.  The new
syntax would be converted to version 3.0 syntax automatically, and the old
syntax would get a NOT_SMART.

We wouldn't need to wait for a year to get it going in this scenario.  We'd
simply have to live with less-than-optimal-syntax that would be
automatically fixable when the new version comes out.

This idea is similar to developing a new_foo_engraver, which is eventually
phased converted to foo_engraver when the old foo_engraver is removed.


Thanks,

Carl



___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Lilypond Syntax Development and 3.0

2009-07-27 Thread Valentin Villenave
2009/7/27 Graham Percival gra...@percival-music.ca:
 Lilypond Syntax Development   (tentative name)

How about Grand Syntax Project, for Graham-ish consistency's sake? :-)

 However, I think we now have a critical mass of interested users,
 experience with the syntax, and developers.  I therefore propose
 to have a Grand Project devoted to stabilizing the lilypond input
 format.

I second this.


 Goal: define an input format which we commit to being
 machine-updateable for the forseeable future.  Any future patches
 which change the syntax in a non-convert-ly-able format will be
 rejected.  (subject to the limitations, below)
 Once this is finished, we will release lilypond 3.0.


 LIMITATIONS and SCOPE

 - we need standards for the location of commands.  Ligature
  brackets, I'm looking at you.  (non-postfix notation must die!)

Yes it must.

 - we obviously can't /guarantee/ that we'll /never/ make any
  non-convert-ly changes in the basic format.  But we *can*
  guarantee that such changes would force lilypond 4.0, and
  that we would only do so for overwhelmingly good reasons.

For the past couple of years, the LilyPond language has become
increasingly consistent, as exotic command names tend to be
replaced:

#(set-octavation 1) - \ottava #1
\fatText - \textLengthOn/Off
\sustainDown/Up - \sustainOn/Off

 - We're going to have lots and lots of emails flying around.  They
  don't really fit into either -devel or -user, so we'll use a
  mailist on lilynet.net.  Maybe the already-created proposals
  mailist, maybe a syn...@lilynet.net mailist.

Anyone interested in this may already have a look at
lists.lilynet.net/proposals (though it is not meant to be an official
mailing list, it might be a good start).

 - I could be convinced to use the lilynet wiki for this project,
  although we'd need account-locked pages, and it would increase
  my workload.

Some of us can take care of the wiki part.

 - after the initial discussion of proposals has died down, I'll
  bring it to -devel.  We're not going to make any (significant)
  changes without discussing it on -devel, but we're going to
  have huge threads about English grammar and silly ideas, and
  I don't want to clutter up -devel.  Once whatever chaotic
  silliness on the syntax list is settled down, I'll bring the
  ideas to -devel.

Absolutely. The more we keep -devel clean, the less we risk losing
track of patches and important discussions.

 Reinhold and Frederick: as you may have guessed, I'm proposing
 that your patch waits until 3.0.  Anything requiring such manual
 tweaks will make some people very unhappy, such as mutopia.

Another possibility would be to have a 3.0 release meister, who
could start maintaining a separate alpha branch for major
syntax-breaking changes only, while non-syntax work goes on on 2.16.
While maintaining LilyPond 2.x remains the absolute priority, this
would allow us to take our time with the other branch.

Every now and then, we could even publish 3.0 pre-beta GUB builds, on
a lilynet-hosted ftp, as an unofficial semi-public testing period (of
course, bug reports wouldn't belong on the official tracker, but we
could have a special wiki category or something).
Of course, this may require more resources than we have.

Regards,
Valentin


___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Lilypond Syntax Development and 3.0

2009-07-27 Thread Reinhold Kainhofer
Am Montag, 27. Juli 2009 12:22:33 schrieb Graham Percival:
 CRESCENDO

 Reinhold and Frederick: as you may have guessed, I'm proposing
 that your patch waits until 3.0.  

How about splitting up the patch into backend (i.e. supporting the spanner-
type and -text property of the crescendo event in the engraver) and frontend 
(the new definition of the \cresc command). I'd really like to get the 
functionality into lilypond (i.e. the backend), since I'm currently preparing 
Urtext editions with lots of cresc. (http://www.eybler-edition.org/). 

That way, one can always define one's own \mycresc function that creates a 
crescendo event with the corresponding properties set, while the \cresc 
command still shows the old inconsistent behavior.

 Anything requiring such manual
 tweaks will make some people very unhappy, such as mutopia.

Yes, anything that requires manual changes (or even automated changes) is a 
real PITA if you are seriously working on larger music editions.

 This also serves as test of developers: we've avoided getting
 pinned down with the input syntax because that would limit
 development.  How do you two feel about your hard work on the \cr
 stuff being delayed by up to a year?

I don't mind that much, it just that I rely on properly working text crescendo 
syntax locally, so I would probably not do much lilypond development if I 
needed to keep the patch locally... I would be exclusively running my own 
branch, so any patch to master would require quite a lot of work.

Cheers,
Reinhold
-- 
--
Reinhold Kainhofer, reinh...@kainhofer.com, http://reinhold.kainhofer.com/
 * Financial  Actuarial Math., Vienna Univ. of Technology, Austria
 * http://www.fam.tuwien.ac.at/, DVR: 0005886
 * LilyPond, Music typesetting, http://www.lilypond.org


___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Lilypond Syntax Development and 3.0

2009-07-27 Thread Anthony W. Youngman
In message 87tz0y5pm0@lola.goethe.zz, David Kastrup d...@gnu.org 
writes

If one has something like a flex/bison syntax and/or a parser library
and/on definite rules for what can, can't be done, then one has a lot of
flexibility.


I think we already have an Antlr syntax, don't we?

Although iirc it's not actually used in lily itself, but it would be 
good to take that as a start.


Cheers,
Wol
--
Anthony W. Youngman - anth...@thewolery.demon.co.uk



___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Lilypond Syntax Development and 3.0

2009-07-27 Thread Graham Percival
On Mon, Jul 27, 2009 at 07:25:21AM -0600, Carl Sorensen wrote:
 
 On 7/27/09 4:22 AM, Graham Percival gra...@percival-music.ca wrote:
 
  Lilypond Syntax Development   (tentative name)
 
 Are you on mind-altering drugs? ;)

All the time, baby... sugar, caffene... I suppose even water
qualifies.  I mean, if I didn't drink water, my mind would
certainly be altered!

  However, I think we now have a critical mass of interested users,
  experience with the syntax, and developers.  I therefore propose
  to have a Grand Project devoted to stabilizing the lilypond input
  format.
 
 There's probably another reason why it makes sense to do this at this time:
 the syntax has largely settled down.

Yes.  There's still a few inconsistencies such as \hideNotes, but
a determined push can clear up all those issues.

  - tweaks will not be included.  Anything with \override, \set,
\overrideProperty, \tweak, \revert, \unset, #(blah blah) ...
including even those names themselves... is still fair game for
NOT_SMART convert-ly updates.
 
 One nice thing about this limitation is that it allows ongoing syntax
 development outside of the base syntax.  That is, if somebody wants to
 develop a new feature that is incompatible with the existing base syntax,
 they can do so in the form of a tweak (in the general sense, not the \tweak
 sense).  They can work out the bugs, get the functionality going, and have
 usable output, even if it can't be added to the base syntax yet.  So this
 preserves flexibility for development, while stabilizing syntax for standard
 usage.

Yes.  Also, the internal definition of \voiceOne or
\pointAndClickOn can still be altered at a whim, as long as we
update ly/property-init.ly.

  Reinhold and Frederick: as you may have guessed, I'm proposing
  that your patch waits until 3.0.  Anything requiring such manual
  tweaks will make some people very unhappy, such as mutopia.
 
 What if we added the new crescendo syntax as new syntax (e.g. with something
 like \newcresc), and kept the old syntax as well (so as not to break
 existing scores)?

Good idea.

Cheers,
- Graham


___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Lilypond Syntax Development and 3.0

2009-07-27 Thread Graham Percival
On Mon, Jul 27, 2009 at 03:31:45PM +0200, Valentin Villenave wrote:
 2009/7/27 Graham Percival gra...@percival-music.ca:
  Lilypond Syntax Development   (tentative name)
 
 How about Grand Syntax Project, for Graham-ish consistency's sake? :-)

LSD is much nicer than GSP, though.

  Reinhold and Frederick: as you may have guessed, I'm proposing
  that your patch waits until 3.0.  Anything requiring such manual
  tweaks will make some people very unhappy, such as mutopia.
 
 Another possibility would be to have a 3.0 release meister, who
 could start maintaining a separate alpha branch for major
 syntax-breaking changes only, while non-syntax work goes on on 2.16.
 While maintaining LilyPond 2.x remains the absolute priority, this
 would allow us to take our time with the other branch.

Not necessary.  Most of the work (time-wise) will be discussing
potential changes.  Once we've decided what changes to make, it
shouldn't take more than 2-3 months to get them done.  That's
eminently within the devel time between stable releases -- I mean,
it's even within the aggressive schedule I proposed last Jan.

Cheers,
- Graham


___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: lilypond tetex-3.0 tested

2005-03-23 Thread Mats Bengtsson
Sorry to bring up this old issue again, but I think we tried to solve a
non-issue or possibly solve some problem the wrong way.
It should never be necessary to run updmap for the ec-fonts since
the map file is specified explicitly in the call of dvips inside
lilypond and the documentation describes the corresponding flag
for lilypond-book again.
Also, if the ec-fonts installation is done in a way that works
for teTeX-3, then it should also work with teTeX-2, at least if
the files are installed somewhere below /usr/share/texmf/ and
not in any of the /share/texmf-*/ directories that were introduced
in teTeX-3.
   /Mats
Mats Bengtsson wrote:

Jan Nieuwenhuizen wrote:
Bertalan Fodor writes:

I made the tests:
1. purge c:\cygwin
2. install old lilypond-2.4.2-1 with default settings - OK (this is
  the test that that makes many user problem inexplicable)

:-)

3. install lilypond-2.4.3-1 (built against tetex-2.0) - OK
4. install tetex-3.0.0-1
FAIL1
   Solution:
  purge texmf/web2c/*.{base,fmt,emft} during tetex-2.0 uninstall

Although that would be the right solution, I'll purge them at the
start of the tetex-3.0 script.  I'd rather not build and distribute
another tetex-2.0 version.

FAIL2
   ec-fonts are not found
Solution:
  updmap --enable
  Map=/usr/share/texmf/dvips/ec-fonts-mftraced/ec-mftrace.map
  I'm not sure how to overcome this in the packages

How about adding this to lilypond?

No, that's something for the installation script of ec-fonts-mftraced,
but as Bertalan pointed out, if might fail if someone updates from
tetex-2 to tetex-3.
  /Mats
--
=
Mats Bengtsson
Signal Processing
Signals, Sensors and Systems
Royal Institute of Technology
SE-100 44  STOCKHOLM
Sweden
Phone: (+46) 8 790 8463 
Fax:   (+46) 8 790 7260
Email: [EMAIL PROTECTED]
WWW: http://www.s3.kth.se/~mabe
=
___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: lilypond tetex-3.0 tested

2005-02-25 Thread Jan Nieuwenhuizen
Jan Nieuwenhuizen writes:

 - release lilypond packaged for tetex-2.0
 - release tetex-3
 - release ec-fonts for tetex-3, with dependency on tetex
 - release lilypond packaged for tetex-3.0

 Yes, this is cleaner than the lilypond updmap hack.

So are we good to go now?
Jan.

-- 
Jan Nieuwenhuizen [EMAIL PROTECTED] | GNU LilyPond - The music typesetter
http://www.xs4all.nl/~jantien   | http://www.lilypond.org


___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: lilypond tetex-3.0 tested

2005-02-21 Thread Jan Nieuwenhuizen
Bertalan Fodor writes:

 So, the new lilypond must contain the updmap also for
 ec-fonts-mftraced. This is a must, since ec-fonts doesn't rely on
 tetex, so tetex-3 may be installed before ec-fonts.

Hmm, ok.

 Because tetex-3.0 will break existing lilypond, we must release
 tetex-3.0 for cygwin at the same time with lilypond-2.4.3 and
 ec-fonts-mftraced.

Yes.  I've added removal of /var/lib/texmf to the post-texmf.sh
script, so I can send an update notice right after you lilypond with
tetex-3.0 fixes is installed in Cywgin.

Jan.

-- 
Jan Nieuwenhuizen [EMAIL PROTECTED] | GNU LilyPond - The music typesetter
http://www.xs4all.nl/~jantien   | http://www.lilypond.org


___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: lilypond tetex-3.0 tested

2005-02-21 Thread Bertalan Fodor

Yes.  I've added removal of /var/lib/texmf to the post-texmf.sh
script, so I can send an update notice right after you lilypond with
tetex-3.0 fixes is installed in Cywgin.
 

You must also remove the tetex-2.0 generated files from /usr/share/web2c
mf.base, *.fmt, *.emft
Bert
___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: lilypond tetex-3.0 tested

2005-02-21 Thread Jan Nieuwenhuizen
Bertalan Fodor writes:

Yes.  I've added removal of /var/lib/texmf to the post-texmf.sh
script, so I can send an update notice right after you lilypond with
tetex-3.0 fixes is installed in Cywgin.
  

 You must also remove the tetex-2.0 generated files from /usr/share/web2c
 ^texmf/

 mf.base, *.fmt, *.emft
   .efmt


Ok, added.

Jan.

-- 
Jan Nieuwenhuizen [EMAIL PROTECTED] | GNU LilyPond - The music typesetter
http://www.xs4all.nl/~jantien   | http://www.lilypond.org


___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


  1   2   >