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
Page 1 of 85  >> (less recent)

Fri, 18 Apr 2014

Django Eadred v0.3 released! Django app for generating sample data.

Django Eadred gives you some scaffolding for generating sample data to make it easier for new contributors to get up and running quickly, bootstrapping required database data, and generating large amounts of random data for testing graphs and things like that.

The v0.3 release is a small one, but good:

There are no backwards-compatability problems with previous versions.

To update, do:

pip install -U eadred

Wed, 09 Apr 2014

pyvideo status: April 9th, 2014

What is pyvideo.org

pyvideo.org is an index of Python-related conference and user-group videos on the Internet. Saw a session you liked and want to share it? It's likely you can find it, watch it, and share it with pyvideo.org.


I fixed a few issues and finally (finally) pushed out major site updates. Some of them are implemented in the worst possible way (e.g. facet filters for the search page), but some of them are great (e.g. Amara subtitle support).

I'm still struggling with a lot of technical debt on the site and a lack of time to really focus on it. That's mostly what's been making fixing the issues, improving the site and adding conferences take so long.

Sheila and I will be at PyCon US and hanging around for sprint days. If anyone is interested in sprinting, we'll be there. Even if we don't get any coding done, figuring out how to solve some of the bigger problems and planning what should be done in the next year would be a huge accomplishment.

If you're at PyCon and see either of us, feel free to give us a piece of your mind in regards to how you use PyVideo and what could be better.

Site development using pagekite


I have this basic problem where I do a lot of web-site work and I need to show people what I've done so far so they can review it and help me make it better or make it suit their needs better. Screenshots aren't very helpful because the site is interactive. Further, the site needs to get tested on multiple devices/platforms/browsers. Also, I need to make sure that the site is only accessed via https.

What I've been doing up to now is failing miserably: I'd push work to our staging server for people to test out, but that sucks as an answer and affects my co-workers and makes a mess of our staging server. Plus iterating on things is difficult.

So, requirements:

  1. endpoint must be https-only
  2. must be easy to set up and take down
  3. must be easy to access so people can easily test things on my local machine


I looked around and this would be pretty easy to do if I didn't have the https-only requirement. That makes things difficult without a lot of work.

Then I found pagekite. They make it really easy.

Here's how you set it up:

  1. Download and install the pagekite software: http://pagekite.net/downloads/

  2. Run your website. In my case, I'm working on Django sites, so I launch like this:

    $ ./manage.py runserver

    That runs the Django project I'm working on on localhost:8000.

  3. Run pagekite:

    $ pagekite.py 8000 YOUR_NAME.pagekite.me:443

    That creates a tunnel from your machine to the pagekite.me server. When someone accesses https://YOUR_NAME.pagekite.me/, the request goes through the tunnel to your pagekite backend and that performs the request over http to your local webserver (in my case, the Django project) bound to localhost:8000.

    Access is https-only. If anyone tries to access http://YOUR_NAME.pagekite.me/, then they get a connection error.

    The https-only requirement is satisfied by restricting the kite to only listening to port 443--the https port. That's pretty key.

This lets me run my Django project locally on http without dealing with self-signed certificates, but still require https access so data isn't floating around in clear text.

The one problem with this is that my local server thinks it's running http and so redirects that include the protocol go to http rather than https.

If you don't already have an account, I'm pretty sure step 3 will walk you through setting one up. Free accounts are limited in what they can do.

Also, they hang out on #pagekite on Freenode. I had a problem, asked a question and got a super helpful reply. The code is Open Source, so it's possible to look through it and debug it.

I'll be using this going forward.

Why write this?

This is a common use case for web developers. I figured I'd write this up because the https-only part is pretty key and it was the part that I had to ask for help with.

Thu, 03 Apr 2014

ElasticUtils v0.9 released!

What is it?

ElasticUtils is a Python library for building and executing Elasticsearch searches.

See the Quickstart for more details.

v0.9 released!

This is a big release, but there are some compromises in it that I'm not wildly excited about. Things like Elasticsearch 1.0 support didn't make the cut. I'm really sorry about that---we're working on it.

This release has a lot of changes in it. Roughly:

  • dropped pyelasticsearch for elasticsearch-py (Thank you Honza!)
  • fixed S.all() so it does what Django does which should let you use an S in the place of a QuerySet in some cases
  • new FacetResult class (Thank you James!)
  • S.facet() can take a size keyword
  • cleaned up ESTestCase
  • SearchResults now has facet data in the facets property
  • etc.

