lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Preferred Mentor-Mentee Communication, Plan for Auto-Beaming Project


From: Jason Yip
Subject: Re: Preferred Mentor-Mentee Communication, Plan for Auto-Beaming Project
Date: Thu, 30 Mar 2023 16:24:56 -0500

Thanks for the feedback Carl!

See my comments below


On 2023-03-30 13:00, Carl Sorensen - c_sorensen(a)byu.edu wrote:

Thanks, Jason.

See my answers below.

Carl

*From: *Jason Yip <sripedia_getpgrp@slmail.me>
*Date: *Wednesday, March 29, 2023 at 8:45 PM
*To: *Carl Sorensen <carl.d.sorensen@gmail.com>
*Cc: *Devel <lilypond-devel@gnu.org>
*Subject: *Preferred Mentor-Mentee Communication, Plan for Auto-Beaming Project

Hi Carl,

I'm CC'ing the developers mailing list, just to let you know.

I would like to first ask you about your preferred mode of communication, if my project proposal is selected. That is, what modes of communication would you prefer for:

  * Real-time communication for mentor-mentee matters

I would probably prefer phone or text, but can use Discord, IRC, or various videoconferencing systems.  I prefer phone or text because I typically always have my phone with me but I’m not always at my computer.  But I’m willing to work out something that will work with you.

I am open to use Matrix/Element for messages, Jitsi Meet for video conferencing. I've never used IRC before, but since Lilypond has a developers IRC channel, I can spend some time learning how to use it.

Using SMS or phone call may pose problems as my Week 5-6 vacation will be overseas. I'm fine using SMS/phone calls/Discord, but I see them as convenient fallback communication modes and would rather avoid them for digital privacy reasons.

  * Quick/casual communication among all the developers concerning my
    general project progress

Lilypond-devel mailing list

  * Communication concerning bug reports, code reviews, etc. related
    to my project, whether it be casual or for the general public

Liliypond-devel mailing list

If these answers aren’t good for you, let’s have more of a conversation.

Secondly, I have drafted a 12-week plan to go with my proposal (hopefully the markdown formats nicely):

This schedule seems a bit over-aggressive.  But I think it’s good for a stretch goal.

- Weeks 0-3 (May 29-Jun 16)
    - Implement regular note subdivision beaming functionality/C++ class structures
    - Learn other C++ components that integrate with beam/subdivision code
    - Modify enough Scheme code to work with new code

I haven’t looked at it carefully, but I think that the Scheme code just calls beaming-pattern.cc to do the hard work of beaming patterns, so I think that by and large fixing the C++ will fix the beaming subdivision problems.

