Page MenuHomePhabricator

GSOC 2018 proposal for [Wikimedia Commons app] Feedback on how pictures uploaded to Commons are used
Closed, DeclinedPublic


Proposal for features implementation listed below:

Statistics, barnstars, light gamification #85, and Tutorial again and quiz, for people who did not understand topicness/copyright immediately #274 for GSOC 2018 internship.

Name: Abhishek Poonia
Social network: Facebook
Portfolio: I'm knight-shade on GitHub. I am also active on linkedin
Location: Bangalore, India
Typical working hours: 8:00am - 5:00pm, 9:00pm - 11:00pm (GMT+5:30)

The Wikimedia Commons app is an Android app that allows users to easily upload pictures from their mobile devices to the Wikimedia Commons database.
This project is aimed at implementing two crucial features of the app based on play store reviews and encouraging users to upload more Commons worthy photos. Showing users feedback and statistics on how their pictures are used with light gamification for bi-directional communication encourages users to upload more photos. Implementation of tutorial, quiz again for people who did not understand topicness/copyright based on their activities(eg. Many images uploaded by user are nominated for deletion). I have contacted the mentors via email and they are very encouraging and helped me a lot in getting started with project. Their guidance helped me in narrowing down potential issues for GSOC 2018.

These task will be achieved through 2 phases:

Phase 1: Showing feedback on user’s uploaded pictures.

  • Design beautiful and elegant UI prototypes with light gamification for providing feedback using Proto or Moqups which encourages users to upload more common’s worthy photos and a feel good factor.
  • Implementing UI prototypes in Java programming language using MVP architecture (currently used in app).
  • The APIs which will be used to fetch feedback statistics and its usage is discussed here.

Phase 2: Implement tutorial / quiz for people who did not understood topicness/copyright.

  • Design UI prototypes and control flow for the quiz focused to make the user understand topicness/copyright which contains appropriate number of questions.
  • Implementing quiz prototypes and showing tutorial again using Java programming language and MVP architecture (currently used in app).
  • Popping up dialog prompting user to take quiz, with the warning that if they carry on they will be banned when certain conditions are met (eg. User’s last 5 out 10 uploads are nominated for deletion, user gets more than 50% reverts in their last 20 uploads).
  • Data to analyse user’s activities is taken from Notification based on this issue and the API mentioned there.


  1. @maskaravivek
  2. @josephine_l


Key DateTaskDeliverable
April 24 - May 13Learning organization’s processes, developer interactions, codes of conduct, patch submission process and getting familiar with project’s codebase.Bonding period report.
May 14 - May 20Design beautiful and elegant UI prototypes with light gamification for providing feedback using Proto or Moqups which encourages users to upload more common’s worthy photos and a feel good factor.UI design prototypes.
May 21 - June 3Implementing UI prototypes in Java programming language using MVP architecture (currently used in app).A fully functioning UI module with dummy data.
June 4 - June 11Connecting to the APIs mention in #85 (Adding networking to app).Complete Feedback module which fetches data from Wikimedia server.
June 12 - June 15Phase 1 evaluations and report submission.Evaluation report in appropriate format.
June 16 - June 24Design UI prototypes and control flow for the quiz focused to make the user understand topicness/copyright which contains appropriate number of questions.UI design prototypes and control flow diagram.
June 25 - July 1Implementing quiz prototypes and showing tutorial again using Java programming language and MVP architecture (currently used in app).Fully functioning quiz module.
July 2 - July 8Implementation of conditions which should be met before popping dialog for taking tutorial followed by quiz user’s activities is taken from Notifications, based on this issue and the api mentioned there.Complete module which moniters user's activity for showing Quiz and tutorial appropriately.
July 9 - July 13Phase 2 evaluations and report submission.Evaluation report in appropriate format.
July 14 - July 22Manual testing of all the enhancements for potential bugs.Test report with bugs if any, and their potential solution.
July 23 - July 29Bug fixes and final testing of the app.App successfully works as intended with no major works.
July 30 - August 6Update app documentation to reflect new enhancements. Work on other issues listed on GitHub if still time is left.End-of-program evaluation and wrap-up report. Keeping the app documentation up to date

