Ultimate Scrum

What is Ultimate Scrum?

  • Ultimate Scrum is a Bugzilla extension.
  • Ultimate Scrum allows you to have a holistic view of items in Bugzilla. There are two types of viewpoints, release and team.
  • The purpose of Ultimate Scrum is to support agile software development methods. While doing this, it also tries to give minimal support to product and feature management.
  • It adds new tables into the Bugzilla database. The upgrade is done with the Bugzilla hook db_schema_abstract_schema.

What Ultimate Scrum is not

  • Ultimate Scrum does not describe any particular agile method.
  • The only descriptive functionality from the software process point of view is to limit the number of active scrums to one per team.

Technologies used

Ultimate Scrum builds on the same technology as Bugzilla. Additionally, it makes use of JQuery.

Background and history

Ultimate Scrum came to life after we received feedback from our developers, who were getting tired of using two or more different tools for their scrum related activities.
Context switching is harmful for many and a definite productivity killer.
We went down the iterative path, trying to inject the requested features into Bugzilla as seamlessly as possible.
We tried to remain as generic as possible and did our best to avoid the extension becoming tainted with particular agile dogmas.
It’s still very much a work in progress, and some aspects may seem complex even though user guide is available, but we hope you can make use of our work.
One thing to note is that integrating with the bugzilla templates isn’t really working out for us. Instead, we should overlay the functionality in the same fashion as Bugzilla Unified Dashboard does…

Real life example

Development teams can do agile software development using Bugzilla and Ultimate Scrum extension.
They can manage tasks, bugs and sprints inside their team with a single tool.
See it in action here:

Important note

A database upgrade is needed when installing Ultimate Scrum!
The Ultimate Scrum extension adds several new tables into the Bugzilla database. The upgrade is done with the Bugzilla extension hook db_schema_abstract_schema.
The upgrade is executed by running the checksetup.pl script.
The actual upgrade hook code resides in the extension.pm file under the scrums directory.

Notice! The Bugzilla platform does not contain a framework for removing database items.
Ultimate Scrum is a stand-alone extension and it can be easily switched off.
The database upgrade adds eight new tables into the Bugzilla database, but does not change any existing tables.

Ultimate Scrum schema

scrums_team

FieldTypeDefaultPropertiesRemarks
idsmallintnoneauto incrementthe team id
namevarchar(50)none-the team name
ownermediumintnone-the owner (foreign key profiles.user_id)
scrum_mastermediumintnonenullthe scrum master (foreign key profiles.user_id)
weekly_velocity_valuedecimal(7,2)nonenullamount of reported hours
weekly_velocity_startdecimal(7,2)nonenullvelocity calculation span start date
weekly_velocity_enddecimal(7,2)nonenullvelocity calculation span end date

indexes:

NameFieldsPropertiesRemarks
PRIMARYidunique

scrums_teammember

FieldTypeDefaultPropertiesRemarks
teamidsmallintnone-the team (foreign key scrums_team.id)
useridmediumintnone-the member (foreign key profiles.user_id)

indexes:

NameFieldsPropertiesRemarks
scrums_teammember_value_unique_idxteamid, useridunique

scrums_componentteam

FieldTypeDefaultPropertiesRemarks
component_idmediumintnone-the component (foreign key components.id)
teamidmediumintnone-the team (foreign key scrums_team.id)

indexes:

NameFieldsPropertiesRemarks
PRIMARYcomponent_idunique

scrums_sprints

FieldTypeDefaultPropertiesRemarks
idsmallintnoneauto incrementthe sprint id
team_idsmallintnone-the team (foreign key scrums_team.id)
namevarchar(255)none-the sprint name
nominal_scheduledatenone-used for sorting different sprints into cronological order
statusvarchar(20)none-current phase of sprint
is_activebooleantrue-1 if sprint is active, 0 if sprint has been archived
descriptionvarchar(255)nonenulldescription of sprint
item_typesmallint1-1 if item is sprint, 2 if item is backlog list
start_datedatenonenullstart date of sprint execution
end_datedatenonenullend date of sprint execution

indexes:

NameFieldsPropertiesRemarks
PRIMARYidunique

scrums_sprint_bug_map

FieldTypeDefaultPropertiesRemarks
bug_idmediumintnone-the bug (foreign key bugs.bug_id)
sprint_idmediumintnone-the sprint (foreign key scrums_sprints.id)

scrums_releases

FieldTypeDefaultPropertiesRemarks
idsmallintnoneauto incrementthe release id
namevarchar(255)none-the release name
target_milestone_beginvarchar(20)nonenulltarget milestone span start
target_milestone_endvarchar(20)nonenulltarget milestone span end
capacity_algorithmvarchar(255)nonenullcapacity calculation, future use
original_capacitymediumintnonenullcapacity calculation, future use
remaining_capacitymediumintnonenullcapacity calculation, future use

scrums_flagtype_release_map

FieldTypeDefaultPropertiesRemarks
release_idsmallintnone-the release (foreign key scrums_releases.id)
flagtype_idsmallintnone-the flag type (foreign key flagtypes.id)

scrums_bug_order

FieldTypeDefaultPropertiesRemarks
bug_idmediumintnone-the bug (foreign key bugs.bug_id)
teamsmallintnonenullorder of bug in prioritized list of team
rleasesmallintnonenullorder of bug in prioritized list of release
programsmallintnonenullfuture use

indexes:

NameFieldsPropertiesRemarks
PRIMARYbug_idunique

Give your feedback and get involved!

We appreciate all contributions.
Feel free to report issues, propose new features or submit your code :)

License

Use, reuse but don’t abuse :p
Licensed under MPL 1.1 license.