User:Sarveshgpt1991/WIE

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

Email:
 * sarvesh.onlyme@gmail.com(primary), sarveshgpt1991@yahoo.com
 * sarvesh.onlyme@gmail.com(primary), 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 for contributors to manage their identities, update or make possible changes to their information by providing a web interface above korma technology. Along with this develop a dashboard for admin, so that she can have control over contributor's profile and identities. For now contributor of MediaWiki has to go through a process which consumes more time in updating information to database for updating their profile and also there is not admin control due to unavailability of web interface, so it is a kind of necessary for community to have a web interface which facilitates them to have an easy access to their profile. Moreover, sortingHat is required to implement REST API and provide more precise method for identity matching, so this project also aims to improve as well as implement the sortingHat to flask framework.

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

Step 1: Develop an angularJS based UI providing contributors with authentication access to deal with their identities, affiliation.

Step 2: Presenting information to the users i.e. identities, affiliation or organizations.

Step 3: Allowing users to update their information, add new identities and so on.

Step 4: Allow contributors to search for their profile using some sort of identity and to perform actions like sync or merge with their existing multiple identities which will be handled by sortingHat.

Step 5: Work on SortingHat so that it fulfill the requirement of our project.

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 angularJS technology based web interface for our web application (milestone 1)
 * Flask (python based web-framework) based back-end part with implementation of augularJS to provide RESTful architecture (milestone 2)
 * Optimized search facility with autocomplete feature. User can search and filter the data or information (milestone 3)
 * Working and modeling SortingHat so that our project can took full advantage of SortingHat (milestone 4)
 * Implementation of Authentication techniques to our project (probably openstack-Keystone). (milestone 5)
 * Testing and Documentation.

Optional Deliverables

 * An admin dashboard, so that admin can manage/control contributor's activity.

Envisioning phase (May 5 - May 24)

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

Community bonding period(1 weeks, May 25 - May 31)

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

AngularJS implementation (2 weeks, June 1 - June 14) - Milestone-1

 * Thinking of using ngbp repo to get kick-started with AngularJS, Bootstrap
 * Get myself familiar with repo's architecture and implementation.
 * Design AngularJS UI, which will be implemented in Flask framework.
 * Methods for Login/Signup, will work on authentication at last.
 * Methods for Contributor's profile view
 * Methods to list the identities, affiliation, etc
 * Prototypical implementation of search tools.
 * This will require use of angularJS or may be Ajax

Flask implementation (2 weeks, June 15 - June 28) - Milestone-2

 * Getting myself familiarize with Flask (already familiar with Django, so won't take too much time)
 * Setting up Flask project
 * Implement the back-end
 * Contributors to view her/his profile
 * Updating information and identities.
 * List identities, affiliation
 * In parallel to above step, syncing angularJS to Flask
 * This will require use of Flask framework, python, angularJS

Mid-term evaluation

 * For mid-term, I will be submitting the working model up-till now.

Implement search and filter (1 week, June 29 - July 5) - Milestone-3

 * Investigating search options
 * Discussing with mentor about search techniques that can be implemented, such as Flask 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.

Research Period (1 week, July 6 - July 12)

 * Getting my self familiar with working of sortingHat.
 * Discuss with mentor(s) with the future work on sortingHat related milestone.

Implementing sortingHat (2 weeks, July 13 - July 26) - Milestone-4

 * Improving the sortingHat heuristics, so that it can be implemented to our project.
 * (Not so sure about milestone for now, need to figure out in Research Period)

Implementing Authentication Technique (1 week, July 27 - Aug 2) - Milestone-5

 * Discuss with mentor about existing techniques for authentication (probably openstack-keyston).
 * Getting myself familiar with finalized technique
 * Implementing the technique to project.

Deploying phase (2 weeks, Aug 3 - August 16)

 * 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 17: Soft Pencil down - A weak for final polishing
 * August 21: 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: My work has a lot to do with Flask, authentication techniques, so can turn to different communities for help.

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
I’ve worked for Oregon State University Open Source Organization in last summer during GSoC-14, here is the link of abstract of work done to last year’s GSoC.

My github link can be found here.

Wikimedia will be my third 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.

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/
 * https://github.com/MetricsGrimoire/sortinghat