User:Bagariavivek/GSoC Application

Things to be added or remembered
Read watch.php in action, read watceditems.php ,read special move(maybe ) check dots and commas properly

Identity
Name: Vivek Kumar Bagaria Email: vivekee047@gmail.com Project title: WatchList => Bring revolution in the way Watchlist is used by the user

Contact/working info
Timezone: Bangalore ,India .UTC + 5:30 hours Typical working hours: 9 am to 3am IRC or IM networks/handle(s): potter on Freenode

Project summary
The main goal of the project is to revolutionize the way watchlists are used. Currently we have a only one watchlist for a user which gets long very fast and thus losing its effectiveness. My project aims to able user maintain multiple watchlists(WatchGroup) ,which will help user organize his pages effectively and prevent user from using external sources for keeping the log of the pages.

This will be very helpful for users who edit and read a lots of articles as they can group pages according to their preference using watchgroup. This will directly effect the quality of articles especially in Wikipedia as editors and readers will be able to manage their pages very effective manner.This will also prevent user to forcibly delete his articles from his watchlist to shorten it. The user need not each time go to preferences->watchlist and change their options to view their watchlist in the way they want.

Required deliverables

 * Improve the user experience to pages/articles using watchgroup.
 * To rank the groups in the list of watchgroup.
 * Provide facility to shift pages from current watchlist to the watchgroup.
 * Have required API's to access the watchgroup effectively.
 * Have some default group which will.
 * Well documented (I always do this for any size of code, learnt it the heard way)
 * Error handling

If time permits

 * Implement a nice UI for easy shift of pages from one group to another
 * Suggest the user the group among the watchgroup which he adda the new page.
 * Have a page containing the creation time of a group and relevant details
 * To view the groups from a page's point of view(to display groups to which a page belongs).

Project schedule
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.

I have official holidays from 1st may to 10th Aug.Thus after two days of enjoyment work begins

(3stMay-23rd May)Fixing design of watchgroup and interview various users ,in order to understand their needs completely. I have divided my work into two main modules

Module 1(23rd May - 9th July)
Develop required SpecialPages mentioned below After this pages can be added to watchgroup only by using the specialpages Develop actions like watch ,unwatch Pages can also be added/removed using '?action=(un)watch&group=groupname' or using '?action = watch' will redirect them to page listing out list of groups and the user will select one. Develop various API's mentioned below Pages can also be added/removed/timestamped via API's Testing and reviewing the code with other developers Implement the changes suggested by other users Final documentation of the code Merging with trunk( i currently don't know how to do this) Test the code again and make bug-fixes.
 * (23rd May - 1st June)
 * (2nd June - 8th June)
 * (9th June - 21st June)
 * (22nd June - 25th June)
 * (23rd June - 30th June, parallel with above )
 * (30th June - 1st May, will do this in parallel with the all above )
 * (1st July - 5th July )
 * (6th July - 9th July )

Module 2(10th July - 9 Aug )

 * (10th Jul - 26th Jul) Work related to shifting pages from one group to another.
 * 1) SpecialPage for shifting articles between group
 * 2) Actions for shift.Eg : ?action=watchshift& newgroup=groupname& oldgroup=groupname
 * 3) API's for shifting articles
 * (27th Jul - 31st Jul)Testing and reviewing the code
 * (1st Aug - 2nd Aug)tDocumentation of the whole code
 * (3rd Aug - 6th  Aug)Merging with trunk

From 6th Aug to 20th is buffer time which will be used to complete unfinished work and to integrate with other parts of MediaWiki.

Note:My college starts from 10th Aug, so i will be working 20hrs per week.

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?

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
My contributions to mediawiki includes number of patches:
 * 1) 35057
 * 2) 28019
 * 3) 31158
 * 4) 31239
 * 5) 35449
 * 6) 29789
 * 7) 30043

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.

Structure of the code
Display the list of all the groups and will contain information about each group Add/Remove/ChangeName - will have a table with the features mentioned.Even a raw method will be include(if time permits) Display all the pages of the given group like the way it is done for watchlist User can add/remove pages from a particular group like the way it is done for the watchlist To shift pages from one group to another(if time permits)
 * To have Specialpages for
 * 1) List of Groups(Special:WatchGroup)
 * 1) Add/remove group from the watchgroup(Special:EditWatchGroup)
 * 1) WatchList of a particular Group(Special:WatchGroup/groupname)
 * 1) Add/remove pages from a perticular group(Special:EditWatchGroup/groupname)
 * 1) To shift pages from group to another(Special:ShiftPageWatchGroup)


 * To have API's like
 * 1) list of all the groups
 * 2) list of pages from a particular group
 * 3) WatchListRSSFeed for a particular group.
 * 4) Shift pages from one group to another
 * 5) Recent changes in a particular group.
 * 6) Overall recent changes in all the groups