Technical thoughts

This plugin adds a new ressource 'project' implemented by database table:

smp_project: a list of all defined projects

Actually, most database tables of Trac core related to ressources would need a new column 'project_id'. This way tickets, components, milestones, versions or even wikis could attach to certain projects. Since a plugin just adds stuff but cannot change the core structure, it implements the new dimension 'project' not by adding a new column to each ressource table but rather by adding several mapping tables smp_[ressource]_project, each one mapping a certain ressource to projects:

smp_milestone_project: the association of milestones to projects

smp_version_project: the association of versions to projects

smp_component_project: the association of components to projects

Example

Admin Interface:

Associate a milestone in a project:

Group milestones and versions on the roadmap by project, and display only projects chosen in the filter box: