Profile Information
---------------------
**Name** : Ayushi Negi
**Email** : ayushin78@gmail.com
**IRC Handle** : ayushin78
**Github** : ayushin78
**Web profile** : https://ayushin78.github.io/
**Hangouts Id** : ayushin78
**Location** : New Delhi, India
**Typical working hours** : 10 PM TO 5 AM (+5:30 UTC) (Adjustable according to the Mentors)
Synopsis
-------------
#### Summary
**About the app:**
The Wikimedia Commons app is an open-source app created and maintained by grantees and volunteers of the Wikimedia community to allow the Wikimedia community to contribute content to Wikimedia Commons. Users can upload photographs taken directly from the app or from their device’s gallery which then goes directly to the organization’s database. Wikimedia commons accept only free content i.e images and media files that are not subject to any copyright. Users can upload multiple images at once and those can then be given various tags specific to them such as category, title, and description.
**About the Project:**
The project proposed for this summer aims at sharing feedback about uploaded photos, educating people about topic & copyright and adding some sort of gamification to drive engagement.
The project will be completed in three phases:-
1) ** Sharing Feedback **
1. Develop a profile activity to let the users access their "profile" by clicking on the icon next to their username in the nav drawer. In this profile page, Display the following stats using [ `urbanecmbot Tool`](https://tools.wmflabs.org/urbanecmbot/commonsmisc/feedback.py?user=username):
- Number of Uploads
- Received thanks
- Number of images used in Wikipedia/Wikivoyage/etc articles
- Number of images that have been edited by someone else (including simple description typo fix and categorization)
- Number of images that have been featured or received other kinds of awards
- Number of Quality Images - Quality images are diagrams or photographs that meet certain quality standards (which are mostly technical in nature) and are valuable for Wikimedia projects
- Add the following two stats in profile activity
- Received barnstars if API/tool for that becomes available
- Include negative statistics (Number of Deletion requests/Upload revert rate) with a link to the deletion discussion/reason if possible to get an API for the same.
- Develop an info page which would display the information about each of the stats included in the profile page with titles such as 'What are the quality images' or 'What are the featured Images' etc to let the user know what his stats actually signify.
- Add a button `Improve your stats` on this info page to connect it with Tutorials so that the User could watch the tutorials again in order to improve his statistics.
- Add the info icon on the toolbar of the profile page to connect the info page with the profile dashboard.
2) **Tutorial & Quiz**
1. Develop a series of quiz pages similar to the tutorial pages with simple Questions with two buttons yes/no as answers
- Display the correct answer in a pop-up window whenever the user clicks on the wrong button.
- Extend the tutorial with the quiz pages by adding another button (example 'Take the Quiz') next to the `welcomeYesButton` in `welcome_final.xml` (Final Tutorial page). Continue the pages to the quiz pages if the user clicks on `Take the Quiz` or Skip to the `ContributionsActivity` if the user clicks on 'welcomeYesButton'.
- Explore the available APIs or Tools to find a way to get the upload revert rate
- If the revert rate becomes available, prompt the user with low revert rate to watch the tutorials again and take the quiz by opening a pop-up window whenever the user opens up the app. Add options such as `Watch tutorials` and `I'll watch them later` in the pop-up window. This way, User will be able to know that his stats are alarming with an option to watch the tutorials and also if the user has already seen the tutorials once he can cancel the pop-up window by pressing the other option.
3) **Gamification**
- If time permits, Add Gamification to drive more engagement from users as per the discussion available on https://github.com/commons-app/apps-android-commons/issues/85
**Mentors**
- Mentor: @maskaravivek (member, Wikimedia Commons Android app)
- Co-mentor: @josephine_l (project maintainer, Wikimedia Commons Android app). GitHub: misaochan
**Have you contacted your mentors already?**
Yes
**Timeline**
| **Period** | **Task** | **Deliverables** |
| ---------- | -------- | --------- |
| March 22 to April 23 | Continue making contributions and get familiar with the app structure, getting comfortable with the coding standards of the organization, understanding the available APIs/Tools and their workings. | Familiarity with the codebase, APIs and coding standards of the organization. |
| April 23 to May 13 | **Community bonding period**: Explore the APIs for fetching the information about the barnstars and the deletion request for determining the upload revert rate. Discuss with the community about the possible sources of this information. Finalize the components to be displayed on the profile board and the required APIs/Tools. | APIs to be used. List of components to be displayed on profile board. |
| May 14 to May 20 | Design the mockups for the Profile dashboard and for the stats info page associated with the profile page. Improve the mockups through community feedback. Decide the information which will be displayed in the stats info page and Improve it through community discussion.| Mockups for profile dashboard and Statistics Info page
| May 21 to May 27 | Add implementation for all the components on the profile dashboard by adding the functions in `ApacheHttpClientMediaWikiApi` class to call the APIs. Discuss the approach with mentors.| Basic Implementation of the profile page. |
| May 28 to June 3 | Populate the info page with the content decided and link the info page to the information icon on the toolbar of the profile page. | Statistics Info page implemented. |
| June 4 to June 10 | Link the profile page with the icon present in the navigation drawer next to their username. Testing and debugging. Improve code quality. Documentation. | Completely functional Profile dashboard and associated Stats info page. |
| June 11 to June 17 | **Phase 2 ** - Come up with the questions to be asked on quiz pages. Discuss the content of the quiz pages with the community and mentors and improve it with their feedback. Finalize the content for the quiz pages, the content of the pop-up window to be displayed when the user clicks on the correct/incorrect answer and any improvement in the tutorial pages through discussion with mentors.| Finalized Content for quiz and tutorial pages. |
| June 18 to June 24 | Design the mockups of the quiz pages. Improve the layouts through community feedback.| Mockups for quiz and tutorial pages. |
|June 25 to June 28 | Prepare Midpoint Feedback report. | Midpoint feedback report. |
|June 29| **Mid-point feedback** | |
| June 29 to July 6 | Make improvements based on the feedback received. | Updated deliverables. |
| July 7 to July 14 | Add the functionality of `YES`/`NO` buttons present on the quiz pages with the pop-up windows. Change the last page of the tutorial by adding a `Take the Quiz` button next to the `WelcomeYes` button. Link the tutorial to the quiz by adding the quiz layouts in WelcomePageAdapter and by making the required changes in the WelcomeActivity.| Functional quiz pages associated with updated tutorial pages. |
| July 15 to July 22 | Add the functionality of the `Improve your stats` button present on the stats info page by linking it to the tutorial pages. If the API/tool for the upload revert ratio becomes available, Discuss the approach with mentors on how to determine this rate to prompt the user to watch the tutorials.| Updated Stats Info page. API for upload revert ratio. |
| July 22 to July 30 | Add a function in the `ApacheHttpClientMediaWikiApi` to fetch the revert rate. Add a function in the `LoginActivity` to check if the rate is greater than the threshold value. Make changes in the `startActivity()` function of the `LoginActivity` to redirect to a pop-up window if the rate is greater than the threshold. | Functionality to determine if the user has crossed the upload revert threshold. |
|July 31 to 7 August | Implement the pop up to redirect the user to `WelcomeActivity`(Tutorial pages) if the user clicks on `Watch Tutorials` or to the `ContributionActivity` if he clicks on `No, I'll watch them later`. Testing and debugging. Improve the code quality. Documentation. | Functionality to prompt the users with high upload revert rate to watch the tutorials again and take the quiz. |
|7 August to 14 August | Complete any lagging work. Final report. Documentation.| A final report with phase 1 and phase 2 deliverables. |
**Gamification (Stretch Goal)**
- As per the discussion available on https://github.com/commons-app/apps-android-commons/issues/85, Finalize the best approach to add gamification with the help of the community feedback.
- Implement the decided approach to gamification.
- Testing, debugging and Documentation. Wrap up the final report.
**Participation**
- I will use the hangouts channel for communication or through emails, as per the mentor’s convenience. Github issue tracker will be used for the community discussion. I’ll use a different branch for each new feature that I will be adding and will keep my master updated with the upstream. I will follow the best practices to write the commits and will keep the commit history clean.
**About Me**
- **Education**
I am a Computer Science undergraduate at Bharati Vidyapeeth's College of Engineering, Delhi. The coursework includes Java, C++, Data Structures, Algorithms, Operating Systems and DBMS.
- **How did you hear about this program?**
I heard about Outreachy through a friend of mine, Neha Jha, who got selected in the last round of Outreachy. She encouraged me to apply for this round.
- **Will you have any other time commitments, such as school work, another job, planned vacation, etc, during the duration of the program?**
I don’t have any summer plans other than Outreachy/GSoC So, I will be able to work full time on this 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)?**
Yes, I am planning to apply for both GSoC and Outreachy with WikiMedia .
- **What does making this project happen mean to you?**
Contributing to an open source project has always been a thrilling experience. The feeling of enjoyment that you get when your patch gets merged is beyond explanation. Moreover, It makes you get out of your comfort zone and gives you an opportunity to work on a real project.
This project focuses on enhancing the experience of users while making media contributions to Wikimedia Commons. I believe that it resonates with the idea of 'let everyone contribute to create something better' and this is what encourages me the most to work on this project. Adding feedback and creating interactive quizzes are great ways to improve the user experience as well as to enhance the quality of uploads.
Moreover, Working on this project will not only give me a chance to work under the guidance of experts but also an opportunity to reach a thousand of users through a few lines of code. Developing something useful for the community imparts an unparalleled sense of contentment and satisfaction.
**Past Experience**
- ** Android Development **
Developed a Music player [`Symphony`](https://github.com/ayushin78/Symphony/) in android to get myself introduced with Android development. It has all the basic features of a music player.
Developed a Weather App [`Weather Companion`](https://github.com/ayushin78/WeatherCompanion). This Android application fetches the weather conditions of the city using openweatherMap API and displays it on the screen. The user can send the info to their friends using it. The user can have the notifications of their area’s current weather as well as a forecast for the whole upcoming week.
- ** JAVA **
Have a strong foundation in Data Structures and ALgorithms in java.
Developed a simple Tic_Tac_Toe game using java.
Developed an application which simulated banks like transactions with log-in, deposit, withdrawal, and transfer facility and also implementing different SQL Locking schemes. Technology Used: Java, Oracle SQL
- ** JSP/Servlets/Hibernate **
Last summer, While doing an internship with a startup, I got experience to work with JSP, servlets and hibernate.
- ** Git **
It took me some time to understand the actual power of Git. It is not the first time I am contributing to an open source project. I started to work on open source projects two years back and learned how to use Git properly through my mistakes.
[`Algo_Ds_Notes`](https://github.com/jainaman224/Algo_Ds_Notes/pulls)
- A collection of all the major Data Structures and Algorithms Articles along with their codes implemented in various programming languages. Ranked 8th in Digital Ocean's hacktoberfest and has more than 400 stars on GitHub.
- I have been involved in this project as one of the code maintainers and as an active contributor since the initial phase of this project.
- This project helped me to learn version control system (Git) and to get introduced to the open source community.
- ** Machine learning and Text summarization **
Published a review paper titled ``“A study on various techniques for automatic text summarization"`` in IEEE explore, 2017.
Worked on a mini project ``'Twitter Hate Speech Classification using eXtreme Gradient Boosted Decision Trees and LightGBM'``. This project was aimed to compare the traditional text categorization methods that fall within the machine learning paradigm (like SVM, Gaussian NB etc.) with the most recent machine learning algorithms which have become quite popular on the Machine Learning platforms like Kaggle (XGBoost and LightGBM).
Currently, I am working on developing an abstractive text summarizer using Recurrent neural networks and attention mechanism.
**Tasks completed:**
- https://github.com/commons-app/apps-android-commons/pull/1264
- https://github.com/commons-app/apps-android-commons/pull/1204
- https://github.com/commons-app/apps-android-commons/pull/1193
**Issues Created**
- https://github.com/commons-app/apps-android-commons/issues/1224
- https://github.com/commons-app/apps-android-commons/issues/1215