I have been using GitHub for quite some time now (~ 2 year) and have already used this method in hackathons and group projects.
I plan to communicate progress daily via short reports via e-mail or any other convenient medium and longer reports at milestones. Aside that, I will be active on Google Hangout and Zulip chat.

About you
Education completed: I am currently in 3rd year of BTech in Computer Science and Engineering studying at Reva University, Bangalore-560063, India with average CGPA of first five semesters 9.09/10.

How did you hear about this program?
I first heard about GSOC on facebook when a mutual friend shared a post regarding it.

Will you have any other time commitments, such as school work, another job, planned vacation, etc., during the duration of the program?
I have no other time commitments between these dates except college exams. I would like to take days off during university exams, and if possible 4-6 days off before exams also since GSOC will be having my complete focus during rest of the period. I will communicate with my mentors regarding making up the work, but I will try to stay a little ahead of schedule for unforeseen circumstances if it is granted.

What drives you? What makes you want to make this the most awesomest wiki enhancement ever? What does making this project happen mean to you?
I always wanted to develop apps for mobiles as how much they can help in day to day task. When I made my own attendance monitoring app by reverse engineering the university’s app for key and encryption algorithm, there was no looking back. I really like how developers are solving problems with creative solutions through apps and each and everyone of them make a difference.
I strongly believe that information should be accessible to everyone, and being an avid user of Wikipedia for almost half a decade. So I mailed both the mentors of this project. Both the mentors are very encouraging and helpful in getting started with the project, sharing their feedback on contributions to the project. So I am confident about implementing these three features helping more people to upload content to Wikimedia common’s repository.

Past experience
Please describe your experience with any other FOSS projects as a user and as a contributor:

  • Android - I have an Android phone for quite some time now, and have developed quite a few apps on it. The open nature and customizability to the core is a big factor in my choice
  • between IOS and Android phone. I have also contributed to Commons Android app , as described in bugfix section.I
  • Linux - I have been using Linux (Ubuntu) for few years. Its open source nature coupled with how easily it can be tweaked and control over each package installed is invaluable.
  • Other FOSS projects that I use: Mozilla Firefox, Python, Atom editor, Chromium, Thunderbird mail client, Apache and MySQL.

Please describe any relevant projects that you have worked on previously and what knowledge you gained from working on them (include links):
I wrote an Android app for library management for Computer Science department of my college, its currently under testing. Two more apps which were developed during hackathons Monify, Monify watch and TakeUp. Monify and Monify watch is a child monitoring app which can be used by parents and TakeUp is a social initiative which shows nearby trees and plants which require attention. I have also been working on Khoj, which is a library management app currently under testing phase by various faculties of the CS department. Through these projects, I have learnt adaptable UI/UX development for mobiles and tablets, and android app development in both Java and kotlin.

