Skip to content

Commit d883839

Browse files
committed
Add SoC-2026-Ideas.md
1 parent a9122a0 commit d883839

File tree

2 files changed

+155
-0
lines changed

2 files changed

+155
-0
lines changed

SoC-2025-Ideas.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
---
22
layout: default
33
title: SoC 2025 Ideas
4+
navbar: false
45
---
56

67
![git logo >](https://git-scm.com/images/logos/downloads/Git-Logo-2Color.svg)

SoC-2026-Ideas.md

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
---
2+
layout: default
3+
title: SoC 2026 Ideas
4+
---
5+
6+
![git logo >](https://git-scm.com/images/logos/downloads/Git-Logo-2Color.svg)
7+
8+
This is the idea page for Summer of Code 2026 for Git.
9+
10+
*Please completely read the [general application information](https://git.github.io/General-Application-Information)
11+
page before reading the idea list below.*
12+
13+
## Summer of code main project ideas
14+
15+
**Students**: Please consider these ideas as starting points for
16+
generating proposals. We are also more than happy to receive proposals
17+
for other ideas related to Git. Make sure you have read the "Note
18+
about refactoring projects versus projects that implement new
19+
features" in the [general application information](https://git.github.io/General-Application-Information)
20+
page though.
21+
22+
### Note about limit of project selection
23+
24+
Kindly note that considering the bandwidth of available mentors, the
25+
Git project would only mentor up to 3 or 4 contributors this year.
26+
27+
This is not a hard and fast rule. It may change if more community members are
28+
willing to mentor in the coming days. For instance, this may happen when
29+
a new project is proposed and some community member volunteers to mentor
30+
the same.
31+
32+
### Refactoring in order to reduce Git's global state
33+
34+
This project focuses on modernizing Git's environment handling by refactoring
35+
the `environment.c` code to reduce global state. The goal is to move environment
36+
variables and configuration from global scope into more appropriate local
37+
contexts, primarily into the `struct repository` / `struct repository_settings`
38+
structure. This architectural improvement will make the codebase more
39+
maintainable and potentially enable better multi-repository handling in the
40+
future.
41+
42+
The project involves careful refactoring of Git's core environment
43+
handling code, requiring strong C programming skills and attention to
44+
detail. Design discussions on the mailing list to find the best way to
45+
refactor some variables will likely happen.
46+
47+
The contributor will identify global variables that can be moved to
48+
local scope, implement the necessary structural changes, and ensure
49+
all affected code paths continue to work correctly. This includes
50+
updating tests, fixing any regressions, and documenting the
51+
architectural changes.
52+
53+
_Expected Project Size_: 90 or 175 hours or 350 hours
54+
55+
_Difficulty_: Medium
56+
57+
_Languages_: C, shell(bash)
58+
59+
_Possible mentors_:
60+
61+
* Christian Couder < <christian.couder@gmail.com> >
62+
* Karthik Nayak < <karthik.188@gmail.com> >
63+
* Justin Tobler < <jltobler@gmail.com> >
64+
* Ayush Chandekar < <ayu.chandekar@gmail.com> >
65+
* Siddharth Asthana < <siddharthasthana31@gmail.com> >
66+
* Lucas Seiki Oshiro < <lucasseikioshiro@gmail.com> >
67+
* Chandra Pratap < <chandrapratap3519@gmail.com> >
68+
69+
### Improve the new `git repo` command
70+
71+
The `git repo` command now has the `info` and `structure` sub-commands
72+
to retrieve and display information about a repository. A number of
73+
improvements could be made to both of these.
74+
75+
For example `git repo info` could be improved in the following ways:
76+
77+
- remove the dependency on `the_repository` global variable
78+
- use the category as key
79+
- add the path-related values (copied from git-rev-parse "Options for
80+
Files"):
81+
- git-dir
82+
- common-dir
83+
- toplevel
84+
- superproject-working-tree
85+
- add more values currently obtained through `git rev-parse --git-path`:
86+
- grafts file
87+
- index file
88+
- objects directory
89+
- hooks directory
90+
- git-prefix
91+
- other paths that are adjusted by `update_common_dir()`
92+
93+
Some work to add path-related values
94+
[has already started](https://github.com/lucasoshiro/git/compare/master...repo-info-path/),
95+
so completing that work might be a good start. It would require a
96+
decision to be made whether relative or absolute paths should be used
97+
though.
98+
99+
For `git repo structure` some functionality from
100+
[git-sizer](https://github.com/github/git-sizer) could be added.
101+
102+
The goal of this project would be to discuss possible improvements to
103+
`git repo` with the community, reach an agreement about the best
104+
potential improvements, and then implement them. It requires the
105+
desire to be involved in design discussions on the mailing list.
106+
107+
_Expected Project Size_: 90 or 175 hours or 350 hours
108+
109+
_Difficulty_: Medium
110+
111+
_Languages_: C, shell(bash)
112+
113+
_Possible mentors_:
114+
115+
* Karthik Nayak < <karthik.188@gmail.com> >
116+
* Justin Tobler < <jltobler@gmail.com> >
117+
* Ayush Chandekar < <ayu.chandekar@gmail.com> >
118+
* Siddharth Asthana < <siddharthasthana31@gmail.com> >
119+
* Lucas Seiki Oshiro < <lucasseikioshiro@gmail.com> >
120+
* Chandra Pratap < <chandrapratap3519@gmail.com> >
121+
122+
### Complete and extend the `remote-object-info` command for `git cat-file`
123+
124+
From around June 2024 to March 2025 some work to add a
125+
`remote-object-info` sub-command to `git cat-file` was undertaken by
126+
Eric Ju (see https://lore.kernel.org/git/20240628190503.67389-1-eric.peijian@gmail.com/).
127+
This client side work uses previous work by Calvin Wan on the server
128+
side that was merged in 2021.
129+
130+
The first goal of this project is to rebase and finalize Eric Ju's
131+
patch series by addressing the remaining feedback, so that the
132+
improved series get merged.
133+
134+
The second goal is to build on top of that work to add support for
135+
object type information (`%(objecttype)`). This supports should be
136+
added both on the server and on the client side.
137+
138+
_Expected Project Size_: 90 or 175 hours or 350 hours
139+
140+
_Difficulty_: Medium
141+
142+
_Languages_: C, shell(bash)
143+
144+
_Possible mentors_:
145+
146+
* Christian Couder < <christian.couder@gmail.com> >
147+
* Karthik Nayak < <karthik.188@gmail.com> >
148+
* Justin Tobler < <jltobler@gmail.com> >
149+
* Ayush Chandekar < <ayu.chandekar@gmail.com> >
150+
* Siddharth Asthana < <siddharthasthana31@gmail.com> >
151+
* Lucas Seiki Oshiro < <lucasseikioshiro@gmail.com> >
152+
* Chandra Pratap < <chandrapratap3519@gmail.com> >
153+
154+

0 commit comments

Comments
 (0)