commons-app / apps-android-commons

The Wikimedia Commons Android app allows users to upload pictures from their Android phone/tablet to Wikimedia Commons
https://commons-app.github.io/
Apache License 2.0
1.03k stars 1.23k forks source link

Leaderboard #2074

Closed nicolas-raoul closed 4 years ago

nicolas-raoul commented 5 years ago

Need

From the research paper "Sharing small pieces of the world": Increasing and broadening participation in Wikimedia Commons:

Respondents also expressed a desire to compete with others “to be the first to do something” and some said that the “social component” was missing altogether

A leaderboard would motivate many people, it seems.

Feature description

The score could reuse some numbers from achievements, but should only count edits done with the mobile app, because otherwise Vicuna/etc users will dominate the top of the leaderboard even if they don't use the mobile app.

Actually, I suggest listing in the leaderboard only the users who have ever opened the achievements activity. We must keep track of that information server-side. So the leaderboard would only list app users who have an interest in this kind of game.

Tapping the name of a user in the leaderboard should open the gallery of that user's pictures, probably as a browser URL for now. Knowing they are being watched by their peers will probably reduce the temptation to "cheat" (for instance by uploading 1000 pictures of the same spoon)

The user's name should be highligthed. Random idea: The length of the leaderboard could be dynamic, for instance if I am 3rd it could be 10 people, but if I am 13rd it could be 20 people. Or just make more people appear when scrolling down.

There could be weekly (last 30 days) rankings, yearly (last 365 days) rankings, all-time rankings.

To make it more visually attractive, I suggest using as a kind of avatar the user's most successful picture (the one which is used the most in the wikipedias/etc, or a random one if the user's pictures are not used yet anywhere). Random idea: Users like to personalize their avatar, so we could also offer the option to select one of the user's uploads as an avatar picture, but that may lead to more selfies, so this option could be an privilege to unlock (only users who are above level 5 for instance).

There is a lot of data to show, so we have to think the UI carefully. Here is just an idea: leaderboard The vegetable is a placeholder for the user's avatar. I forgot to write the position number (1, 2, 3, etc). It is important because I want to know whether I climbed from 37th to 36th, and counting is boring.

Implementation

The leaderboard lists should probably be calculated on the server where we currently perform achievement calculations, and cached (re-serve the same results if less old than 1 hour). The user will probably upload a few more pictures in 5 minutes and come see the leaderboard again. So we could recalculate only that user's new scores (and let the other people's scores the same until the next hour comes). In other words, only the users who keep looking at the leaderboard would have their score grow at smaller intervals than 1 hour. That 1-user-only recalculation itself should be cached something like 1 minute because a picture can not be neatly uploaded in less time, and to avoid useless server load.

The avatar miniatures (generated by mediawiki) should be cached by the app for like a month.

neslihanturan commented 4 years ago

Agree with @neslihanturan on this, how about non-swipeable (and just clickable) bottom nav?

bottom nav is also not suggested for using non app level tasks :/

neslihanturan commented 4 years ago

Also, I think Week, year, month element should also be changed. They can't be chosen all together, logically right? I would instead use a spinner https://developer.android.com/guide/topics/ui/controls/spinner

madhurgupta10 commented 4 years ago

Also, I think Week, year, month element should also be changed. They can't be chosen all together, logically right? I would instead use a spinner https://developer.android.com/guide/topics/ui/controls/spinner

Yes, we can select only one at a time. If we can use two spinners to avoid nested tabs?

sivaraam commented 4 years ago

Just a minor thing about the wording. I believe "Usage" would be better than "Used" for the tab name.

nicolas-raoul commented 4 years ago

Yes two spinners sounds good :-) First spinner: Upload/Nearby/Usage Second spinner: Week/Year/All time

sivaraam commented 4 years ago

I happened to stumble across this discussion about how "any [wiki] editor must opt-in to allow other editors to see additional statistics". I remember something about an opt-in being discussed here for the Leaderborad. Just wanted to confirm if that's correct. If yes, how would a user opt-in? Also, would there be a possibility to opt-out? 🤔

prototyperspective commented 4 months ago

Great feature, it's interesting and motivates people. However, I don't know which data is used for it, where one can see the edit count, and think that more metrics should be added – please see these and my further questions here: https://github.com/commons-app/commons-app-documentation/issues/53