Year end: 2009

Note: This is an old post in a blog with a lot of posts over a long span of time. The world has changed, technologies have changed, and I've changed. It's likely this is out of date, the code doesn't work, the ideas haven't aged well, or the ideas were terrible to begin with. Let me know if you think this is something that needs updating.

This was a pretty big year for the Miro project and the first year for the Miro Community project. In Miro-land, we pushed out Miro 2.0 which was a complete re-write of the user interface. Then we pushed out Miro 2.5 which was a rewrite of the storage/database layer. We also switched from svn to git. That's three really big changes for a single project in one year.

Miro 2.5 was a messy release and we've made a bunch of changes so we don't have to go through that again. We've been spending time on the unit test, QA automation, and code quality for Miro 2.6. We've changed the release process so that it buffers more time to catch issues. We're doing more peer review of complex code changes. The switch to git will help since branching and merging are much easier and less error-prone.

Bugzilla stats:

Overall statistics
------------------
                                  2007  2008  2009
Opened reports at end of year:     453   705  1102
Opened:                           4052  1625  1593
Closed:                           4368  2032  1654
Users created:                     644  1083   771
Comments created:                13564  7529  8329

"Opened reports at end of year" is the total number of opened bugs at the end of that year. So at the end of 2007, we had 453 open bugs. At the end of 2008, we had 705 open bugs, ...

I wasn't sure whether to include 2007 or not since half way through that year we switched from Trac to Bugzilla. No one needed to create an account in Trac, so user numbers should be lower. Also, we were getting a lot of Trac spam, so comment, opened and closed numbers were much higher.

Bugs closed by activity:
------------------------
             2007  2008  2009
fixed         736   932   969
invalid       170   133    85
wontfix        35   142    71
duplicate     139   313   190
worksforme    169   344   151
incomplete      0    57    84

I thought this was an interesting data set.

The INCOMPLETE status was added mid-2008. We use this for whenever we ask a user for some information that we need to work on a bug and the user never gets back to us. It's better than marking it as INVALID or WORKSFORME since it's easier to find this set of bugs that were pushed to the side because need more information.

We're fixing on average 3 bugs a day--that's pretty impressive.

Top 10 bug reporters:
--------------------
   444 - Janet (PCF)
   183 - Anne Jonas (PCF)
    71 - Will Kahn-Greene (PCF)
    71 - Dean Jansen (PCF)
    42 - Nicholas Reville (PCF)
    39 - sg
    37 - Keith Lard
    28 - Uwe Hermann
    28 - Ben Dean-Kawamura (PCF)
    22 - Pan  ~ dietmar

Out of 1593 bugs, PCF employees reported 839--that's just over half. Of the non-PCF people in this list, Uwe is the Debian packager for Miro and Pan is an OpenSUSE packager for Miro. sg and Keith Lard both run OSX.

Top 10 bug closers:
------------------
   421 - Janet (PCF)
   369 - Paul Swartz (PCF)
   353 - Will Kahn-Greene (PCF)
   195 - Ben Dean-Kawamura (PCF)
   114 - Luc Heinrich (PCF)
    26 - Christopher Webber (PCF)
    21 - Dean Jansen (PCF)
    20 - sg
    19 - Anne Jonas (PCF)
    14 - Nicholas Reville (PCF)
Top 10 bug commenters:
---------------------
  2050 - Janet (PCF)
  1757 - Will Kahn-Greene (PCF)
   823 - Paul Swartz (PCF)
   533 - Ben Dean-Kawamura (PCF)
   354 - Anne Jonas (PCF)
   254 - Nicholas Reville (PCF)
   234 - Dean Jansen (PCF)
   187 - Luc Heinrich (PCF)
    98 - sg
    88 - Uwe Hermann

Git stats

Moving along, I can now get stats out of our git repository. git ftw!

In 2009, we did 11 releases (22 releases if you include release candidates) of which 2 were MASSIVE code overhaul releases. Miro 2.0 involved a re-write of the user interface using native widgets which resulted us in dropping 4,000 files from the codebase (a large portion of that was probably locale-related). Miro 2.5 involved a re-write of the database layer. We had a lot of bug fix releases to stabilize things after these two big releases.

Between Miro 1.0 and 1.1: 1606 files changed, 127775 insertions(+), 14605 deletions(-)

Between Miro 1.1 and 1.2: 2318 files changed, 233370 insertions(+), 185511 deletions(-)

Between Miro v1.2 and v2.0: 4715 files changed, 271506 insertions(+), 560366 deletions(-)

Between Miro v2.0 and v2.5: 662 files changed, 169258 insertions(+), 175292 deletions(-)

Half of the 2.0 work and all of the 2.5 work was done in 2009. 2.0 was clearly a monumental release like no other release we've ever done.

In 2009, we did 1,382 commits. For comparison, we did 2,049 commits in 2008. The bulk of the work for Miro 2.0 was done at the end of 2008--I think that accounts for the large discrepancy here.

Contributor stats

I don't have stats for testing contributions or translation contributions so I can't speak to those. I can only speak to patches and bug triage contributions.

In 2009, we had 19 contributed fixes/features. PCF employees are doing the bulk of the work. This is still an area we could use help with.

In 2009, we've done a lot to lower the barriers to entry and make this easier: improved code quality, wrote documentation, improved build documentation, improved build scripts, added unit tests, ... In 2010, we're continuing this work.

Summary

Despite the Miro 2.5 release which was pretty rocky, I think we had a really good year and got a lot accomplished. I'm looking forward to Miro 2.6 (or whatever the next release gets called).

I'd love to see more contributions from other people. If you have some free time or some passion and want to help out, let me know. If you don't have free time, but have some spare change floating around, please donate--this helps PCF pay for employees to work on Miro.

Want to comment? Send an email to willkg at bluesock dot org. Include the url for the blog entry in your comment so I have some context as to what you're talking about.