Taking into account feedback for my scope, it has become evident that gamification needs to be toned down a smidge and avenues for recognition is currently one of Glotpress’ weakpoints. These sets of additions will hopefully solve these problems:
Glotpress Scope Additions:
Translation Set Validators:
On a Translation Set Page, users will now be able to see validators for that specific set. The list will link to the validator’s profiles.
Implementation: With the way permissions are set up, implementing this feature should be fairly straightforward, querying permissions for the specific translation set the user is currently viewing.
User Profiles:(Not to be confused with User Dashboards)
User Profiles is the public dashboard, where other users/guests can view the user’s recent actions, active projects they are contributing to, as well as projects they are validators. Viewers of user profile can view overall translations stats (words approved, etc.), and can also specify custom filters such as dates/specific projects.
While User Dashboards focus on usability/engagement (project to shortcuts/streaks), User Profiles will focus on recognition (contributions, validator status).
All of this data will also be exposed through a JSON-api, and the profile links’ root could be customized (whilst //domain.tld/profiles/~username is the default, it can be routed to a an existing/custom profile page such as//profiles.wordpress.org/~username)
Implementation: Recent Actions explained below. For translation statistics UserMeta can work as a quick cache of translated/approved strings.
Shows the latest strings accepted, latest strings added, badges earned, etc, etc.
Implementation: There is no real way to query the ‘latest strings accepted’. Of course, we can query the latest strings modified, and when it is ‘current’, assume that it was accepted. This is the only case where a translation can be modified anyway with regards to the data access layer (and stay at current status), so it should work.
When a User’s string has been accepted, they will be notified/notifications for strings waiting for approval.
Implementation: A lightweight approach I thought of is this; Instead of storing notifications in a separate table, we would simply store the “last checked time” in user meta. We would then query actions that are made after this “last checked time”. This could also work for “waiting” translations for validators.
The only disadvantage of this of course, is that users will lose the notifications on the next request (checking one notification checks all), since the database would not check past actions anymore. This can be solved through a “view notifications for the past 2 days” sort of feature, which would then query from that day.
Gamification – Badges:
Instead of points, which would seem to be quite overreaching, I am going to take Sir Yoav’s initial idea of using badges – it can provide incentive and would also look nice on user’s profile/dashboard, while not necessarily adding heavy weight to the project.
The badges are simply based on translations that were approved – (i.e., get 5 translations approved, 15 translations approved, 50 translations approved etc. etc.)
Implementation: On a database upgrade, count all approved strings of user, and store it in user meta. From that point on, trigger approvals to increase the meta value.
Revised Milestones and deliverables schedule:
May 19 – May 25 – Creation of Basic Dashboard, Text based links
May 25 – June 5 – Statistics Tracking (string caching)
June 5 – June 15 – Work on the Notification System
June 15 – June 25 – Prettify Dashboard and Notification System.
June 25 – July 5 – Unit Testing, Gaining User Feedback, Community Interaction. Decide on possible deviations, etc.
July 5 – July 12 – Addition of Badges
July 12 – July 25 – Creation of User Profiles, Viewing recent actions
July 25 – Aug 5 – Extensive testing, Addition of Unit Tests. Leaderboards, possibly.
Aug 6 – Aug 18 – General Polish, beautify profile page