Big differences between Traq 3.x and 4.x

As I've been rewriting Traq 4.x I've made some pretty big changes and figured it would be best to talk about them and explain them.


The permissions system in Traq has changed quite a bit since the original release. Traq 3.x has the most complex permission system with layers of inheritance:

  • Default Group permissions
  • Default Project Role permissions
  • Project Group permissions
  • Project Role Permissions

This system uses every layer, it checks what permission you had at the project role level, then up to the project group level, then to the defaults. You could define one or two different permissions while the rest are inherited from the layers above. This was a great system but has a great complexity and maintenance cost for both the development and management perspective.

When starting from scratch I took the opportunity to design the system to be just as flexible but with less complexity and reduce the layers of inheritance. We still have the same four layers, the defaults and then the actual group or role permissions but the inheritance is gone.

If you don't have a project role, your group projects are used, if your group has no permissions set for the project, the defaults are used. You must now define the entire group or roles permissions at once.

This new system makes the permission system less complex and easier to maintain. You no longer need to worry about changing a default permission and affecting all projects, groups or roles.

Ticket properties

There are a lot of ticket properties that can be merged or dropped completely. Take Priority and Severity for example, a single field can handle both, if it's severe its high priority. But people do have high priority but low severity issues.

This is where the ticket labels/tags come in, you can set your ticket to be high priority and have a label of "blocking" for example. It allows for easier marking of tickets that are severe, non-severe, aesthetic only.

Now that we have labels/tags, we can easily merge other fields into it, such as Components. You would now simply create your ticket and assign the "ticket creation" label if it were related to ticket creation or "ticket updating" if it were related to updating tickets instead of having to constantly create new components for what may be only one or two tickets.

The interface

The interface for Traq 4.x is one of the biggest changes. Not just the design. There are a lot of pages that are being dropped in favour of bringing project management forward. For example, the Roadmap page is where you would go to manage milestones instead of the Project Administration section.

I've gone with a customised Boodstrap theme and will be mixing in some Vue.js components for a few of the more complex pages, the Ticket Listing is one page that will be using Vue.js.