There will likely need to be some new properties defined (that will involve some Scheme procedures.     - Work on changing a few but critical test cases that work with my rewritten code if necessary

I’d have you make sure that you have failing regression tests for all of the beaming features you hope to implement.  The regression tests will provide the best specification for success you could have.   And having them fail is no problem at this stage.


- End of Week 3 (Jun 16)
    - C++ Code infrastructure for regular note subdivision should be complete (obviously can't be 100% perfect)

I love that you are starting on regular note subdivision.  I think that’s a great starting point.

But I think you should have a vision for how tuplets are going to work before refactoring the regular beaming code.  You should have confidence that your code is compatible with your planned tuplet work.
    - Scheme code should have basic refactoring
    - Documentation covering beaming should be modified to align with my code by this point, but I may need the next few weeks to complete this part of the documentation

When you have the regression tests working, the documentation should be pretty straightforward.  In the NR, we don’t try to be a tutorial; we try to be a reference.  So basically we define a behavior that can be accomplished and show how it is done with a snippet.
- Weeks 4-6 (Jun 19 - Jul 7)
    - Personal Vacation during weeks 5-6 (Jun 26 - Jul 7), so workload will be reduced

Good for you scheduling a vacation!


    - Ensure that my fixed code resolves most common complaints from old GitLab issues affected by this bug/backward compatibility

This will be easily done by having your broken regression tests written earlier
    - Rewrite/refactor the most important/critical regression tests

IMO should have been done earlier.


    - Wrap up refactoring/editing Scheme code
    - Make my code compliant with the music notation rules set by Elaine Gould's *Behind Bars* textbook if needed

The notation rules should be implemented in the regression tests described earlier.


- End of Week 6 (Jul 7)
    - All necessary changes to scheme code should be done
    - At least 50% of test cases/regression tests concerning beaming should pass     - Output should be consistent with music notation rules outlined in *Behind Bars*
- Week 7 (Jul 10-Jul 14)
    - Midterm Evaluations
    - Consider issues branching from the main issue and whether my project will be able to solve them on time
    - Work on below if have time
- Weeks 7-9 (Jul 10-Jul 28)
    - Write regression tests for the new capabilities my project brings (mostly for regular note beaming, some for tuplet beaming)
    - Work on rewriting documentation concerning beaming
    - Perform necessary modifications to `convert-ly` rules

Adding new convert-ly rules is really important.  Thanks for making this part of your proposed work!


    - Start working on tuplet beaming if have time
- End of Week 9 (Jul 28)
    - Documentation concerning regular note beaming for developers and general public should be finished
    - Continuous integration tests with refactored code should pass
    - `convert-ly` rules should be correctly working for regular note beaming

If you wrote your initial regression tests for the current syntax, they’d be a great set of files for proving convert-ly rules.


    - All test cases for regular note beaming should be finished
- Week 10-12 (Jul 31-Aug 18)
    - Traveling/Moving during Week 12, so workload will be reduced during week 12
    - Work on tuplet beaming
    - Work on resolving as many GitLab issues related to regular note beaming         - Add more test cases/regression tests, documentation explanations, etc.
- End of Week 12 (Aug 18)
    - Tuplet beaming should be mostly correct

I haven’t seen when you started working on Tuplet beaming – ( I guess you said week 9 if you have time).  I wonder if weeks 10-12 will be enough time to get tuplet beaming fixed.

I intended to group beaming and subdivision functionality together, sorry for typo. I may have not made it clear that the items under the Week 7-9 bullet point also happen at the same time as Week 7 bullet point's items. It's just that Week 7 is a special week as the half-way point.

It would be hard to apply your changes if they made tuplet beaming worse.  But we could certainly apply your changes if they didn’t harm current behavior (tuplet beams generally work, but subdividisions do not).


        - May not be able to pass test cases/regression tests that strain tuplet beaming capabilities
        - Its `convert-ly` rule should be correct at least
- Week 13 (Aug 21-25)
    - My university term starts this week, reduced work
    - Assess remaining work that the project cannot finish on time
        - Write additional code comments/documentation/reg test ideas for work to be finished in the future

New modifications to my plan:

- Weeks 0-3 (May 29-Jun 16)
    - Implement regular note subdivision/beaming functionality/C++ class structures
    - Learn other C++ components that integrate with beam/subdivision code
    - Adapt Scheme code to work with my newly-defined properties
- Week 3 (Jun 12-Jun 16)
    - Draft a basic plan/idea for tuplet beaming/subdivision given that I would be familiar enough with implementing regular note subdivision/beaming concepts at this point     - Start rewriting/refactoring the most important/critical regression tests for regular note beaming/subdivision
- End of Week 3 (Jun 16)
    - C++ Code infrastructure for regular note subdivision should be complete (obviously can't be 100% perfect)     - Scheme code refactoring to adapt to new Beam properties should be finished     - NR Documentation covering regular note auto beaming should be finished, but may need expansion for tuplet subdivision/beaming
- Weeks 4-6 (Jun 19 - Jul 7)
    - Personal Vacation during weeks 5-6 (Jun 26 - Jul 7), so workload will be reduced
    - Wrap up regular note subdivision/beaming code
    - Ensure that my fixed code resolves most common complaints about regular note subdivision/beaming from old GitLab issues affected by this bug
    - Work on writing/refactoring regression tests
    - Start implementing tuplet subdivision/beaming functionality
- End of Week 6 (Jul 7)
    - My code should have made good progress on passing regression tests concerning regular note beaming should pass     - Most GitLab issues concerning regular note beaming issue should be fixed or at least addressed
- Week 7 (Jul 10-Jul 14)
    - Midterm Evaluations
    - Consider issues branching from the main issue and whether my project will be able to solve them on time
- Weeks 7-9 (Jul 10-Jul 28)
    - Fix bugs in regular note subdivision/beaming to pass regression tests
    - Perform necessary modifications to `convert-ly` rules
    - Add/modify regression tests for tuplet subdivision/beaming
    - Keep working on tuplet subdivision/beaming if have time
- End of Week 9 (Jul 28)
    - Regular note subdivision/beaming code should be finished/mostly approved by the other developers     - `convert-ly` rules should be accurate for my new regular/tuplet subdivision/beaming code     - Documentation concerning regular note beaming for developers and general public should be finished     - All regression tests for regular note beaming should be finished and my code should mostly pass them
- Week 10-12 (Jul 31-Aug 18)
    - Traveling/Moving during Week 12, so workload will be reduced during week 12
    - Work on tuplet subdivision/beaming code and documentation
- End of Week 12 (Aug 18)
    - Tuplet beaming should be mostly correct
        - May not be able to pass test cases/regression tests that strain tuplet beaming capabilities
        - Its `convert-ly` rules should be correct at least
- Week 13 (Aug 21-25)
    - My university term starts this week, reduced work
    - Assess remaining work that the project cannot finish on time
        - Write additional code comments/documentation/reg test ideas for work to be finished in the future

Hopefully this new plan is more realistic. Week 10 and onward don't have much deliverables to account for possibility of progress delays (and I would have busy personal schedules during weeks 12-13).

Do you or any other developers have any thoughts and feedback on the feasibility or structure of my plan? Its a large 350 hour project to be done in 10 full-time weeks (about 30-32 hrs/wk) and 3 part-time weeks (about 10-20 hrs/wk). Plan's start/end dates align with Google's timeline for GSoC.

I appreciate any feedback and support you can give me!

I like your plan!

--
- Jason Yip

I plan to submit a first draft of my GSoC application in a few hours. Hopefully, you and other Lilypond developers would be able to see it and leave feedback.

Again, thank you for the feedback!

--
- Jason Yip

Attachment: OpenPGP_0xB69A3DD87D22F506.asc
Description: OpenPGP public key

Attachment: OpenPGP_signature
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]