Edgewall Software

Changes between Version 4 and Version 5 of TracMultipleProjects/SingleEnvironment


Ignore:
Timestamp:
Feb 7, 2007, 10:42:22 AM (17 years ago)
Author:
Christian Boos
Comment:

Note how things could fit together with GenericTrac and WikiContext

Legend:

Unmodified
Added
Removed
Modified
  • TracMultipleProjects/SingleEnvironment

    v4 v5  
    99Trac environment, in order to have a unified view on
    1010the development activity.
     11
     12Note that the two approaches are actually complementary. In some situations it will make sense to go with multiple environments, in some others, keeping all projects in a single environment would be preferred.
     13
     14Referencing resources located in one project from another project can be done in both cases by using InterTrac links. See WikiContext for details.
    1115
    1216
     
    2731The oldest ticket presenting this approach is #130.
    2832It asked for being able to browse multiple projects
    29 residing in different repositories. One of the problems this
    30 would raise is the ambiguity it introduces in TracLinks
    31 (however, the InterTrac approach, explained in
    32 TracMultipleProjects/MultipleEnvironments could be extended to
    33 adapt to this situation too, see #2086).
     33residing in different repositories.
    3434
    3535Since then, other people have expressed in #130, #548 and also very
     
    3838(Subversion) repository, in a single Trac environment.
    3939
    40 == Possible implementations ==
     40The implementation details of multiple repository support are more
     41specifically addressed by #2086 and the discussion in
     42VcRefactoring#SupportforMultipleRepositories.
    4143
    42 === Using a project field ===
     44== Proposed Implementations ==
    4345
    44 Within one database, a {{{project}}} scope could be added
    45 to the Trac objects, in addition to their {{{type}}} and {{{id}}}.
     46In GenericTrac, I proposed some kind of unification of the underlying data model
     47for Trac resources.
     48
     49I think this refactoring is also a good opportunity to introduce support for
     50multiple projects within a single environment.
     51
     52=== Using a `project` field ===
     53
     54Within one database, a `project` scope could be added
     55to the Trac objects, in addition to their `realm` and `id`.
    4656
    4757See [http://lists.edgewall.com/archive/trac/2005-May/002932.html this mail]
    48 for some additional explanations.
     58for an early introduction of this idea.
     59Also see TracMultipleProjects/ByProductAndSearch for a follow-up.
    4960
    50 Also see TracMultipleProjects/ByProductAndSearch for a writeup of this idea.
     61This plays also well together with the WikiContext introduced in [milestone:0.11].
     62The pervasive use of contexts as lightweight ''descriptors'' of resources will
     63also allow to transparently carry around the notion of the "current" project.
    5164
    52 === Using Component objects ===
     65That way, most of the current Trac code will remain unchanged,
     66and one of the principal objection against the use of a `project` field which
     67(having to pass yet another argument in addition to `req` and `db` to most of
     68the methods), is now addressed.
     69
     70=== Project resource ===
    5371
    5472The ticket #1048, as well as ticket #1135, suggest that
     
    5674used to represent a project.
    5775
    58 But currently, a ''component'' is nothing more than an enumeration,
    59 and even if one could attach more information to a component
    60 in the {{{trac.ini}}} (as #1135 does), this would not be very flexible.
     76But the notion of component is already well associated now
     77to some specific subsystem, a part of a project.
     78There are even requests for adding ''sub''-components (#548).
    6179
    62 A component could be instead a new kind of Trac object, with
    63 a few specific fields, like the list of Source objects
    64 (repository paths) that contain the source code of the component
    65 (see TracObjectModelProposal).
     80So why not introduce a new toplevel `project` realm, which
     81will be used to refer to projects as full-blown Trac resources?
    6682
    67 Tickets or milestones could also be associated to one or
    68 more components, using relationships (see TracCrossReferences).
     83A project resource deserves a description and its related functionality
     84(history, diffs, change notifications ...), probably attachments as well,
     85and could be used to display a few statistices (... #1).
    6986
    70 This would enable to filter the timeline events by a list
    71 of components, and only showing events about changesets or
    72 tickets that are related to them.
     87=== Open Questions ===
    7388
    74 a follow-up idea would be to have ''User'' Trac objects,
    75 corresponding to each developer in the team.
    76 Those objects could have relations like __owns__, or __works-on__
    77 to the Component objects.
     89==== What about Global or Shared Resources? ====
    7890
    79 The default set of components used for filtering could be those
    80 associated to the user by the way of its user page.
     91Though by default any resource would be associated to some specific project,
     92it would be interesting to get the ability to create resources that are global
     93to all projects, or if a more fine grained control is needed, resources could
     94be attached to multiple projects.
    8195
    82 Of course, at this point, there are a lots of missing pieces in this
    83 picture:
    84  * the relations and the trac objects are only in their infancy in the
    85    [source:branches/cboos-dev/xref-branch xref-branch]
    86    and the [source:branches/cboos-dev/trac-obj-branch trac-obj-branch]
    87  * some additional design is described in the TracObjectModelProposal,
    88  * and a few things are yet to be invented, but you get the idea (I hope!)
     96Typical example would be ''User'' resources (see #2456), as a User could
     97typically work on several projects, and when accessing a User page (#150),
     98it would be interesting to get the ticket statistics the same way one can
     99get the ticket statistics for a given milestone on the corresponding
     100milestone page.
    89101
    90 This approach was initially introduced in ticket #586
    91 (although that ticket belongs to the other multiple component support
    92 ''family'').
     102
     103----
     104See also: TracMultipleProjects, GenericTrac, WikiContext