Foundation/Metrics/Contributor Dashboard: Difference between revisions

 
(14 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{admon/note|View the [[Foundation/Metrics/Contributor_Dashboard/Status | Status Tracking Working Document]] to follow progress on this project. This planning document will not be updated regularly, though it's a useful record. }}
The ‘Contributors Dashboard’ is the Mozilla Foundation’s top metrics priority for the start of 2014.  
The ‘Contributors Dashboard’ is the Mozilla Foundation’s top metrics priority for the start of 2014.  


Line 8: Line 10:


== What is a contributor? ==
== What is a contributor? ==
For anyone reading this document who is not as close to Mozilla terminology, ‘Contributor’ is the name given to people who go ‘above and beyond’ in the actions they take to support Mozilla. These are the people who make the Mozilla community what it is. Contribution is not a single thing, and there are infinite levels of possible ways to contribute to Mozilla, but for the sake of metrics, we’re going to count the number of people who take one of an agreed list of actions.  
For anyone reading this document who is not embedded Mozilla terminology, ‘Contributor’ is the name given to people who take significant actions to support our projects. These are the people who make the Mozilla community what it is.  
 
Contribution is not a single thing, and there are infinite levels of possible ways to contribute to Mozilla, but for the sake of metrics, we’re going to count the number of people who take one of an agreed list of actions as Contributors.
 
In metrics terms, we are treating contribution as a threshold people can pass, though in practice we know it is much more complex than this.  


In metrics terms, we are treating contribution as a threshold people can pass, though in practice we know it is much more complex than this. We believe that counting at this threshold is the most useful metric for us to work with to focus our efforts to build the community.
We believe that counting the number of people to cross this threshold is the most useful metric for us to work with to focus our efforts to build the community.


For some background on the label ‘Contributor’ and other Mozilla terminology see these blog posts:  
For some background on the label ‘Contributor’ and other Mozilla terminology see these blog posts:  
Line 16: Line 22:
* http://davidwboswell.wordpress.com/2013/11/06/what-does-mozillian-mean/
* http://davidwboswell.wordpress.com/2013/11/06/what-does-mozillian-mean/


For the Mozilla Foundation specific dashboard that this plan relates too, our Contributor criteria is aligned with the Active Contributor and Core Contributor levels of engagement in David Boswell's blog posts. We are not sub-dividing types of Contributor (at least not for now).
For the Mozilla Foundation dashboard that this plan relates too, our Contributor criteria is aligned with the Active Contributor and Core Contributor levels of engagement in David Boswell's blog posts. We are not sub-dividing types of Contributor (at least not for now).


See the "sniff-test" later in this document for specific criteria.
See the "sniff-test" later in this document for specific criteria.


== Why do we need a contributor dashboard? ==
== Why do we need a contributor dashboard? ==
We will measure, test and optimize all sorts of metrics in order to understand and improve the impact of our actions, but the agreed number that matters above all others for the Mozilla Foundation is ‘Number of Active Contributors’.
We will measure, test and optimize all sorts of metrics across our products and programs in order to improve our impact, but the agreed number that matters above all others for the Mozilla Foundation is ‘Number of Active Contributors’.


* Our key assumption is that the number of active contributors will only grow if we are ‘doing things right’ across the board.
* Our key assumption is that the number of active contributors will only grow if we are ‘doing things right’ across the board.


This is a powerful proxy KPI to measure the combined effectiveness of all the different things we work on, and how well we collaborate and embrace the wider Mozillian community.
This is a proxy KPI to measure the combined effectiveness of all the different things we work on. Our products, our processes, our story, our mission and our community building all have to align for this number to go up.


It will continually remind us to ask the question:  
It will continually remind us to ask the question:  
* Are we working in a way that best enables the community, and in turn supports the mission?
* Are we working in a way that best enables the community?


=== The Mozilla Foundation’s specific dashboard needs ===
=== The Mozilla Foundation’s specific dashboard needs ===
The Mozilla Foundation has a specific goal for 2014 to ship* 10,000 Contributors. There are also targets within individual teams to break this target down further. We need a means of measuring how well we are doing against this target, and we need this information early in the year so we can see if we are trending towards the target, and which of our activities are most effective at recruiting Contributors. Joining up our data and making this visible across the Foundation will help us to make better decisions.


''<nowiki>*</nowiki> “Ship” is useful internal parlance to focus our activities, but “work with”/“recruit”/“engage”/“enable” are a reasonable fit to explain what we are doing. I’m cautious with the language around this which can sometimes make our community sound more passive than they are.''
* The Mozilla Foundation has a specific goal for 2014 to engage 10,000 Contributors.
* There are also targets within individual teams to break this target down further.
 
We need:
* to see how well we are doing against this target
* to see this early enough in the year to spot trends and make changes
* to know which of our activities are most effective at recruiting new Contributors
 
Making this information visible can help us make more effective decisions.


== What is the end goal? ==
== What is the end goal? ==
Line 51: Line 64:
== How are we going to tackle this? ==
== How are we going to tackle this? ==


=== 1. Find the ‘single source of truth’ ===
=== PLAN A: Find the ‘single source of truth’ ===
* Work with MoCo teams who are tackling the same problem to find a single place to join up this data. The most likely candidates at this time are:
* Work with MoCo teams who are tackling the same problem to find a single place to join up this data. The most likely candidates at this time are:
** Mozilla Contributor Badges
** Mozilla Contributor Badges
*** If all contribution activity is acknowledged with a badge, we potentially have a central place to count contribution activity
*** If all contribution activity is acknowledged with a badge, we potentially have a central place to count contribution activity
** Blackhole (final name TBC) & MoCo BI Data Warehouse
** Project Baloo
*** These existing projects have already invested time in tackling the data problem and are merging in some form. Further info here: https://wiki.mozilla.org/Contribute/Systems
*** is a collaborative effort between the Data and BI Services and Community Building team to create a contribution tracking system for Mozilla: https://wiki.mozilla.org/Baloo


We will actively support both of these projects, and anticipate that further down the line that one of these projects, or something similar will form the ‘single source of truth’ database that will power our Contributor Dashboard.  
We will actively support both of these projects, and anticipate that further down the line that one of these projects, or something similar will form the ‘single source of truth’ database that will power our Contributor Dashboard.  


However, we are not going to wait for the perfect end-goal datastore before building out the other components that will be needed for our dashboard. We are going to start work right away on the front-end of our dashboard, and also the queries that will extract contribution activity from our existing scattered databases. These components will be built with the intention of re-use with the end-goal datastore, but can also be wired up now to form an interim solution that will give the Foundation partial visibility of Contributor numbers earlier in the year.
=== PLAN B: Interim dashboard ===
 
Rather than wait for the perfect end-goal datastore (plan A), we have started hooking together things that will give us insights and trends about Contribution numbers in the meantime.
 
These components will be built with the intention of re-use with Plan A.


=== Components to build now ===
=== Interim dashboard components ===


==== 2. Front-end(s) ([http://adamlofting.github.io/mofo-contributors-dashboard/ Demo]) ====
==== 1. Front-end(s) ====
* Usable for cross mofo and at mofo team level dashboards
STATUS: ([http://adamlofting.github.io/mofo-contributors-dashboard/ Front-end V1]) is ready.
* Single HTML page for screens (also suitable for display on screens in offices)
 
* Responsive for mobile (though not single screen)
* Usable for all MoFo and also at MoFo team level dashboards
* D3 for graphs
* Could be re-used with Plan A
* A route for external viewers to find out what we mean by contributor and the story behind the dashboard
* Source code is here: https://github.com/adamlofting/mofo-contributors-dashboard
* Will be used with the final datastore
 
* TEST: [http://adamlofting.github.io/mofo-contributors-dashboard/ Prototype is here]
==== 2. API Spec for buckets of data ====
STATUS: ([https://docs.google.com/a/mozillafoundation.org/document/d/16Sas-dbBzSftWqacYhFRojjXLCkAXu6h2XxbkfALG-Q/edit# API Spec V1]) is ready


==== 3. Data queries ====
* Responsibility for extracting contributor counts from systems will sit with each of the teams in the Foundation
* Responsibility for extracting contributor counts from systems will sit with each of the teams in the Foundation
** Cross-team collaboration will save time where there are shared datastores
* Adam to work on datastores shared between teams (github, transifex, etc)
* We can work through these in priority of where the biggest number of contributors sit
* We are working through these in priority of where the biggest number of contributors sit
* These queries will extract contributor counts for now, but should be re-usable later to extract raw contribution data and to feed into the ‘single source of truth’ datastore
* These queries will extract contributor counts for now, but should be re-usable later to extract raw contribution data and to feed into Plan A
* API SPEC: [https://docs.google.com/a/mozillafoundation.org/document/d/16Sas-dbBzSftWqacYhFRojjXLCkAXu6h2XxbkfALG-Q/edit# In development here (contribution welcome)]
 
==== 3. Datastore for aggregate numbers ====
STATUS: ([http://aggredash.herokuapp.com/api/mofo/2014 Aggredash V1]) is ready, and feeding the dashboard front-end


==== 4. Datastore for aggregate numbers ====
* This is the back-end to the interim dashboard
* This will be the short-term back-end to our dashboards
* It joins up the counts from our existing data sources
* A place to join up the counts from our existing data sources
* Stores aggregate numbers, not raw contribution activity
* Stores aggregate numbers, not raw contribution activity
* This will be replaced by the ‘single source of truth’ datastore in the long run
* No re-use value for Plan A, but key to making the interim dashboard work
* Expose the numbers via an API to use with the Front-end, and to enable others to build on top of this
* The long game is to replace this with Plan A
 
* Source code is here: https://github.com/adamlofting/aggredash
==== 5. Datastore for ad-hoc activities (TBC) ====
* I suspect across the teams there may be ad-hoc contribution activity we want to count that isn’t currently logged somewhere
* If this is true, and these numbers are small, we can build a simple single place to log these cross-team that can feed into the dashboard numbers
* I'm imagining something at the “log these in a spreadsheet” level of input (but addressing our PII requirements)
* Adam to identify if this is needed, and implement


== Querying our data ==
==== 4. Datastore for ad-hoc activities ====
STATUS: Built but needs security review before use ([http://adhoctribution.herokuapp.com Preview V1])


We want to report on the Number of Active Contributors over time, along with Number of New Contributors in a given time.
* Across the MoFo teams there is ad-hoc contribution activity we want to count that isn’t currently logged somewhere
* Many of these numbers are small (5 people here, 10 people there, etc)
* This will be simple single cross-team place to log these that can feed into the dashboard numbers


The query will be:
==== 5. Extract and reformat Github data ====
STATUS: ([http://gitribution.herokuapp.com/api/?date=2013-7-20&team=webmaker Gitribution V1]) is ready


* For date X, give me:
* Source code: https://github.com/adamlofting/gitribution
** The number of unique contributors in the past 12 months
*** The number of those who contributed for the first time in the last 7 days
 
These will be logged in the aggregate datastore against:  
* a mofo team name (e.g. “OpenNews”)
* an activity description (e.g. “Hosted a maker party event”)
* an activity bucket (e.g. “Translation” or “Code”)
** we will use these to group up similar activity types for use in the dashboard


== MoFo contribution criteria ==
== MoFo contribution criteria ==
What is or isn’t counted as contribution activity will be decided individually by each team.  
What is or isn’t counted as contribution activity will be decided individually by each team. UPDATE: here is the [https://wiki.mozilla.org/Foundation/Metrics/Contributor_Dashboard/Who list of contributor actions from each team].


But, in order to normalise this across MoFo so that our dashboard is meaningful, we have defined this generic set of guidelines. These are not hard-rules, but form a good ‘sniff-test’ as to whether an activity should be counted:
But, in order to normalise this across MoFo so that our dashboard is meaningful, we have defined this generic set of guidelines. These are not hard-rules, but form a good ‘sniff-test’ as to whether an activity should be counted:
Line 119: Line 128:
* '''Knowingly furthering the work of MoFo''', or one of our programs
* '''Knowingly furthering the work of MoFo''', or one of our programs
* '''Creating''' rather than consuming
* '''Creating''' rather than consuming
* '''Doing''' rather than talking about doing
* '''Doing''' something to contribute to Mozilla, rather than saying 'I support Mozilla'
* ‘'''Badge worthy'''’  
* ‘'''Badge worthy'''’  
** If it’s not worth 'badging', was it a meaningful contribution?
** If it’s not worth 'badging', was it a meaningful contribution?
Line 140: Line 149:


The contributor conversion points project can be found here: https://wiki.mozilla.org/Contribute/Conversion_points
The contributor conversion points project can be found here: https://wiki.mozilla.org/Contribute/Conversion_points
== Timetable ==
==== End of Feb ====
* Working front end demo with dummy data
* Ready for Mar board meeting
==== End of Mar ====
* Significant chunk of contributor data feeding live into the dashboard
* This will not be de-deduped
* Potential margin-of-error to be clearly displayed on dashboard
Confirmed users
402

edits