Page MenuHomePhabricator

GSoC Proposal : Feedback Sharing Module in Commons App
Closed, ResolvedPublic

Description

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: 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 module. Two api have been listed in the discussion in #815, but none of them fetches barnstar. There is a need to explore other wikimediaApi and methods to extract barnstars.
  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 would I 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 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:
    1. Questions on the images can be uploaded.
    2. Basic Questions on the copyrights/license
  4. All these questions needs to be presented in an interactive way so that user doesn’t get bored. After every answer the user will given a brief explanation on the correct answer (This is to ensure awareness among users which might guess the correct answer).
  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 a new notification regarding the nomination for deletion is created.
  7. On the completion of quiz:
    1. Congratulate the user on finishing the quiz and display this score.
    2. 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

1) 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.
  • Confirm the feasibility to fetch Barnstars
  • Bond with the community and get familiarized with codebase.

2) 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)

3) May 21 - May 27

  • Implement the async Api call and refactor the classes present in mwapi.
  • Fetch Barnstarts if possible
  • Display the fetched information in the basic Structure Layout already implemented

    Deliverables
  • Information to be displayed successfully fetched (commits)
  • Information fetched is successfully displayed displayed

4) 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

5) June 4 - June 11

  • Complete the any backlog present
  • Polish the UI and get community feedback
  • 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.
  • Add the user profile option in navigation drawer

6) 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

7) 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 ---------------------------------------------------

8) 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

9) 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
  • Add the links to the license in upload Activity in accordance with issue #1316
  • Start working on the layout of the quiz

    Deliverables
  • Information successfully fetched
  • Links added in the user's language
  • Layout for quiz implemented

10) July 11 - july 17

  • Implement Tutorial in the beginning of the quiz
  • Start Implementing the quiz and get community feedback

    Deliverables
  • Tutorial implemented in the beginning of quiz
  • Basic functionality of quiz implemented i.e. able to detect whether question is right or wrong

11) 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
  • Reset the counter

    Deliverables
  • Quiz module successfully implemented with proper messages

12) July 25 - July 31

  • Writing Unit test as well as Integration test for Quiz module
  • Testing and debugging
  • Code cleanup and complete backlog

    Deliverables
  • Test for the quiz module successfully written
  • All the major error fixed
  • code as per the guidelines followed by the Commons

13) August 1 - August 7

  • Final Testing and bug fixes
  • Complete all the backlog

    Deliverables
  • No major bugs Present
  • Acts as buffer time to complete all backlog

14) 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

  1. Working on Separate branch on git and regularly creating pull request once a feature has been implemented.
  2. Online on IRC in my working hours ( 8 pm to 4 am UTC +5:30)
  3. Regular feedbacks and reviews from community as well as mentors
  4. Can be contacted via hangouts, mails in my non working hours
  5. During testing and debugging Period, I will request the beta testers to test the app and get feedback from community.
  6. Flexible with working hours and willing to shift or extend them.
  7. Update my weekly progress on medium

About Me

Tell us about a few:

  • Your education (completed or in progress) I am a sophomore pursuing B.Tech in Computer Engineering from Netaji Subhas Institute of Technology, affiliated to University of Delhi. I am one of the board members 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 Kaur, 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 the cake. It provides a huge opportunity to mobile app development enthusiasts like me to get acquainted with the latest technology and work under highly skilled professionals.

I firmly support the vision behind Commons - to encourage people to share information in form of images. 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

1) 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 a company and renting branded clothes both brand new and second-hand from a 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.
  • DermaHack: The app incorporates image recognition to provide an accurate diagnosis of skin disorders without any biases. This app will allow users to narrow down on a disease depending upon the images of the affected area. According to the disease detected, the app will provide suggestions to prevent it from spreading further along, with the contact of a nearest dermatologist that the patient can visit. To make user experience more interactive, it uses a chatbot interface. The bot was written in python using nltk and deployed on heroku. The app interacts with the 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.

2) 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.
  • 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.

3) C++ :

  • TextEditor : I have attempted to make my very own text editor. It is written in C++ language and provides user with functionalities 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.

I have also contributed in other FOSS projects like : Paintroid (Catrobat) , Android( NextCloud).

Micro-Contributions

