Signed-off-by: Shaoxuan Yuan <shaoxuan.yuan02@xxxxxxxxx> --- proposal.txt | 133 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) diff --git a/proposal.txt b/proposal.txt index e69de29..eaa3cdf 100644 --- a/proposal.txt +++ b/proposal.txt @@ -0,0 +1,133 @@ +GSoC 2022 Proposal @ Git: More Sparse Index Integrations + +# Name and Contact Information + +Full name: Shaoxuan Yuan +E-mail: shaoxuan.yuan02@xxxxxxxxx +GitHub: https://github.com/ffyuanda +Tel: (+86)189-9835-1089 +Alternative Tel: (+1)646-512-1886 + +# Synopsis + +I'm picking the project idea "More Sparse Index Integrations" from the SoC 2022 +Ideas page [1]. This idea aims to integrate the experimental sparse-index +feature and sparse-checkout command with existing Git commands. Its difficulty +should be medium, and the expected project size takes somewhere between +175 hours to 350 hours. + +[1] https://git.github.io/SoC-2022-Ideas/#more-sparse-index-integrations + +# Benefits to Community + +By joining the community and working on this idea, I can work together with my +mentors and community fellows to bring a better user experience to people who +are working on large monorepo with "sparse-index" and "sparse-checkout". +Moreover, I have a strong intention to stick around after GSoC, not only keep +contributing to the community, but also share my experience with or even mentor +future potential newcomers. + +# Deliverables + +With this idea's clear spirit to cover as many command integrations as possible, +and also with the clear steps to take to accomplish each integration, I have +arranged a general deliverable structure as below: + +1. Investigation around a Git command and see if it behaves correctly with +sparse-checkout. [Approx. 3 - 7 days] + +2. Modify the Git command's logic so that it works better with sparse-checkout. +[Approx. 7 days - 15 days] + +3. Add tests to t1092-sparse-checkout-compatibility.sh for the builtin, with a +focus on what happens for paths outside of the sparse-checkout cone. + +4. Disable the command_requires_full_index setting in the builtin and ensure +the tests pass. + +5. If the tests do not pass, then alter the logic to work with the sparse index. + +6. Add tests to check that a sparse index stays sparse. + +7. Add performance tests to demonstrate speedup. + +(points 3-7 are from SoC 2022 Ideas, proposed by the community and mentors) + +[points 3-7 added together should take Approx. 7 days - 15 days] + +In summary, each integration will take a similar schedule stated above. So, +without extending the timeline, it is expected to finish 3 - 4 integrations +during the GSoC program. + +# Related Work + +Since the Git community requires a "microproject" to be done in order to +familiarize oneself with the collaborating/contributing process, here is my +selected "microproject", this patch is already merged into master: + +Modernize a test script [2] + +[2] https://lore.kernel.org/git/20220123060318.471414-1-shaoxuan.yuan02@xxxxxxxxx/ + +Other than this "microproject", I've submitted a few other patches when I +stumbled upon bugs/potential modifications, these patches are already +merged into master: + +t0001: replace "test [-d|-f]" with test_path_is_* functions [3] +builtin/diff.c: fix "git-diff" usage string typo [4] + +[3] https://lore.kernel.org/git/20220121102109.433457-1-shaoxuan.yuan02@xxxxxxxxx/ +[4] https://lore.kernel.org/git/20220202072844.35545-1-shaoxuan.yuan02@xxxxxxxxx/ + +Prior works about the idea have been done by my mentors and other community +members, and these works form a good approximation of the approach I'm going +to take. Some previous example commits: + +Integration with "clean" [5] +Integration with "blame" [6] + +[5] https://github.com/git/git/commit/1e9e10e04891a13e5ccd52b36cfadc55dfaa5066 +[6] https://github.com/git/git/commit/add4c864b60766174ad4f74ba7be17e66d61ef16 + +Other than the proposed steps by my mentors (points 3 - 7 in the Deliverables +section), I also added some steps (points 1 - 2 in the Deliverables section) as +prerequisites, which I found very necessary during my tentative patches +discussed earlier with the community: + +An RFC patch about "sparse-index" integration with "mv" [7] +A WIP patch to optimize user experience when using "mv" with "sparse-checkout" [8] + +[7] https://lore.kernel.org/git/20220315100145.214054-1-shaoxuan.yuan02@xxxxxxxxx/ +[8] https://lore.kernel.org/git/20220331091755.385961-1-shaoxuan.yuan02@xxxxxxxxx/ + +When I was exploring "sparse-index" and "sparse-checkout", I also proposed a +change to the documentation of "sparse-checkout", this patch is still WIP +though: + +Documentation/git-sparse-checkout.txt: add an OPTIONS section [9] + +[9] https://lore.kernel.org/git/20220311132141.1817-1-shaoxuan.yuan02@xxxxxxxxx/ + +# Biographical Information + +## Education: + +I'm currently a Computer Science and Engineering sophomore at the University of +California, Irvine. Before this, I also had a summer school at the Carnegie +Mellon University, in which I also learned things about Computer Science. + +## Some credits to myself (prior open-source experience, work, etc.): + +1. I've been contributing to other open-source projects before, though still a +beginner, I'm generally familiar with the process of contribution. The related +experiences are all in the contribution graph on my GitHub profile page (see the +Name and Contact Information section). + +2. I came to participate in the Git community fairly early this year. I got +myself rather comfortable with the contribution process by writing, replying, +and reviewing different sorts of patches in the community. + +3. During the patches done throughout these three months, I'm getting more +familiar with the Git internals, project structures, commonly used APIs, test +suites, required tech stacks, coding guidelines, and most importantly, prior +knowledge and experience with my proposed project idea. -- 2.35.1