Redmine is an open source issue tracking system using Ruby on Rails platform. Redmine is a fully featured application including issue tracking, Wiki, Forums, File Management etc. Full list of Redmine features can be found at the Redmine website.
I was searching for a Scrum project management tool for a new project. Experimented with a number of different open source tools. Even though these tools have unique features, they weren't a good fit for what I was looking for.
A great list of Scrum Project Management tools can be found here:
Then I came across Redmine. After playing a bit with it, I liked the features and the ability to customize key aspects of the product.
Install the latest version of the following plugins. I am using Redmine version 1.2.1 with MySQL database on Ubuntu.
One of the great strength about Redmine is that key aspects can be customized to suit the needs. To match the project structure and execution style, I customized the a number of features.
Customize the roles to closely match the roles used in a typical Agile/Scrum Project. Modify the User Groups to match your project organization.
Trackers are the issue types. I have customized the trackers as follows:
Customize the permissions according to the organizational structure and guidelines.
Customize the workflow to ensure that the issues are are progressed correctly.
Add a custom field to Versions to denote the start date for a version. By default, the version creation date is taken as the start date. That is not correct. A version can be created ahead of time and scheduled for later. This custom field should be called Start Date.
Some of the Redmine plugins need additional customization to make it better. This includes customization of graphs, task board and milestone plugin.
Customizing the Graphs plugin is explained in this post.
This customization is to show the Blocked issues in bold red.
Modify the $REDMINE_ROOT/vendor/plugins/advanced_roadmap/app/views/versions/_info.html.erb. Similar to existing begin_strike/end_strike variables, add additional pair of variables begin_bold/end_bold and initialize set their values as follows:
Task board plugin provides Kanban like feature to quickly visualize the status of each task. But it doesn't have a Blocked column. The customization is to:
The customizations require modifications to the following files:
$REDMINE_ROOT/vendor/plugin/redmine_task_board/app/controllers/task_boards_controller.rb
$REDMINE_ROOT/vendor/plugin/redmine_task_board/asset/stylesheets/task_board.css
Development tasks should use the Task tracker.
When a Task is changed status (eg. to In Progress), manually change the status of the corresponding feature also
Similarly when all the tasks are Done or Closed, change the status of the corresponding feature
Use only one level of subtasks (Feature -> Task). Otherwise, the UI wont show the hierarchy properly.
Once the issue is Done, assign the issue back to the reporter
Now it is important for the success of the process to get the team adopt to the tool and follow certain manual steps to ensure that the status is properly reflected in Redmine.
I was searching for a Scrum project management tool for a new project. Experimented with a number of different open source tools. Even though these tools have unique features, they weren't a good fit for what I was looking for.
A great list of Scrum Project Management tools can be found here:
Then I came across Redmine. After playing a bit with it, I liked the features and the ability to customize key aspects of the product.
Required Redmine Plugins for Agile Project Management
Install the latest version of the following plugins. I am using Redmine version 1.2.1 with MySQL database on Ubuntu.
- Advanced Roadmap
- Redmine Charts
- Redmine Graphs
- Issue Due Date
- Issue History Tab
- Redmine Parking Lot
- Redmine Taskboard
Customize Redmine
One of the great strength about Redmine is that key aspects can be customized to suit the needs. To match the project structure and execution style, I customized the a number of features.
Customize User Groups
Customize the roles to closely match the roles used in a typical Agile/Scrum Project. Modify the User Groups to match your project organization.
Customize Trackers
Trackers are the issue types. I have customized the trackers as follows:
- Bug: A defect
- Feature: A feature defined by the business
- Clarification: A clarification request
- Task: A task that needs to be done
- Tech Need: A technical feature (eg. framework) that is needed to implement a business feature
Customize Issue Status
- New, Open, Re Open: Issue status.
- In Progress: Work is in progress
- Done: The work is done. Issue is assigned (should be done manually) to the reporter
- Closed: The reporter verifies the issue and mark ist as Closed when he/she is satisfied
- Rejected, Won't Fix: Associated typically with defects
- Blocked: The issue is blocked
Customize Permissions
Customize the permissions according to the organizational structure and guidelines.
Customize Workflow
Customize the workflow to ensure that the issues are are progressed correctly.
Customize Issue Priorities
- Low, Normal, High, Urgent: Applicable to Defects
- Immediate, Must Have, Should Have, Nice to Have: Applicable to Features
Custom Fields
Add a custom field to Versions to denote the start date for a version. By default, the version creation date is taken as the start date. That is not correct. A version can be created ahead of time and scheduled for later. This custom field should be called Start Date.
Customize Plugins
Some of the Redmine plugins need additional customization to make it better. This includes customization of graphs, task board and milestone plugin.
Customizing the Graphs Plugin
Customizing the Graphs plugin is explained in this post.
Customize the Roadmaps Plugin
This customization is to show the Blocked issues in bold red.
Modify the $REDMINE_ROOT/vendor/plugins/advanced_roadmap/app/views/versions/_info.html.erb. Similar to existing begin_strike/end_strike variables, add additional pair of variables begin_bold/end_bold and initialize set their values as follows:
if issue.status.name == 'Blocked' begin_bold = '' end_bold = '' color = 'red' endThen add begin_bold/end_bold tags after each begin_strike/end_strike tag. This will make any Blocked issues to stand out.
Customize Task Board Plugin
Task board plugin provides Kanban like feature to quickly visualize the status of each task. But it doesn't have a Blocked column. The customization is to:
- Additional blocked column in the task board
- Categorize the version selection page to open and closed versions
- Show issues with different status correctly on the task board
The customizations require modifications to the following files:
- $REDMINE_ROOT/vendor/plugin/redmine_task_board/app/view/task_boards/show.html.erb and replace the existing code with the following
<div id="task-columns"> <%= render :partial => 'task_column', :locals => {:title => 'To Do', :issues => @issues_to_do} %> <%= render :partial => 'task_column', :locals => {:title => 'In Progress', :issues => @issues_in_progress} %> <%= render :partial => 'task_column', :locals => {:title => 'Blocked', :issues => @issues_blocked} %> <%= render :partial => 'task_column', :locals => {:title => 'Verify', :issues => @issues_to_verify} %> <%= render :partial => 'task_column', :locals => {:title => 'Closed', :issues => @issues_closed} %> </div>
- $REDMINE_ROOT/vendor/plugin/redmine_task_board/app/view/task_boards/_task_column.html.erb
<%- color = '' if title == 'To Do' color = 'style="background:#f8f8f8"' elsif title == 'In Progress' color = 'style="background:#66ff99"' elsif title == 'Blocked' color = 'style="background:#ff0000"' elsif title == 'Verify' color = 'style="background:#6699ff"' elsif title == 'Closed' color = 'style="background:#009966"' end -%> <div class="task-column"> <h3 <%= color %> ><center><%= title %></center></h3> <% issues.each do |issue| %> <div class="issue"> <a href="/issues/<%= issue.id %>"> #<%= issue.id %> - <%= issue.tracker %> : <%= issue.subject %> </a> </div> <% end %> </div>
- $REDMINE_ROOT/vendor/plugin/redmine_task_board/app/view/task_boards/index.html.erb
<h2>Choose a Sprint</h2> <h4>Open</h4> <ul id="version-choice"> <% @project.versions.each do |version| %> <% if version.open? %> <li><%= link_to version.name, '/task_boards/show/' + version.id.to_s + '?project_identifier=' + version.project.identifier.to_s %></li> <% end %> <% end %> </ul> <h4>Closed</h4> <ul id="version-choice"> <% @project.versions.each do |version| %> <% if version.closed? %> <li><%= link_to version.name, '/task_boards/show/' + version.id.to_s + '?project_identifier=' + version.project.identifier.to_s %></li> <% end %> <% end %> </ul>
def show @version = Version.find(params[:id]) @project = @version.project @issues_to_do = Issue.find_by_version_id_and_status_names (@version.id, ['New', 'Open', 'Re Open']) @issues_in_progress = Issue.find_by_version_id_and_status_names (@version.id, ['In Progress']) @issues_blocked = Issue.find_by_version_id_and_status_names (@version.id, ['Blocked']) @issues_to_verify = Issue.find_by_version_id_and_status_names (@version.id, ['Done', 'Rejected', "Won't Fix"]) @issues_closed = Issue.find_by_version_id_and_status_names (@version.id, ['Rejected', 'Closed']) end
.task-column { width: 18%; height: 100%; float: left; margin-right: 1em; }
Guidelines
There are a few guidelines to follow. Ideally, these should be automatic. But there is not enough support for Redmine at present to address these. So follow these guidelines manually by the team.- Business features should use the Feature tracker.
- Technical requirements should use the Tech Need tracker.
- Development tasks should be added as a subtask of a Feature
Results
Product Backlog
Sprint Backlog
Burndown Chart
Kanban Board
Now it is important for the success of the process to get the team adopt to the tool and follow certain manual steps to ensure that the status is properly reflected in Redmine.
0 comments:
Post a Comment