{"thread":{"id":"30167","subject":"[GSoC] Proposal - Finishing network support for libgit2","startedAt":"2012-04-06T16:36:22Z","lastAt":"2012-04-06T16:36:22Z","messageCount":1,"participants":["Michael Schubert"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"188662","messageId":"4F7F1B86.10102@schu.io","threadId":"30167","inReplyTo":null,"subject":"[GSoC] Proposal - Finishing network support for libgit2","fromName":"Michael Schubert","fromEmail":"schu@schu.io","sentAt":"2012-04-06T16:36:22Z","receivedAt":"2012-04-06T16:36:22Z","isPatch":false,"sender":{"key":"schu@schu.io","avatar":null},"body":"Finishing network support for libgit2\n=====================================\n\nIntroduction\n------------\n\nSo far, libgit2 supports fetching objects over http://, git:// and\nfile://. This year's GSoC task is to finish network support for\nlibgit2, namely\n\n* fetch over ssh (including an API for SSH key management),\n* support for packing objects (indispensable for push),\n* push over http, git and ssh.\n\nThe existing network code is written in a modular manner and allows to\nbe reused (regarding socket handling for example).\n\n\nOutline\n-------\n\n1. Fetch over SSH: Evaluate existing SSH libraries regarding their\nusability (licence compliant, small, platform independent) with\nlibgit2. Implement a transport module for SSH.\n\n1.1 SSH key managment API: Implement an easy-to-use API for the\nmanagement of SSH keys. Example: managed keys could be stored within\nthe object database, addressable through special purpose references\nor config options.\n\n2. Support for packing objects: fully implement (port, where possible)\nthe required code to create packs. This is expected to be both the most\nchallenging and time-consuming part.\n\n3. Push over all four transports: Implement push for libgit2.\n\nFor all code parts, tests should be written.\n\n\nTimeline\n--------\n\n04/24 - 04/30: Discuss implementation details with the mentor(s), finish\nplanning.\n\n05/01 - 05/20: Implement first version of SSH transport and key\nmanagement, refactor existing network code for future use where needed.\n\n05/21 - 05/31: Start working on the pack-objects part, read / discuss\npack details etc.\n\n06/01 - 06/30: Implement pack-objects.\n\n07/01 - 07/31: Implement push over all four transports.\n\n08/01 - 08/13: Finish and polish code where needed, write more tests.\n\n\nAbout me\n--------\n\nI study Computer Science at FU Berlin, besides I do a Git-related part\ntime job for a SCM company. As a regular contributor to libgit2 , I'm\nrather familiar with the community and the bigger part of the code\nbase. GSoC would allow me to both gain experience with \"Git's network\nstack\" and to add an important yet missing core part to libgit2. This\nis the first time I apply for GSoC.\n"}]}