Karma

From Telepedia Meta Wiki, Telepedia's central hub
Note: this extensions is currently under development and is not available; documentation is here for its eventual release.

Karma is a custom built achievement system for Telepedia, providing a sense of reward for editors who edit and interact with our wikis. Achievements are earned on a per-wiki basis, and are not globally recognised at this moment. Achievements are earned for several actions on a wiki, such as editing, uploading, and performing functions such as patrolling edits.

Achievements should be earned in "good-faith", and users should not seek to game the system to increase their points or standing within the leaderboard. Achievements can be removed by Telepedia Staff if they feel that a user has earned this in bad faith.

Achievement Pages

The leaderboard

A user can view achievements they have earned—including the date at which they were earned and how many points they are worth—by visiting Special:Karma on their wiki. This shows a list of of earned achievements and below this, all of the achievements a user can earn and the criteria for doing so. Also listed on this page is the total number of points a user has earned.

In the right rail on Special:Achievements a user will be shown their ranking in the leaderboard for that particular wiki. This allows users to see how they stack up against other users, and by how much difference there is. To get the best possible experience the data in the leaderboard is cached for one day; this is to avoid reads to the database on every view of the leaderboard. This means that the leaderboard may be slightly out of date, but not by much.

Leaderboard

The leaderboard and the achievements article are currently closely intertwined and on the same page. As a result, a logged out user cannot view the achievements page because they have earned no achievements. Eventually, the leaderboard page will be separated out from the achievements article so that anons can view the page.

Creating an Achievement

The form for creating an achievement

There is also a second special page, Special:CreateAchievement, which allows bureaucrats to create achievements for a wiki. This is useful if some users have already earned all of the achievements—although, through good faith editing, this should take a long time as several achievements with high thresholds are provided to begin with.

Creating an achievement is currently restricted to bureaucrats to avoid having achievements created for small edit differences. When going to Special:CreateAchievement you will be provided with a form to fill out. This includes giving a title, short description, action type, number of points awarded and the number of actions needed to reach that achievement. The actions are pre-defined. Please be sensible with how many points you are allocating to an achievement; if this feature is abused, it will be restricted further. You must also give an icon for the achievement; again, please be sensible with the images. At the minute, only PNG files are allowed; there is the option to provide the URL to the image. It is preferred that you upload the image from your local machine rather than using the URL function.

Removing an achievement

An achievement can be removed from a user via the Special:InvalidateAchievement special page. One would insert the username of the user they wish to remove the achievement from, and select from the dropdown which user. Following this, the users earned achievements will be displayed. Check the achievement, or achievements, that you wish to remove and submit the form. The achievement will be marked as removed, and this will be logged to Special:Log/Karma.

You cannot restore an achievement from this page once it has been removed. An achievement can only be restored from the database.

API

We have provided API functionality for the Karma extension, which will allow users to query the Karma service for use in JavaScript and gadgets, etc. At the moment, the current entry points allow for querying:

  • A total number of points a user has earned;
  • The total number of achievements a user has earned;
  • Their position in the leaderboard;
  • Deleting of achievements—this is staff only and will return a permission error for regular users.

Full API documentation is expected to follow. Please note that at the moment, the API requires the ID of the user be used, rather than the username, but this is a known bug and hopefully will be fixed soon.

List of Achievements

Karma supports earning different types of extensions based on the activity that a user performs on the wiki. There are currently a limited number of types of achievement that a user can earn, these are earned by:

  • Editing
  • Uploading images
  • Patrolling revisions
  • Adding categories to articles.

More methods to earn achievements will become available as the feature develops based on feedback; if there is a specific type of action that you think should earn an achievement, please let us know. We'll do our best to add it into the extension—there are no promises, however, we can only add what MediaWiki makes available through its hooks.

Default Achievements

For Developers

The technical side

Due to the nature of the extension, and the fact that each action configured would lead to a database query/write, the extension heavily utilises the job queue to update the progress a user has gained towards earning an achievement. As a result of this, it is completely normal that you may not receive the alert that you have earned an achievement even if you should have earned it after an action was performed. Don't worry, the correct time that you earned the achievement will be saved, but you will only be notified that you have earned the achievement once the job has been picked up and run.

Contribution

Telepedia welcomes improvements to the Karma Achievement service by developers, or people who think that they can suggest improvements to the service. Our code is hosted on GitLab, and developers can open PR's or raise issues pertaining to the service on GitLab which will be adequately addressed. As a result, we have provided technical documentation throughout the code and also on the GitLab repository that details specifically how the extension works.