Edgewall Software

Changes between Version 3 and Version 4 of TracMultipleProjects/ByProductAndSearch


Ignore:
Timestamp:
Jun 29, 2005, 11:13:19 AM (19 years ago)
Author:
anonymous
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • TracMultipleProjects/ByProductAndSearch

    v3 v4  
    1 = Handling Multiple Products and Projects =
     1= Handling Multiple Projects =
    22
    33We have been looking very closely at Trac and how we would use it in a multi project environment.  Our conclusions are a little different to any of the proposals made so far.  The Trac philosophy is to keep things as simple as possible while preserving flexibility and that is what we are trying to do.
    44
    5 We have a large code base.  Much of that code is shared among a large number of products.  There is also a complex relationship between projects and products.  For example, a project may change common code and result in several product releases.  In other cases there is a one to one product/project mapping.
     5We have a large code base.  Much of that code is shared among a large number of projects.  There is also a complex relationship between projects and milestones.  For example, a milestone may change common code and result in several project releases.  In other cases there is a one to one milestone/project mapping.
    66
    7 What the above means is that the relationship between a project, products, timeline etc. can get quite complex.  The issue is how to deal with that while providing a clean and understandable system which normal people can cope with.  Neither of the other proposals for handling this (TracMultipleProjects/MultipleEnvironments and TracMultipleProjects/SingleEnvironment) deal with this complexity.  We believe that TracMultipleProjects/MultipleEnvironments is a non-starter for this.  There are some good ideas in TracMultipleProjects/SingleEnvironment which are extended by this proposal.
     7What the above means is that the relationship between a milestone, projects, timeline etc. can get quite complex.  The issue is how to deal with that while providing a clean and understandable system which normal people can cope with.  Neither of the other proposals for handling this (TracMultipleProjects/MultipleEnvironments and TracMultipleProjects/SingleEnvironment) deal with this complexity.  We believe that TracMultipleProjects/MultipleEnvironments is a non-starter for this.  There are some good ideas in TracMultipleProjects/SingleEnvironment which are extended by this proposal.
    88
    9 We are going to define some terms so as to minimise confusion:
     9Requests like the one in #1048 and #586 are too simplistic as they only address multiple projects which have nothing in common.
    1010
    11  * Product: An item which is shipped to customers
    12  * Project: A body of work which goes into products
     11== Trac Data ==
    1312
    14 We need to support multiple products and multiple projects.  It is our
    15 view that projects map onto milestones which is very convenient as
    16 multiple milestones are already in Trac.  This is the first big difference between this proposal and TracMultipleProjects/SingleEnvironment - the main selector is a product and not a project (I understand that this could be controversial so it would be a good idea to allow this to be configurable between product and project).
     13Gary Oberbrunner made these suggestions on the mailing list:
    1714
    18 Requests like the one in #1048 and #586 are too simplistic as they only address multiple products which have nothing in common.
     15 * a new table, "project", looking like this:
     16{{{
     17    id          integer PRIMARY KEY,
     18    name        text,
     19    description text
     20}}}
     21 * make tickets, milestones, and wiki entries (and maybe components?) have a project id, so for instance you could have project "A" with milestone "v1.0" and project "B" with milestone "v1.0" but they are distinct milestones.
     22 * the default project ID, 0, means "no project", i.e. current behavior.
     23 * update various pages and sql queries to allow project selection, i.e. "where project_id = selected_project_id" or sometimes "where project_id = selected_project_id or project_id = 0" to also show the default (non-project-specific) items.
     24 * add a new page for project maintenance (create, update, delete) (Or do it via trac-admin)
    1925
    20 The bit which is harder is how to support multiple products.  We believe
    21 that the following is required:
     26We would like to extend this so that:
     27
     28 * Milestones can be linked to more than one project.  This would require an extra table to link milestones and projects.
     29 * Milestone names would live in a flat namespace because of the above.  I.e., Garys milestone naming proposal only works if there is a one to one relationship between project and milestone.
     30 * Queries should support selecting multiple projects.
    2231
    2332== Ticket Changes ==
    2433
    25  * A product field drop down list.
    26  * A product version field drop down list which depends on the product field (i.e., each product has it's own set of versions).  The current version field would become this field.
    27  * The existing component field has to be dependent on the product.  Each product will have it's own set of components.
    28  * The milestone field also has to be dependent on the product (selecting a product would only show milestones which are relevant to that product)
     34 * A project field drop down list.
     35 * A project version field drop down list which depends on the project field (i.e., each project has it's own set of versions).  The current version field would become this field.
     36 * The existing component field has to be dependent on the project.  Each project will have it's own set of components, or, the component field could be optional so that those with multiple projects can remove it.
     37 * The milestone field also has to be dependent on the project (selecting a project would only show milestones which are relevant to that project)
    2938
    30 Somehow milestones have to be associated with products (maybe more than
    31 one product).  Adding a milestone would entail selecting a list of
    32 products affected by that milestone.
     39Somehow milestones have to be associated with projects (maybe more than one project).  Adding a milestone would entail selecting a list of projects affected by that milestone.
    3340
    3441== Timeline ==
    3542
    36 We don't believe that there is a simple relationship between a product
    37 and a timeline.  We think that instead of switching the timeline based
    38 on the selection of a product that there should be query support added
    39 to the timeline page.  These queries should allow the user to select a
    40 number of paths into the subversion repository to select repository
    41 checkins, a product choice to select tickets and milestones, and a Wiki
    42 path (or number of Wiki paths) to select Wiki pages (see Wiki section
    43 below).  These queries should also be saved so project teams can build
    44 reports which are useful for their project.  Using these queries most
    45 users requirements should be covered.  Maybe the queries should be saved
    46 by product or milestone - that would be good but not strictly necessary.
     43We don't believe that there is a simple relationship between a project and a timeline.  We think that instead of switching the timeline based on the selection of a project that there should be query support added to the timeline page.  These queries should allow the user to select a number of paths into the subversion repository to select repository checkins, a project choice to select tickets and milestones, and a Wiki path (or number of Wiki paths) to select Wiki pages (see Wiki section below).  These queries should also be saved so project teams can build reports which are useful for their project.  Using these queries most users requirements should be covered.  Maybe the queries should be saved by project or milestone - that would be good but not strictly necessary.
     44
     45In an ideal world there would be a way to link subversion commits to a project.  This could be done using the bugtraq string which TortoiseSVN adds to a commit.  The bugtraq id links to a ticket which is against a project.  Perfect timelines then!  The downside of this is that *every* commit *has* to specify a ticket.  The Trac code which indexes repository revisions would have to search commit messages for the bugtrac id and link it to the ticket.  I guess Trac could then log the commit in the ticket as well.
    4746
    4847== Roadmap ==
    4948
    50 This is rather simpler than for the timeline.  Given that there needs to
    51 be a defined relationship between products and milestones selecting a
    52 product should be all that is needed.
     49This is rather simpler than for the timeline.  Given that there needs to be a defined relationship between projects and milestones selecting a project should be all that is needed.
    5350
    5451== Browse Source ==
    5552
    56 No need to change anything here as it is and should remain a view of the
    57 entire repository content.
     53No need to change anything here as it is and should remain a view of the entire repository content.
    5854
    5955== Wiki ==
    6056
    61 I think that by using the subpages or whatever it is you call pages
    62 which have a path (like !TracDev/...) with the project name at the top
    63 level would neatly support multiple project documentation.  The query
    64 for the timeline would use this path name to select product
    65 documentation changes.
     57I think that by using the subpages or whatever it is you call pages which have a path (like !TracDev/...) with the project name at the top level would neatly support multiple project documentation.  The query for the timeline would use this path name to select project documentation changes.
    6658
    67 == Tickets Affecting Multiple Products ==
     59== Tickets Affecting Multiple Projects ==
    6860
    69 Ticket #130 talks about assigning one ticket to multiple products.  I believe that this would be complex and prone to error.  It is very difficult to know which products a piece of common code will affect.  It would be very useful to be able to have tickets depend on other tickets (see ticket #31) so that as problems are found on different products which are caused by common code they can be linked to a single ticket.
     61Ticket #130 talks about assigning one ticket to multiple projects.  I believe that this would be complex and prone to error.  It is very difficult to know which projects a piece of common code will affect.  It would be very useful to be able to have tickets depend on other tickets (see ticket #31) so that as problems are found on different projects which are caused by common code they can be linked to a single ticket.