Page MenuHomePhabricator

[Proposal] Commons App: Make Uploads More Reliable
Closed, DeclinedPublic

Description

Profile Information

Name : Arman Navodia
Email : armannavodia2002@gmail.com
University : Gujarat Techonolgical University
Linkedin: https://www.linkedin.com/in/arman-navodia/
Location : India (UTC +5:30)
GitHub : https://github.com/ArmanNavodia
Typical working hours : Between 6:00 pm and 2:00 am UTC +5:30

Synopsis

App

  • The Wikimedia Commons Android app allows users to upload pictures from their Android phone/tablet to Wikimedia Commons. Commons is not only the image repository for Wikipedia but an independent project that seeks to document the world with photos, videos, and recordings.
  • Commons App Repo : Github

Project

  • This project aims to fix uploads related issues and deal with metadata loss.
  • The project is about making the upload more reliable by fixing the issues of location being lost, failing uploads and retired uploads get stuck in the queued state
  • Github issue : Make upload more reliable

Possible Mentor(s)
@Nicolas_Raoul
@Kaartic

Deliverables

To be implemented

#5196: Picture location is sometimes lost despite being present in EXIF
In latest versions of android there is a issue to read the EXIF data present in the images. It somehow does not parse the meta data present in the image. I tested this bug on API 31 device, even with the location data being present in the metadata it shows no location found.

Possible Implementation Strategy: Seeing the problem the possible approach can be to check the problems in the current EXIF reader that is implemented by ExifInterface and update the implementation accordingly. One thing that I observed while testing is that it works perfect for android 9. So problem is with the versions of android after that. Even there could be problem with the permissions because of the improvement in the security of the latest android versions.

#5128: Upload often fails, especially when uploading 5 or more pictures over a slow Internet connection.
This issue could be caused by the network timeout or maximum size of the data that can be sent at a time.

Possible Implementation Strategy: Check the network parameter such as timeout and other any such parameter. Check for the size limitations for the upload if any. Also code for retry upload can be added if max upload size and timeout is not causing the issue.

#5136(if time allows) Retried uploads stuck in queued state
The cause of the issue could be caused due to failing uploads is moved to queued state but never changed the state after that when reupload or resume button is pressed.

Possible Implementation Strategy: check for the STATE_QUEUED to find if the problem is associated with it. If queued state is root cause then it needs to be updated appropriately to the same state as that of a new upload once the internet connectivity resumes/the paused uploads are started again. Also it's important to ensure that the resumption of the paused uploads does not cause any conflicts or overwrite any previously uploaded data. It may be necessary to perform a comparison of the existing data with the data that is being uploaded to prevent any duplication or loss of information.

Timeline

TimeframeClassificationTask
4 May - 28 MayCommunity Bonding PeriodConnect with the mentors, learn more about the community, familiarise with the app structure, understand more about the upload process
Try and testTry and test out the things with the uploads to get clear understanding of how upload process works
TASK 1: Issue #5196
(week 1) 29 May - 4 JuneDeliverableIdentify the primary cause
Subtask 1Check the code and find the code that is causing this issue.
Subtask 2Brainstorm on strategy to fix this issue.
Subtask 3Discuss with mentor and finalize the implementation strategy.
(week 2) 5 June - 11 JuneDeliverableFix bug
Subtask 1Work on the implementation of above finalized strategy to fix the bug.
Subtask 2After implementation test for various scenarios.
(week 3) 12 June - 18 JuneDeliverable Write new/fix Unit tests
Partially unavailablePartially unavailable due to end semester exam (tentative*)
Subtask 1Write new /Modify old unit tests for all the changes in the code
Subtask 2Complete any pending task(s)
(week 4) 19 June - 22 JuneDeliverableGet feedback from the mentors
Partially unavailablePartially unavailable due to end semester exam (tentative*)
Subtask 1Incorporate any changes suggested by the mentors
Subtask 2write a blog or report of the progress.
TASK 2: Issue #5128
(week 5) 23 June - 29 JuneDeliverableIdentify the primary cause
Subtask 1Check the code and find the code that is causing this issue.
Subtask 2Brainstorm on strategy to fix this issue.
Subtask 3Discuss with mentor and finalize the implementation strategy out of all possible strategy.
(week 6) 30 June - 9 JulyDeliverable Fix bug
Subtask 1Work on the implementation of above finalized strategy to fix the bug.
Subtask 2After implementation test for various scenarios.
(week 7) 10 July - 14 JulyDeliverable Mid-term evaluation/ Unit tests
Subtask 1Finalize the changes
Subtask 2Evaluation
Subtask 3Write/Modify unit tests
(week 8) 15 July - 28 JulyDeliverableGet feedback from the mentors
Subtask 1Complete any pending task(s)
Subtask 2Incorporate any changes suggested by the mentors
Subtask 3Report/Blog
TASK 3: Issue #5136
(week 9) 29 July - 1 AugDeliverableIdentify the primary cause
Subtask 1Check the code and find the code that is causing this issue.
Subtask 2Brainstorm on strategy to fix this issue.
Subtask 3Discuss with mentor and finalize the implementation strategy out of all possible strategy.
(week 10) 2 Aug - 8 AugDeliverableFix bug
Subtask 1Work on the implementation of above finalized strategy to fix the bug.
Subtask 2After implementation test for various scenarios.
(week 11) 9 Aug - 15 AugDeliverableUnit test
Subtask 1Write/Modify unit tests for the custom selector
(week 12) 16 Aug - 22 AugDeliverableGet feedback from the mentors
Subtask 1Complete any pending task(s)
Subtask 2Incorporate any changes suggested by the mentors
Subtask 3Report/Blog
(week 13) 23 Aug - 28 AugDeliverableFinal Submission.
Subtask 1Final Evaluation
Subtask 2Major bugfixes, Ui improvement.
Subtask 3Remaining tests, code cleanup, documentation.
Subtask 4Overall Blog post.

