On 8/12/24 16:41, Patrick Steinhardt wrote:
On Sat, Aug 10, 2024 at 11:11:30PM +0300, AbdAlRahman Gad wrote:
Hi,
My name is AbdAlRahman, I'm a senior computer science student.
I'm interested in working on the `Implement support for reftables in “dumb”
HTTP transport` project with the help of a mentor, I'm aware that the
project is not being worked on in GSOC but I was wondering if the project is
still not taken in general, and whether I can work on it outside of GSOC?
The project wasn't picked up by any of the students, so it certainly is
fair game to be implemented for any interested party. But...
If the project is not taken, what should I do next?
I'm also aware that the mentors are busy with GSOC and might not have time
now.
I'm OK with starting whenever mentors are available, but hopefully, guide me
on what to do until then.
... that being said, I probably do not have the capacity to mentor you
on it until the next GSoC. So you would ultimately have to figure out
most of the parts yourself, unless you are willing to wait until next
year's GSoC (or somebody else wants to mentor).
Of course, you are free to send specific questions to the Git mailing
list, and we try to do our best to answer such questions and help folks
get their work landed. But the interaction would likely be way more
limited compared to how mentoring looks like during the GSoC.
Steps I've taken so far:
For git:
I worked on one of the micro-projects, modernizing a test script, The patch
series is now merged in the `next` branch, there are still a few
modernizations left in the file which I will work on after the first series
is merged.
This taught me git contribution workflow and to expect to do multiple
iterations of the patch.
This is a good first step indeed.
For the project:
I've read the resources provided in the project description for GSOC [1] in
addition to a video [2] and an article [3] by one of the possible mentors.
This gave me a high-level overview of the ref-table backend.
I'd point you into the direction of git-update-server-info(1). It
updates auxiliary info for the dumb transport helper for the object
and ref databases such that plain HTTP clients can figure out which
files they need to fetch.
The realization to have is that this is not required for the reftable
backend anymore because the information is already encoded as part of
the "tables.list" file. You will have to think about how to figure out
the ref storage format of a remote and then fetch the correct set of
files.
So understanding that code as well as how the dumb HTTP transport is
working will be the most important first steps.
Patrick
Thanks for your time! I'll begin by doing what you've suggested.