OpenProject
Implementation Details
Must Haves
REQM01: Be able to issue queries to find issues (e.g. JQL for JIRA), including global search in all projects. It's used in lots of places, including on hundreds of pages on xwiki.org
REQM02: Be able to label issues. We're using the following labels
Implemented as a "Labels" custom field using a List so that we control the labels that can be used.
REQM03: Be able to have several resolutions for issues (Won't fix, Fixed, Duplicate, Solved By, etc.)
There's no concept of "resolution". Only a concept of "statuses".
We have 2 options:
- Fold the concept of resolution inside the concept of statuses.
- Introduce a custom field for Resolution. See below for custom fields.
Option 1 has the advantage that we can mark a status entry as being 100% complete and marking the work package as closed.
If we go with option 2 then there's no relationship between resolution and statuses (we cannot force the user to set a Resolution). Note that there's the concept of "automatic action" but it's limited and cannot be used to solve the problem. See https://op.xwiki.org/admin/custom_actions
Thus option 1 has been implemented.
REQM04: Be able to have categories (components in JIRA parlance)
Categories are set per project. See for example:
REQM05: Be able to automatically link GitHub commits with JIRA issues (i.e., links from JIRA to the commits)
REQM06: Be able to have several issue types
See https://op.xwiki.org/types
REQM07: Be able to have graphs to follow, for example, the number of bugs created vs resolved
REQM08: Be able to have REST endpoints to create XWiki macros (e.g., the JIRA macro) or scripting in xwiki pages
See https://www.openproject.org/docs/api/
REQM09: Be able to have several projects (one for each repo)
See https://op.xwiki.org/projects
REQM10: Be able to have several groups (categories in JIRA parlance)
Projects can be nested so the solution is to create a container project.
For example:
REQM11: Be able to mass refactor issues (select issues with a query and then apply changes to all of them: add a fix version, etc.)
There's the concept of Bulk Edit.
REQM12: Be able to set permissions/groups/roles for authorization
See https://op.xwiki.org/users
REQM13: Be publicly accessible
REQM14: Be able to self-register and create issues
See https://op.xwiki.org/admin/settings/authentication?tab=registration
When a user self-registers, he/she is part of the "Non-Member" role by default. Thus we need to define the permissions of the "Non-Member" role to allow creation of work packages, etc.
REQM15: Be able to have shared schemes to share configs between projects (permission scheme, workflow scheme, etc.)
Doesn't exist but there's the concept of Project Template. However, that's very painful as it's a copy and not a reference (i.e. if the template is modified then the existing projects created from that template are not updated).
This will lead to more maintenance and duplication. OTOH there are lots of features not available at the project level and which can thus only be configured at the global level (like workflows). For permissions for ex, we'll need to set it up for each project, using roles, to reduce maintenance.
REQM16: Be able to define custom fields (we use that for documentation and flickering tests for example)
Generally possible, see https://op.xwiki.org/admin/settings/project_custom_fields
REQM17: Be able to receive notifications (individual or to a notification list)
See https://www.openproject.org/docs/user-guide/notifications/
REQM18: Be able to import existing issues from the current issue tracker (e.g. JIRA) and not loose metadata ideally
REQM19: Be able to move issues (and not have to close and copy issues)
It's possible to move work packages between project and set some properties at the same time. See https://www.openproject.org/docs/user-guide/work-packages/duplicate-move-delete/
REQM20: Be able to link between issues (“depends on”, “is related to”, etc.)
Each work packages has a "Relations" tab with plenty of available type of relations.
TODO: Check if relations can be customized/configured (to remove some for example)
REQM21: Be able to see the detailed history of the issue
Available in the "Activity" tab of each work package.
REQM22: Be able to add attachments and display pictures/video integrations
Attachments can be added to work packages, and images can also be added in comments of work packages (in this case the images are not visible uner the File tab). Images can be added by upload, copy/paste or drag and drop.
REQM23: Be able to have priorities, including a Blocker priority.
See https://op.xwiki.org/admin/settings/work_package_priorities
REQM24: Be able to have statuses (open, in progress, closed)
See https://op.xwiki.org/statuses
REQM25: Be able to self-register confidential issues (e.g. for security issues)
REQM26: Be able to have different fields for different projects (e.g. some projects don't have the notion of Version)
Nice to Have
REQN01: Be able to have dashboards for releases (e.g. JIRA Dashboard)
Not configurable. See for ex https://community.openproject.org/versions/1413
REQN02: Be able to see similar issues when creating new issues to avoid duplicating existing issues
Not found.
REQN03: Be able to execute scripts inside the issue tracker to query issues and perform changes
Not found. There's an experimental CLI but it cannot be used to execute scripts.
REQN04: Be able to link issues with issues from an external bug tracker (Apache JIRA instance, etc.)
Not found. But could be implemented using a custom field (but it won't show the status dynamically).
REQN05: Be able to sponsor issues (e.g. we used to use FreedomSponsors in the past)
Not found.
Additional
Ability to list project attributes on the project home page.
We have defined the following attributes:
- Extension URL: Link to where the top-level extension for this project can be found on extensions.xwiki.org
- Lead: The lead of the project (for contrib projects)
For ex, see https://op.xwiki.org/projects/latex/
Be able to set several fix Versions