Participation

I intend to get in touch with mentors via Zulip and Github to report my progress, ask for advice, or discuss the bug

About Me

I am Arman Navodia, a 3rd year student at Vishwakarma Government Engineering College, currently pursuing my B.E in Computer Engineering. I love developing Android apps and have been exploring Android development since my first semester at college. Apart from Android development I have tried developing web apps in react and cross platform apps in react native. Also I have interest in the Data Structure and Algorithms which helps me to think critically and creatively to solve the given problem/bugs.

  • How did you hear about this program?

I got to know about this program from seniors in the college.

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

I am applying at Wikimedia Foundation, that too as a part of Google Summer of Code only.

  • What does making this project happen mean to you?

Completing this project means a lot to me. I am a strong supporter of free and open-source work, by the completion of this GSoC Task more and more people will engage in contributing media to the Commons Android app. Also it will help me get understanding how the code base and projects are managed in such a big organizations.

Past Experience

Group projects:
Farmer360 :HTML , CSS , JavaScript , MongoDB, Flutter

  • Farmer360 is an ongoing project that could help 150M+ Indian farmers and government in regulating the farmers data.
  • Closely worked with the team to test and build the API’s and database along with the testing the project for the flaws which helped me to understand more deeply about the architecture of whole projects and how the data flows from backend to frontend and vice-versa

SecureBuddy : HTML, node, javaScript ,psql database

  • Deployed a web application that checks for the vulnerabilities in the Github open source repository. This tool can prevent attacks on thousands of users that unintentionally use compromised repos.
  • Being the team lead, managed the whole team and worked to develop the formulas for calculations, implemented the database along with helping to design architecture of project, testing and debugging the code.

Personal Projects:
Inventory App : Java, XML ,SQLite GitHub Repository

  • It is app for storing the item with images in a mobile application which I developed for learning purpose. It offers features as capture image through camera and select image from gallery.
  • In this I have used SQLite database for storing the items and used CardView to populate the items and listview to show items in the list
  • Learned About : Designing, SQLite Database ,image storing

Repository

News App: Java, XML GitHub Repository, REST API

  • Created a mobile application that fetches the new data from the server using API and displays it on the screen
  • Learned About : APIs, listview, Json, HTTP request, Git, GitHub

Repository

More projects : Github profile

Major Achievements

  • Selected as visiting student at Indian Institute of Technology Gandhinagar. Among the 2 students selected by Indian Institute of Technology Gandhinagar, from colleges under Gujarat Technological University, for the visiting students program with the Indian Institute of Technology Gandhinagar for academic year 2022-2023. Courses taken : Artificial Intelligence, Algorithms, Theory Of Computation, Philosophy, Ethical Leadership, Graphic Design
  • Received felicitation for excellent performance in academics in 3rd Semester

