IRC nickname on Freenode: megha213
Github Profile: [https://github.com/MeghaSharma21](https://github.com/MeghaSharma21)
LinkedIn Profile:[ https://www.linkedin.com/in/megha-sharma-81834012a/](https://www.linkedin.com/in/megha-sharma-81834012a/)
Location (country or state): Chandigarh (UT), India
Typical working hours (include your timezone): 12:00 - 02:00 (UTC+5:30)
> Short summary describing your project and how it will benefit Wikimedia projects
As we all know Wikimedia is a global movement whose aim is to provide educational content for free. Since it is a crowdsourcing platform, both quantity and quality of content is dependent on the users/contributors. Hence, to maintain these it becomes highly important to have motivated contributors.
And we also know that human behaviour is motivated by incentives, so I’ve taken up the project of developing a ‘**User Contribution Summary Tool**’ for Wikipedia which will allow contributors to take credit for their contributions and give insights into their contribution patterns.
With the help of this tool, we’ll be able to programmatically measure contributions & achievements by transforming it into set of metrics. Hence, each contributor will be able to share his/her profile and take due credit for it. All in all, we’ll be implementing Incentive Theory of Motivation.
Wikipedia community will be benefited because of this project in the following ways:
* This tool will not only help contributors gain trust from the community but will also help them to use this profile as a proof of their skill set in the professional world.
* 'Comparison of profiles’ will further motivate the contributor to make quality contributions and will also give a fun element to the whole process. Also, it will improve the user experience of people who are using this tool to look into others' contributions (say, boss, professor etc.) as they can easily measure performance of two potential candidates using this feature.
* It will improve the user experience by giving them a clear picture of their contribution patterns and community’s feedback.
> Possible Mentor(s)
> Have you contacted your mentors already?
> Describe the timeline of your work with deadlines and milestones, broken down week by week. Make sure to include time you are planning to allocate for investigation, coding, deploying, testing and documentation
During the internship, I’ll be following the Agile Model of SDLC. The whole tenure of internship will be broken down into sprints of 2 weeks each. Each sprint will consist of one full SDLC until and unless it’s an epic. Hence, continuous testing and documentation will be done.
For every task, there will be an **Acceptance Criteria (AC)**. Only after it is satisfied, task will be considered complete.
** For coding tasks AC will be : Proper UTs should be in place. Code review and beta testing should be done.
** For design tasks AC will be : Design document should adhere to the requirements and should be approved by the mentors.
** Usability Testing will be performed with representative users. After that only, the milestone will considered as complete.
`Nov 9 - Nov 23`
- Community Bonding Period
- Developing an understanding of Wikipedia’s current format of contribution
- Understanding Wikipedia’s current tools that showcase user’s contributions. It’ll help me in identifying the areas of improvement
- Getting familiar with the technologies already being used
- Start participating in the scrum and sprint meeting of the team
`Nov 23 - Dec 7`
- Try to know the community more
- Studying similar existing tools that quantify a user’s performance
- Defining the scope of the project after extensive discussions with the mentors
- Finalizing the exact requirements and breaking them into phases/modules
- Getting familiar with existing APIs and databases structure
`Dec 07 - Dec 21 (Week 1,2)`
> Task 1 of this Sprint
- Identify various metrics that can be used as a measure of one’s contributions and can be calculated programmatically
- Find out various factors that will influence the metrics
- After discussions with mentors, derive formulas for the same
- Take some selective users in the loop to get some early feedback from them
**Note**: These metrics will be used to calculate ratings, badges (a symbolic mark of achievement) etc.
(Acceptance Criteria: Users should be satisfied with the formulated metrics.)
> Task 2 of this Sprint
- Preparing design mockups for the profile of a person which can be shared anywhere, conceptually similar to the developer profiles of Github or StackOverflow.
- The metrics that will be finalized from the previous task will be incorporated in the design.
- Some of related work has already been done as a part of microtask 3. Link: https://github.com/MeghaSharma21/outreachy-wikimedia-userprofile/tree/MeghaSharma21-patch-11
**Note**: This task will help us to gain clarity about the functionality that we need to implement.
(Acceptance Criteria: Design document should adhere to the requirements and should be approved by the mentors.)
`Dec 21 - Jan 4 (Week 3, 4)`
- The major focus during this sprint will be to implement the backend functionality with minimal UI.
- Write module to calculate ratings. For example, rating based on the no. of edits.
- Write module for making various graphs that present a contribution summary of the user. For example, graphs showing comparison between pages edited and created by the user along with average and max values for the same.
(Acceptance Criteria: For both the modules, proper UTs should be in place; code review and beta testing should be done.)
`Jan 04 - Jan 18 (Week 5,6)`
- Write module to assign badges to the user which will highlight the major achievements. For example, 100+ edits, 100+ views etc.
- Write module for comparing 2 user profiles. Refer link: https://github.com/MeghaSharma21/outreachy-wikimedia-userprofile/blob/MeghaSharma21-patch-11/compareProfile.pdf
- Expose APIs for all the aforementioned modules so that it can be reused in some other application.
(Acceptance Criteria: For both the modules, proper UTs should be in place; code review and beta testing should be done.)
`Jan 18 (Mid term evaluation)`
//Gather feedback from users or developer community//
`Jan 18 - Feb 01 (Week 7,8)`
- Add a cache layer to decrease the cost of repeatedly fetching data
- [EPIC] Implement the front-end as per the design mockups.
`Feb 01 - Feb15 (Week 9,10)`
- Finish up the implementation of front-end.
- Implement functionality to make user’s profile public or private based on user’s preference.
(Acceptance Criteria: For both of these, proper UTs should be in place; code review and beta testing should be done.)
`Feb 15 - March 1 (Week 11,12)`
- Implement functionality to make the profile customizable by user.
(Acceptance Criteria: Proper UTs should be in place; code review and beta testing should be done.)
- Finish up pending reviews and documentation, if any.
`March 01 - March 05`
Even after internship, I plan to lookout for new and challenging opportunities being offered by Wikimedia community. I will continue to maintain and contribute to the development of this tool and this problem of motivating users to contribute more to Wikipedia!
* Gained familiarity with existing tools and formats
* Defined scope and requirements of the project
* Defined metrics and their formulas
* Prepared design mockups
* Finished up the first two modules that calculate rating of the user and generates graphs
* Finished back-end implementation after writing modules for assigning badges and comparing profiles
* Added cache layer to avoid repeated fetching of data from database
* Exposed APIs for reusability
* Received feedback
* Started the implementation of front-end as per design mockups
* Added functionality to make profile customizable
* Added the ‘opt-in’ feature to make profile public
* Done with final release of the product
> Describe how you plan to communicate progress and ask for help, where you plan to publish your source code, etc
* I’ll be maintaining the code base using Git. Hence, PRs will be used to gather feedback from the mentors on the same.
* For sharing status and discussing issues, I’ll be using Phabricator. Other than this, IRC and Gmail will act as other communication mediums. I’ll be active on IRC during my working hours.
* Also, I’ll be participating in scrum meetings and sprint planning. These meetings will help me in knowing the community better. And to discuss tasks and issues, I’ll be having one-on-one once in every two weeks with my mentors.
* I’ve planned to use meta wiki user page to keep a record of my progress in a shareable format. I’ll be updating it every week.
* I’ve also thought to write a blog about my experiences and challenging work that I’ll be doing as a part of this project. I plan to write it once in every 2 weeks.
===Tell us about a few:
> Your education (completed or in progress)
I am a final year computer science undergraduate student at PEC University of Technology, Chandigarh, India. I am a Computer Science enthusiast, because it gives me the power to reach billions and transform their lives. I fell in love with mathematics and problem-solving in primary school and that love drives my programming. I enjoy Coding and Building new things.
> How did you hear about this program?
I got to know about this when I saw a post from outreachy on twitter.
> Will you have any other time commitments, such as school work, another job, planned vacation, etc, during the duration of the program?
For 5 weeks, I will be having holidays, so I will be completely free. For the rest of the tenure, I will be attending even semester at my college.
In this semester, a full-time student takes up 25 credits but I'll be taking only 13 credits (out of which 6 credits are for major project which will be same as my outreachy internship project) so that I can do full justice to Outreachy programme.
Link for curriculum: http://pec.ac.in/programmes/ug/structure/cse-14-18
(Please refer to semester 2 of fourth year).
Note: I won't be taking 3 major/minor courses in the semester which are equal to 12 credits (as each one of them is 4 credits) and will take up outreachy internship project as major project(worth 6 credits).
So, I'll be taking up courses for 13 credits only (25 - 12 = 7 + 6(major project which will same as outreachy internship project)).
> We advise all candidates eligible for Google Summer of Code and Outreachy to apply for both programs. Are you planning to apply to both programs and, if so, with what organization(s)?
> What does making this project happen mean to you?
Wikipedia has always been an ultimate destination when it comes to making college assignments or reading about a topic or finding answers to some questions.
What google is to searching, Wikipedia is to knowledge. And Wikipedia is nothing without its community. If I’ll get an opportunity to make a tool for the community, that’ll motivate people to take out time from their busy schedule to contribute to an article which will then be used as a reference by my neighbourhood friend, the happiness that I’ll get out of it will be immeasurable.
Whatever I've done so far in my computer science career has only reached a maximum of 500 people. I want to build something which will impact millions, including my friend sitting next to me. And this project gives me that opportunity, and at the same time, challenges me to learn and grow. Hence, I would love to solve this hard and complex problem.
> Describe any relevant projects that you've worked on previously and what knowledge you gained from working on them. Describe any open source projects you have contributed to as a user and contributor (include links). If you have already written a feature or bugfix for a Wikimedia technology such as MediaWiki, link to it here; we will give strong preference to candidates who have done so
**Software Engineering Intern , Amazon, Bengaluru : Jan 2017 - July 2017**
* I worked with the tech team that supported the retail business of Amazon.
* I built a visualization platform that quantified a team’s performance with the help of metrics. The visualizations provided an insight into the data which eventually helped in increasing a team’s productivity.
* I used plethora of AWS technologies like QuickSight, Redshift, DynamoDB, Lambda etc for making this tool. Open source tools like Kibana were used to create visualizations.
* Multiple reviews were held with senior leaders and clients and the platform improved with multiple iterations, which in turn improved my coding, testing and leadership skills.
* I got pre-placement offer from Amazon for my exemplary work during the internship.
**Researchshala - www.researchshala.com **
* Researchshala is an online platform to connect professors to research-interns, helping them with their research projects
* I built this website in Django, hosting on AWS for the budding startup of my college
**Research-Intern at IIT Delhi**
* I was among the top 0.33% students all over India who got selected for Student Research Fellowship Program, IIT-Delhi.
* At IITD, I was a Research Fellow under Asst. Prof. Maya Ramanath.
* I built a technical knowledge base to establish relationships between technical concepts by using Wikipedia as the input corpus and then organised relations into a hierarchical structure.
* For this, I'd set up Hadoop for using PATTY, a MPI resource and maintained database using PostgreSQL and MongoDB.
**Health Monitoring Application using Brain Computer Interface**
* I built an android app to analyse and improve user’s concentration and meditation levels.
* The state of the user’s brain was monitored using Muse, an EEG device.
* Binaural beats were used to improve the current levels of concentration and meditation.
**Accessing and Extracting Information from the Hidden-Web**
* Objective was to build a database of publications and research papers of foreign academicians of Indian origin.
* For this, I built a crawler that explored the Deep Web in a targeted manner after receiving a list of names of academicians as input.
* Libraries like BeautifulSoup, Requests and JSoup were used for fetching and structuring the results.
* This Project was funded by NSTMIS, a division of Department of Science and Technology, India.
**Intelligent Subtraction Tutor**
* I built a chatbot that is capable of teaching subtraction to a child by first judging its current knowledge level and then teaching it accordingly.
* Facebook Messenger API was used to host the bot on Modulus, having Facebook messenger as the interface.
* ai.wit was used to train the bot.
**Password Based Door Lock**
* I built a password-based door-lock system, integrated with IR based motion sensor using 8051 microcontroller
* The microcontroller was microprogrammed in C language.
==Open Source contributions:
1. Developed a **Sublime Package** for C++ code snippets, which contained templates for algorithms commonly used in competitive programming. This was developed with the intent to help programmers solve questions with greater speed and accuracy. Link: [https://github.com/MeghaSharma21/CPP_Competitive_Programming_Sublime_Snippets](https://github.com/MeghaSharma21/CPP_Competitive_Programming_Sublime_Snippets)
2. Developed an **Atom Package**, which has been developed for competitive programmers on similar lines like the aforementioned sublime package. Link: https://github.com/MeghaSharma21/CPP_Competitive_Programming_Atom_Snippets
Both the packages are available with their respective package managers, having **200+ installations. **
Link to Code: https://github.com/MeghaSharma21/outreachy-wikimedia-recent-user-edits-tool/tree/review
Link to Tool: https://tools.wmflabs.org/outreachy-recent-edits-tool/
Created a tool on toolforge to show the rank of a user based on no. of edits in Hindi Wikipedia.
The rank and percentile of the user is presented along with the graph showing distribution of all the users according to number of edits which adds more clarity as to where the user stands. For this, I developed a Django app and the User table was taken as a data source.
Link to Code: https://github.com/MeghaSharma21/outreachy-wikimedia-user-rank-tool/pull/1
Link to Tool: https://tools.wmflabs.org/outreachy-user-ranking-tool
Created UI design mockups for the ‘User Contribution Summary Tool’.
These mockups speak about my vision for this tool which has been descriptively explained here: [https://github.com/MeghaSharma21/outreachy-wikimedia-userprofile/blob/MeghaSharma21-patch-11/README.md](https://github.com/MeghaSharma21/outreachy-wikimedia-userprofile/blob/MeghaSharma21-patch-11/README.md).
I also explored formulas for calculating ratings for the person, similar to what we have on Topcoder or Codechef.
Link to Mockups: https://github.com/MeghaSharma21/outreachy-wikimedia-userprofile/tree/MeghaSharma21-patch-11
**MicroTask 4 (Extra)**:
I picked the Graph Module from my timeline and prepared a POC for it.
For this, I created a tool on Toolforge that shows the contributions of a user in terms of no. of pages edited and created in the present year.
The contributions have been shown in the form of a timeline similar to the Github’s contribution timeline.
Link to tool: https://tools.wmflabs.org/outreachy-user-contribution-tool/
Link to code: https://github.com/MeghaSharma21/outreachy-wikimedia-user-contribution-tool/pull/1
=Any Other Info
=====Add any other relevant information such as UI mockups, references to related projects, a link to your proof of concept code, etc
While I was an intern at Amazon, I did similar kind of work. There I built a visualization platform that gave insight into the team's performance with the help of dashboards displaying metrics.
Here also we are trying to showcase a user's contributions with the help of programmatically measurable metrics.
So, I feel my past experience can give me a headstart in this project.