* subversion/libsvn_repos/repos.c
[svn.git] / www / project_tasks.html
blob2c4eb7e43f2804d2d79f901b25ecb6ddb63a5936
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml">
4 <head>
5 <style type="text/css"> /* <![CDATA[ */
6 @import "branding/css/tigris.css";
7 @import "branding/css/inst.css";
8 /* ]]> */</style>
9 <link rel="stylesheet" type="text/css" media="print"
10 href="branding/css/print.css"/>
11 <script type="text/javascript" src="branding/scripts/tigris.js"></script>
12 <title>What Needs Doing?</title>
13 </head>
15 <body>
16 <div class="app">
18 <h1 style="text-align: center;">What Needs Doing?</h1>
20 <p>There are a lot of different things you can do to help Subversion.
21 Not all involve coding; there are plenty of non-programming roles for
22 eager volunteers.</p>
24 <p>Below are some of the needs we've identified, but please don't take
25 these as gospel! New volunteers bring fresh viewpoints, and one of
26 the most important things you can do is point out a need we hadn't
27 recognized before&nbsp;&mdash;&nbsp;and then fill it.</p>
29 <!-- ************************************************************* -->
30 <div class="h2" id="summer-of-code" title="summer-of-code">
31 <h2>Google Summer of Code Tasks</h2>
33 <p>These are the ideas that the Subversion developers have for <a
34 href="http://code.google.com/soc/">Google Summer of Code</a>
35 applicants. These are just some ideas&nbsp;&mdash;&nbsp;if you have
36 other ideas, we're happy to consider them too, please just post them
37 to <a
38 href="mailto:dev@subversion.tigris.org">dev@subversion.tigris.org</a>.</p>
40 <p>However, please don't select tasks in the other sections of this
41 page as your Summer of Code proposal, as those are either not the
42 right size for the Summer of Code, or are not coding tasks and
43 therefore not eligible.</p>
45 <p>You should also read the <a href="hacking.html">Hacker's Guide to
46 Subversion</a> before starting out on a proposal. Don't hesitate to
47 ask for details or start discussing one of these tasks on the <a
48 href="mailto:dev@subversion.tigris.org">dev@subversion.tigris.org</a>
49 mailing list (see <a
50 href="http://subversion.tigris.org/servlets/ProjectMailingListList"
51 >here</a> for subscription information).</p>
53 <p>In fact, please discuss your task on the mailing list regardless of
54 whether you've submitted your application yet. Eagerness to engage
55 with the rest of the Subversion development community will be
56 considered favourable in evaluating your application.</p>
58 <p>If you have questions about the application process, compensation,
59 or the Google Summer of Code program in general, please see the
60 program <a
61 href="http://code.google.com/opensource/gsoc/2008/faqs.html">FAQ</a>
62 </p>
64 <!-- ************************************************************* -->
65 <div class="h3" id="sparse-dirs-deselect" title="sparse-dirs-deselect">
66 <h3>Deselection interface for sparse directories.</h3>
68 <p>See <a
69 href="http://subversion.tigris.org/issues/show_bug.cgi?id=2843"
70 >issue&nbsp;#2843</a>.</p>
72 <p>Although we now support <a
73 href="http://svn.collab.net/repos/svn/trunk/notes/sparse-directories.txt"
74 >sparse checkouts</a>, we do not yet have any way to remove subtrees
75 from a working copy once they have been brought in. This task
76 involves coming up with an interface specification first (via list
77 discussion), and then implementing it.</p>
79 </div> <!-- spars-dirs-deselect -->
81 <!-- ************************************************************* -->
82 <div class="h3" id="externals-commit" title="externals-commit">
83 <h3>Make commit descend into svn:externals directories.</h3>
85 <p>See <a
86 href="http://subversion.tigris.org/issues/show_bug.cgi?id=1167"
87 >issue&nbsp;#1167</a>.</p>
89 <p>See also <a
90 href="http://subversion.tigris.org/issues/show_bug.cgi?id=2325" >issue
91 2325</a> (svn cleanup should follow svn:external references).</p>
93 </div> <!-- externals-commit -->
95 <!-- ************************************************************* -->
96 <div class="h3" id="dav-interop" title="dav-interop">
97 <h3>Better DAV interoperability.</h3>
99 <p>Over DAV (http://), Subversion should map the svn:executable and
100 svn:mime-type to the DAV-standard props, for better interoperability
101 with existing DAV clients.</p>
103 <p>See <a href="http://subversion.tigris.org/issues/show_bug.cgi?id=1345"
104 >issue&nbsp;#1345</a>.</p>
106 </div> <!-- dav-interop -->
108 <!-- ************************************************************* -->
109 <div class="h3" id="progress-output" title="progress-output">
110 <h3>Show progress output.</h3>
112 <p>Improve the progress output displayed during update and commit.</p>
114 <p>See <a href="http://subversion.tigris.org/issues/show_bug.cgi?id=1264"
115 >Issue&nbsp;#1264</a> and <a
116 href="http://subversion.tigris.org/issues/show_bug.cgi?id=901"
117 >issue&nbsp;#901</a>.</p>
119 </div> <!-- progress-output -->
122 <!-- ************************************************************* -->
123 <div class="h3" id="customizable-diff" title="customizable-diff">
124 <h3>More customizable behavior for diff.</h3>
126 <p>Fully customizable external diff invocations, and support for
127 external diff commands for non-text types.</p>
129 <p>See <a href="http://subversion.tigris.org/issues/show_bug.cgi?id=2044"
130 >Issue&nbsp;#2044</a> and <a
131 href="http://subversion.tigris.org/issues/show_bug.cgi?id=2447"
132 >issue&nbsp;#2447</a>.</p>
134 </div> <!-- customizable-diff -->
137 <!-- ************************************************************* -->
138 <div class="h3" id="authz-improvements" title="authz-improvements">
139 <h3>Authz improvements</h3>
141 <p>Note: Summer of Code may require two or more depending on
142 complexity.</p>
144 <ul>
145 <li><p><a href="http://subversion.tigris.org/issues/show_bug.cgi?id=2445"
146 >2445</a>: Allow users to change passwords.</p></li>
148 <li><p><a href="http://subversion.tigris.org/issues/show_bug.cgi?id=2958"
149 >2958</a>/<a
150 href="http://subversion.tigris.org/issues/show_bug.cgi?id=2662"
151 >2662</a>: Authz path wildcards; these are probably duplicate
152 issues, and the latter one has a patch already, though it may be
153 out-of-date now.</p></li>
155 <li><p><a href="http://subversion.tigris.org/issues/show_bug.cgi?id=2338"
156 >2338</a> mod_authz_svn should be able to use httpd's groups
157 config.</p></li>
159 <li><p><a href="http://subversion.tigris.org/issues/show_bug.cgi?id=2143"
160 >2143</a> Additional authz action controls (e.g., add/remove
161 files).</p></li>
163 </ul>
165 </div> <!-- authz-improvements -->
168 <!-- ************************************************************* -->
169 <div class="h3" id="interactive-merge-source-selection"
170 title="interactive-merge-source-selection">
171 <h3>Interactive merge source selection</h3>
173 <p>See <a href="http://subversion.tigris.org/issues/show_bug.cgi?id=3065"
174 >issue&nbsp;#3065</a>.</p>
176 </div> <!-- interactive-merge-source-selection -->
179 <!-- These are some other ones I considered for SoC 2008, but decided
180 (for now) to leave off the list. Feel free to publish them if
181 you think they're appropriate.
183 1233 mime-type guessing improved for Unix systems
184 2286 shared storage for identical files
185 2194 Support Unicode encodings other than UTF8 as plain text
186 783 Construct a notification system for properties [iffy...]
189 <!-- ************************************************************* -->
190 <div class="h3" id="svn-commit" title="svn-commit">
191 <h3>Allow Commit from multiple working copies</h3>
193 <p>Currently, 'svn commit' cannot commit changes that are located in
194 two or more disconnected working copies (lacking a common parent),
195 even if those working copies belong to the same repository. This is
196 a fairly common need for users that work on multiple projects that
197 are all stored in the same repository and need to commit the changes
198 for multiple projects in a single atomic commit transaction.</p>
200 <p>There are several issues in the issue tracker that describe the
201 problem in more detail (see <a
202 href="http://subversion.tigris.org/issues/show_bug.cgi?id=2381">issue
203 #2381</a>).</p>
205 </div>
208 <!-- ************************************************************* -->
209 <div class="h3" id="svnserve-logging" title="svnserve-logging">
210 <h3>Operation and error logging for svnserve (<a href="http://subversion.tigris.org/issues/show_bug.cgi?id=2409"
211 >issue&nbsp;#2409</a>):</h3>
213 <p>Subversion 1.3.0 added support for operational logging in
214 mod_dav_svn. That is, logging what actual client-side operations are
215 performed on a repository, rather than just logging the endless flow
216 of WebDAV requests. Support for this kind of logging, as well as
217 error logging, needs to be added to the standalone svnserve daemon.
218 This requires some work in the APR library, which would provide the
219 actual logging facility.</p>
221 <p>This has been extensively discussed on the Subversion development
222 mailing list in the past. A good first step would be to review the
223 previous proposals.</p>
225 <p><em>This task may have been started at <a
226 href="http://svn.collab.net/repos/svn/branches/svnserve-logging"
227 >http://svn.collab.net/repos/svn/branches/svnserve-logging</a>.</em></p>
228 </div>
230 <!-- ************************************************************* -->
231 <div class="h3" id="svn-augmented-diff" title="svn-augmented-diff">
232 <h3>An augmented diff representation</h3>
234 <p>Currently, 'svn diff' outputs a patch in the so-called "Unified
235 diff" format. The problem is, this format is fairly old, and as such
236 can represent only textual differences between files. It does not
237 represent structural changes to the directory tree, nor can it
238 encompass changes to various metadata, the kind used extremely
239 frequently by Subversion.</p>
241 <p>'svn diff' actually has two or three use cases. The first is to
242 produce a human-reviewable description of a change suitable for code
243 review. The second (and maybe third) are to produce a file that can
244 be sent by email or stored somewhere for later application, by patch(1)
245 (the second use case) or some other more-capable patch tool (the third
246 use case). Of these, 'svn diff' currently only supports the first case.
247 For example, copied files are currently shown as differences against the
248 original version of the file, which makes review easier, though isn't
249 suitable for applying with patch.</p>
251 <p>This task is: First, to propose a solution for serialising a complete
252 representation of a change. Then, implement that solution with a new
253 switch to 'svn diff' and a new subcommand ('svn patch'?) that would
254 apply a previously created serialised patch.</p>
256 <p>Things to consider in your design of the serialisation format:</p>
257 <ul>
258 <li>Whether it represents content diffs in a human-readable format
259 (probably using the unified diff format), Subversion's native binary
260 delta format, or some other format. Considerations include non-precise
261 (fuzzy) patching and representing changes to binary files.</li>
262 <li>Whether it should be compatible (to some degree) with patch(1)
263 (by encoding extra information in a "garbage" chunk of data that patch
264 will ignore, similar to the way property changes are reported today).</li>
265 <li>How renames (when eventually implemented as a primitive operation)
266 should be represented.</li>
267 </ul>
269 <p>Note that <a href="http://svk.elixus.org">SVK</a> posesses such a
270 rich unified diff format. It may or may not be desirable to reuse the
271 same kind of representation; that decision is part of the task!</p>
273 <p><em>This task may have been started at <a
274 href="http://svn.collab.net/repos/svn/branches/svnpatch-diff"
275 >http://svn.collab.net/repos/svn/branches/svnpatch-diff</a>.</em></p>
277 </div>
280 </div>
282 <!-- ============================================================= -->
283 <div class="h2" id="information-management" title="information-management">
284 <h2>Information Management Tasks</h2>
286 <p>These are non-coding tasks, so they are <b>NOT</b> eligible for
287 <a href="http://code.google.com/summerofcode.html">Google Summer of Code</a>.
288 If you have come here from the Summer of Code pages, skip this section of the
289 page.</p>
291 <div class="h3" id="issue-management" title="issue-management">
292 <h3>Issue Management</h3>
294 <p>Do we need an Issue Manager? Maybe...</p>
296 <p>The Subversion <a
297 href="http://subversion.tigris.org/project_issues.html">bug
298 database</a> has been managed in a rather ad hoc fashion thus far.
299 Periodically we make sweeps over all outstanding issues and try to
300 prioritize them, organize them into scheduled milestones, note
301 dependencies between issues, etc. These methods have been moderately
302 successful up till now, but they are not scaling well as the number of
303 issues grows. Since issue growth is proportional to user base growth,
304 the issue tracker is becoming a victim of Subversion's success. We
305 need to find new ways of managing our issues, ways that do not involve
306 making O(N) sweeps over the entire list of open issues at regular
307 intervals.</p>
309 <p>While we have some semi-formalized management roles (patch manager,
310 release manager, etc), we have never had an issue manager. It might
311 be time to get one, though. It's not yet clear whether the problem is
312 mainly one of attention, or of algorithm, or both, but having someone
313 dedicated to managing the issues database couldn't hurt. One thing
314 such a person could do would be to go through the list of outstanding
315 issues, figure out which ones are likely to be <a
316 href="#bite-sized">bite-sized tasks</a>, and mark them as such, so
317 that other volunteers have an easier time choosing things to work on.
318 We've already marked various issues as bite-sized, but we haven't done
319 so consistently as new issues come in. This means there are a lot of
320 potential entry points to the project going unnoticed. Want to help
321 us solve that?</p>
323 <p>Creative ideas welcome! If you'd like to help with this, please <a
324 href="http://subversion.tigris.org/servlets/ProjectMailingListList"
325 >subscribe</a> to the <a
326 href="mailto:dev@subversion.tigris.org">dev@subversion.tigris.org</a>
327 mailing list and post your thoughts.</p>
329 </div>
331 <div class="h3" id="faq-management" title="faq-management">
332 <h3>FAQ Management</h3>
334 <p>We need a FAQ manager. A FAQ manager is someone who stays
335 subscribed to the <a
336 href="mailto:users@subversion.tigris.org">users@subversion.tigris.org</a>
337 and <a href="mailto:dev@subversion.tigris.org"
338 >dev@subversion.tigris.org</a> mailing lists, watches for common
339 questions or addenda to existing questions, and slowly adjusts the
340 Subversion <a href="faq.html">FAQ</a> in response to the problems
341 users are having "in the wild". This is also a great way to get
342 familiar with Subversion usage patterns and common problems. If you
343 use or administrate Subversion anyway, helping to manage the FAQ is a
344 great way to expand your troubleshooting skills.</p>
346 <p>Again, creative ideas are most welcome. Please post to the <a
347 href="mailto:dev@subversion.tigris.org">dev@subversion.tigris.org</a>
348 mailing list if you're interested in this.</p>
350 </div>
352 </div>
354 <!-- ============================================================= -->
355 <div class="h2" id="bite-sized" title="bite-sized">
356 <h2>Bite-Sized Coding Tasks</h2>
358 <p>The Subversion bug database contains many issues classified as
359 "bite-sized" tasks&nbsp;&mdash;&nbsp;tasks that are well-defined and
360 self-contained, and thus suitable for a volunteer looking to get
361 involved with the project. You <i>don't</i> need broad or detailed
362 knowledge of Subversion's design to take on one of these, just a
363 pretty good idea of how things generally work, and familiarity with
364 the coding guidelines in the
365 <a href="hacking.html">Hacker's Guide to Subversion</a>. Many tasks
366 are things a volunteer could pick off in a spare week or two, and
367 they're a great way to start learning your way around the Subversion
368 code.</p>
370 <p> If you start one of these tasks, please notify the other
371 developers by marking the issue as "STARTED" in the issue tracker,
372 then mail <a
373 href="mailto:dev@subversion.tigris.org">dev@subversion.tigris.org</a>
375 href="http://subversion.tigris.org/servlets/ProjectMailingListList"
376 >subscribe</a> to that list too) with questions. Don't be shy, it's a
377 very civil mailing list.</p>
379 <p>When you're ready to send in a patch, see the <a
380 href="http://subversion.tigris.org/mailing-list-guidelines.html#patches"
381 >patch posting guidelines</a>. Don't be discouraged if your patch
382 goes through several iterations of review by other developers; this is
383 normal.</p>
385 <p>Here is the <a
386 href="http://subversion.tigris.org/issues/buglist.cgi?component=subversion&amp;issue_status=UNCONFIRMED&amp;issue_status=NEW&amp;issue_status=STARTED&amp;issue_status=REOPENED&amp;keywords=bite-sized&amp;cmdtype=doit"
387 >list of all bite-sized tasks</a>.</p>
389 </div>
391 <!-- ============================================================= -->
392 <div class="h2" id="larger-tasks" title="larger-tasks">
393 <h2>Larger (But Not Necessarily Huge) Coding Tasks</h2>
395 <p>The tasks listed below are bigger than bite-sized, but probably
396 don't require new research to solve. In other words, most of them are
397 a <a href="http://www.catb.org/~esr/jargon/html/S/SMOP.html">Simple
398 Matter Of Programming</a>. You'd need to either be, or be willing to
399 become, familiar with Subversion's internals to solve one of
400 these.</p>
402 <p>As with the <a href="#bite-sized">bite-sized tasks</a>, please read
404 <a href="hacking.html">Hacker's Guide to Subversion</a> and don't
405 hesitate to ask questions on the
406 <a href="mailto:users@subversion.tigris.org">users@subversion.tigris.org</a>
408 <a href="mailto:dev@subversion.tigris.org">dev@subversion.tigris.org</a>
409 mailing lists (see <a
410 href="http://subversion.tigris.org/servlets/ProjectMailingListList"
411 >here</a> for subscription information). Before posting any patches,
412 see the <a
413 href="http://subversion.tigris.org/mailing-list-guidelines.html#patches"
414 >patch posting guidelines</a>.</p>
416 <p>For <a href="project_status.html#upcoming">groups of tasks tied to
417 specific releases</a>, peruse the <a href="project_status.html">status
418 page</a>. For a longer-term view of Subversion's vision, see the <a
419 href="roadmap.html">road map</a>.</p>
421 <div class="h3" id="error-messages" title="error-messages">
422 <h3><a href="http://subversion.tigris.org/issues/show_bug.cgi?id=1254"
423 >issue&nbsp;#1254</a>, etc: Improve error messages</h3>
425 <p>Too many of Subversion's error messages are terse or confusing.
426 Many instances are recorded in
427 <a href="http://subversion.tigris.org/issues/show_bug.cgi?id=1254"
428 >issue&nbsp;#1254</a>, but see also issues
429 <a href="http://subversion.tigris.org/issues/show_bug.cgi?id=2302"
430 >#2302</a>,
431 <a href="http://subversion.tigris.org/issues/show_bug.cgi?id=2295"
432 >#2295</a>, and
433 <a href="http://subversion.tigris.org/issues/show_bug.cgi?id=2275"
434 >#2275</a>.</p>
436 </div>
438 </div>
440 <!-- ============================================================= -->
441 <div class="h2" id="bindings" title="bindings">
442 <h2>Improved Bindings to Other Languages</h2>
444 <p>One of Subversion's strengths is that it offers a rich set of
445 "binding surfaces": well-documented APIs that are available not only
446 in C (Subversion's native language) but in other programming languages
447 as well (see the <a
448 href="links.html#lang_bindings">complete list</a>).</p>
450 <p>Some of these language bindings are maintained via <a
451 href="http://www.swig.org/">SWIG</a>, a tool that partially automates
452 the process of generating bindings, while others are maintained by
453 hand. Many of the bindings do not have complete coverage yet, or have
454 interface problems where they do have coverage. So even though
455 they're used in many production systems, there's still plenty of work
456 to do. Specifically:</p>
458 <ul>
460 <li><p>The <a
461 href="http://svn.collab.net/repos/svn/trunk/subversion/bindings/swig/python/"
462 >SWIG/Python bindings</a> are in pretty good shape, but their coverage
463 is not yet complete. Help is welcome.</p></li>
465 <li><p>Our <a
466 href="http://svn.collab.net/repos/svn/trunk/subversion/bindings/java/javahl/"
467 >Java</a>, <a
468 href="http://svn.collab.net/repos/svn/trunk/subversion/bindings/swig/perl/"
469 >SWIG/Perl</a>, and <a
470 href="http://svn.collab.net/repos/svn/trunk/subversion/bindings/swig/ruby/"
471 >SWIG/Ruby</a> bindings are in pretty good shape, but maybe there are
472 other languages you'd like to call Subversion APIs from? Lisp/Scheme?
473 Feel free to start a new bindings project, if you don't see what you
474 need here.</p></li>
476 </ul>
478 </div>
480 <!-- ============================================================= -->
481 <div class="h2" id="all-issues" title="all-issues">
482 <h2>All Open Issues</h2>
484 <p>You want to see the complete list of open bugs, in all its glory?
485 Don't say we didn't <a
486 href="http://subversion.tigris.org/issues/buglist.cgi?component=subversion&amp;issue_status=UNCONFIRMED&amp;issue_status=NEW&amp;issue_status=STARTED&amp;issue_status=REOPENED&amp;order=issues.target_milestone%2C%20issues.priority%2C%20issues.issue_type">warn you...</a></p>
488 </div>
490 </div>
491 </body>
492 </html>