{"id":2512,"date":"2012-03-27T08:34:11","date_gmt":"2012-03-27T16:34:11","guid":{"rendered":"http:\/\/blog.mozilla.org\/webdev\/?p=2512"},"modified":"2012-03-28T05:19:26","modified_gmt":"2012-03-28T13:19:26","slug":"scrum-and-bugzilla","status":"publish","type":"post","link":"https:\/\/blog.mozilla.org\/webdev\/2012\/03\/27\/scrum-and-bugzilla\/","title":{"rendered":"Scrum and Bugzilla"},"content":{"rendered":"<p>Not all teams at Mozilla follow the same software development methodology. We&#8217;re free to design our own workflows, use whatever tools we want, and just generally work in whatever way is best for us. The one component that almost every project uses is <a href=\"https:\/\/bugzilla.mozilla.org\/\">Bugzilla<\/a> for issue and feature tracking. If you&#8217;ve ever worked for, or contributed to Mozilla, you have a Bugzilla account. Apart from being a very powerful and configurable tool, this level of participation is a large part of what keeps projects using and wanting to use Bugzilla.<\/p>\n<h2>Enter Scrum<\/h2>\n<p>Being software developers, many of us know and like <a href=\"http:\/\/en.wikipedia.org\/wiki\/Scrum_%28development%29\">Scrum<\/a>. I&#8217;ve personally found it to be a great method of answering the old questions of &#8220;How long will this take?&#8221;, and &#8220;How much can we get done?&#8221;. I won&#8217;t go into great detail on how Scrum works here, but the main points are as follows:<\/p>\n<ul>\n<li>Work units are scored by the team based on difficulty or expected time consumption.<\/li>\n<li>Those work units are included in a &#8220;Sprint&#8221; usually lasting 2 weeks.<\/li>\n<li>Lots of interesting data is generated around team performance.<\/li>\n<\/ul>\n<p>That last point is key. In order to be able to use and appreciate these data, we need to be able to collect and visualize them in a useful way. This normally means awesome charts and graphs. As nice as Bugzilla is for coordination and issue tracking, it has an unfortunate lack of awesome data visualization tools. It does however, have an API.<\/p>\n<h2>The Birth of <a href=\"http:\/\/scrumbu.gs\/\">Scrumbu.gs<\/a><\/h2>\n<p>There have been some valiant efforts at improving the interface of Bugzilla. One of these, <a href=\"https:\/\/addons.mozilla.org\/en-US\/firefox\/addon\/bugzillajs\/\">BugzillaJS<\/a>, even adds some pie charts for Scrum data in a bug-list. But what I really wanted was a <a href=\"http:\/\/en.wikipedia.org\/wiki\/Scrum_%28development%29#Burn_down\">burndown<\/a>.<\/p>\n<p>The data you need to associate with a bug (or story in Scrum parlance) are the user who will benefit from the work, the component of the product to be affected, and a score (points) representing the perceived difficulty of the work. Bugzilla has no fields for these out of the box, but a catchall field called the &#8220;whiteboard&#8221; can be formatted in such a way as to allow tools like BugzillaJS and Scrumbu.gs to easily find it (see below). This is obviously not optimal, but it&#8217;s what we have for the moment. And when you combine that with the bug history data from the Bugzilla API, you have all you need to calculate burndowns, team and developer velocities, and all sorts of even awesomer things.<\/p>\n<aside style=\"margin-left:2em;padding:10px;background-color:#eee\"><strong>NOTE:<\/strong> The whiteboard Bugzilla field is overridden to provide formatted data for our scrum tools. If you had the following story: &#8220;As a contributor, I can haz bacon.&#8221;, and your team agreed to give it 2 points, your whiteboard for this bug would be: &#8220;u=contributor c=noms p=2&#8221;, where &#8220;u&#8221; is &#8220;user&#8221;, &#8220;c&#8221; is &#8220;component&#8221;, and &#8220;p&#8221; is &#8220;points&#8221;.<\/aside>\n<p>The result of this need, my excellent bosses allowing me the time to experiment with cool stuff, and the existence of <a href=\"http:\/\/python.org\/\">Python<\/a>, <a href=\"http:\/\/djangoproject.com\/\">Django<\/a>, <a href=\"http:\/\/slumber.in\/\">Slumber<\/a> (REST client), <a href=\"http:\/\/twitter.github.com\/bootstrap\/\">Twitter Bootstrap<\/a>, <a href=\"http:\/\/jquery.com\/\">jQuery<\/a>, <a href=\"http:\/\/code.google.com\/p\/flot\/\">Flot<\/a>, and <a href=\"http:\/\/ep.io\/\">Epio<\/a> (python\/django hosting), is <a href=\"http:\/\/scrumbu.gs\/\">Scrumbu.gs<\/a>. It&#8217;s still a work in progress, but you can click through some existing projects and sprints to see how it&#8217;s working so far. The <a href=\"https:\/\/github.com\/pmclanahan\/scrumbugz\">code and issue tracker<\/a> are on github, so feel free to poke around and see how it works. If you see a problem or have an idea for a feature, please file an issue, and if you have the ability and\/or desire, send a pull-request :).<\/p>\n<p>I recently gave a lightning talk about the project for my team at Mozilla and I&#8217;ve included it below if you&#8217;re interested. My hope with this project was to spread the use of Scrum around Mozilla and other teams who use Bugzilla, and to improve the tools for those who already do. If your team is interested in tracking your sprints using this tool, participating in its development, or just chatting about Scrum, please join us in the #scrum channel on <a href=\"irc:\/\/irc.mozilla.org\/\">IRC<\/a>.<\/p>\n<p><video id=\"movie\" width=\"640\" height=\"360\" preload=\"none\" controls poster=\"http:\/\/blog.mozilla.org\/webdev\/files\/2011\/07\/mozilla_wht.png\"><source src=\"http:\/\/videos-cdn.mozilla.net\/serv\/flux\/lightningtalks-q1-2012\/1-pmac-scrumbugs.webm\" type='video\/webm; codecs=\"vp8, vorbis\"' \/><source src=\"http:\/\/videos-cdn.mozilla.net\/serv\/flux\/lightningtalks-q1-2012\/1-pmac-scrumbugs.ogv\" type='video\/ogg; codecs=\"theora, vorbis\"' \/><source src=\"http:\/\/videos-cdn.mozilla.net\/serv\/flux\/lightningtalks-q1-2012\/1-pmac-scrumbugs.mp4\" \/><p>Download video as <a href=\"http:\/\/videos-cdn.mozilla.net\/serv\/flux\/lightningtalks-q1-2012\/1-pmac-scrumbugs.mp4\">MP4<\/a>, <a href=\"http:\/\/videos-cdn.mozilla.net\/serv\/flux\/lightningtalks-q1-2012\/1-pmac-scrumbugs.webm\">WebM<\/a>, or <a href=\"http:\/\/videos-cdn.mozilla.net\/serv\/flux\/lightningtalks-q1-2012\/1-pmac-scrumbugs.ogv\">Ogg<\/a>.<\/p><\/video><\/p>\n<p><strong>Edit 3\/28<\/strong>: Added links to Slumber, Epio, and jQuery.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Not all teams at Mozilla follow the same software development methodology. We&#8217;re free to design our own workflows, use whatever tools we want, and just generally work in whatever way is best for us. The one component that almost every &hellip; <a class=\"go\" href=\"https:\/\/blog.mozilla.org\/webdev\/2012\/03\/27\/scrum-and-bugzilla\/\">Continue reading<\/a><\/p>\n","protected":false},"author":444,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[666,13606,288],"tags":[138,553,13608,706,13609],"coauthors":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Scrum and Bugzilla - Mozilla Web Development<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.mozilla.org\/webdev\/2012\/03\/27\/scrum-and-bugzilla\/\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Paul McLanahan\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/2012\/03\/27\/scrum-and-bugzilla\/\",\"url\":\"https:\/\/blog.mozilla.org\/webdev\/2012\/03\/27\/scrum-and-bugzilla\/\",\"name\":\"Scrum and Bugzilla - Mozilla Web Development\",\"isPartOf\":{\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/#website\"},\"datePublished\":\"2012-03-27T16:34:11+00:00\",\"dateModified\":\"2012-03-28T13:19:26+00:00\",\"author\":{\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/#\/schema\/person\/9e3868c8f69f70286deb7943dceb3113\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/2012\/03\/27\/scrum-and-bugzilla\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.mozilla.org\/webdev\/2012\/03\/27\/scrum-and-bugzilla\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/2012\/03\/27\/scrum-and-bugzilla\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.mozilla.org\/webdev\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Scrum and Bugzilla\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/#website\",\"url\":\"https:\/\/blog.mozilla.org\/webdev\/\",\"name\":\"Mozilla Web Development\",\"description\":\"For make benefit of glorious tubes\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.mozilla.org\/webdev\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/#\/schema\/person\/9e3868c8f69f70286deb7943dceb3113\",\"name\":\"Paul McLanahan\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/#\/schema\/person\/image\/7709374e1e1e3027d8f7a918e540449c\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e95aca3578e784601d0a5b754adbdb20?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e95aca3578e784601d0a5b754adbdb20?s=96&d=mm&r=g\",\"caption\":\"Paul McLanahan\"},\"description\":\"Paul helps maintain bedrock, the codebase behind www.mozilla.org.\",\"sameAs\":[\"https:\/\/pmac.io\",\"https:\/\/x.com\/pmclanahan\"],\"url\":\"https:\/\/blog.mozilla.org\/webdev\/author\/pmclanahanmozilla-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Scrum and Bugzilla - Mozilla Web Development","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.mozilla.org\/webdev\/2012\/03\/27\/scrum-and-bugzilla\/","twitter_misc":{"Written by":"Paul McLanahan","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.mozilla.org\/webdev\/2012\/03\/27\/scrum-and-bugzilla\/","url":"https:\/\/blog.mozilla.org\/webdev\/2012\/03\/27\/scrum-and-bugzilla\/","name":"Scrum and Bugzilla - Mozilla Web Development","isPartOf":{"@id":"https:\/\/blog.mozilla.org\/webdev\/#website"},"datePublished":"2012-03-27T16:34:11+00:00","dateModified":"2012-03-28T13:19:26+00:00","author":{"@id":"https:\/\/blog.mozilla.org\/webdev\/#\/schema\/person\/9e3868c8f69f70286deb7943dceb3113"},"breadcrumb":{"@id":"https:\/\/blog.mozilla.org\/webdev\/2012\/03\/27\/scrum-and-bugzilla\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.mozilla.org\/webdev\/2012\/03\/27\/scrum-and-bugzilla\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/blog.mozilla.org\/webdev\/2012\/03\/27\/scrum-and-bugzilla\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.mozilla.org\/webdev\/"},{"@type":"ListItem","position":2,"name":"Scrum and Bugzilla"}]},{"@type":"WebSite","@id":"https:\/\/blog.mozilla.org\/webdev\/#website","url":"https:\/\/blog.mozilla.org\/webdev\/","name":"Mozilla Web Development","description":"For make benefit of glorious tubes","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.mozilla.org\/webdev\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blog.mozilla.org\/webdev\/#\/schema\/person\/9e3868c8f69f70286deb7943dceb3113","name":"Paul McLanahan","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.mozilla.org\/webdev\/#\/schema\/person\/image\/7709374e1e1e3027d8f7a918e540449c","url":"https:\/\/secure.gravatar.com\/avatar\/e95aca3578e784601d0a5b754adbdb20?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e95aca3578e784601d0a5b754adbdb20?s=96&d=mm&r=g","caption":"Paul McLanahan"},"description":"Paul helps maintain bedrock, the codebase behind www.mozilla.org.","sameAs":["https:\/\/pmac.io","https:\/\/x.com\/pmclanahan"],"url":"https:\/\/blog.mozilla.org\/webdev\/author\/pmclanahanmozilla-com\/"}]}},"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/posts\/2512"}],"collection":[{"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/users\/444"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/comments?post=2512"}],"version-history":[{"count":0,"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/posts\/2512\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/media?parent=2512"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/categories?post=2512"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/tags?post=2512"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/coauthors?post=2512"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}