- Project tools
-
-
- Getting Subversion
- Project Management
- Additional Resources
-
- How do I...
-
| Category |
Featured projects |
| scm |
Subversion,
Subclipse,
TortoiseSVN,
RapidSVN
|
| issuetrack |
Scarab |
| requirements |
xmlbasedsrs |
| design |
ArgoUML |
| techcomm |
SubEtha,
eyebrowse,
midgard,
cowiki |
| construction |
antelope,
scons,
frameworx,
build-interceptor,
propel,
phing
|
| testing |
maxq,
aut
|
| deployment |
current |
| process |
ReadySET |
| libraries |
GEF,
Axion,
Style,
SSTree
|
| Over 500 more tools... |
|
What Needs Doing?
There are a lot of different things you can do to help Subversion.
Not all involve coding; there are plenty of non-programming roles for
eager volunteers.
Below are some of the needs we've identified, but please don't take
these as gospel! New volunteers bring fresh viewpoints, and one of
the most important things you can do is point out a need we hadn't
recognized before — and then fill it.
Google Summer of Code Tasks
These are the ideas that the Subversion developers have for Google Summer of Code
applicants. These are just some ideas — if you have
other ideas, we're happy to consider them too, please just post them
to dev@subversion.tigris.org.
However, please don't select tasks in the other sections of this
page as your Summer of Code proposal, as those are either not the
right size for the Summer of Code, or are not coding tasks and
therefore not eligible.
You should also read the Hacker's Guide to
Subversion before starting out on a proposal. Don't hesitate to
ask for details or start discussing one of these tasks on the dev@subversion.tigris.org
mailing list (see here for subscription information).
In fact, please discuss your task on the mailing list regardless of
whether you've submitted your application yet. Eagerness to engage
with the rest of the Subversion development community will be
considered favourable in evaluating your application.
If you have questions about the application process, compensation,
or the Google Summer of Code program in general, please see the
program FAQ
Deselection interface for sparse directories.
See issue #2843.
Although we now support sparse checkouts, we do not yet have any way to remove subtrees
from a working copy once they have been brought in. This task
involves coming up with an interface specification first (via list
discussion), and then implementing it.
Make commit descend into svn:externals directories.
See issue #1167.
See also issue
2325 (svn cleanup should follow svn:external references).
Better DAV interoperability.
Over DAV (http://), Subversion should map the svn:executable and
svn:mime-type to the DAV-standard props, for better interoperability
with existing DAV clients.
See issue #1345.
Show progress output.
Improve the progress output displayed during update and commit.
See Issue #1264 and issue #901.
More customizable behavior for diff.
Fully customizable external diff invocations, and support for
external diff commands for non-text types.
See Issue #2044 and issue #2447.
Authz improvements
Note: Summer of Code may require two or more depending on
complexity.
2445: Allow users to change passwords.
2958/2662: Authz path wildcards; these are probably duplicate
issues, and the latter one has a patch already, though it may be
out-of-date now.
2338 mod_authz_svn should be able to use httpd's groups
config.
2143 Additional authz action controls (e.g., add/remove
files).
Allow Commit from multiple working copies
Currently, 'svn commit' cannot commit changes that are located in
two or more disconnected working copies (lacking a common parent),
even if those working copies belong to the same repository. This is
a fairly common need for users that work on multiple projects that
are all stored in the same repository and need to commit the changes
for multiple projects in a single atomic commit transaction.
There are several issues in the issue tracker that describe the
problem in more detail (see issue
#2381).
Operation and error logging for svnserve (issue #2409):
Subversion 1.3.0 added support for operational logging in
mod_dav_svn. That is, logging what actual client-side operations are
performed on a repository, rather than just logging the endless flow
of WebDAV requests. Support for this kind of logging, as well as
error logging, needs to be added to the standalone svnserve daemon.
This requires some work in the APR library, which would provide the
actual logging facility.
This has been extensively discussed on the Subversion development
mailing list in the past. A good first step would be to review the
previous proposals.
This task may have been started at http://svn.collab.net/repos/svn/branches/svnserve-logging.
An augmented diff representation
Currently, 'svn diff' outputs a patch in the so-called "Unified
diff" format. The problem is, this format is fairly old, and as such
can represent only textual differences between files. It does not
represent structural changes to the directory tree, nor can it
encompass changes to various metadata, the kind used extremely
frequently by Subversion.
'svn diff' actually has two or three use cases. The first is to
produce a human-reviewable description of a change suitable for code
review. The second (and maybe third) are to produce a file that can
be sent by email or stored somewhere for later application, by patch(1)
(the second use case) or some other more-capable patch tool (the third
use case). Of these, 'svn diff' currently only supports the first case.
For example, copied files are currently shown as differences against the
original version of the file, which makes review easier, though isn't
suitable for applying with patch.
This task is: First, to propose a solution for serialising a complete
representation of a change. Then, implement that solution with a new
switch to 'svn diff' and a new subcommand ('svn patch'?) that would
apply a previously created serialised patch.
Things to consider in your design of the serialisation format:
- Whether it represents content diffs in a human-readable format
(probably using the unified diff format), Subversion's native binary
delta format, or some other format. Considerations include non-precise
(fuzzy) patching and representing changes to binary files.
- Whether it should be compatible (to some degree) with patch(1)
(by encoding extra information in a "garbage" chunk of data that patch
will ignore, similar to the way property changes are reported today).
- How renames (when eventually implemented as a primitive operation)
should be represented.
Note that SVK posesses such a
rich unified diff format. It may or may not be desirable to reuse the
same kind of representation; that decision is part of the task!
This task may have been started at http://svn.collab.net/repos/svn/branches/svnpatch-diff.
Bite-Sized Coding Tasks
The Subversion bug database contains many issues classified as
"bite-sized" tasks — tasks that are well-defined and
self-contained, and thus suitable for a volunteer looking to get
involved with the project. You don't need broad or detailed
knowledge of Subversion's design to take on one of these, just a
pretty good idea of how things generally work, and familiarity with
the coding guidelines in the
Hacker's Guide to Subversion. Many tasks
are things a volunteer could pick off in a spare week or two, and
they're a great way to start learning your way around the Subversion
code.
If you start one of these tasks, please notify the other
developers by marking the issue as "STARTED" in the issue tracker,
then mail dev@subversion.tigris.org
(subscribe to that list too) with questions. Don't be shy, it's a
very civil mailing list.
When you're ready to send in a patch, see the patch posting guidelines. Don't be discouraged if your patch
goes through several iterations of review by other developers; this is
normal.
Here is the list of all bite-sized tasks.
Larger (But Not Necessarily Huge) Coding Tasks
The tasks listed below are bigger than bite-sized, but probably
don't require new research to solve. In other words, most of them are
a Simple
Matter Of Programming. You'd need to either be, or be willing to
become, familiar with Subversion's internals to solve one of
these.
As with the bite-sized tasks, please read
the
Hacker's Guide to Subversion and don't
hesitate to ask questions on the
users@subversion.tigris.org
and
dev@subversion.tigris.org
mailing lists (see here for subscription information). Before posting any patches,
see the patch posting guidelines.
For groups of tasks tied to
specific releases, peruse the status
page. For a longer-term view of Subversion's vision, see the road map.
issue #1254, etc: Improve error messages
Too many of Subversion's error messages are terse or confusing.
Many instances are recorded in
issue #1254, but see also issues
#2302,
#2295, and
#2275.
Improved Bindings to Other Languages
One of Subversion's strengths is that it offers a rich set of
"binding surfaces": well-documented APIs that are available not only
in C (Subversion's native language) but in other programming languages
as well (see the complete list).
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. So even though
they're used in many production systems, there's still plenty of work
to do. Specifically:
The SWIG/Python bindings are in pretty good shape, but their coverage
is not yet complete. Help is welcome.
Our Java, SWIG/Perl, and SWIG/Ruby bindings are in pretty good shape, but maybe there are
other languages you'd like to call Subversion APIs from? Lisp/Scheme?
Feel free to start a new bindings project, if you don't see what you
need here.
All Open Issues
You want to see the complete list of open bugs, in all its glory?
Don't say we didn't warn you...
|