Will >> Will's blog

purpose: Will Kahn-Greene's blog of Miro, PyBlosxom, Python, GNU/Linux, random content, PyBlosxom, Miro, and other projects mixed in there ad hoc, half-baked, and with a twist of lemon

Thu, 19 Dec 2013

Input: 2013 retrospective

It was a big year for Input. In 2012, we spent the last half rewriting Input. In 2013, it went through secreview, had a bunch of things fixed and then we migrated to the new system.

Since then, we've been fixing bugs, reimplementing features that were lost and writing the scaffolding for the new set of User Advocacy dashboards and tools.

Let's look at some Bugzilla and git stats for the year:

Twas the year: 2013
===================


Bugzilla
========

Bugs created: 150

                willkg : 100
            cwwmozilla : 5
                fbraun : 4
               mgrimes : 4
               tdowner : 3
        stephen.donner : 3
           me+bugzilla : 2
        gasell+mozilla : 2
               mcooper : 2
                 glind : 2
             mozaakash : 1
        kdurant35rules : 1
            hitmanarky : 1
              kbrosnan : 1
        bob.silverberg : 1
              splewako : 1
              rrosario : 1
             mattbasta : 1
              educmale : 1
                feer56 : 1
                326374 : 1
               anthony : 1
        shopov.bogomil : 1
               peterbe : 1
                  l10n : 1
    chrismore.bugzilla : 1
                landis : 1
          dron.rathore : 1
                    rq : 1
             MattN+bmo : 1
          joshua-smith : 1
                cturra : 1
        swagat.kanungo : 1

Bugs resolved: 268

                willkg : 157
                       :    WONTFIX 50
                       :      FIXED 89
                       : WORKSFORME 8
                       :  DUPLICATE 9
                       :    INVALID 1
            cwwmozilla : 57
                       :      FIXED 1
                       :    WONTFIX 7
                       : WORKSFORME 29
                       :  DUPLICATE 1
                       :    INVALID 19
               mgrimes : 10
                       :      FIXED 1
                       :  DUPLICATE 1
                       : WORKSFORME 5
                       :    INVALID 3
        shopov.bogomil : 7
                       :    WONTFIX 1
                       : WORKSFORME 2
                       :    INVALID 1
                       :      FIXED 2
                       :  DUPLICATE 1
               mcooper : 6
                       :  DUPLICATE 1
                       :      FIXED 5
               mozilla : 5
                       :      FIXED 5
           me+bugzilla : 4
                       :    WONTFIX 1
                       :      FIXED 1
                       :  DUPLICATE 1
                       :    INVALID 1
             mozaakash : 2
                       : WORKSFORME 1
                       :    INVALID 1
        trifandreialin : 2
                       : WORKSFORME 2
              rrosario : 2
                       :      FIXED 2
          joshua-smith : 2
                       :      FIXED 1
                       :    INVALID 1
           aaron.train : 2
                       :    WONTFIX 1
                       :  DUPLICATE 1
        stephen.donner : 1
                       : INCOMPLETE 1
               emorley : 1
                       :      FIXED 1
               curtisk : 1
                       :    INVALID 1
               unghost : 1
                       : WORKSFORME 1
          rajul.iitkgp : 1
                       :      FIXED 1
             jruderman : 1
                       : INCOMPLETE 1
          chris.lonnen : 1
                       :      FIXED 1
             nigelbabu : 1
                       :      FIXED 1
              tofumatt : 1
                       :      FIXED 1
                cturra : 1
                       :      FIXED 1
               fwenzel : 1
                       :      FIXED 1
               mbrandt : 1
                       :      FIXED 1

            INCOMPLETE : 2
             DUPLICATE : 15
               INVALID : 28
            WORKSFORME : 48
               WONTFIX : 60
                 FIXED : 115


git
===

Total commits: 277

      Will Kahn-Greene : 249  (+51602, -16851, files 1130)
           Mike Cooper : 11  (+38528, -236, files 217)
        Brandon Burton : 7  (+42, -215, files 9)
         Ricky Rosario : 4  (+36, -19, files 6)
        Bob Silverberg : 3  (+19, -9, files 3)
                 Rajul : 1  (+3, -0, files 1)
          Joshua Smith : 1  (+10, -5, files 1)
               bogomil : 1  (+1, -1, files 1)

