===Brief summary
The [Commons app](https://play.google.com/store/apps/details?id=fr.free.nrw.commons) is an open source Android app that allows anyone to **upload** pictures to Wikimedia Commons (the image repository used by Wikipedia, Wikinews and other projects).
The goal of this GSoC is to improve upload queue management, and modernize the app:
# Improve upload queue management:
# Process upload tasks as a real queue, where:
# Uploads are performed one by one.
# Uploads never get stuck: https://github.com/commons-app/apps-android-commons/issues/5603
# There is no difference between uploads that have not started yet. Example: Currently some have a non-started progress bar and some have a label “Queued”, which is unfortunate.
# Adding many uploads to the queue does not disproportionately increase the chances of failure.
# Test: In quick succession add 5 multi-uploads of 20 pictures each, then hinder the Internet connection for 30 seconds every 5 minutes (for instance by putting the phone in a metal box, check with a ping chart app such as PingTools). Currently this leads to part of the uploads getting stuck. Ideally all pictures should get uploaded one after the other.
# Make it easier to see whether all uploads are finished or not, for instance by having them at the top or by having an overall progress bar. Thinking about the best possible UI is part of the task so it does not need to be decided now, though ideas are welcome. It might be worth exploring if we could have a separate "Pending uploads" screen that's completely focused on managing the in-progress uploads of an user and providing them with more flexibility to manage them seamlessly.
# Prevent retries for genuinely failed uploads: https://github.com/commons-app/apps-android-commons/issues/5284
# Never show successfully uploaded images as "Failed": https://github.com/commons-app/apps-android-commons/issues/5280
# Enqueue failed uploads, rather than uploading them simultaneously with the ongoing upload: https://github.com/commons-app/apps-android-commons/issues/5283
# Prevent duplicates: https://github.com/commons-app/apps-android-commons/issues/5608
# Modernize the app by replacing Kotlin Android Extensions and Butterknife with ViewBinding: https://github.com/commons-app/apps-android-commons/issues/4Nearby: Load pins as the user moves the screen, cache pins, remove "search this area" button: https://github.com/commons-app/apps-android-commons/issues/5664
# (//optional, if time allows or if some of the tasks above are already completed by someone else//) IFurther improve the "Nearby" feature:
# Load pins as I move the screen, cache pins, remove "search this area" button: https://github.com/commons-app/apps-android-commons/issues/5664Split Nearby into a fast query for coordinates + a details query for each pin: https://github.com/commons-app/apps-android-commons/issues/4560
# Split Nearby into a fast query for coordinates + a details query for each pin: https://github.com/commons-app/apps-android-commons/issues/4560Feedback about a Wikidata item https://github.com/commons-app/apps-android-commons/issues/2425
===Skills required
- Java or Kotlin
- Android development
===Mentors
- @Nicolas_Raoul
- @RitikaPahwa4444
===Microtasks
Please read [gsoc.md](https://github.com/commons-app/commons-app-documentation/blob/master/android/gsoc.md) which guides you on how to choose an issue and perform a microtask.
===Size===
Project size: 350 hours
Difficulty: Intermediate