|
| 1 | +--- |
| 2 | +layout: default |
| 3 | +title: SoC 2026 Ideas |
| 4 | +--- |
| 5 | + |
| 6 | + |
| 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