For the complete list of what's new, What's new in Version 0.9.

Many thanks to everyone who helped out: Alexey Kotlyarov, David Lundgren, Honza Král, James Reynolds, Jannis Leidel, Juan Ignacio Catalano, Kevin Stone, Mathieu Pillard, Mihnea Dobrescu-Balaur, nearlyfreeapps, Ricky Cook, Rob Hudson, William Tisäter and Will Kahn-Greene.

We're going to be sprinting on ElasticUtils 0.10 at PyCon US in Montreal mid April. If you're interested, come find me!

If you have any questions, let us know! We hang out on #elasticutils on irc.mozilla.org.

Sat, 15 Feb 2014

pyvideo status: February 15th, 2014

What is pyvideo.org

pyvideo.org is an index of Python-related conference and user-group videos on the Internet. Saw a session you liked and want to share it? It's likely you can find it, watch it, and share it with pyvideo.org.


Over the last year, a number of things have led to a tangled mess of tasks that need to be done that were blocked on other tasks that were complicated by the fact that I had half-done a bunch of things. I've been chipping away at various aspects of things, but most of them were blocked on me finishing infrastructure changes I started in November when we moved everything to Rackspace.

I finally got my local pyvideo environment working and a staging environment working. I finally sorted out my postgres issues, so I've got backups and restores working (yes--I test restores). I finally fixed all the problems with my deploy script so I can deploy when I want to and can do it reliably.

Now that I've got all that working, I pushed changes to the footer recognizing that Sheila and I are co-adminning (and have been for some time) and that Rackspace is graciously hosting pyvideo.

In the queue of things to do:

  • finish up some changes to richard and then update pyvideo to the latest richard
  • re-encode all the .flv files I have from blip.tv into something more HTML5-palatable (I could use help with this--my encoding-fu sucks)
  • fix other blip.tv metadata fallout--for example most of the PyGotham videos have terrible metadata (my fault)
  • continue working on process and tools to make pyvideo easier to contribute to

That about covers it for this status report.

Questions, comments, thoughts, etc--send me email or twart me at @PyvideoOrg or or @willcage.

Tue, 31 Dec 2013

Blog update: December 31st, 2013

A few weeks ago, a friend of mine started a site called Nethack-a-day. It's fantastic---a Nethack game with color commentary one turn at a time. If you like Nethack, but haven't seen it, you're missing out.

As he was setting it up, he was looking at various systems he could build it with. I sort of wanted to say, "Yo, just use Pyblosxom." because I was pretty familiar with it (I spent the better part of 9 years maintaining it) and I knew it did 80% of what he needed. But I hesitated because I've been on the fence about switching to something else for a while now.

Then I committed a critical mistake. I said, "You know, Pyblosxom would be great for this, but how about I fix a handful of things first that'll make it easier to deal with." A handful of things turned into a massive overhaul of Pyblosxom ripping out a lot of the technical debt that had been accruing for years, re-imagining some of the bits I was never happy with and tweaking some things just because it seemed like a good idea at the time.

Thus was born Douglas.

Douglas resembles many of the static site blog generator systems written in Python that exist. That suggests it was a dumb idea to go and write it, but it has three compelling aspects that I think made it worth my time:

  1. It's derived from a blog system I maintained and thought about for a long time, so it has all the sorts of things I would want in a static blog generator
  2. I can continue to say, "I've been using the same blog system since 2002." Sure, it's not exactly the same system, but it's not like I have to go rewrite/reformat entries I wrote in 2002.
  3. It has a nicer callback system that I think makes it more malleable when it doesn't do exactly what you want by default.

Right now it's in an alpha state: the test suite doesn't cover enough of the software; the docs are mediocre and in some cases are filled with outright lies; there are a handful of issues; and there's still a bunch of technical debt and some architectural decisions that sucked and are increasingly difficult to work around.

Regardless, about a month, 102 commits and 9980 insertions and 22828 deletions later, I'm now switching my blog over to my new system. And that's how I'm going to end 2013.

Fri, 20 Dec 2013

Me: 2013 retrospective

I had a pretty intense 2013, but overall I think it was a good year. I say that with full knowledge that I had 2013 goals, but I have no idea where I wrote them down. Oh, well.

