What this is about

The Google Summer of Code (GSoC) is a program that helps students getting an experience of contributing to some free software project. Darcs has been participating for several years to this program as a way to 1) enable existing contributors to dedicate fully to darcs for a few months, and also 2) enable students to have an experience in a free software organization.

Check out the student guide to know what you’re getting into.

Project ideas

Here are some ideas for 2015 Google Summer of Code student projects. Note that these themes are just to get you started. We welcome submissions beyond these initial ideas. Get in touch with us! or #darcs on freenode.

All of these projects require good Haskell skills. We trust and appreciate students who have contributed to darcs before applying :-)

1. HTTP system overhaul

Currently Darcs depends by default on the C library curl to handle file download by HTTP. Alternatively, it can depend on the Haskell library HTTP.

We would like to experiment switching to the Haskell library wreq.

2. Better conflicts handling/UI

Proposed by/willing to mentor: Ganesh

3. Use darcs as a conflict-resolution tool for any VCS

Proposed by/Willing to mentor: Ganesh

Resolving conflicts during a merge in any VCS involves (at least implicitly) reconstructing the semantic intent of the changes on each side, and then applying them on top of each other.

Darcs patches are a great way of expressing semantic intent explicitly. Build a tool based on darcs patches where the user can reconstruct the changes for both sides of the conflict as a chain of darcs patches, and then use the darcs merge result to actually resolve the conflict (or at least cut it down). As well as the existing darcs patch types, this offers a lot of scope for adding new types just for the tool, as we won’t need to worry about the usual backwards compatibility concerns - for example it might try to parse the changes as source code. The tool can also try to automatically infer the patches as well as allowing the user to enter them explicitly.

4. Develop darcsden as a local darcs UI

Proposed by/willing to mentor: Ganesh

Darcsden is currently primarily focused on being a multi-user, server-based tool for hosting darcs repositories. However there’s a lot of overlap with local manipulation of a darcs repository on a workstation. Extend/generalise Darcsden so it can be used for both.

This probably involves modifying darcsden so that it uses plain files instead of a database backend.

5. Distributed issue tracking for darcsden

Proposed by/willing to mentor: Ganesh

Change the darcsden issue tracker to store the issues themselves in a separate darcs repository. Other people have tried distributed issue tracking before so this also involves investigating previous solutions.

6. Better patch dependencies

Proposed by: Florent, Ganesh, Guillaume, Owen

  • show on whatsnew and record on which changes do the unrecorded changes sit
  • automatically discover patch dependencies (amend --ask-deps) when given test fails without them
  • visualization of patch dependencies

7. Other projects

Keep in mind that you could always propose an project with a whole different set of ideas. Be creative! :-)

Other project ideas:

Application process

  1. Sketch out an idea. Can you make Darcs faster? Can you make it more useful? It would make sense to get in touch with for some help.

  2. Get in touch with the Darcs team if you have not done so already

  3. Write up your proposal (this should take a day or two). See the previous applications if you’re having trouble getting started.

  4. Submit your application to the GSoC website Register as a student first then submit your application.

Older projects

  1. 2014
  2. 2013
  3. 2012
  4. 2011

  5. 2010

  6. 2009 - Hashed storage (Petr Rockai)

  7. 2007 - Darcs 2 research (Jason Dagit)

See also