![]()
In the previous two installments of this series on Agile development at Songbird, I’ve covered our move from waterfall to Agile and provided an in-depth look at some actual release cycles. In this last post, I’m going to introduce a tool - which I gave the uninspiring name sdpbot - built internally to help facilitate the tracking of our releases.
Wrestling Bugzilla into shape
Because so much of our existing workflow occurred in Bugzilla, we’ve decided to use it as a central database to drive our process. Every actionable project artifact lives in Bugzilla, a Feature, Story, Task or Bug. From a release standpoint, the only actionable items are Story, Tasks or Bug and hence, we only track these. Here is how we’ve organized our bugzilla.songbirdnest.com to help us track each release.
Release train
Every release train has a name and is used to create a target milestone in Bugzilla. This allows us to put items in release buckets. See some examples of what was included in the Fugazi and Genesis releases.
Priority field
As we create stories, tasks and bugs we assign them to the release milestone and place them in a priority bucket. Each priority level indicates how the item is being treated during the release:
- P2 - must have for the release, next candidates for promotion to P1
- P3 - nice to have for the release, we may ship without it
- P4 - nice to have and low risk. This represent the kind of work that we probably will undertake during the QA phase as it is low risk and won’t likely cause a regression.
- P1 has a special meaning. It is used as a flag to represent what is being committed by the team for the current weekly iteration. Everything in P1 signals our tool that this is our “plan” for the week and is under active development (We are considering changing this in the future to use the assigned bug functionality since Bugzilla 3.2 will now allow you to accept and assign a bug in one operation).
Costing
Weekly iterations
Every Monday, we plan our work for the week. Every member of the team elects items to P1 status. We then tally up the total points and determine if the plan is sound. Once we are all in agreement, the plan gets locked. This simply means that the tool takes a snapshot of all the items marked as P1 and saves their ids.
Daily reports
The main function of the bot is to compute delta and generate a daily report. Let’s take a look at every sections of the report.
Iteration
A simple number to represent the iteration (week)
Plan
This section represent the plan of records as snapshot at the beginning of each iteration. Once the plan is locked, it becomes immutable.
Duration
Duration of the iteration. Usually 5 working days, but it automatically adjusts for holidays.
Remaining
Total points for P1, P2 and P3 items which status is open (e.g. UNCONFIRMED, NEW, ASSIGNED or REOPENED)
Planned
Total points for P1 items that are opened.
Planned Velocity
Normalized points per work day.
Actual
This section represent the actual metrics computed at the end of each iteration. The iteration ends on Sunday at midnight.
Intake
Represent everything that was either added or removed to the P1 list (the plan) during the iteration.
Intake Velocity
Normalized intake points per work day.
Completed
Total point of everything that was marked fixed during that iteration.
Team Velocity
Normalized completed points per work day.
Carried over
Everything planned at the beginning or added during the week and not completed by the end of the iteration.
Environment
Originally, this was introduce to track distractions outside of the core release that could impact the team velocity. The idea being that it would give us a gauge of what the “environment” was like during that period. This columns would capture everything open or closed in the special ASAP Bugzilla milestone. We used this classification to track urgent issues, infrastructure work, etc. As our process matured, the need for this diminished and we no longer use this.
Here is a sample of such report for Fugazi
What to look for
Every day an email report is being generated allowing us to track progress to date. For every column described above, a link is provided. The link points back to Bugzilla and contains a list of ids for the items included in the list. Every item can then be reviwed independently.
At our weekly planning meeting, we usually start by reviewing what was carried over from last week. Ideally, we want this to be a null set, but the reality is that it often contains a fair amount of items. It’s primarily due to intake during the iteration. Items are being added because of regression introduced and discovered, new tasks being identified or slight adjustment to the plan. This is definitely an area we need to improve on.
The next view is the planned items for the new iteration. This allows us to make some tweak to our plan before we commit.
The intake views are very useful to analyze what is being added or removed during the cycle.
The team velocity gives us a measure on how well we are doing and how much load we think we can carry during the next iteration.
Finally, the remaining points tally gives us our burn down number. This is how much work is left and by dividing this with our historical velocity gives us a sense of how long it will be until we are done.
Open source library
SDPBOT is built as a Ruby library. The source code has been open sourced under the MIT license. You can download it here: http://code.google.com/p/sdpbot/
We have made no attempt to make it generic, so do expect to do some work to customize it for your own needs. If you’re using Bugzilla and want to generate some type of reports you will hopefully find the library to scrape and instantiate objects from Bugzilla very valuable. Enjoy!











