User:Erangamapa/mygsoc

This is my GSoC application to participate in Google Summer of Code 2012 with Wikimedia Foundation. I am particularly interested in integrating "Who's been awesome?" to MediaWiki suggested by User:Jalexander.

Identity
Name: Eranga Mapa Email: erangamapa@gmail.com Project title: MerchTool.

Contact/working info
Timezone: UTC/GMT +5:30 hours Typical working hours: 9am to 6pm IRC or IM networks/handle(s): Both my Skype name and Freenode IRC nickname is mapahere

Project summary
This project is based on the idea proposed by User:Jalexander who offers to mentor.

MediaWiki is adopted for many Wikis where number of editors involved in writing and editing articles. But there is no proper way to allow editors to appreciate each others work. But, by integrating a Merchandise tool("Who's been awesome?" functionality) to MediaWiki, wiki editors will get a chance to reward other wiki editors who helped them in their work. After a particular user make 100 edits to a wiki, a link will be provided in the top navigation bar. User can follow this link to praise other users based on their commitments towards that wiki. Those praises will be stored and will be available publicly via an API for merchandise purposes. Apart from that they will be fed into the Moodbar Dashbord.

For this purpose I am introducing an extension called MerchTool for MediaWiki.

This extension will work based on the user data such as user name and user edits on MediaWiki. In this extension, a function hook will be created for ArticleSaveComplete event. An evaluation function will be called to check weather the user who is saving the article has done 100 or more edits. If he does, link mentioning "Know an editor who deserves a reward?" will appear in top navigation bar. This link will be loaded to navigation bar using a JQuery module.

Another JQuery module with set of pop-up boxes will be created using JQuery Overlaying. First box will appear when user clicks on "Know an editor who deserves a reward?". This box will allow the user to name a Wiki editor, type a praise for him and submit. Or else he can click on no thanks button and move to another box which includes three more options for user to select(See UI mock-ups in Any other info section in this article). Submitted praises will be saved in a MediaWiki database table using an Ajax call. Those praises will be shown as a table in a Special Page created in the extension.

Data collected from this extension will be available through MediaWiki web service API. It can be used to access data related to this extension and use for merchandise purposes. It will provide praises done towards a particular user and praises done by a particular user in XML format. Access will be permitted upon submitting a login query for API users. Praises collected by this extension will be published to MoodBar Dashboard using API calls internally. A check-box option will be added under types in MoodBar Dashboard to filter praises collected by MerchTool extension.

Deliverables
Extension MerchTool will be the final deliverable.

Required deliverables

 * Adding a JQuery module to load the link "Know an editor who deserves a reward?" to top navigation bar. When user moves the mouse pointer on to the link, a tool tip will appear mentioning "Click here to praise a Wikiuser who helped you". This will help to guide the user.
 * Adding a JQuery module to view required UIs. Set of popup boxes will be created in this module using JQuery Overlay. After a user click on the above mentioned link, following popup boxes will appear one by one according to user's actions.
 * As soon as user click that link, a popup box with a label,text box and a text area will appear. Label will contain a description about this MerchTool. Text box is to name users who deserve a praise. This textbox will have the AutoCompletion by using Ajax asynchronous queries. When user types first few letters of a Wiki username, suggesion list will be provide. Then user can easily select a username for praising. Text area is to write the praise. Apart from those, there will be a submit button and a "No thanks" link. By clicking the submit button, praise will be saved to a database table using an Ajax call.
 * After clicking the submit button, thanks box will appear. In that box, there will be a label containing an appreciation message for the user who praised. Then there will be a button mentioning "Back to what I was doing" which will direct that user to the Wiki page.
 * If user clicks on "No thanks" link from first popup box, another popup box will appear. It will have four buttons. One is to avoid praising this time. Other one is to let the user to praise next time when he edits an article. Other button is to hide the popup box and make the MerchTool link available. This will allow the user to praise after some time during the same session. Last button is to go back to first popup box.

User - Name of the user who got praised. Praised by - Name of the user who did the praise. Praise - Praise done by the user in Praised by coloumn. Date of Praise(If needed)
 * Special page to view praises done by users. This page will have a table containing columns
 * An API module to make available data collected by this extension. This will only give read only access to data. Data will be provided in XML format.

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.

About you
I'm a 24 year old Computer Science and Engineering undergraduate at University of Moratuwa Sri Lanka. I am passionate about open source software development. So far I have been referring Wikipedia for many purposes and was wondering about how Wikipedia works. Then I came to know about MediaWiki, a nice open source software package which energize many wikis including Wikipedia. I looked into MediaWiki architecture and explored how things happening inside it. I was amazed with its maturity. So I decided to have my first open source experience by developing an extension to MediaWiki.

Mainly I'm interested in the area of Web Application Development. My appearance to web application development by developing few web sites. Then I learned to prepare web sites using WordPress and Joomla CMSs. Lately, I went more deep into this area by developing some web applications as my university projects. Thereafter I got familiar with many web technologies such as PHP, MySQL and Javascript. Eager to leverage my classroom learning into real world experience, I joined with Monvia Sri Lankan branch, as an outsourced software developer in 2011. In there, I involved in developing a web application with Symfony PHP framework to measure production line performance of a group of garment factories. Now I am working as a Software Engineer at GlomeTec. Apart from web application development I'm interested and experienced in many other areas such as Mobile Application Development, Game Design and Artificial Intelligence.

When talking about my personality, I am a quiet and reserved person. But when get interested, I would like to share my ideas with others and listen to their opinions. During my spare time, I would like listen to music, travel and hang out with my friends. I have a higher motivation to learn and try which drives me ahead.

Participation
I prefer to be in contact with 7.00 AM to 1.00 PM according to PDT. Most of the time, I will be hanging out in Skype and willing to go with IRC if needed. I like to use mail threads for important discussions. I prefer to share my source code using Git. MediWiki sub page will be used to publish my project progress.

Past open source experience
I have developed an extension ELearnware for MediaWiki which can be used to synchronize HTML5 video with content such as rich text and images. Main purpose can be to create rich video lectures synchronized with slides. It introduces two special pages. One is an editor page to chop HTML5 videos and align content with the video. Other special page is to view edited videos synchronized with content.

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.