===Profile Information
Name : Tanvi Dadu
Email: tanvidadu1998@gmail.com
University: Netaji Subhas Institute of Technology, affiliated with Delhi University
IRC nickname on Freenode: tanvidadu
Github Link: https://github.com/tanvidadu
Other Communication Medium: Gitter, Slack, Google hangouts
Location (country or state) : New Delhi , India (UTC +5:30)
Typical working hours (include your timezone): Between 8 pm to 4 am UTC +5:30
===Synopsis
The Wikimedia Commons Android app allows users to upload pictures from their Android phone/tablet to Wikimedia Commons.
The project 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 implemented in two phases:
1) ** Feedback **
- 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
- Received barnstars
- Received thanks if the feature becomes available on Commons
- Add Gamification and ensure negative statistics like Number of deleted images should be present with a link to the deletion discussion/reason.
**How would I go about it ?**
1. Explore possible options to fetch the required information for the feedback. Two api have been listed in the discussion in #815, but none of them fetches barnstar.
# One method is that in case a person receives notification on receiving a barnstar, we can add listeners to detect whenever a Barnstar is added, display it on feedback activity or add proposed “reputation” points.
# Other method can be to scrape information from the user page directly.
2. Refactor the mwapi to fetch the results from the api (async calls) .
3. Design a strategy to convert the information fetched to calculate “Reputation” which can be further used to award titles/badges.
4. Design an interactive UI to display the fetched information statically along with “Reputation” earned and title/badges awarded.
- Also while displaying the statistics, Negative information like the number of images deleted should be displayed with links. Therefore there is a need to explore the relevant api and methods to fetch the appropriate links.
2) **Tutorial**
- Display tutorial again and implement a quiz, for users who have a high upload revert rate
**how to go about it ?**
1. Look for appropriate methods to fetch the number of images uploaded by the user reverted. In case there is no api available then resolve to other methods like scraping the user’s notification to get number of images nominated for deletion.
2. Display an in-dept copyright/topicness tutorial to user.
3. Quiz would contain following things:
# Questions on the images can be uploaded.
# Basic Questions on the copyrights/license
4. All these questions will be presented in an interactive way so that user doesn’t get bored. After every answer the user will given a brief explanation along with whether their answer was correct or incorrect (In case user guesses the answer, he/she should be aware why the answer was correct).
5. In case I am scraping the notifications, I will implement listeners to increment the counter for the number of images reverted each time a new notification regarding the nomination for deletion is created.
6. In case the api is being used, I will refactor the mwapi to fetch the results each time use a new notification regarding the nomination for deletion is created.
7. On the completion of quiz:
# Congratulate the user on finishing the quiz and display this score.
# Convert their score to “reputation”.
# In case they were not able to answer more than 80% questions correctly, display the warning.
8. Reset the counter every time the quiz has been successfully implemented.
=== Mentors
- Mentor: @maskaravivek (member, Wikimedia Commons Android app)
- Co-mentor: @josephine_l (project maintainer, Wikimedia Commons Android app). GitHub: misaochan
===Deliverables
**`Community Bonding`**
- Getting Familiarized with app structure, Wikimedia Api and Community.
- Familiarize myself with JavaRx
- Go through Documentation once.
- Determine the best way to extract barnstars
`Deliverables`
- API to fetch data to be Confirmed.
- Method to extract Barnstars be confirmed.
- Bond with the community and get familiarized with codebase.
**`May 14 - May 20`**
-Develop Interactive UI Mocks for the feedback screen and get feedback from the community.
-Implement a rudimentary structure of feedback screen.
`Deliverables`
-UI for feedback Activity finalized
- Rudimentary/Basic Structure implemented( Commits)
**`May 21 - May 27`**
- Implement the async Api call and refactor the classes present in mwapi.
- Fetch Barnstarts
- Display the fetched information in the basic Structure Layout already implmented
`Deliverables`
- Information to be displayed successfully fetched (commits)
- Barnstars also successfully fetched (commits)
**`May 28 - June 3`**
- Depending upon the discussion on issue #85, implement the strategy to calculate reputation/points.
- Start implementing the functionality to assign the badges/titles
`Deliverables`
- Successfully calculate the reputation/points
- Successfully assign titles/Badges
- Add the user profile option in navigation drawer
**`June 4 - June 11` **
- Complete the any backlog present
- Polish the UI
- User profile option added in the navigation drawer
- Add the functionality to share their title/badges on social media sites.
`Delierables`
- Complete and polish UI of the feedback activity and get feedback
- User can share the titles/Badges.
**`June 12 - June 19`**
- Complete Backlog
- Writing Unit test as well as Integration test for feedback module
- Testing and debugging and fixing error
- Code cleanup
`Deliverables`
- Test for the feedback module successfully written
- All the major error fixed
- code as per the guidelines followed by the Commons
**`June 20 - June 26 `**
- Final Testing and bug fixes
- Complete backlog, if any
- If allowed , Release the latest version app
`Deliverables`
- App deployed with no major bug fixes.
-----------------------MID TERM EVALUATION ---------------------------------------------------
**`June 27 - July 3`**
- Discuss questions to be added in quiz with community and mentors
- Come up with the mock-ups for UI of the quiz module and get feedback from community
- Investigate the ways for getting the number of images reverted- used as a threshold for quiz and discuss them with mentors
`Deliverables`
- UI mockups for quiz confirmed
- best strategy to fetch number of images reverted confirmed
**`July 4 - July 10`**
- Wire up the api and fetch results i.e. refactor the code of mwapi accordingly or get the information from
notifications by scraping it
- Start working on the layout of the quiz
`Deliverables`
- Information successfully fetched
- Layout for quiz implemented
**`July 11 - july 17`**
- Implement Tutorial in the beginning of the quiz
- Start Implementing the quiz
`Deliverables`
- Tutorial implemented in the beginning of quiz
- Basic functionality of quiz implemented i.e. able to detect whether question is right or wrong
**`July 18 - July 24`**
- Add the message giving brief explanation along with whether their answer was correct or incorrect after each
question
- Add a congratulatory message or warning at the end of quiz
- Add the methods to compute score and "reputation/points" earned
- Reset the counter
`Deliverables`
- Quiz module successfully implemented with proper messages
**`July 25 - July 31`**
- Writing Unit test as well as Integration test for Quiz module
- Testing and debugging
- Code cleanup
`Deliverables`
- Test for the feedback module successfully written
- All the major error fixed
- code as per the guidelines followed by the Commons
**`August 1 - August 7 `**
- Final Testing and bug fixes
- Complete all the backlog
**`August 7 - August 14`**
- If allowed , Release the latest version app
- Updating Documentation and guidelines
- Fixing other issues/ bugs if time
`Deliverables`
- App Deployed with no major bug
- All the documentations up-to-date
- wrap-up-report
===Participation
# Working on Separate branch on git and regularly creating pull request once a feature has been implemented.
# Online on IRC in my working hours ( 8pm to 4 am UTC +5:30)
# Regular feedbacks and reviews from community as well as mentors
# Can be contacted via hangouts, mails in my non working hours
# Flexible with working hours and willing to shift or extend them.
# Update my weekly progress on my blog (https://medium.com)
===About Me
Tell us about a few:
- **Your education (completed or in progress)**
I am a sophomore pursuing BTech in Computer Engineering from Netaji Subhas Institute of Technology affiliated to Delhi University. I am one of the board member of CSI NSIT (Computer Society of India), official tech society of my college. During my first year, I was heavily involved in competitive coding and as a result have strong base in algorithm and data structure. I have a keen interest in Android Development and am well versed with git/github.
- **How did you hear about this program?**
A senior of mine Mansimar Kuar, encouraged me to participate in this program.
- **Will you have any other time commitments, such as school work, another job, planned vacation, etc, during the duration of the program?**
Since this program is during my Summer Vacations, I have no prior commitment and am willing to devote my whole attention to 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 GSOC as well.
- **What does making this project happen mean to you?**
This was one of the first community I started contributing to. The friendly and helpful nature of maintainers not only motivated me to contribute and explore open source development but also instilled a feeling of belonging with Commons. Participation of this project in FOSS internship is like a cherry on cake. It provides a huge opportunity to mobile app development enthusiast like me to get acquainted with latest technology and work under highly skilled professionals.
I firmly support the vision behind the Commons - . to encourage people to share the information in form of images. This project aims to include the feedback of community which helps user to improve the quality of image. Presenting the feedback in an interactive way (gamification) will not only improve their participation but also the quality of images. Educating users about license and copyright through quiz and tutorials is quite smart.
===Past Experience
**Android :**
- RentRobes: It is an android based application which provides a platform for renting and selling of second-hand clothes. Essentially, the idea is to provide users with the facility of selling branded second-hand clothes to the company and renting branded clothes both brand new and second-hand from the company. This is a basic implementation of a start-up idea which is currently evolving.
Through this project I learned async api calls, serializable and parceable objects, importance of UI/UX as well as material design, realtime database and UPI payment gateway integration.
(https://github.com/tanvidadu/RentRobes )
- DermaHack: The app incorporates image recognition to provide an accurate diagnosis of the skin disorder without any biases. This app will allow the users to narrow down the disease depending upon the images of the affected area. According to the disease detected, the app will provide some suggestion to prevent the disease from spreading further along with the contact of the nearest dermatologist that the patient can visit. To make user experience more interactive it uses chatbot interface to interact with them. The bot was wriiten in python using nltk and deployed on heroku. The app interacts with bot using async api calls. This app was built in 24 hrs in a hackathon.
Through this project I learned async api calls using Volley, integrating Google Maps API and fetching users geo-coordinates, basics of NLP as well as the UI design to implement chatbot interface.
(https://github.com/PikkaPikkachu/DermaHack )
**React Native :**
- Currency Converter : It is a mobile app that can work cross platform on both android and ios. It can be used to convert one currency to another. Through this app I learned the basic of react-native libraries, redux, react-navigation and redux saga.
(https://github.com/tanvidadu/CurrencyConverter )
- Swipe Cards : It a small standalone reusable component that I implemented in react-native. They are a clone of
Tinder swipe cards with proper animation - swipe left and swipe right.
- MapView : It a small standalone reusable component that I implemented in react-native to fetch the user current geo-coordinates and display the country it is present in.
**C++ :**
- TextEditor : I am also attempted to make my very own text editor. Its written in C++ language and provides user with functionality to add text, edit text as well features like Undo, Redo, Cut, Copy, Paste, Backspace, Replace, Replace All and Find. These features are implemented via stack, hashing and Recursion. Stack is used to store previous history and hashing is used to map different functions to the their respective keys on keyboards through ascii value. Also Recursion is used to move between words and lines. It’s still in development phase and I am currently working to reduce the processing time used to implement the features.
(https://github.com/tanvidadu/TextEditor.git )
**I have also contributed in other FOSS projects like : Paintroid (Catrobat) , Android( NextCloud). **
===Micro-Contributions
**Pull requests: **
https://github.com/commons-app/apps-android-commons/pull/1251( merged) : Added an option to skip tutorial in beta version of the app. Knowledge of all the flavors, information on implementing flavor specific was required along with the information of codebase.
https://github.com/commons-app/apps-android-commons/pull/1097( merged): Hide keypad when user clicks outside the editView in Commons Activity.
https://github.com/commons-app/apps-android-commons/pull/1099( merged): Ensures the categories start with Capital letter.
https://github.com/commons-app/apps-android-commons/pull/1102( merged): Added a message to login screen of the beta product flavour for the user is logging in to the beta servers
https://github.com/commons-app/apps-android-commons/pull/1281( merged ) : When no description is found the subtitle is empty, rather than writing "no description found" to it.
https://github.com/commons-app/apps-android-commons/pull/1285 (open) : Added TextView in AboutActivity which links to https://translatewiki.net/w/i.php?title=Special:Translate&group=commons-android-strings&filter=!translated&action=translate
https://github.com/commons-app/apps-android-commons/pull/1300 (open) : Added the functionality to pinch zoom in upload activity.
https://github.com/commons-app/apps-android-commons/pull/1313 (open ) : to add app shortcuts in Commons
**Issues Opened: **
https://github.com/commons-app/apps-android-commons/issues/1041 (open): The keypad in the Commons Activity overlaps with the Wikimedia Commons Links .
https://github.com/commons-app/apps-android-commons/issues/1040 (open) : The user experience will be improved if keypad is closed/hidden each time the user clicks outside the EditText , in the Common Activity.
https://github.com/commons-app/apps-android-commons/issues/1306 (open) : In aboutActivity there is TextView with id about_uploads_to which has no implementations in the code. It has not been used anywhere.