librelist archives

« back to archive

GSOC application: Network layer for libgit2

GSOC application: Network layer for libgit2

Carlos Martín Nieto
2011-04-05 @ 12:29
Hi all,

[I think librelist ate my earlier message]

 I'd like to take part in this year's GSOC adding a/the network layer
to libgit2. I already have some experience with git and libgit2. This
message is mostly in order to get some feedback to the timeline and
goals. I'll send a formal application in a day or two.

 Not studying in the US, I don't have free time that early, so I
expect most of the actual hard coding will be done after the
midterm. By then I do want to have most of the thinking done.

 From reading the documentation, I assume I'll have to write
pack-objects using libgit2, or rather add that support to it in the
library and then write {upload,receive}-pack first mostly as a client
of the library in order to include it in a more library-friendly form
once it works.

 My goal for this project would be to add the object packing code to
libgit2 and, if we want to have pushing and fetching inside the
library, to add this functionality to the library as well. Otherwise,
the client would be useful for later conversion of git.git to libgit2
or as an example for others.

 As for success, I'd rate a success to have the library code merged or
ready to merge both for object packing and network protocol, if it
does go into the library.

 I expect the timeline to be:

 - Pre-coding time: get to know the packed object format better, read
   the documentation and code for it in git.git.

- Up to midterm: due to the difference in lecture times between the US
   and Germany, I won't be able to devote all my time to coding, but I
   expect/hope to have code using the network protocol working by this
   time, as well as a design for object packing (the code has to be
   worthy of a library, so object caches would have to be invalidated
   and other side-effects which come from not being allowed to assume
   the code runs once and then dies).

- Up to the end: get object packing working, thread safety issues,
  reviews, and other misc. library code stuff, including getting
  push/fetch into the library if necessary.

 I've put the network side of things earlier because I expect it to be
'lighter' but I'd be interested to know if people think the order
should be reversed.

 As for previous involvement, I've sent a few small patches to git.git
and larger ones to libgit2. I'm currently writing its config file
support during an internship. In the melange application, I'll post
some gmane links to threads and to my libgit2 fork on gibhub.

 Thanks for your time if you've read this far,
Carlos Martín Nieto |

"¿Cómo voy a decir bobadas si soy mudo?" -- CACHAI