User:Sarveshgpt1991/WIE

Wikimedia Identities Editor
Public URL: Bugzilla Report:
 * (https://www.mediawiki.org/w/index.php?title=User:Sarveshgpt1991/WIE)
 * (https://bugzilla.wikimedia.org/show_bug.cgi?id=58585)

Announcement:
 * (http://lists.wikimedia.org/pipermail/wikitech-l/2014-March/075290.html)

Name and contact information
Name:
 * Sarvesh Gupta
 * Sarvesh Gupta

Email:
 * sarvesh.onlyme@gmail.com or sarveshgpt1991@yahoo.com
 * sarvesh.onlyme@gmail.com or sarveshgpt1991@yahoo.com

IRC or IM networks/handle(s):
 * s1991
 * s1991

Location:
 * Roorkee, India
 * Roorkee, India

Timezone:
 * Kolkata, INDIA, UTC+5:30
 * Kolkata, INDIA, UTC+5:30

Typical working hours:
 * 1pm to 2am untill 20th July, 5pm to 2am after 20th July
 * 1pm to 2am untill 20th July, 5pm to 2am after 20th July

Synopsis
This project was thought up for providing a way to contributors for update or make possible changes to their user profile by providing a web interface. For now contributor of MediaWiki has to go through a process which consumes more time in updating information to database for updating their profile due to unavailability of web interface, so it is a kind of compulsion for contributors to have a web interface which facilitates them to have an easy access to their profile. Moreover, MediaWiki Community matrix unfortunately missing a proper method of syncing multiple identities of a contributor, so this project also aims to merge the data or information from multiple contributor's account to one single place.

What it means to accomplish?
Extends the functionality of MediaWiki-Dashboard

Step 1: Providing contributors to authenticate using OAuth(or other related technology) or creating a new account.

Step 2: Presenting information to contributor member of MediaWiki Community Metrics.

Step 3: Providing a interface to update their information, add new identities and so on.

Step 4: Allow contributors to search for their profile using some sort of identity.

Step 5: Allow contributors to sync or merge with their existing multiple identities or account based on email, localization, name etc.

How it will benefit MediaWiki or Wikimedia projects such as Mediawiki Community Metrics?

 * It will help improving the information about Contributor's activity in tech Community metrics for example here.
 * It make less cumbersome for contributors for submitting and editing their data by providing a web interface.
 * It'll provide an search method for identities to further sync contributor's account.

Possible mentor

 * Alvaro del Castillo
 * Daniel Izquierdo

Deliverables
The main deliverable will be a working web application for contributors to manage community identity.

Required deliverables

 * The web interface of each and every page of the web application required (milestone 1)
 * The developed back-end part with implementation of templates(front-end) part to it (milestone 2)
 * Optimized search facility with autocomplete feature. User can search and filter the data or information (milestone 3)
 * Implementation of syncing multiple accounts (milestone 4)
 * Implementation of OAuth or similar authentication techniques. (milestone 5)

Optional deliverables

 * An admin dashboard, so that admin has rights over contributor's activity, for example: if admin feels like merging two identities of any contributor she may merge, latter a message to that particular contributor could be sent saying "those following identities have been merge" or something.

Envisioning phase (May 1 - May 18)

 * Remain in constant touch with my mentor(s) and community.
 * Getting myself familiarize with community and development environment.
 * Study required docs.
 * Fix some bugs along the way and get my hands dirty.

Community bonding period(2 weeks, May 19 - June 1)

 * Further discussion with my mentor(s) and my community about the prototype and its implementation
 * Make a Roadmap or workflow for development phase

Front-end part (2 weeks, June 1 - June 15) - Milestone-1

 * Design UX, which will be implemented as templates in Django framework.
 * Login page or Authentication provider
 * Contributor's profile page with prototypical implementation of search tools
 * Page to merge multiple accounts
 * This will require use of HTML, CSS, javaScript or may be Ajax

Back-end part (2 weeks, June 16 - June 29) - Milestone-2

 * Setting up Django project
 * Modeling database required to store the contributor's information.
 * Implement the back-end
 * Contributors to view her/his profile
 * Updating information and identities.
 * In parallel to above step, syncing front-end and back-end parts by implementing Django templates
 * This will require use of Django framework, python, javaScript and Ajax

Optimized search and filter (1 week, June 30 - July 6) - Milestone-3

 * Investigating search options
 * Discussing with mentor about search techniques that can be implemented, such as django libraries aiding to search techniques such as Woosh or Haytack.
 * Understanding the library that needs to be implement.
 * Script for search and filter implementation in which contributor can search for his/her other existing identities.
 * Syncing it with front-end.
 * This will require use of python, Ajax and javascript.

Merge accounts (2 weeks, July 7 - July 20) - Milestone-4

 * Script for merging and syncing multiple contributor's profile.
 * Testing this over a sample database.

OAuth Implementation (1 week, July 21 - July 27) - Milestone-5

 * Study the OAuth implementation process already implemented in Wikimedia's projects.
 * Implementing OAuth to this project.

Deploying phase (2 weeks, July 28 - August 10)

 * Code Review
 * Conduct code review by myself, then mentor(s)
 * Inact information gained by code review
 * Testing
 * Further unit and integration testing
 * Conduct several rounds of testing for real-world users.
 * Documentation
 * Write approach program and functional descriptions
 * Document deployment and testing.

Pencil Down

 * August 11: Soft Pencil down - A weak for final polishing
 * August 18: Firm Pencil down
 * Submission to Google

Communication of progress

 * IRC channel: I'll stay online on IRC at in freenode, in my working hours.


 * Email: I will make several check points (within 24 hours) for reading emails and replying as soon as possible.
 * Mailing list: metrics-grimoire will be used to communicate progress
 * Blog: Though I've need started blogging, I would surely try to maintain a blog throughout the project.

Publishing Source code

 * Github

Where I would turn for help?
Amenities: I understand, there have been power and internet issues with students from India in past. I've a stable and always-on internet connection and live in a housing society with 24-hours power backup, so that will not be a problem.
 * Solve by myself: Read documentation, search online, etc
 * Seek helps from community: Discuss on IRC, mailing list or mentor(s).
 * Seek helps from outside the community: Lecturers, skilled friends, etc.

About you
I'm Sarvesh Gupta, third year student at Indian Institute of Technology - Roorkee with major Computer Science. I enjoy trying out and learning new things related to web technology.

I love coding and experienced with python, Django, php, javascript, jQuery, mysql, coffescript, MVC architectures and I always do keep working on some project, here's my Github profile.

I want to go for organisation which is mostly used by people. Also I would feel better is my project could work beyond GSoC and used by as many users as possible.

Lastly, I promise to work for at least 40 hr. per week. No other obligations interfere throughout GSoC project.

Past experience
Wikimedia is my second encounter with Open Source. I've fix some bugs(#1, #2, #3) for Mozilla organization related to Automation and Tools. My commits can be seen here with username 'sarvesh-onlyme'.

For now, I'm planning to contribute for MediaWiki through GSoC and even after GSoC.

Links

 * https://github.com/metricsgrimoire
 * http://metricsgrimoire.github.io
 * []
 * http://korma.wmflabs.org
 * https://www.mediawiki.org/wiki/Community_metrics
 * http://demo.bitergia.com/doc/