User:Shubh09/gsoc

This is the template for students who want to apply to Google Summer of Code to work on MediaWiki. Students will need to file their applications via Google's Melange website starting March 26 and before April 6th. It's encouraged for students to start working on their applications as subpages of their mediawiki.org userpages as soon as possible, and to share them, get comments, and improve them in response to criticism.

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
It should be possible to break down your project into some bullet points describing particular features or milestones which can be reached individually. Consider that we may wish to roll out the system for testing while at an intermediate stage of completion, and that time estimates might vary, leaving you with more time than you expected or (more likely) a lot less -- some features can be pushed back if you end up short.

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
Try to break your deliverables into "milestones" which can be reached in sequence. Show us your estimated schedule of when you'll reach each functional milestone. Don't forget that real time may change -- leave enough buffer for your required features to be completed!

We suggest that you budget one-half to one-third of your time for merging with trunk, pre-deploy review, testing, bugfixing, documentation of course, and other integration work.

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
We don't just care about your project -- you are a person, and that matters to us! What drives you? What makes you want to make this the most awesomest wiki enhancement ever?

You don't need to write out your life story (we can read your blog if we want that), but we want to know a little about what makes you tick. Are you a Wikipedia addict wanting to make your own experience better? Did a wiki with usability problems run over your dog, and you're seeking revenge? :-) What does making this project happen mean to you?

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.)

Participation
We don't just want to know what you plan to accomplish; we want to know how. Briefly describe your work style: how you plan to communicate progress, where you plan to publish your source code while you're working, how and where you plan to ask for help. (We will tend to favor applicants that demonstrate a clear vision for what it means to be an active participant in our development community.)

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. :)

Any other info
Please add any other relevant information -- UI mockups, references to related projects, a link to your proof of concept code, whatever. There are no specific requirements, but we love to see people who love what they're doing. Show us you're excited about this project and have an interest in the background and are considering how best to make your idea work.