Proposal for features implementation listed below:
[[ https://github.com/commons-app/apps-android-commons/issues/85 | Statistics, barnstars, light gamification #85 ]], and [[ https://github.com/commons-app/apps-android-commons/issues/274 | Tutorial again and quiz, for people who did not understand topicness/copyright immediately #274 ]] for GSOC 2018 internship.
**Profile**
Name: Abhishek Poonia
Email: abhishekpoonia22@gmail.com
Social network: [[ https://www.facebook.com/abhishek.poonia.750 | Facebook ]]
Portfolio: I'm [[ https://github.com/knight-shade | knight-shade ]] on GitHub. I am also active on [[ https://www.linkedin.com/in/abhishek-poonia-073908102/ | linkedin ]]
Location: Bangalore, India
Typical working hours: 8:00am - 5:00pm, 9:00pm - 11:00pm (GMT+5:30)
**Synopsis**
The [[ https://play.google.com/store/apps/details?id=fr.free.nrw.commons | Wikimedia Commons app ]] is an Android app that allows users to easily upload pictures from their mobile devices to the [[ https://commons.wikimedia.org/wiki/Main_Page | 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 [[ https://proto.io/ | Proto ]] or [[ https://moqups.com/ | 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 [[ https://github.com/commons-app/apps-android-commons/issues/85 | 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 [[ https://github.com/commons-app/apps-android-commons/issues/7 | issue ]] and the API mentioned there.
**Mentors**
# [[ https://phabricator.wikimedia.org/p/maskaravivek/ | @maskaravivek ]]
# [[ https://phabricator.wikimedia.org/p/josephine_l/ | @josephine_l ]]
**Deliverables**
| Key Date | Task | Deliverable |
|April 24 - May 13| Learning organization’s processes, developer interactions, codes of conduct, patch submission process and getting familiar with project’s codebase. | Bonding period report. |
|May 14 - May 20 | 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. | UI design prototypes. |
| May 21 - June 3 | Implementing UI prototypes in Java programming language using MVP architecture (currently used in app). | A fully functioning UI module with dummy data. |
| June 4 - June 11 | Connecting to the APIs mention in [[https://github.com/commons-app/apps-android-commons/issues/85 | #85 ]] (Adding networking to app). | Complete Feedback module which fetches data from Wikimedia server. |
| June 12 - June 15 | Phase 1 evaluations and report submission. | Evaluation report in appropriate format. |
| June 16 - June 24 | Design 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 1 | Implementing quiz prototypes and showing tutorial again using Java programming language and MVP architecture (currently used in app). | Fully functioning quiz module. |
| July 2 - July 8 | Implementation 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 [[ https://github.com/commons-app/apps-android-commons/issues/7 | issue]] and the api mentioned there. | Complete module which moniters user's activity for showing Quiz and tutorial appropriately. |
| July 9 - July 13 | Phase 2 evaluations and report submission. | Evaluation report in appropriate format. |
| July 14 - July 22 | Manual testing of all the enhancements for potential bugs. | Test report with bugs if any, and their potential solution. |
| July 23 - July 29 | Bug fixes and final testing of the app. | App successfully works as intended with no major works. |
| July 30 - August 6 | Update 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 |
**Participation**
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, Iand if possible I would like to take a couple of days off4-6 days off before exams also since GSOC will be having my complete focus during university exams,rest of the period. andI 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 [[ https://github.com/SamkeetJain/Monify | Monify ]], [[ https://github.com/SamkeetJain/MonifyWatch | Monify watch ]] and [[ https://github.com/knight-shade/TakeUp |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:**
# Fixed “Bug: Unable to start the app on pre-lollipop devices” - Added multidex library and extended CommonsApplication from MultiDexApplication. (https://github.com/commons-app/apps-android-commons/issues/1225).
# Solved “Image downloading fails #1216” - Changes were made to SingleUploadFragment.java where the title of image was modified in a way so as to handle the spaces in it. Spaces was replaced by a '_'. (https://github.com/commons-app/apps-android-commons/issues/1216).
# Fixed - “Orientation change in Notification activity causes it to reload notifications” - Now notification list is retained across orientation change (https://github.com/commons-app/apps-android-commons/issues/1198).
# Fixed - “Orientation change in NearybyActivity causes it to reinitialise NearbyListFragment #1180” - Now the list of nearby places is retained across orientation change (https://github.com/commons-app/apps-android-commons/issues/1180).
# 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 (https://github.com/commons-app/apps-android-commons/issues/1179).
# 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 (https://github.com/commons-app/apps-android-commons/issues/1177).
# Reported Bug - “Orientation change in NearbyActivity during map mode crashes the app” - https://github.com/commons-app/apps-android-commons/issues/1181.
# Fixed - “Add ItemDivier in NearbyListFragment” - Adding of ItemDivider in NearbyListFragment for better UI (https://github.com/commons-app/apps-android-commons/issues/1205).
# Fixed - “Bug: In login activity, app crashes during orientation change” - https://github.com/commons-app/apps-android-commons/issues/1207.
# Fixed - “Add password visibility toggle to login screen” - Added a password visibility toggle to login screen (https://github.com/commons-app/apps-android-commons/issues/1218).
# 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 (https://github.com/commons-app/apps-android-commons/issues/1262).
# 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 (https://github.com/commons-app/apps-android-commons/issues/1258).
# 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 (https://github.com/commons-app/apps-android-commons/issues/1275).
# 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 (https://github.com/commons-app/apps-android-commons/issues/1287).
# Fixed - “Orientation change cancels the ongoing login process” - Now orientation change doesn’t have any effect on the ongoing login process (https://github.com/commons-app/apps-android-commons/issues/1294).