Total lines added:   90241
Total lines deleted: 17336
Total files changed: 1368

I want to highlight some interesting bits:

  1. We resolved more bugs than we created. That's partially due to us going through and closing out old bugs for the old Input that aren't relevant anymore.

  2. According to the Bugzilla and git data, there were 47 contributors to Input this year: 326374, Bob Silverberg, Brandon Burton, Joshua Smith, MattN+bmo, Mike Cooper, Rajul, Ricky Rosario, Will Kahn-Greene, aaron.train, anthony, bogomil, chris.lonnen, chrismore.bugzilla, cturra, curtisk, cwwmozilla, dron.rathore, educmale, emorley, fbraun, feer56, fwenzel, gasell+mozilla, glind, hitmanarky, jruderman, kbrosnan, kdurant35rules, l10n, landis, mattbasta, mbrandt, me+bugzilla, mgrimes, mozaakash, nigelbabu, peterbe, rajul.iitkgp, rq, splewako, stephen.donner, swagat.kanungo, tdowner, tofumatt, trifandreialin, and unghost.

    That doesn't include localizers who do a ton of work translating the strings in the Input ui.

    That includes some of the folks who work on the input-tests repository, but possibly misses some.

  3. Most of the 47 contributors are not "core developers". That's cool, but I could be doing a better job here making it easier for non-core developers.

    We maintain a Get Involved page and we hang out on #input on irc.mozilla.org. We have a input-dev mailing list. If you want to work on Input, this is where it's at!

Those are the stats.

At a high-level, we accomplished the following:

  1. stood up a new Input code base
  2. the beginnings of spam identification and removal
  3. Input API for feedback submission
  4. Firefox OS feedback form
  5. infrastructure for an Analysts group with special privileges
  6. the beginnings of an Occurrence Comparison report dashboard

One thing I discovered in 2013q4 was that it's really hard to be the mostly-solo dev on a project like this. I'm lucky that I'm part of a larger team, so peer reviews for work I've done is possible and timely. However, I find I'm switching contexts between the technical details of what I'm working on now and the high-level details of a bunch of possible future tasks/projects. That's really hard to do day-to-day and still maintain development momentum. I have some thoughts on how to serialize my work so that I'm doing less context switching and I can focus on individual things more deeply which should produce better outcomes.

My goals for Input for 2014 are these:

  1. clean up the code base: there's still a bunch of weird stuff in there from the rapid development work we did in 2012
  2. reduce barriers to entry for new contributors: better documentation, fewer steps to get up and running, more bugs marked for mentoring, more outreach, ...
  3. build infrastructure that we can use for better User Advocacy tools: watched alerts, email notifications, dashboards, ...
  4. flesh out tests: we're really light on smoketests and regression-catching tests
  5. work with Matt and Cheng to figure out where Input fits into the grand scheme of things; how can we make it a general-purpose feedback system? how can we handle non Firefox products and initiatives?

Yay for 2013!

Update 7:08pm

My script only showed top tens which misses tons of people who did work. I redid the data and that increases the number of contributors from 16 to 47. Oops!

Mon, 31 Dec 2012

SUMO and Input: 2012

This was my first full year at Mozilla and it was intense. I essentially worked on four projects: SUMO, Input, ElasticUtils and Gaia. This blog post talks about the first two which are worked on by the James' Rifles SUMINPUT Megalosaur team.

We accomplished a lot on SUMO this year. I spent a couple of hours last week throwing together a rough "year in review" script that looked at Bugzilla and git and crunched some numbers:

Twas the year: 2012
===================


Bugzilla
========

Bugs created: 938

              rrosario : 201
               a.topal : 188
                willkg : 108
           scoobidiver : 51
               igarcia : 41
                mverdi : 36
      swarnavasengupta : 30
                 james : 29
                  bram : 19
            tobbi.bugs : 17