First off, I started or helped start a lot of new projects this year:

Fredrik is obsolete. Victor was a failed project. Captain Shove and Hy are doing well and other than helping to start them off, I haven't touched either in some time. I work on Dennis, Douglas and Ernest regularly. I'm thinking about Harold, but probably won't do anything with it for a while.

I also spent a ton of time working on existing projects:

I'm probably missing a bunch there. It's hard to keep track of what one did on other peoples' projects.

I got a lot accomplished at work this year:

Challenges I worked on this year:

In 2014, I want to:

It's been a busy year and there are things I should be doing better, but generally speaking, I think I did pretty ok.

SUMO: 2013 retrospective

It was a big year for SUMO. In 2012, we got a lot accomplished: new search, new information architecture,

One thing I didn't do was make my year-end script product better output.

Anyhow---on with stats!

Twas the year: 2013


Bugs created: 889

               a.topal : 156
              rrosario : 100
                willkg : 87
           scoobidiver : 85
                  ibai : 58
                mverdi : 54
               mcooper : 42
                feer56 : 35
          krystaiceman : 26
                rdalal : 19
            david.weir : 15
                shuhao : 13
      swarnavasengupta : 9
       andrei.hutusoru : 8
           me+bugzilla : 7
            tobbi.bugs : 6
                 mluna : 6
          joshua-smith : 6
               tdowner : 6
               leszekz : 6
        yoshi.yokotani : 5
        stephen.donner : 5
                 slurp : 5
                  mana : 5
             madperson : 4
              kbrosnan : 4
             tonnes.mb : 4
               rardila : 4
              pmcclard : 4
               dbialer : 4
             michaljev : 4
                   abc : 4
                  l10n : 4
               pcvrcek : 3
                 rdaub : 3
              fabricio : 2
             rmcguigan : 2
          sudheesh1995 : 2
          alex_mayorga : 2
          simone.lando : 2
            nishant_cs : 2
                  bram : 2
               smolejv : 2
        bob.silverberg : 2
              rtanglao : 2
        kdurant35rules : 2
            amit103065 : 2
         subedimahadev : 2
                lhenry : 2
          thomas.lendo : 2
             shawnsumo : 2
              mhammond : 1
        kdurant35rules : 1
                  djst : 1
               curtisk : 1
        chiorean.ioana : 1
                bermea : 1
               friedel : 1
        bputstudentweb : 1
     margaret.leibovic : 1
             rbillings : 1
       nikitan.dolmart : 1
       georgevidalakis : 1
            nsm.nikhil : 1
              satishb3 : 1
            bwbrowning : 1
              bugzilla : 1
                  coce : 1
              EddyCarr : 1
              gryllida : 1
        mohammed.samad : 1
                  6a68 : 1
         krupa.mozbugs : 1
           John99-bugs : 1
             wjohnston : 1
              barderne : 1
               jan0286 : 1
               fwenzel : 1
               rnewman : 1
           this4midhun : 1
              bjohnson : 1
  bugzilla-fromthedeep : 1
             iamjithin : 1
               bmo2010 : 1
    chrismore.bugzilla : 1
                 evold : 1
              jbertsch : 1
                yousef : 1
          pmjcreations : 1
               rhelmer : 1
              danishka : 1
                  mail : 1
             gphemsley : 1
              Rebeccah : 1
           ckreinbring : 1
               stephen : 1
         berker.peksag : 1
                jezdez : 1
                 nchen : 1
         iamjayakumars : 1
            netfuzzerr : 1
              benjamin : 1

