User:Timothyandrew~mediawikiwiki/GSOC 2012 Proposal

Identity
Name: Timothy Andrew Email: mail@timothyandrew.net Project title: Who's Been Awesome?

Contact/working info
Timezone: UTC/GMT +5:30 hours Typical working hours: 10am to 6pm IRC or IM networks/handle(s): mail@timothyandrew.net on Google Talk, and @timothyandrew on Twitter

Project summary
This project is based on the Who's Been Awesome? idea, suggested by James Alexander, who has also offered to mentor.

The idea behind this project is to provide some sort of recognition or reward to active editors of the community, by allowing other users of that wiki to send them a message praising them for their contributions, as well as a badge of some sort. Since WikiLove already exists for a similar sort of functionality, I thought that it'd be redundant to re-create an entire workflow from scratch. Ideally, a workflow that ties into WikiLove will be more intuitive for the user.

Any active member of the community will be presented a link saying ''Know someone Awesome on this Wiki? Let them know!''. Clicking it brings up the WikiLove popup, but with an extra category called Who's Been Awesome?, which allows you to pick from a number of special badges, as well as write a message praising the user in question. The popup must also contain a way for the user to name the recipient of the reward.

Once the message has been sent, the recipient gets a notification (either an email or even as a MoodBar popup) of the message. The message & badge are also stored server-side, and can be accessed using a public API. This lets all the users of the wiki know Who's Been Awesome on that wiki.

For example, the homepage could always contain a section presenting a randomly chosen recipient of a Who's Been Awesome? message, so regular users of the Wiki have a chance to recognize the hard-working editors behind it. We can add a Special Page to list all the recipients of this reward. This API could also be used internally to send the recipients tangible rewards, such as merchandise.

The link to start the process of nominating someone awesome should only be displayed to active members of the community, to discourage spam. What criteria do we use to determine what constitutes an active member?


 * The simplest way would be to display the link when the user has completed a certain number of edits (the idea summary says 100).
 * The number of edits necessary may also be generated heuristically, based on the average edits per user on that particular wiki. This ensures that low-activity wikis aren't left out.

We can use similar criteria to determine a list of recipients that this reward can go to.

Required deliverables
The final extension should:
 * Determine if the current user is eligible to send a Who's Been Awesome? reward based on some selection criteria, probably determined dynamically.
 * Display a link to the eligible user allowing them to start the process of sending this reward.
 * Determine a list of users that are eligible to receive the reward, again based on some selection criteria.
 * Hook into WikiLove to create a new category for Who's Been Awesome rewards.
 * Create an API to fetch recipients of the award.
 * Create a Page listing all recipients of the award that consumes the above API.

If time permits
The final extension could:
 * Pick a random recipient of the award, and display their award on the home page of the wiki.

Project schedule

 * April 24 - May 27: "Ramp Up Period" Getting up to speed with MediaWiki technologies and processes. Discuss potential questions about the feature with the mentor, and arrive at a final conclusion regarding the potential design of the feature. Brush up on PHP (no real-world experience) and jQuery.
 * May 28 - June 8 - Temporary gap due to unavoidable semester examinations at college. Will continue to have discussions and respond to email during this time.
 * June 9 - July 16 - Main development work will happen at this time, will keep mentor up to date via email.
 * July 17 - August 13 - Code review, documentation and testing.
 * August 13 - August 20 - Final touch-ups, pencils down on project.

About you
I'm a 21-year-old student from Bangalore, India. I'm currently studying Computer Science Engineering at CMR Institute of Technology. I've never worked on any open-source project, primarily because I was too overwhelmed to know where or how to begin. For me, GSOC is the ideal opportunity to start out in this area, and I hope it continues well after GSOC has completed.

The bulk of the users of any wiki have no way of recognizing, or even knowing the people who work to bring them that content. Most don't stop to consider that there are people actively editing and maintaining that content! For me, this project is a way to help solve that problem, by bringing the people responsible for creating & maintaining front-and-center, so the actual users of the wiki can appreciate the work that has gone in to creating it.

Participation
Source code will be committed regularly to the Mediawiki Git repository. I will be logged-on to the IRC room as much as I can, even when I'm not working on the project. I'm very responsive to emails, since I'm almost always connected to the Web, allowing updates to flow in both directions quite instantly. I will use a User Subpage to publish that status of the project, as well as testing information eventually. I work best when expectations are clearly laid out, and I'm given a reasonable amount of freedom to experiment.

Past open source experience
I have open sourced all the code I've written here: http://github.com/timothyandrew

However, this will my first experience contributing code to an actual open-source organization.