Page MenuHomePhabricator

Commons app GSoC 2024: Improve upload queue management
Open, Needs TriagePublic

Description

Brief summary

The Commons app 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:

  1. Improve upload queue management:
    1. Process upload tasks as a real queue, where:
      1. Uploads are performed one by one.
      2. Uploads never get stuck: https://github.com/commons-app/apps-android-commons/issues/5603
      3. 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.
      4. Adding many uploads to the queue does not disproportionately increase the chances of failure.
      5. 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 makeshift Faraday cage, 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.
    2. 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.
    3. Prevent retries for genuinely failed uploads: https://github.com/commons-app/apps-android-commons/issues/5284
    4. Never show successfully uploaded images as "Failed": https://github.com/commons-app/apps-android-commons/issues/5280
    5. Enqueue failed uploads, rather than uploading them simultaneously with the ongoing upload: https://github.com/commons-app/apps-android-commons/issues/5283
    6. Prevent duplicates: https://github.com/commons-app/apps-android-commons/issues/5608
  2. Nearby: 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
  3. (optional, if time allows or if some of the tasks above are already completed by someone else) Further improve the "Nearby" feature:
    1. Split Nearby into a fast query for coordinates + a details query for each pin: https://github.com/commons-app/apps-android-commons/issues/4560
    2. Feedback about a Wikidata item https://github.com/commons-app/apps-android-commons/issues/2425

Skills required

  • Java or Kotlin
  • Android development

Mentors

Microtasks

Please read gsoc.md which guides you on how to choose an issue and perform a microtask.

Size

Project size: 350 hours
Difficulty: Intermediate

Event Timeline

Hi @Nicolas_Raoul

Thank you for sharing your project proposal. Please can you add the expected size of project it can be either: 90, 175 or 350 hours. If possible please also add, an easy, intermediate or hard/difficult rating. This helps the more inexperienced folks not get overwhelmed and they can focus on reviewing easy project ideas.

Thank you,

Hi @Nicolas_Raoul

I have added this project to our GSOC 2024 Media Wiki page: https://www.mediawiki.org/wiki/Google_Summer_of_Code/2024#Ideas_for_projects

Kindly share your project via Wikitech by replying to this thread: https://lists.wikimedia.org/hyperkitty/list/wikitech-l@lists.wikimedia.org/thread/Y7PRNX3SMKLTT6ABLGYADTLT2NQ7MKJE/

If this is your first time mentoring via GSoC, I recommend reviewing this guide for mentors: https://www.mediawiki.org/wiki/Google_Summer_of_Code/Mentors. Additionally, i have added you and your co-mentor to our Zulip chat where you can connect with fellow mentors for ongoing support and collaboration.

Hello Mentors @Nicolas_Raoul @RitikaPahwa4444 ,

I would be grateful to be part of this project, Please could guide me on how it would be the best way to proceed further on this project?

Is there any preferred channel to communicate regarding the same? Looking forward to your response.

Hey @Simran.67c, though I am not a mentor, as mentioned in the description of this task, you can take a good look at GSOC guidelines which lists the process required to apply for GSoC through this project. Regarding the channel of communication, we mostly discuss issues and their solutions on GitHub itself. Here's the link to the Commons repository.

Hey @ShashwatKedia051005, Thanks a lot for your help! Really appreciate it.

Hi all,

I revamped tasks 2 and 3, since two of the tasks have been completed before GSoC started.
Overall it is still the same complexity/duration, I believe.

Thanks! :-)