Bugs resolved: 1116

              rrosario : 386 resolved, 273 fixed
                rdalal : 152 resolved, 150 fixed
               a.topal : 121 resolved, 41 fixed
               mcooper : 118 resolved, 105 fixed
                willkg : 72 resolved, 61 fixed
           scoobidiver : 31 resolved, 0 fixed
             michaljev : 20 resolved, 17 fixed
      swarnavasengupta : 18 resolved, 0 fixed
                shuhao : 16 resolved, 13 fixed
           me+bugzilla : 12 resolved, 5 fixed
         berker.peksag : 12 resolved, 12 fixed
                mverdi : 11 resolved, 5 fixed
                  erik : 9 resolved, 9 fixed
                lhenry : 8 resolved, 1 fixed
          krystaiceman : 7 resolved, 1 fixed
            tobbi.bugs : 7 resolved, 6 fixed
          joshua-smith : 6 resolved, 4 fixed
                 jfong : 5 resolved, 5 fixed
               tdowner : 5 resolved, 2 fixed
                feer56 : 5 resolved, 0 fixed
            david.weir : 5 resolved, 4 fixed
            bwbrowning : 5 resolved, 5 fixed
                  bram : 5 resolved, 4 fixed
                  ibai : 4 resolved, 1 fixed
   alastra.mariagrazia : 4 resolved, 2 fixed
                 laura : 4 resolved, 4 fixed
              williamr : 3 resolved, 1 fixed
         buchanae+bugs : 3 resolved, 3 fixed
           bharath_ves : 3 resolved, 3 fixed
              paul+moz : 3 resolved, 3 fixed
          chris.lonnen : 2 resolved, 2 fixed
               smolejv : 2 resolved, 1 fixed
             zcampbell : 2 resolved, 0 fixed
         iamjayakumars : 2 resolved, 0 fixed
               curtisk : 2 resolved, 0 fixed
               leszekz : 2 resolved, 0 fixed
                   abc : 2 resolved, 1 fixed
               pcvrcek : 2 resolved, 0 fixed
          taygunagiali : 2 resolved, 2 fixed
                  mail : 1 resolved, 0 fixed
               bmo2010 : 1 resolved, 1 fixed
               wymette : 1 resolved, 0 fixed
                beaotx : 1 resolved, 1 fixed
                nelson : 1 resolved, 1 fixed
             madperson : 1 resolved, 1 fixed
                  coce : 1 resolved, 0 fixed
              pmcclard : 1 resolved, 1 fixed
             tgavankar : 1 resolved, 1 fixed
  bugzilla-fromthedeep : 1 resolved, 0 fixed
              rtanglao : 1 resolved, 0 fixed
        stephen.donner : 1 resolved, 1 fixed
       guillermo.movia : 1 resolved, 1 fixed
              lorchard : 1 resolved, 1 fixed
              nukeador : 1 resolved, 0 fixed
             rtucker11 : 1 resolved, 0 fixed
            nishant_cs : 1 resolved, 0 fixed
                  stas : 1 resolved, 0 fixed
             mattbasta : 1 resolved, 1 fixed
              satishb3 : 1 resolved, 0 fixed
              ragsagar : 1 resolved, 1 fixed
             rmcguigan : 1 resolved, 1 fixed
                 nchen : 1 resolved, 0 fixed
                kudrom : 1 resolved, 1 fixed
       andrei.hutusoru : 1 resolved, 0 fixed
                  reed : 1 resolved, 0 fixed
           tiziana.sel : 1 resolved, 0 fixed
       chance.zibolski : 1 resolved, 1 fixed
             alice0775 : 1 resolved, 0 fixed
                  ravi : 1 resolved, 0 fixed
            nsm.nikhil : 1 resolved, 0 fixed
              gryllida : 1 resolved, 1 fixed
    deletesoftware+moz : 1 resolved, 0 fixed
          pmjcreations : 1 resolved, 0 fixed
                boerni : 1 resolved, 1 fixed
               rforbes : 1 resolved, 0 fixed
               dbialer : 1 resolved, 1 fixed
                jgross : 1 resolved, 1 fixed

            INCOMPLETE : 43
               WONTFIX : 51
             DUPLICATE : 64
               INVALID : 73
            WORKSFORME : 121
                 FIXED : 764

Research bugs: 15

761582: [research] Add feature: Articles that link to this article
788104: [research] [ux] Support multiple products in the support forum
815089: [research] Investigate telling apart Firefox for Desktop and Firefox for Mobile tweets
816970: [research] SurveyGizmo API to be used in automated exit survey
823060: [research] Use datetime instead of ints in ES mappings
823891: [research] Adding KB revisions feature
825621: [research] Store the templates, article links and images in each article
825624: [research] Investigate how to update to Twitter API v1.1
841412: [research] Bad localization strings shouldn't break the site.
845290: [research] URL bar should fade away on SUMO
854554: [research] Youtube embeds don't work with templates
889884: [research] Open Badges!
889890: [research][discuss] figure out how to improve our l10n situation with search
906992: [research] Add support for multiple ES indexes by doc type
937889: [research] Login users via a URL in email

Tracker bugs: 20

