|
| 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