23 Comments
SubscribeWow…I think that’s really cool. Staring at development statistics is actually interesting. It’s fun to see how something cool like Songbird is developing. Great job, guys!
Say, why dont you just start trying to make things more EASY with development? Why is everything so overcomplicated and bloated with mozilla sourcecode and also with songbird.
I can prove you totally forgot very important and most easy features, because developer minds are totally OVERLOADED with complicated structures:
It is not possible to SELECT AN AUDIODEVICE within song bird.
Jesus, how can this happen? with an audioplayer? Unbelievable? So I see Songbird on my XP system, but I hear nothing because songbird uses totally stupid like software from the 80s the default device - did ever come to your overloaded developer mind, that especially people that are spending a lot of time with music might have more than one soundcard? Waht abozt DJs or even real musicians? What about ASIO2? Ever heard of?
Another one? OK:
It is not possible to see the directory structure of my media library! What is this? I think that tag clouds and stuff is really nice, but I also believe that I already have a very common and system and software independent way of organizing my files: the directory structure of the filesystem. So why meta-meta? ALWAYS and everywhere within mozilla it ie easy to find: developers forgot how to “think easy”. They have a bloated, overloaded development process in their minds that makes them forget about most easy features and things and thats why they produce bloated and overloaded software - my current installed songbird now uses 101 MB of system memory (a media player, well, that is really bloated!), is always at minimum at 10% CPU usage, what is totally inaceptable for a media player, and what is even more annoying: does not provide, what most media players already do.
I do not want to insult you - I am just talking about facts. Face them, make a hard cut, change the development process and start over again. It is not only about YOU and NOW. It is about what free software leaves for future generations - too much bloat will destroy free software in the end.
@Orphan:
For future reference… when contributing feedback towards an open source free software project, you might want to tone down the arrogance and condescension. We welcome feedback and comments, but we don’t welcome your self-righteous attitude.
@Orphan:
Like iTunes, Songbird is all about auto-organizing tracks by metadata. It does that for people like me, who don’t care about where a file is but how an artist/album/song is named. And it does a good job. Maybe VLC does a good job for you.
@Georges: Thanks for sharing this tool. Seems you’ve put a lot of work into setting up your environment, but once it is up and running, it helps doing the “real work.
This seems like a good enough place to make a comment I have been thinking about for a while. I have been using songbird for about 2 months now, and like it, but it strikes me that this is the most audacious mozillia undertaking ever. Firefox and Thunderbird had to essentially take on only one other app, which were well known and rather disliked. But music players are a whole ‘nother story. I’m not an expert but it seems like there are dozens of widely used players, and literally hundreds of minor ones. The top of the ladder isn’t really dominated by any one player, but I think itunes, winamp, realplayer, are up there, these are commercial ventures that are making money and have been in sharp competition for years. They still all have drawbacks, but you better belive they are not standing still. As the comments of Orphan show, people have feature wish lists as long as their arm. I’ll refrain from listing my own here, but suffice to say there still does not exist a player that works the way I think one should. And of course, I want it to use 0.0 K of system memory and 0.0 % CPU, because I want my latest video game to run flawlessly when I bust into a room with 50 A.I. enemies throwing down a firestorm and rocking out to Filter’s “Nice Shot” without a skip. And by the way, this needs to be optimized to mac/Linux/PC. Oh, and my 5 dollar sound card that I bought from someplace in Tanzania.
Yes, I’m joking, but I think you are going to have to really pull this off to make Songbird the Firefox/Thunderbird equivalent. I hope you can do it and there is a lot of goodwill out there, but when things get tough, just remember, you are doing something crazy difficult.
Good luck - and work on podcasts next!
@ Brian
Thanks for the kind words. Yes, realizing the vision of an open desktop media player is ambitious but necessary. As Pioneers of the Inevitable, we could not do it without the support and encouragement of the community.
@Brian
Podcasting is definitely in the fore-front of what we’re working on. We’re doing a lot of plumbing work in the upcoming release to prepare for much improved podcasting support (as well as a much nicer user experience).
I also have to mention that as an avid gamer, I do understand the need for 4 very specific things:
1. Low memory foot-print
2. Low cpu-usage during simple playlist playback
3. Global Hotkeys.
4. Audio Output Switching (’cause i really gots to use my gamin’ headset yo!)
Low memory footprint is the primary ‘Performance & Optimization’ target for the next release.
We’ll also be working on playback performance (on Windows, by re-writing the directsound sink).
Global hotkeys are supported on Windows but sadly not on Mac and Linux (community help here would be greatly appreciated :)).
Audio Output Switching is sadly not something that we’re planning for the next release. It is however, something that’s pretty specific to Mac and Windows as Linux has built in output switching for applications (ok, not all distros have pulse audio yet, but it’s coming along). This makes it sadly not a priority currently but, hey, miracles can happen
Thanks,
And for the record, I just checked out the podcast features, actually it does what I think it should… That’s why I am careful not to shoot my mouth off too much. Great work, and keep it up!
@ Orphan -
There’s an add-on that does what you seem to want it to do regarding seeing your media files in their directory structure. It’s called (suprise!) directory structure and can be found here: .
The developer has continued to update the add-on, but it seems that he may not be continuing his development. If you really think that’s a feature Songbird needs to improve on then I propose that you could contribute to the open source community and help continue development of the add-on. The source is of course included right in the add-on (just like all the add-ons).
Although there’s a team of developers behind the core of Songbird (POTI), much of the development is done by everyday users (like you and me!). It’s unfair to claim that the developers “have a bloated, overloaded development process in their minds that makes them forget about most easy features” because those very developers are the users. They work on what they see to be the most beneficial to the overall betterment of the software. If a user sees a feature that is lacking, they have the full right to voice their opinion (usually by filing a bug report) and to help develop the feature (by creating an add-on). I suggest you follow those paths to help make Songbird an even more superb application.
Whoops, the link got eaten! Again, that add-on’s found at:
addons [dot] songbirdnest [dot] com [slash] addon [slash] 1225
Or just search for “directory structure” and you’ll find it. =D
Whoops again! I stand corrected [by myslef]… it’s “directory browser” and NOT “directory structure”. That makes more sense anyhow. Sorry about that!
What about Songbird Hearing Aides?
http://www.activeforever.com/p-4792-songbird-hearing-aid-disposable-hearing-aids.aspx
Are they a copyright issue?
@Steven
No, because they don’t make software and we don’t make hearing aids
@aus: Then you should definitely cooperate! It’s no a secret that listening to music and having hearing-problems might be somehow related… wait… omg… you are already cooperating! This piece of software is just part of a big conspiracy from the hearing-aid syndicate!
PS: Is the songbird walking backwards? And why are the footprints at its front AND back? But it’s farting as usual, so i guess it is alright…
Hi, I really love the soft, but like others I just have 2 questions :
- why addon 96 is not include in the release, it’s should be a default feature… please, add it by default is the next version
- If you want that developper help you, it’s should be a really good idea to update your tutorials : what about this page
publicsvn[dot] songbirdnest[dot] com[slash] browser[slash] trunk[slash] feathers[slash] basic-layouts
There is no tutorial about layout anywhere…
I dunno if you guys have heard Oasis with Songbird. Nice song. However, it’s impossible to search for “songbird” How come? That’s a weird bug.
@amau: The documentation is on the Songbird-Wiki:
http://wiki.songbirdnest.com/Developer
It’s pretty good, but if you are still missing something, you should ask in the Developers Forum. They are really nice and answer questions fast and accurate.
Nice player and I’m sure you guys have a lot on the table as far as development.
But one question. Why, oh why, does every audio player have to have it’s own fully skinned interface? Why not just make it use the resources from the current style of the operating system? (see window borders, buttons, headers, ect.)
iTunes is guilty, WinAmp is guilty, Songbird is guilty.
That’s the one reason why I don’t even play music on my computer as it is. If you make the player more integrated and unified with the user’s taste in his/her’s current style (the default OS theme or a custom one, instead of Apple’s) then you will have a winner. (And don’t even bring up “Feathers”)
@Diggie
Is that a trick question? The whole point of feathers in Songbird is that they also allow you to use native look and feel as well as define your own.
We did start with the latter but it’s our hope to also have a native look and feel feather available. I have no timeline for that native feather though, apologies.
That sounds good. I think no skin looks better than the one that integrates well with the rest of the OS (perhaps the reason why OS X is considered the best looking). But, I do hope that you don’t mean a faux native feel. Meaning, that I hope that there isn’t just feathers that are skinned to look like Aero, or Finder, or Gnome. For example, I hope that suppose someone changes their visual style, or windowblinds skin, or GTK theme - that Songbird will also change it’s appearance to match.
If that can happen, Songbird will definitely rule out any other players as far as I’m concerned (and I’m willing to bet a lot of others).
Keep up the fine work
Well,I love this media player so much,but there still a question that when i play a chinese track,the msn cannot get the track name correct.I turn my mp3 tag to unicode,but it’s not work.so what can I do?I use the LiveTweeter addons.can i get a correct name?
@Malike
I’m working on that bug