Search code examples
version-controlldapissue-tracking

Using LDAP for issue-tracking / SCM


My current project involves using LDAP (Active Directory) and I'm using issue tracking for all of my projects, so the idea of combining both of them crossed my mind. In order to fit the requirements of StackOverflow I'll try to formulate this as question but I admit, this is more about just getting some opinions, please forgive me :):

I think that issue-tracking and SCM (software configuration management) in general would be a good application for LDAP because of the following reasons:

  • Easy to integrate into existing infrastructure (no need for additional user management)
  • Fine-grained access control for projects/issues etc.
  • Ready-To-Use hierarchical, property-oriented storage (which is typically needed for SCM/issue trackers)
  • Standard-API with bindings for almost all languages/technologies
  • Searching/Indexing, Backup/replication functionality already present in most LDAP solutions
  • Extensible schema already part of the LDAP technology (it would be easy to add properties to issues/projects etc.)

So my questions are:

  • Are you aware of any existing attempts to define a (standard) schema for issue-tracking resp. SCM (i.e. class definitions for issues, projects, versions, releases, revisions etc)
  • LDAP usually manage relatively slowly-changing data. How well would current implementations (OpenLDAP, ActiveDirectory) handle data (mainly in terms of performance and amount of data) that typically changes very frequently?
  • Are there any other drawbacks of such a solution you can think of?

and of course

  • Who would like to try to start such a project :) ...

Solution

  • The OP precises:

    The question is not about using an existing issue tracker with LDAP authentication (redmine can do this for example),
    but about storing tickets/issues/etc. directly within the LDAP tree...
    Currently, each issue tracker has it's own API for accessing data, having all data accesible via LDAP could make writing tools (e.g. integration into IDEs etc.) much easier

    To which the answer is easy.

    Don't.

    LDAP is not (repeat, not) made for that, and there is much more to an SCM or an Issue Tracker than just a bunch of hierarchical data.

    • An SCM has to come up with a way to store/reference efficiently deltas, entire tree, branches, labels.
    • an Issue Tracker is all about multiple relationship between one item and several other (several parents/children, related, duplicated, ...), plus has to manage somehow a tight reference with the code (or rather the changeset, set of version modified)

    While it is true than by adding a all lot of new objectClass types, you could end up with a similar structure, you would essentially take what it is a Lightweight Directory (ie optimized for reading only) and transform it into a huge referential (with lots of read/write operations and complex data structures).

    If you are looking about an unifying API, one generic one (not just for SCM or Bug Tracking) is OSLC (Open Services for Lifecycle Collaboration), an open-sourced protocol currently used for Change Management by RTC (Rational Team Concert).