git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* [GSoC][RFC][Proposal] Unify ref filters in pretty.{c,h}
@ 2022-04-17 18:17 Jaydeep Das
  2022-04-18 17:43 ` Kaartic Sivaraam
  2022-04-22  8:42 ` Christian Couder
  0 siblings, 2 replies; 7+ messages in thread
From: Jaydeep Das @ 2022-04-17 18:17 UTC (permalink / raw)
  To: Git Mailing List


Sorry for being late in submitting the proposal. My end semester
examinations were over just yesterday so I somehow made this proposal
during the exam time.

===============
View in Google Docs: 
https://docs.google.com/document/d/1qq-Xze6dMGMSx3rPHD0VEc4f0a87KnHgbka1Dzpf8sc/edit?usp=sharing
===============
Proposal
===============

Unify ref-filters with other pretty formats.

Name		:	Jaydeep Prapanch Das
Email		:	jaydeepjd.8914@gmail.com
Contact		:	+91 6026139802
Github		:	JDeepD(https://github.com/JDeepD)
Linkedin	:	https://www.linkedin.com/in/jdeepd
Course		:	Computer Science and Engineering, 2025
Time Zone	:	IST(+5:30)

## About me:

I am a first year undergraduate at National Institute of Technology, 
Silchar  pursuing B.Tech in Computer Science and Engineering. My 
interests include FOSS development, Data Science and Robotics. I have 
been writing Python, C and shell scripts for about 3 years now. Apart 
from that I also blog[1] whenever I find an interesting topic to blog 
about. During the GSoC period I also plan to blog about the new things 
in git that I hope to learn.

[1]: https://jdeep.me/

## Micro-Project:

I am still a newbie in git development and made my first (minor) 
contribution in Feb 2022 [1]. This was a patch I made just to get 
familiar with the patching and sending patches to the mailing list. For 
my micro project, I worked on adding diff driver for the Kotlin language.[2]
The main objective was to make an xfuncname regex which matches keywords 
in Kotlin syntax so that they are considered as a single token
whenever diffs are generated. Along with that, a word_regex regex pattern
was also needed so that variable names, compound operators etc are not
broken into individual tokens by git diff when there is a change in them.
For ex,  if a == b is changed to  a != b , then the diff should show 
that entire
`==` token is replaced with the token `!=`. While working on this micro 
project, I learned a lot about the contribution and review workflow of 
git. It took 7 patches to incorporate all the reviews and suggestions so 
yeah, It did require some patience :-).


Minor patch(merged in master)
[1]: 
https://public-inbox.org/git/20220208092339.651761-2-jaydeepjd.8914@gmail.com/

Micro Project(merged in master)
[2]: 
https://public-inbox.org/git/20220312044832.718356-1-jaydeepjd.8914@gmail.com/


## Proposal:

Git has an old problem of duplicated implementations of some logic. For 
example, Git has at least 4 implementations to format commands for 
different commands. Previously, Olga Telezhnaya[1] and Hariom Verma[2] 
worked on this and eliminated most of the duplicate logic. But still, 
there are still some things left to do. Current task is to reuse 
ref-filter logic in pretty.

[1]: https://github.com/telezhnaya/git/commits/format
[2]: 
https://public-inbox.org/git/pull.707.git.1597841551.gitgitgadget@gmail.com/

## Previous Work:
Previous GSoC mentee Hariom Verma worked on this[1]. He worked on 
removing duplicate logic and reuse ref-filter’s logic in pretty. 
However, as per his report, some tasks are still left to do.

-> Around 30% log related tests are failing
-> Teach pretty-lib.{c,h} to handle incorrect formatting option
-> Email/MBoxed commit format needs work

[1]: https://harry-hov.github.io/blogs/posts/the-final-report

## GSoC Planning:
The main objective would be to start from where Hariom left and make 
further improvements in the related field if time permits.

Currently, because my end sems were just over yesterday, I am yet to do 
a full reading/understanding of the pretty and ref-filter code. I plan 
to first read the documentation of git-log and study the pretty formats 
and their implementation. Next would be to read the code and understand 
how it is working under the hood and try to find possible bugs and edge 
cases where the tests fail. I have already gone through the various 
must-read documentations suggested in the Hacking git[1] section of the 
git-scm website:

My First Contribution Tutorial[2]
My First Object Walk[3]

Apart from that, I also have a decent understanding of git internals, 
objects and porcelain commands from the Git Internals[4] documentation.
I want to start as early as possible since my main motivation for 
contributing to git is to improve something that millions of people, 
including me, use everyday in their day to day life.


[1]: https://git.github.io/Hacking-Git/
[2]: http://git-scm.com/docs/MyFirstContribution
[3]: 
https://github.com/git/git/blob/master/Documentation/MyFirstObjectWalk.txt
[4]: https://git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Porcelain



Estimated Timeline:

-> April 20 - May 14
Read the docs and go through the codebase. Make small code contribution 
if possible.

-> May 14 - May 21
Inactive Period
The covid lockdown is almost lifted and I would need to report back 
offline to college. So I would probably be busy for a week to get 
settled there.

-> May 22 - June 5
Community Bonding Period
Get in touch with the possible mentors(Christian Couder and Hariom 
Verma) and discuss the possible solutions.

-> June 6 - June 11
Inactive Period
Will be inactive for the week due to mid semester examinations

-> June 11 - July 24
Coding Phase 1
Fix the test cases that are failing
Eliminate more duplicate logic in pretty.{c,h}.
Update the documentation

July 25 - August 20
Coding Phase 2 (part 1)
Teach pretty.{c,h} to handle incorrect formatting options.
Make improvements in email/mboxed commit formats.
Update documentation


August 22 - August 27
Inactive Period
Will be inactive for the week due to end semester examinations.

August 27 - September 19
Coding Phase 2 (part 2)
Start where it left off in part 1 of coding phase 2.

During the coding phase 1, I would be able to dedicate 4 - 5 hours every 
working day. On weekends, I could dedicate the entire day or take a 
break depending upon the number of assignments I get. During the coding 
phase 2 part 1, I will be able to dedicate 4 - 5 hours easily except the 
hours may decrease some days before the end semester examinations.

## Blogging during the contribution period:
I plan to write bi monthly/monthly blogs during the contribution period 
which I would post on my personal website[1]. I would write about my 
progress and the new things that I will learn when I contribute to git.
I also plan to make a complete video tutorial after the GSoC period 
about the contribution workflow in the git codebase since I believe it 
would have greatly helped newcomers (like me) to get started quickly.

[1]: https://jdeep.me/posts/

## Post GSoC:
I would love to explore the git codebase and I am particularly 
interested in the sparse index feature of git. I would also love to 
co-mentor someone someday when I get more experience in the codebase. I 
have also noticed that there are some lesser known/underrated features 
of git ( like partial clones, sparse checkout, worktrees) and I plan to 
make video tutorials on these topics too.

## Closing Remarks:
As a whole, I feel it would be a great learning experience for me as 
this would be the first “really” big open source project where I would 
be contributing to. I am really excited about being a part of the git 
community.

Eagerly waiting for review.

Thanks,
Jaydeep

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2022-04-22  8:43 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-17 18:17 [GSoC][RFC][Proposal] Unify ref filters in pretty.{c,h} Jaydeep Das
2022-04-18 17:43 ` Kaartic Sivaraam
2022-04-18 19:41   ` Hariom verma
2022-04-19 14:07     ` Christian Couder
2022-04-20 12:11       ` jaydeepjd.8914
2022-04-21 11:17     ` ZheNing Hu
2022-04-22  8:42 ` Christian Couder

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).