Common-voice: Today's Progress - clarification

Created on 7 Nov 2018  路  9Comments  路  Source: mozilla/common-voice

These headings have caused some confusion within our community, as they can give the impression of activity within the community itself. I wish... ;-)
I'd like to suggest a change: Today's Progress in All Languages
This would be clearer, although it takes more space.
Thanks!

Investigate

All 9 comments

I can see how it might be misleading. Another option would be to only show the currently selected language's progress. wdyt @mbransn?

That would be wondeful! It would enable us to encourage paricipation by our local communities. I'd keep 1200 as a target.

I agree that being able to have the progress for the selected language would be more motivating to me than the global one.

A possible issue with this is that for languages with low volumes of contributions, it might show a lack of activity and discourage people if the objective stays as high as 1200 per day.

Nevertheless, if the objective is scaled, then it might be really encouraging as the user could really feel like having an impact, as its contributions would have a large impact on the objective.

Thanks for the loop in @Gregoor -- it's definitely UX intent that Today's Progress reflect the language the site is localized to. Let's make it happen (when you have bandwidth) and apologies for missing this in our flurry of early SEP design QA.

I'm in 100% agreement that we'll want to eventually scale the daily goal based on each language's progress capacity. Starting with 1200 recordings and 2400 validations for each launched language will still be best baseline to test activity level though. I have a hypothesis that our current build is giving people too much sense of accomplishment as it isn't accurately reflecting each language's progress.

Looking forward to seeing how this fix changes motivation patterns!

If I can add a suggestion on adapting the goal, I think it should often be adapted even inside a language, so it matches the participation of contributors.

What I mean is, we should aim at having an adaptative goal for the languages in order to adapt to the increase (or potential decrease) of contributions per day.

If the goal stays high and people stop contributing, remaining contributors could struggle to get the goal done and it might be frustrating to them.
On the other hand, a low goal can encourage people to think like "It's ok, we already got today's goal" which might not relieve their full potential.

I understand it might be hard to evaluate on each day what could be a reasonable goal for each language, so I suggest the use of an automatic process like an Exponentially Weighted Average based on contributions of the past few days .

The idea is to make an average of the past few days while giving more importance to the youngest ones. Setting the goal to something like 80% or 90% of this average could represent a challenging, yet still reachable goal.

If I can add a suggestion on adapting the goal, I think it should often be adapted even inside a language, so it matches the participation of contributors.

@LucSalommez yes, agreed. :) And your outlined method recommendation is interesting, definitely worth diving into deeper w/ @Gregoor. For iterative purposes I recommend we break this out into steps though:
1) Make Today's Progress reflect localized language and give all languages the same baseline goals (1200 recordings / 2400 validations) [this issue]
2) Create a method for scaling up from that baseline as languages prove more active [new issue]
3) Investigate an automation process for averaging daily language goals based on language interaction metrics, regardless of interaction level (low or high) [new issue]

Of course, if anyone has the ability to help build these features, the help is always appreciated. :) @Gregoor will leave this issue to you for break out and triaging as you see fit (assuming you agree with what I've written above of course 馃槵).

That sounds great, it would be usefull as an encouragement to contributors. Great!

In the meanwhile, could the heading be changed from Today's Progress to Today's Progress in All Languages, to clarify what the heading means and avoid confusion?

Thanks

Hello @Gregoor ,

I tried to setup the repo but had troubles with it so I can鈥檛 make a pull request.
Anyway, the average function I have proposed earlier is very simple to write and can be done in only a few lines of codes.

Here is an example of implementation :

// Number of days we want to average
const nbDaysToAvg = 10

// Compute the new average considering the old one and the new value
function calcNewContribAvg(oldAvg, newNbContrib)
{
  // The number of days must be a strictly positive number, preferrably integer
  if (nbDaysToAvg <= 0)
  {
    return (oldAvg);
  }

  // Compute the weight based on the number of days we want to average
  const weight = 1 - (1 / nbDaysToAvg)
  const newAvg = weight * oldAvg + (1 - weight) * newNbContrib

  return (newAvg)
}

It can be tested for example with something like this :

/* ---------------------------- TEST CODE ----------------------------------- */

// Current average of contributions based on the past nbDaysToAvg days
let currentAvg = 1200

for (i = 0; i < 50; i++)
{
  let newNbContrib = 1200 + 50 * i
  currentAvg = calcNewContribAvg(currentAvg, newNbContrib)
  console.log("newNbContrib : " + newNbContrib)
  console.log("currentAvg : " + currentAvg)
  console.log("----------------------------")
}

The function in itself takes the old average value and the new value to integrate in the average, and return the new average value.

Weights are automatically calculated based on the number of past days we want to be averaging, which is the nbDaysToAvg variable.

By default I have set this to 10 days but it can be changed. I also declared this variable outside of the function but you could integrate it in the function header if you prefer.

The proposed usage of this function is to compute everyday the new contribution goal.
You just have to call the function with the current day鈥檚 number of contribution and last average value.

You can then derive this value to compute the goal. I proposed to set it to 90% of the current average, in order to have something challenging but still reachable.

This is not a big contribution but hope it can buy you a few minutes.

Thanks lots @LucSalommez and I'm sorry to hear that setup wasn't straightforward. If you still remember what issues came up, would you mind posting them? I see a non-significant number of people are having setup-issues and I would like to make that whole process simpler.

I'd personally propose something like 110%, to have a forcing function for increased contribution. Though that rests on the assumption that people are more motivated to reach the final percentages than they are to go above and over 100%.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

kenrick95 picture kenrick95  路  4Comments

ivonnekn picture ivonnekn  路  4Comments

mbransn picture mbransn  路  5Comments

Djfe picture Djfe  路  5Comments

mbebenita picture mbebenita  路  3Comments