Skip to content

Commit 19845a0

Browse files
committed
Add SoC-2017-Ideas.md
1 parent b38427f commit 19845a0

File tree

1 file changed

+140
-0
lines changed

1 file changed

+140
-0
lines changed

SoC-2017-Ideas.md

Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
---
2+
layout: default
3+
title: SoC 2017 Ideas
4+
---
5+
6+
This is the idea page for Summer of Code 2017 for Git and libgit2.
7+
8+
## About applying for SoC with the Git project
9+
10+
*Please read this section completely before reading the idea list
11+
below.*
12+
13+
It is required that students who want to apply to the Git
14+
project for the Summer of Code 2017 complete a tiny, code-related
15+
"microproject" as part of their application. Please refer to our
16+
[guidelines and suggestions for microprojects](https://git.github.io/SoC-2017-Microprojects)
17+
for more information. Completing a microproject is not only an important
18+
way for us to get experience with applicants, but it will also help
19+
applicants become familiar with Git's development and submission
20+
process.
21+
22+
A complete GSoC application should include a presentation of yourself
23+
(include any argument that may convince mentors that you are able to
24+
complete the project) and detailed explanations about your project.
25+
Ideas below are just ... ideas! The list is not exhaustive, and more
26+
importantly each idea only includes a summary of what is to be done.
27+
An application must include detailed plans on the design, timeline ...
28+
A typical application takes several pages. You should already have read
29+
[the GSoC Student Guide](http://write.flossmanuals.net/gsocstudentguide/writing-a-proposal/)
30+
by now, but re-read it if needed.
31+
32+
Also, working in Git project is not only about writing your own
33+
patches. Constructively critiquing design and implementation of
34+
patches by other people is also an important skill you need to learn
35+
in order to effectively collaborate with others. So, if you have time
36+
and inclination, it would be beneficial to read and understand other
37+
applicants' patches (or any other patch submitted to the mailing-list),
38+
think if you agree that the problem they are trying to solve is worth
39+
solving, the approach they are taking is the best way (or if you think
40+
of a better way to solve it), etc., and respond to their patches with
41+
the result of your thinking as a review.
42+
43+
Please, include link(s) to the mailing-list discussion(s) related to
44+
your microproject in your application (e.g. linking to
45+
[public-inbox](https://public-inbox.org/git/)). If you
46+
participate in the review of other patches, then you may also include
47+
links to discussions that would support your application.
48+
49+
Students must send drafts of their proposal on the mailing-list before
50+
submitting it officially to GSoC to get feedback from the
51+
community. They are strongly encourraged to publish a draft on the
52+
official GSoC website *and* post it to the mailing list for
53+
discussion.
54+
55+
Getting your proposal right can follow the same process as usual patch
56+
submission for Git, as described in the
57+
[microprojects](https://git.github.io/SoC-2017-Microprojects) page and
58+
in `Documentation/SubmittingPatches` in Git's source code. It is also
59+
expected that you will send several versions of your draft, responding
60+
to comments on the list. If you are not sure about your proposal, you
61+
can discuss that in the same email where you introduce yourself or in
62+
separate emails. Please use "[GSoC]" at the beginning of such emails.
63+
64+
In summary, all applicants must (not necessarily in this order):
65+
66+
* Complete a [microproject](https://git.github.io/SoC-2017-Microprojects).
67+
68+
* Write a detailed application explaining their project.
69+
70+
* Discuss their project by posting drafts of their application on the
71+
mailing-list long before the deadline.
72+
73+
In your application, it is a good idea to:
74+
75+
* Include link(s) to the mailing-list discussion(s) related to the
76+
project you chose in your application, for example previous
77+
discussions or patch series about the topic. There might be
78+
interesting discussions about the topics that are several year old.
79+
It is also a good idea to summarize them.
80+
81+
* Include link(s) to the mailing-list discussion(s) related to the
82+
previous drafts of your application itself.
83+
84+
* Include link(s) to the mailing-list discussion(s) related to your
85+
microproject.
86+
87+
* Include what is suggested in
88+
[the GSoC Student Guide](http://write.flossmanuals.net/gsocstudentguide/writing-a-proposal/)
89+
90+
([public-inbox](https://public-inbox.org/git/) can be
91+
used for searching the mailing list and linking to previous
92+
discussions.)
93+
94+
## Note about the number of slots
95+
96+
In 2016, the Git organization has very limited mentoring capacity.
97+
These days we usually accept between 0 and 2 students per year.
98+
99+
## Summer of code main project ideas
100+
101+
**Students**: Please consider these ideas as starting points for
102+
generating proposals. We are also more than happy to receive proposals
103+
for other ideas related to Git or libgit2. For libgit2, see the bottom
104+
of the list and
105+
[the libgit2 list of projects](https://github.com/libgit2/libgit2/blob/master/PROJECTS.md).
106+
107+
108+
### git bisect improvements
109+
110+
- Language: C, shell (bash)
111+
- Difficulty: medium
112+
- Possible mentors: Matthieu Moy, Christian Couder
113+
114+
#### Implement `git bisect --first-parent`.
115+
116+
When your project is strictly "new features are merged into trunk,
117+
never the other way around", it is handy to be able to first find
118+
a merge on the trunk that merged a topic to point fingers at when
119+
a bug appears, instead of having to drill down to the individual
120+
commit on the faulty side branch. Cf. <http://thread.gmane.org/gmane.comp.version-control.git/264661/focus=264720>
121+
122+
123+
124+
### Convert scripts to builtins
125+
126+
Many components of Git are still in the form of shell and Perl scripts.
127+
While this is an excellent choice as long as the functionality is
128+
improved, it causes problems in production code – in particular on
129+
multiple platforms, e.g. Windows (think: POSIX-to-Windows path
130+
conversion issues).
131+
132+
The idea of this project is to dive into the Git source code and
133+
convert a couple of shell and/or Perl scripts into portable and
134+
performant C code, making it a so-called "built-in".
135+
136+
(Un)fortunately, the easy-to-port scripts like `git-pull.sh` are
137+
already ported by now. It is still possible to start with something
138+
small by porting portions of existing shell-scripts to C using a C
139+
helper inside the existing shell-script.
140+

0 commit comments

Comments
 (0)