Page MenuHomePhabricator

Allow contributors to update their own details in tech metrics directly
Closed, DuplicatePublic

Description

Name and contact information

Name: Sarvesh Gupta
Email: sarvesh.onlyme@gmail.com(primary), sarveshgpt1991@yahoo.com
IRC or IM networks/handle(s): s1991
Location: Roorkee, India
Timezone: Kolkata, INDIA, UTC+5:30
Typical working hours: 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 no 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

Deliverables

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

Required Deliverables

  • The angularJS technology based web interface of each and every page of the web application required (milestone 1)
  • Flask (python based web-framework) based 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)
  • 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.

Schedule

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 part (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

Participation

Communication of progress
  • IRC channel: I'll stay online on IRC at #metrics-grimoire 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
Where I would turn for help?
  • 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.

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.

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

Event Timeline

Sarvesh.onlyme claimed this task.
Sarvesh.onlyme raised the priority of this task from to Needs Triage.
Sarvesh.onlyme updated the task description. (Show Details)
Sarvesh.onlyme added a subscriber: Sarvesh.onlyme.
Restricted Application added a subscriber: Aklapper. · View Herald TranscriptMar 25 2015, 8:39 PM
Sarvesh.onlyme set Security to None.
Sarvesh.onlyme triaged this task as Medium priority.Mar 25 2015, 8:54 PM
Sarvesh.onlyme added subscribers: Acs, Dicortazar, Niharika.
Acs added a comment.Mar 26 2015, 8:51 AM

The identities information will be managed not only by contributors, but also from admins who can change profiles also.

Flask only implements an API REST to be consumed from AngularJS client. Nothing related to HTML templates, All the HTML is generated in the AngularJS client. The application architecture is a rich web client (SPA web app) consuming APIs REST.

The API REST will be implemented using sorting hat API.

Have you completed any microtasks for this project? Or are you working on any?
Gerrit links welcome.

@NiharikaKohli, I've implemented microtasks, though they uses a bit different technology as needed for this project. But source code of implementation can be found at https://github.com/sarvesh-onlyme/Mediawiki-Identity-Mapping and prototype at http://serene-brushlands-3632.herokuapp.com/.

Qgil added a subscriber: Qgil.Apr 9 2015, 8:38 AM

@NiharikaKohli, I've implemented microtasks, though they uses a bit different technology as needed for this project. But source code of implementation can be found at https://github.com/sarvesh-onlyme/Mediawiki-Identity-Mapping and prototype at http://serene-brushlands-3632.herokuapp.com/.

Is this from last year? We would welcome at least one microtask completed recently, as we are requiring to all GSoC candidates. Have you discussed this with @Acs and @Dicortazar? T60585 has a couple of proposals for microtasks, although maybe they are not the prototypical microtasks that someone would complete in a couple of hours? You can find more potential microtasks in wikimedia.biterg.io and in general under good first task. Again, the advice of your mentors is crucial here. If you want to be a strong candidate for this project, you should be in touch regularly by now.

Acs added a comment.Apr 9 2015, 8:50 AM

@NiharikaKohli, I've implemented microtasks, though they uses a bit different technology as needed for this project. But source code of implementation can be found at https://github.com/sarvesh-onlyme/Mediawiki-Identity-Mapping and prototype at http://serene-brushlands-3632.herokuapp.com/.

Is this from last year? We would welcome at least one microtask completed recently, as we are requiring to all GSoC candidates. Have you discussed this with @Acs and @Dicortazar? T60585 has a couple of proposals for microtasks, although maybe they are not the prototypical microtasks that someone would complete in a couple of hours? You can find more potential microtasks in wikimedia.biterg.io and in general under good first task. Again, the advice of your mentors is crucial here. If you want to be a strong candidate for this project, you should be in touch regularly by now.

Sarvesh maybe we can continue talking by chat in order you can complete some of the microtasks for this year. I will online today!

Sarvesh.onlyme added a comment.EditedApr 17 2015, 11:21 AM

Hello,
I've created/started an impletion of microtask https://phabricator.wikimedia.org/T91873 and some of it is still remaining. I'll try to do it by today or tomorrow.
Source code can be seen at https://github.com/sarvesh-onlyme/mediawiki-djangular. If needed I can create an User Interface demo latter on.

Thank you/

T60585 is not a microtask in itself - T60585 is the canonical task, and this very task (T93943) is an Outreachy/GSoC application to work on T60585 as part of Outreachy/GSoC.

If you work on a microtask, please clarify which specific microtask you work on. Thanks.

I've updated my work here at https://github.com/sarvesh-onlyme/mediawiki-djangular. I did not able to create a prototypical interface as I did last time due to exams, please do consider it.
Thank you.

Dicortazar added a comment.EditedMay 4 2015, 9:03 AM

@Sarvesh.onlyme, once this project was accepted, we need to start working on the details.

As mentioned by @Qgil in the chat at https://phabricator.wikimedia.org/conpherence/30/, we need to:

I'd also like to have "verbose" communication if possible through the tickets. That will allow to daily check advances and moments where you may get stuck.

Once all of this is ready to go, we may start producing subtasks for this task under the new project tag.

In addition to all of this, being in the IRC channels would also help a lot in general.

Comments are welcome :).

In addition to all of this, being in the IRC channels would also help a lot in general.

A big +1. Hanging out on IRC would be great for keeping in touch with mentors.