This page collects project ideas for volunteers looking for tasks which are of a significant size. If you wish to make a significant contribution to Subversion but aren't yet sure what you would like to work on, this page is for you.
These project ideas are considered suitable for programs such as Google Summer of Code and the Outreach Program for Women.
Improve bindings to other programming languages.
One of Subversion's strengths is that it offers a rich set of "binding surfaces": APIs that are available not only in C (Subversion's native language) but in other programming languages as well (currently Perl, Python, Ruby, and Java).
Some of these language bindings are maintained via SWIG, a tool that partially automates the process of generating bindings, while others are maintained by hand. Many of the bindings do not have complete coverage yet, or have interface problems where they do have coverage (for instance, they might not expose all API elements of the latest Subversion release). So even though the bindings are used in many production systems, and used to build popular Subversion clients such as Subclipse, there's still plenty of work to do.
Another huge problem for users of the bindings is a lack of proper documentation specific to the bindings.
Required technical skills:
Show progress output.
Improve the progress output displayed during update and commit. See issue #901 for details.
Required technical skills:
Improve 'svn help'.
Currently, the texts shown by the svn help command are being maintained directly in the main source code file of the svn binary, which can be viewed online here. It has been proposed to move these help texts into a separate file format instead.
This could ease maintenance of help text translations, allow shipping of UNIX-style manual pages for each svn subcommand, and might also make it possible to consolidate the help texts and the reference section of the Subversion Book.
It has also been suggested to add a tutorial mode to svn help to make it easier for new users to get started with Subversion without consulting the documentation upfront.
Required technical skills:
More customizable behavior for 'svn diff'.
Add support for fully customizable external diff invocations, and support for external diff commands for non-text types. See Issue #2044 and issue #2447 for details.
Required technical skills:
XML output for 'svn mergeinfo'
Teach svn mergeinfo to create XML output. See issue #4245 for details.
Required technical skills:
Implement 'svnadmin unpack'
Once a FSFS repository has been packed, it's shard size can no longer be changed. Also, it cannot benefit from packing improvements in later releases.
Add an unpack sub-command to svnadmin that reverts a packed FSFS repository back to non-packed state. The repository will be off-line during the unpack process (as opposed to packing live repositories). Later improvements may include repack and reshard.
Required technical skills:
Enable interoperability testing.
The tests frameworks (make check) have limited support for testing with different client and server versions (1.8-dev clients and 1.7 server, for example; or vice-versa). Make it easier to run such interoperability/compatibility tests. Ideally, also lay the groundwork to setting up a buildslave to run these tests regularly (we'll provide the hardware).
A related goal is compatibility with older on-disk formats, but at the time of writing the author believes the --server-minor-version option and upgrade_tests.py cover what is needed.
Required technical skills:
None of the above? Find a project idea in the issue tracker!
Our issue tracker contains plenty of open tasks and unfixed bugs. The list of issues that might be relatively easy to fix is a good starting point.
For more information about how to contribute, or to discuss your contribution with us, please contact dev@subversion.apache.org
Please note that the dev@ list is publicly archived, which means anyone can read any information sent there, and information sent there cannot subsequently be erased.