Login | Register
My pages Projects Community openCollabNet

If you were registered and logged in, you could join this project.

Summary Track issues directly in your Subversion repository.
Category issuetrack
License GNU General Public License
Owner(s) pediddle

Message from the owner(s)

Subissue is currently in the planning stages. A potential recomendation regarding the layout and naming conventions of issues stored in your subversion repository has been developed, and the first definitions of at least one of several potential interfaces will come soon.

Mission

Subissue aims to remove the database from traditional issue tracking software, using Subversion as its base. That is, rather than storing issues in a relational database, issues are stored directly in your Subversion repository, next to your source — right where they belong!

Motivation

Traditional issue tracking software can be a pain to administer. Anyone who has used Bugzilla knows what I'm talking about. There are seemingly thousands of configuration options, and such systems require a MySQL or Postgresql server as the backend. For anyone running in a hosted environment, setting up additional database services can be expensive and difficult. Even if you have your own server, additional security considerations can be a showstopper.

If you are reading this, you probably have your projects' source already stored in a Subversion repository. This means you probably have an Apache server providing remote access to your repository. Why should anything else be required? Integration with Subversion's logging features makes for a logical and complete solution. Subversion already has its own database and provides intelligent reporting, history, and access control straight out of the box: most everything required for issue tracking is already in place — right down to email notification.

General Development Overview:

Subissue revolves around three major parts: the storage specification, the web-based interface, and a pre-commit script for direct Subversion integration.

Storage Specification

Although access and editing of issues would generally be done via the web-based interface, the issues are stored in a way that makes it easy to edit and create them as you would any other file in your Subversion repository. If you plan to manually edit your issues, please read:

The web-based interface only knows how to interpret issues that follow the above specifications, in concert with the Subissue Configuration. It is designed to make every attempt to fail gracefully should the above specifications not be followed, but no guarantees can be made. Files and directories that don't have the subissue:type property set to a valid value are always ignored. Also, issue directories that are not found in one of the Path Search List will also be ignored.

Web-Based Interface

Since Subversion servers are usually accessed via an Apache server (using the mod_dav and mod_dav_svn modules), it follows that the main Subissue interface should run on that same Apache server. The web-based interface is a work in progress, and is in the initial planning stages. It is expected that it will be written either as a PHP page or Python CGI script (not Perl, since I don't know Perl), using Subversion's client library and SWIG bindings.

Once the initial planning has been completed (and once I figure out how to use SWIG and teach myself Python :->), you can find out how to install and configure your interface by reading the Subissue Configuration page and the Web-Based Interface page.

Pre-Commit Script

A web interface is nice, but opening a separate browser window is cumbersome, as is synchronizing your patches and code updates with the relevant issues. Subissue will provide a pre-commit script for direct integration with Subversion's existing log mechanisms. For the first time anywhere (as far as I know; please correct me), you can commit your change and resolve your issue (and perform many other operations) in the same step.

Resources, and How To Get Involved

I always have found it easier if one semi-intelligent person (me) at least writes an initial code-base before hoards of people start hacking. But I eagerly await comments and discussion of the potential short-falls, feature ideas, scope, and design of the project. So, join the mailing lists (only the dev list is currently active), and get involved. Once I have collected enough information and have started writing the interface code, I'll open up the repository and allow anyone (with permission) to hack away.

Subissue is an Open Source project, and is intended to remain free for all to contribute, modify, and adapt. Preliminarily, code will be released under the GPL, unless suggestions are made as to why code should be developed under another license (perhaps the same license as or one compatible with the license used by the Subversion project, in hopes that this project could eventually be merged into the general Subversion community process).

Links to Similar Projects

Of course, there are countless other Issue Tracking projects already available. To list just a few (especially the ones from whom Subissue has taken inspiration):

The major problem with each of these systems, and of the others I have seen, is that they (1) require additional setup and maintanence, and (2) separate the issues from the source where they really belong. There are complete source- and issue-tracking solutions, such as SourceCast, available, but I have seen none that are available for free (as in speech or beer). Using Subversion as a base, Subissue inherits most of its required functionality for free (as in, um, somebody else did the work). Subissue intends to evolve into a complete, enterprise-ready, and integrated issue-tracking solution.

Development Progress

Limitations and Issues

Issues with Subissue? Yes, it's true. So far this web page contains mostly wish-lists. While I expect the layout, headers, and issue specifications to remain fairly stable, the web-based interface and pre-commit script will likely not. This is mostly because I don't know how they are going to really work yet.

In particular, the pre-commit script's functionality probably won't even be implemented as a pre-commit script, since Subversion's hooks aren't allowed to modify transactions (only read from them). It may end up being a wrapper to the real svn command, but then issues arise regarding how to deal with failed commits, and the wrapper would need to in fact know about the semantics of each command. Maybe things will turn out that it ends up as a patch to the normal svn client; but then other clients (RapidSVN) cannot benefit from Subissue in the same way. As you can see, there are many potential courses, and all seem to have shortcomings.

Fortunately, at least the web-based interface is likely to be doable in the near future. Others have already built web-based interfaces to Subversion, and this would really be no different at a basic level.