Bugs resolved: 1025

              rrosario : 335
                       : WORKSFORME 18
                       :    INVALID 16
                       :  DUPLICATE 23
                       :    WONTFIX 7
                       :      FIXED 263
                       : INCOMPLETE 8
               a.topal : 182
                       : WORKSFORME 36
                       :    INVALID 41
                       :  DUPLICATE 11
                       :    WONTFIX 70
                       :      FIXED 21
                       : INCOMPLETE 3
                willkg : 131
                       :  DUPLICATE 6
                       :      FIXED 110
                       : WORKSFORME 2
                       :    WONTFIX 11
                       :    INVALID 2
                rdalal : 84
                       :      FIXED 84
                 james : 51
                       : WORKSFORME 6
                       :    INVALID 5
                       :  DUPLICATE 3
                       :    WONTFIX 15
                       :      FIXED 14
                       : INCOMPLETE 8
               mcooper : 37
                       :      FIXED 36
                       :    INVALID 1
            tobbi.bugs : 29
                       :      FIXED 29
             tgavankar : 28
                       :    WONTFIX 1
                       : WORKSFORME 1
                       :      FIXED 26
           scoobidiver : 28
                       :      FIXED 4
                       :  DUPLICATE 4
                       : WORKSFORME 11
                       :    WONTFIX 3
                       :    INVALID 6
               bmo2010 : 13
                       :      FIXED 1
                       :  DUPLICATE 3
                       : WORKSFORME 3
                       :    INVALID 6

            INCOMPLETE : 21
             DUPLICATE : 61
            WORKSFORME : 82
               INVALID : 91
               WONTFIX : 117
                 FIXED : 653

git
===

Total commits: 916

         Ricky Rosario : 430
      Will Kahn-Greene : 192
           Rehan Dalal : 98
           Mike Cooper : 44
             Erik Rose : 34
                 Tobbi : 29
        Tanay Gavankar : 23
           Kadir Topal : 11
             Tim Watts : 10
         Berker Peksag : 9
           James Socol : 7
            Victor Neo : 6
      Cesar Carruitero : 5
           David Lilly : 4
                  Ibai : 3
        Isac Lagerblad : 2
                 icaaq : 1
           TylerDowner : 1
              browning : 1
         ricky rosario : 1
    Anatoli Papirovski : 1
     Clauber Stipkovic : 1
          Jason Thomas : 1
                atopal : 1
      Florin Strugariu : 1

There are some interesting bits in there:

  1. Ricky does a lot of work! Holy cow!

  2. There were 23 people who contributed code to Kitsune (the SUMO codebase) this year. Of those, about half are volunteer contributors.

    Compare with 2011, we had 19 people who contributed to the code base and less than half were volunteer contributors.

  3. We resolved more bugs than we created in 2012. We did that in 2011 as well, so that's two years in a row. I've never seen that happen before on a project I work on.

The codebase is pretty different now than it was at the beginning of the year. I helped with the following semi-massive overhauls:

  1. The push for more metrics and dashboards to view the numbers.
  2. The switch from Sphinx to ElasticSearch.
  3. The new Information Architecture which affected browsing and searching across the site.
  4. The site redesign which covered both the desktop and mobile versions of the site.
  5. The upgrade to Django 1.4.
  6. The switch from arecibo to sentry.
  7. The push to switch from fixtures to model makers for all our tests.
  8. The switch from weekly deployments on Tuesdays to deploying whenever we want. Continuous deployment is fantastic.
  9. Started switching the whole site from Webtrends to Google Analytics. I saw Ricky write up a bunch of bugs to finish up that work, so I'll say it's in progress.
  10. During the redesign, Rehan redid all the CSS and switched us to use LESS.
  11. I spun off some code I wrote for richard, then ported to Fjord, then improved into a project called django-eadred. That makes it a lot easier to generate sample data for a variety of purposes like new contributors, bootstrapping, and large random data sets.

On top of that, we did a lot of work on the documentation and making it easier to get to a working Kitsune development environment. We switched to a sprint-based work flow using Scrumbugz. We also nixed our daily checkin conference call for an IRC-based checkin system that we wrote called Standup.

It's been a big year.

For Input, it was a bigger year. We decided to abandon the old Input codebase (omfg yay) in favor of rewriting it from the ground up. The rewrite took a couple of months and then has sort of been sitting around waiting for a security review. In the meantime, we (actually, Mike did) fixed a bunch of issues with the old site code because that's what's currently in production.

Rewriting Input wouldn't have taken so long except that we did a lot of work fixing bugs in external libraries and updating Playdoh. That work definitely cut into our schedule, but it benefitted a bunch of other groups/people/sites, so that's good.

That's the gist of the year: it was a lot of work, but we accomplished a ton.

w00t for 2012!