[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Preferred Mentor-Mentee Communication, Plan for Auto-Beaming Project
From: |
Carl Sorensen |
Subject: |
Re: Preferred Mentor-Mentee Communication, Plan for Auto-Beaming Project |
Date: |
Thu, 30 Mar 2023 18:00:52 +0000 |
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.
* 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.
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
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