Bugfixes and features I've written to Commons Android app:

  1. Fixed “Bug: Unable to start the app on pre-lollipop devices” - Added multidex library and extended CommonsApplication from MultiDexApplication. (
  2. Solved “Image downloading fails #1216” - Changes were made to where the title of image was modified in a way so as to handle the spaces in it. Spaces was replaced by a '_'. (
  3. Fixed - “Orientation change in Notification activity causes it to reload notifications” - Now notification list is retained across orientation change (
  4. Fixed - “Orientation change in NearybyActivity causes it to reinitialise NearbyListFragment #1180” - Now the list of nearby places is retained across orientation change (
  5. Fixed - “Edittext in SingleUploadFragment lacks Material design, No scrolling behaviour and limit on text size in edit text causes content to be cut-off from screen. #1179” - Added material desgin to edit text , added character limit on image’s title and scrolling behaviour (
  6. Fixed - “Content in About activity gets cut-off in landscape mode” - Made appropriate changes to prevent content being cut-off on mobiles with smaller screen sizes (
  7. Reported Bug - “Orientation change in NearbyActivity during map mode crashes the app” -
  8. Fixed - “Add ItemDivier in NearbyListFragment” - Adding of ItemDivider in NearbyListFragment for better UI (
  9. Fixed - “Bug: In login activity, app crashes during orientation change” -
  10. Fixed - “Add password visibility toggle to login screen” - Added a password visibility toggle to login screen (
  11. Fixed - “Bug: In beta version of App, it shows 0 uploads even after multiple picture uploads.” - Instead of fetching it from sever, it is now set to number of items in ContributionListFragment's adapter.getCount(), since it equals number of pictures upload by the user., which leads to reduced network usage (
  12. Fixed - “BUG: Translation update on hold” - Translation updates were put on hold due to parsing error in backend, wrapping strings containing tags such as <u>, <i>,etc in CDATA solves the issue (
  13. Fixed - “Set proper with to navigation drawer in portrait and landscape mode” - Set proper width to navigation drawer which is lowerBound of 70% of the screen size in portrait mode and lowerBound of 50% of the screen size in landscape mode (
  14. Fixed - “BUG: Tutorial not available in landscape mode” - App’s tutorial was crashing in landscape mode leading to app crash due to missing ‘skip tutorial’ element. Added that to layouts, and structured them using constraint layout (
  15. Fixed - “Orientation change cancels the ongoing login process” - Now orientation change doesn’t have any effect on the ongoing login process (

Event Timeline

Hi @K0x3rr ,

Thanks for submitting your proposal. It looks great to me in general, and the list of bugfixes is impressive! :)

One thing I will say is that I don't know if we are ready to take the step of using Kotlin in the app proper, rather than just using it for writing tests (see outcome of this discussion). Certainly it is something that will require further discussion and consensus from the community beforehand. Given that time is short for GSoC application deadlines, my recommendation would be to alter your proposal to not utilize Kotlin for the development of the main feature (but using it for tests is OK).

@josephine_l Sure I have modified the proposal for the same. :)

Hello @K0x3rr ,

Thanks for putting up the proposal on phabricator for review. It looks to me and its good to see that you have experience working with several apps in the past. If some of those apps are already in the play store (in addition to the GitHub projects, which itself is good enough) it would be great if you add a link to it.

Moreover, the contributions that you have to the project is really appreciable. A lot of bug fixes and feature additions were done proactively by you. :)

A few suggestions:

  • IMO you can improve the Deliverables section by adding more details to it. Also, the Deliverable column can have more contextual detail rather than just mentioning commits/screenshots.
  • You have mentioned that you might need a couple of days off for your university exams. Are you sure 2 days would be what you need? Typically exams stretch for a week and if you would be unavailable for that duration, please mention it clearly. A week off wouldn't impact your proposal but setting false expectations might give a bad impression later on. :)

To answer the question you asked over email,

And outreachy proposal is also on same topic as gsoc.

Yes, this project is open both for outreachy and GSoC. @josephine_l Would you like to add something here?

Hi @maskaravivek , @K0x3rr spoke to me about the same thing over email, and I explained to him that this project is eligible for both GSoC and Outreachy, but that T188877 is reserved solely for GSoC. :)

Hello @maskaravivek , regarding your suggestions sir,

Add link to apps on Google play store

I currently do not have a Google play store account, so could not upload it to play store :(.

Improving Deliverable rather than mentioning commits/screenshots.

Have updated the Deliverable column where ever commit/screenshots were mentioned. Kindly have a glance :)

Regarding days off during university exams

Thanks for essential feedback, so silly of me. Ya, definitely I will be needing more than 2 days, during the exams schedule and if possible 4-6 days before exams to prepare of them since GSOC will be having my complete focus rest of the period. I will update the proposal as fast as I can (~1 - 2 days) with exact proposed dates of exams by college during GSOC 18 period ( 3rd Internals exams and Final semester ending exams).

Just letting you know I have my 2nd internals scheduled on 26th, 27th and 28th of March 2018. 2 exams on 26th and 27th each and 1 exam on 28.