Pull requests:
Skip option Added in Tutorial( 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.
Hide Keypad( merged): Hide keypad when user clicks outside the editView in Commons Activity.
Categories Start with Caps ( merged): Ensures the categories start with Capital letter.
Login Message In beta Flavor( merged): Added a message to login screen of the beta product flavour for the user is logging in to the beta servers
No Description( merged ) : When no description is found the subtitle is empty, rather than writing "no description found" to it.
Option to Translate (merged) : Added TextView in AboutActivity which links to https://translatewiki.net/w/i.php?title=Special:Translate&group=commons-android-strings&filter=!translated&action=translate
Remove Extra TextView (under review) : Remove extra textView with id about_upload_to in About Activity.
Add functionality to Zoom (under review) : Added the functionality to pinch zoom in upload activity.
Add app shortcuts (under review) : to add app shortcuts in Commons
Open map of place where picture was taken (under review): opens Google map app with street view showing the location specified by the image coordinates in share Actvity.
Issues Opened:
Keypad overlaps with TextView (open): The keypad in the Commons Activity overlaps with the Wikimedia Commons Links .
Keypad closed when EditText out of focus (closed) : The user experience will be improved if keypad is closed/hidden each time the user clicks outside the EditText , in the Common Activity.
Add Upload Info (open) : In aboutActivity there is TextView with id about_uploads_to which has no implementations in the code. It has not been used anywhere.

Event Timeline

Restricted Application added a subscriber: Aklapper. · View Herald TranscriptMar 15 2018, 4:13 PM

Hi @Tanvidadu1998 ,

Nice to see you have submitted a proposal, and the apps you have worked on before look great. :) A few suggestions:

  • Please make the 2 phases more explicit, both in the Synopsis and the Deliverables. Currently it is difficult for the reader to understand where Phase 1 stops and Phase 2 starts.
  • I would recommend adding a bit more information about the features that you plan on implementing, both in terms of "why" and "how". :)

Thanks @josephine_l I will update my proposal accordingly .

Tanvidadu1998 added a comment.EditedMar 17 2018, 4:01 PM

@josephine_l @maskaravivek I have updated my proposal. Plz review it once and let me know the areas which needs to more detailed in terms of implementation or use case.
I have few doubts :

  1. is user notified when he/she recieves barnstars?
  2. can we use the score of quiz to calculate "reputation/points"?

Hi @Tanvidadu1998

The proposal looks great to me :).

The apps that you have worked on earlier looks really interesting especially the RentRobe project.

A few suggestions:

  • You have referenced a few Github issues in the proposal. It would be great if you could add a link to it.
  • The medium link simply takes me to the Medium home page. Were you trying to include your profile's link?

To answer your doubts:

is user notified when he/she recieves barnstars?

Here's the complete list of notifications supported by Commons. :)
https://commons.wikimedia.beta.wmflabs.org/wiki/Special:DisplayNotificationsConfiguration

can we use the score of quiz to calculate "reputation/points"?

IMO quiz would be just for educational purposes. Reputations/points should be calculated based on the quality of his uploads. @josephine_l can give a better opinion on this. :)

@maskaravivek thanks for pointers and clearing my doubts. I have updated my proposal accordingly.

p.s. : I was trying to add my profile link only but added the wrong link.

I agree with @maskaravivek - the outcome of the quiz should not affect reputation/points. :)

Tanvidadu1998 updated the task description. (Show Details)

Happy to see that you have updated your proposal! The new formatting looks great and much more readable. :)

Good to see that you have updated the formatting, it looks much more readable now. :)

Tanvidadu1998 added a comment.EditedApr 24 2018, 2:56 PM

Hello !
I am quite excited to begin this project. Is there any task I should begin with to get to know community better. Also Is there some learning or working required for the project during community bonding period ( besides mentioned in the proposal) ?

Thanking You
Tanvi

josephine_l added a comment.EditedApr 25 2018, 9:55 AM

Hi @Tanvidadu1998 , I trust you received Srishti's email? :) I think you can start writing updates about your progress at https://www.mediawiki.org/wiki/Google_Summer_of_Code/2018#Community_bonding_period . So for instance if you subscribed to wikitech-l as we talked about yesterday, you can add that to your updates. Please feel free to carry on with the other community bonding period steps mentioned on that page, as well as the project-specific tasks that Vivek suggested like reading documentation, and update via that page as you go.

Hi @josephine_l ,

As per your advice, I have introduced myself to community. I have received the mail by Srishti. I have started working on my first blog as well as the project-specific task mentioned by Vivek.

I saw your mailing list post. Nicely-written, well done! :)

srishakatux renamed this task from Outreachy Proposal : Feedback Sharing Module in Commons App to GSoC Proposal : Feedback Sharing Module in Commons App.Sep 8 2018, 2:22 AM
srishakatux removed a project: Outreachy (Round-16).
srishakatux closed this task as Resolved.Sep 12 2018, 4:07 AM

Hello @srishakatux,

Yes, this task has been completed by @Tanvidadu1998 and nothing is pending from her end.

One can check out the Feedback module in the latest version of the Commons Android app.