User:Shubh09/gsoc

This is my proposal for the project "Who's been awesome?" under the mentorship of James Alexander.

Identity
Name: Shubham Gupta Email: shubh09@gmail.com Project title: 'Who's been awesome?'

Contact/working info
Timezone: GMT +5:30 Typical working hours: 11:00 a.m. - 1:00 a.m. IRC or IM networks/handle(s): shubh09@gmail.com on gtalk

Project summary
This project basically involves identifying and rewarding the significant contributors to Wikipedia, chosen by the users themselves. Each page will have a Moodbar-type link on the top displaying a message like 'Know an editor who deserves a reward?' (similar to the 'Feedback about editing.' link on display now), clicking on which lets a user specify the editors he/she would like to show his/her appreciation to.

Wikipedia is a kind of site which almost entirely owes its existence to the users who use it. No one individual or organization can be expected to have the kind of information and knowledge which Wikipedia holds today - it is a cumulative contribution of the users around the world, who are kind and considerate enough to share their knowledge with others. Rewarding the users who contribute to Wikipedia and make it what it is, and honouring them publicly will surely go a long way in motivating other users to contribute, and to put their best foot forward while doing so.

Deliverables
The project, as I perceive it, is a small one. And since I have had some experience with this kind of stuff before, I hope, if given a chance, to complete it in a fairly short amount of time. I understand that one can get a true estimate of the amount of work involved in a project only when one actually sits down to do it, but here is what I expect out of it.

Required deliverables

 * The first thing to do would obviously be how to determine which users get to choose the significant contributors. It is my understanding that every user's opinion shouldn't carry equal weight - the ones who are contributors themselves and thus understand Wikipedia better should be preferred over others. As suggested by James Alexander, the link enabling one to appreciate the contributors should appear only after the user has made over, say, 100 edits.


 * The second step would be to work on the UI - displaying the link in a convenient and unobtrusive way, designing the Javascript-enabled pop-up box that would appear on clicking on the link etc. Also, the heuristics for optionally hiding the link, letting a user come back to it at some later time etc. would also have to be decided.


 * The next step would be to work on the backend. The implementation of such a thing would obviously need some changes in the database schema - for determining which user has recommended which contributor. I also propose to let the vote of a user carry some 'weight' proportional to the number of edits the user has made. So, a 'score' for a contributor would be the weighted sum of all his/her votes - which would be visible on his/her profile.

Project schedule
Week 1-2
 * Working on the UI.
 * - Writing the required JQuery module for the pop-up box.
 * - Understanding the already written code format (basically the CSS) to determine precisely what changes will need to be made.


 * Getting to understand the database better.

Week 3-5
 * Getting familiar with writing extensions for Mediawiki - which will involve studying all the conventions the code is required to follow.

Week 6-7
 * Complete the extension, if not already done in the preceding weeks.
 * Make the required changes to the database.

Week 8
 * Integrate the code.

Week 9-10
 * Testing and fixing the bugs, if any.

About you
I am a 20-year old, third-year student at Indian Institute of Technology, Delhi, pursuing a Dual Degree (B.Tech + M.Tech) in Computer Science and Engineering. It has been my constant endeavor to keep doing something or the other and trying out and learning new things. I have been actively involved in development of web-based events like online treasure hunts in technical fests being hosted by my college, among other things.

The main motivational factor which drives me for doing this project is my yearning to give something back to a site which has helped me in so many ways. I have been using Wikipedia for as long as I can remember, and have found it indispensable whenever any kind of information about any topic is required in whatever context. It would mean a lot to me if I could contribute to it in some way. (I would have contributed as an editor, but by the time I grew up, all the topics that I was knowledgeable about already had more-than-extensive Wikipedia pages on them, leaving the development of extensions such as this the only way for me to help). I browsed through all the projects Mediawiki had to offer this year, and this one appeared to me to be the one to which I could contribute most effectively.

Participation
I plan to go about doing this project in as systematic a manner as possible. An organized and well-thought-out approach is of paramount importance if one is to carry out one's task effectively, and have fun and learn at the same time. I have been going through the Mediawiki manuals for developers for over a week now, and they are quite comprehensively written. Other than the initial work-up and getting acquainted with the working environment, if I ever run into a snag, I expect to approach the mentor for this project, James Alexander for help.

Past open source experience
I don't have much experience with open source projects. The only one I have tried my hand at is an online treasure hunt building application. The basic idea behind it is generalizing the treasure hunting experience. Most online treasure hunts are 'linear' - solving level 1 leads you to level 2, solving which takes you to level 3, and so on. This one, however, is closer to the real treasure hunt, meaning that you have a start point, a target point, and multiple paths to reach the target. The code is available here: http://sourceforge.net/projects/atharva/ and the treasure hunt can be seen in action here: http://tryst-iitd.com/krypton/

I haven't had an experience with developing Mediawiki extensions yet; but one has to start somewhere. :)