433161: [Tracker] Support for forums in other languages
625891: [tracker] HTML email
721462: [tracker] Taxonomy IA improvements
758598: [Tracker] Search UX suggestions
783262: [tracker] Add rate limiting to protect us from spammers
790785: [Tracker] L10n tools editing part
790786: [Tracker] L10n tools organization part
800962: [Tracker] Add activity history page for KB
815625: [Tracker] Segment dashboards and other contributor pages by product
817540: [tracker] AJAXify the refine+focus panel
825606: [tracker] Switch everything from Webtrends to Google Analytics
827640: [tracker] Localize Questions
838584: [Tracker] Getting ready for Firefox OS launch
845286: [tracker] Use as little bandwidth as possible on mobile version of SUMO
845773: [Tracker] move to an OS charting solution
848520: [tracker] Make all traffic HTTPS
851730: [tracker] Close threads pro-actively
871559: [tracker] update codebase to django 1.4 layout
897057: [tracker] Open Badges -- stage 1
920530: [tracker] support Webmaker on SUMO


Total commits: 1138

         Ricky Rosario : 492  (+16258, -16435, files 2972)
      Will Kahn-Greene : 178  (+8311, -3748, files 438)
           Rehan Dalal : 168  (+13016, -5554, files 680)
           Mike Cooper : 145  (+46955, -22136, files 582)
           Kadir Topal : 39  (+352, -110, files 61)
      Michał Frontczak : 19  (+229, -182, files 78)
         Berker Peksag : 15  (+570, -717, files 73)
             Shuhao Wu : 15  (+1523, -127, files 51)
       Jen Fong-Adwent : 9  (+138, -18, files 17)
                 Tobbi : 8  (+338, -204, files 13)
              browning : 5  (+140, -16, files 12)
             davd Weir : 4  (+15, -1, files 4)
          Joshua Smith : 4  (+94, -87, files 13)
         Tobias Markus : 3  (+8, -8, files 4)
                 Anush : 3  (+4, -1, files 3)
       Gaurav Dadhania : 3  (+3, -3, files 3)
  Bharath Thiruveedula : 3  (+15, -14, files 3)
                  ibai : 3  (+30, -30, files 4)
                kudrom : 2  (+9, -9, files 5)
             Nghi Tran : 2  (+2, -1, files 2)
          Tanner Filip : 2  (+4, -4, files 2)
                Börni : 2  (+30, -15, files 4)
             madperson : 2  (+5, -4, files 2)
         Taygun AGIALI : 2  (+7, -6, files 3)
           TylerDowner : 2  (+3, -3, files 2)
           James Socol : 2  (+37, -27, files 3)
               david-w : 1  (+1, -1, files 1)
              ragsagar : 1  (+16, -1, files 2)
       Guillermo Movia : 1  (+1, -0, files 1)
              rosanaar : 1  (+9, -0, files 1)
              Gryllida : 1  (+26, -6, files 3)
       Beatriz Nombela : 1  (+9, -9, files 6)

Total lines added:   88158
Total lines deleted: 49477
Total files changed: 5048
  1. Ricky does a lot of work! Holy cow!

  2. In 2011, we had 19 people who contributed code changes.

    In 2012, we had 23 people.

    In 2013, we had 32 people.

  3. Like 2011 and 2012, we resolved more bugs than we created in 2013. That's three years in a row! I've never seen that happen on a project I work on.

  4. There are a lot of people braving Bugzilla to write up bugs. Skimming the list, I see developers, non-developers, Support contributors, localizers, support team and a lot of people I don't recognize.

Here's some number comparisons:

name 2011 2012 2013
Bugs created: 1357 938 889
Bugs resolved: 1637 1025 1116
Total commits: 1137 916 1138
Code contributors: 19 23 32

