diff mbox series

[GSoC,v1,1/1] draft

Message ID 20220406080920.1220183-2-shaoxuan.yuan02@gmail.com (mailing list archive)
State New, archived
Headers show
Series GSoC 2022 proposal rough draft | expand

Commit Message

Shaoxuan Yuan April 6, 2022, 8:09 a.m. UTC
Signed-off-by: Shaoxuan Yuan <shaoxuan.yuan02@gmail.com>
---
 proposal.txt | 133 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 133 insertions(+)
diff mbox series

Patch

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@gmail.com
+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@gmail.com/
+
+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@gmail.com/
+[4] https://lore.kernel.org/git/20220202072844.35545-1-shaoxuan.yuan02@gmail.com/
+
+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@gmail.com/
+[8] https://lore.kernel.org/git/20220331091755.385961-1-shaoxuan.yuan02@gmail.com/
+
+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@gmail.com/
+
+# 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.