Relevant Skills

  • Familiar with android architecture components.
  • Experience in Android development with Kotlin, XML, Java
  • Proficiency in using SQLite, SQL, PostgreSQL, REST API and Room Database
  • Git and GitHub
  • Understanding of Jetpack Compose
  • Unit testing in Android (Robolectric and Mockito)
  • Basic knowledge of Wikimedia APIs

Previous Contributions to Commons

I have been contributing to the Commons Android app since February 2023 and the majority of my efforts go towards fixing bugs that result from logical mistakes rather than UI. You can find all my pull requests here

Total: 5
Merged: 5

Pull Requests on Existing Issues

S. No.Issue No.Issue DescriptionPR No.Tasks PerformedStatus
1.#5180Duplicate filename notification completely replaces image-found-on-internet warning#5192Changed the error code for file name exists. To check for the error effectively. Replaced switch case with multiple if statements so that every condition is checked.Merged
2.#4731Nearby banner appearing in Media Details#5150Added a condition where the nearby banner was updating and rendering againMerged
3.#2296After canceling a sharing, application goes back to the search menu#5156Added a media detail fragment in backstack in MediaDetailPagerFragment also removed the entry from the backstack when the user presses back buttonMerged
4.#4700When the coordinates have been copied from another picture, explain it in description#5166When the user was asked to use similar coordinate if the response was positive then added the string in description.Merged
5.#4774Leaderboard: Taping on my avatar should open tip popup explaining how to change it#5159Added a variable to track user login. Added on click listener on avatar show that on tap it shows toast messageMerged

Certifications

I enrolled in and finished 9 of the 12 courses in the specialization in Android Development course on Coursera. Out of which 6 courses are related to native android development using kotlin rest are cross platform development courses using react native.

  1. Introduction to Android Mobile Application Development certificate
    • key learning: Learned basics about Android Development.
  2. Version Control certificate
    • key learning: Learned in depth use of git and Github.
  3. Programming Fundamentals in Kotlin certificate
    • key learning: Learned Kotlin basics covering loops, conditions, variables, functions, etc.
  4. Principles of UX/UI Design certificate
    • key learning: Learned about low fidelity wireframes and high fidelity mockups and learned to use figma .
  5. Create the User Interface in Android Studio certificate
    • key learning: Learned to make UI using jetpack compose.
  6. Advanced Programming in Kotlin certificate
    • key learning: Learned advanced topics covering constructor, objects, various types of classes, lambda functions.

Availability

Are you eligible for Google Summer of Code?

Yes.

Do you plan to submit any other proposal apart from this one?

No, I plan to submit only one proposal.

Do you have any other plans during the period of GSoC?

No, I do not have any other plans during the contribution period.

How many hours per week can you dedicate to this?

I can dedicate approx 18-20hrs hours per week. I have assigned few days for incomplete tasks as a buffer to accommodate any emergencies.

Have you been accepted to GSoC before?

No. I am applying in GSoC for the first time.

Event Timeline

Hi @Arman_Navodia, as the deadline for GSoC is quickly approaching in less than 48 hours (April 4th, 2023, 18:00 UTC), it's crucial that you submit your proposal on Phabricator and Google's program website in the recommended format as soon as possible. To avoid any potential last-minute rushes or server failures, we highly recommend that you submit your proposal early and keep updating it as needed before the deadline. Once you have submitted your proposal, please move it from the "Proposals in Progress" column to the "Proposals Submitted" column on the Phabricator workboard by simply dragging it. If you have any inquiries, please do not hesitate to ask. Good luck with your application!

@Arman_Navodia We are sorry to say that we could not allocate a slot for you this time. Please do not consider the rejection to be an assessment of your proposal. We received over 100 quality applications, and we could only accept 9 applicants. We were not able to give all applicants a slot that would have deserved one, and these were some very tough decisions to make. Please know that you are still a valued member of our community and we by no means want to exclude you. Many applicants who we did not accept in previous rounds have become Wikimedia maintainers, contractors and even GSoC students and mentors this year!

Your ideas and contributions to our projects are still welcome! As a next step, you could consider finishing up any pending pull requests or inform us that someone has to take them over. Here is the recommended place for you to get started as a newcomer: https://www.mediawiki.org/wiki/New_Developers.

If you would still be eligible for GSoC next year, we look forward to your participation!