I spent a good chunk of 2013 working on Input, but here's what I remember from SUMO development in 2013:

  1. We rearranged the codebase for better Django 1.4 layout. That was a project. Oy.
  2. We added support for non-English languages to the support forums!
  3. We switched email to be HTML formatted. We also reworked email to be localized.
  4. We switched to Google Analytics.
  5. We implemented Open Badges---though there's still a few important pieces to finish there.
  6. We switched to YouTube for videos.
  7. We added support for Webmaker and Firefox OS. Thunderbird support will be added to SUMO in 2014.
  8. Mike took a lantern, a crust of bread and a big sword and spelunked into the darkest dungeons filled with stinky, squelchy muck and rewrote the showfor code.
  9. We reworked our search code to handle multiple indexes, though we haven't taken advantage of that, yet.
  10. We switched deployment to use Dennis to lint all translated strings before pushing them to production. This has almost assuredly saved us from production fires. I hated those kinds of fires. Hooray for Dennis!
  11. We wrote and switched to Ernest for sprint planning and coordination.
  12. We overhauled everything to add support for Persona authentication, but had to push off deployment indefinitely because of problems with Persona which are being ironed out by the Persona team.
  13. We added an escalation system for questions that haven't received a response in x hours for some positive value of x that is still in flux.
  14. We ditched Highcharts.
  15. We wrote a command-line deployer which tells us exactly what's going out and tells New Relic, too. This gives us a much better idea of what we're deploying and how it affected the site afterwards. This command-line deployer is named chief-james in honor of James who has moved on to greener and well measured pastures.
  16. We added a bunch of new metrics, dashboards, history pages, activity pages, icons, bicons, landing pages, take-off pages, topics, subtopics, toe picks and all kinds of stuff.

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

w00t for 2013!

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


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


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!

Sun, 24 Nov 2013

pyvideo status: November 24th, 2013

What is pyvideo.org

pyvideo.org is an index of Python-related conference and user-group videos on the Internet. Saw a session you liked and want to share it? It's likely you can find it, watch it, and share it with pyvideo.org.


Lot of stuff has happened since the last status report, but there are four things of note:

  1. Sheila is now a co-admin of pyvideo.org. She has been for a couple of months. I need to update the site to reflect this.

    I'm really psyched about this. It's a ton of work and I'm just not managing it well. Splitting the work should make it more manageable.

  2. Back in July, Sheila poked me about a tweet Jesse wrote suggesting Rackspace was interested in sponsoring Open Source projects. She contacted Jesse and set everything up.

    I'm psyched that Rackspace agreed to sponsor pyvideo.org by providing free hosting. Several months later, I moved pyvideo.org from where it was before to a vm at Rackspace.

    I'm really excited about this! It makes a bunch of problems that I was trying to figure out what to do about go away.

    Thank you, Rackspace!

    I need to update the site to reflect this.

  3. Sheila discovered that blip.tv was expiring a bunch of accounts that held conference videos and that those videos would go away. She and I scrambled to download all the files from blip and move them to Rackspace cloudfiles. It's about 600 videos and around 250gb of data.

    In the process of doing that, we saved videos for DjangoCon EU 2010, DjangoCon EU 2011 and PyGotham 2012. I added these to pyvideo.org today. These videos have pages that are stubs with no metadata. I've got that in my queue of things to fix.

    Also, the thumbnails for all the videos on blip.tv are on my laptop which isn't very helpful. I need to move those and update the videos in pyvideo.org.

    As a side note, if we didn't have hosting from Rackspace, we'd have been totally screwed. Thank you, Jesse Noller and Rackspace!

  4. I've been working on the richard codebase fixing architectural problems, reducing the complexities and trying to clean it up so it's in a better state. That work is almost done. When it is, I'll update pyvideo.org with the new site. At this rate, I think I can finish the work this year, but that assumes there aren't any more emergencies.

  5. I've been thinking about how to build a better communication channel for pyvideo.org so people can more easily follow what's going on so they can act on things they're interested in.

    pyvideo.org has a "site news" section. It's a pain in the ass to use and it's not syndicated anywhere and it's likely no one sees it.

    Blogging status reports like this on my blog is better, but I don't think my blog is very widely read. Making my blog more widely-read seems like a lot of work and I'm not sure I can do it effectively anyhow.

    So I've decided to ditch the "site news" section of pyvideo.org and switch to Twitter. I started a @PyvideoOrg account.

    I'll tweet site updates, calls for help and newly posted conferences. I'm tossing around tweeting new videos when they get posted, but videos tend to get posted in huge batches and getting > 40 tweets all at once is a total drag. I'll have to think about that some more.

    Follow @PyvideoOrg if you're interested! Also, feel free to tweet at that account.

    I need to update the site to reflect this.

Also, in my life things are pretty crazy. I have a new kid and juggling everything was impossible for a while. I think that should easy up now and I can spend more time on pyvideo.org going forward.

That's the state of things!

Also, thank you thank you thank you thank you Rackspace!