Page MenuHomePhabricator

[Proposal GSOC 2024]: Improve upload queue management and Nearby Feature
Open, Needs TriagePublic

Assigned To
Authored By
Apr 1 2024, 6:04 PM
Referenced Files
F44087712: home.png
Apr 2 2024, 12:04 AM
F44087235: Artboard – 1.png
Apr 2 2024, 12:01 AM
Restricted File
Apr 2 2024, 12:01 AM
Restricted File
Apr 1 2024, 6:04 PM
Restricted File
Apr 1 2024, 6:04 PM


Profile Information

Name: Lawal Abiola
Education: University of Ilorin, Kwara state
Github : mshdabiola
LinkedIn : mshdabiola
Location: Lagos, Nigeria
Typical working hours: 8 am - 9 pm (WAT) UTC+1


  • The Wikimedia Commons Android app allows users to contribute photos directly from their phones, but the upload experience needs an upgrade. This GSOC project aims to revamp the upload queue management system and modernize the app's overall look and feel.

Have you contacted your mentors already?


Implementation Strategy

Improve upload queue management


Database Table for Upload Queue:

  • Add a new table specifically designed to cache the upload queue.
  • Schema: Employ the schema of the image for this table.


Upload Screen Design:

  • Create a new screen for users to initiate and manage image uploads.
  • View: This screen will primarily display a clear and informative view of the upload process.

home.png (908×428 px, 65 KB)

Image Upload Process:

  1. Initiation:
    • When a user selects an image for upload, it's immediately added to the "image database table."
    • A unique identifier (ID) is generated and assigned to the image to ensure tracking and consistency.
    • This ID is then used as a reference for the UniqueWorker, a component responsible for managing the upload task.
  1. Progress Management:
    • The UniqueWorker continuously updates the upload progress within dedicated database fields.
    • These updates are reflected on a visually clear progress bar, providing real-time feedback to the user.
  1. Cancellation:
    • If the user clicks the "cancel" button, the following actions occur:
      • The image is swiftly removed from the image database table.
      • The image ID is utilized to effectively cancel the upload task within the WorkManager, a system designed to manage background tasks.
  1. Error Handling:
    • In the event of an error during the upload process:
      • The table is updated to reflect the error status.
      • A "Retry" button is prominently displayed on the UI, conveniently enabling the user to resume the upload process.
  1. Retry Mechanism:
    • Upon clicking the "Retry" button, the UniqueWorker is triggered to restart the upload process from the point of interruption.
  1. Successful Upload:
    • If the upload completes successfully:
      • The worker meticulously removes the image from the upload queue table.
      • Relevant image data is seamlessly added to the "contributor table" to facilitate future image display and retrieval.
Nearby: Load pins as the user moves the screen, cache pins
  1. Location Caching:
    • Implement a mechanism to store user location data within a dedicated database table. This cached data will optimize future map interactions.
  1. Map Interaction and Boundary Detection:
    • When the map becomes visible to the user:
      • Upon zooming or scrolling actions on the map, capture the current bounding box. The bounding box represents the visible area on the map, defined by latitude and longitude coordinates.
  1. Cached Data Retrieval:
    • Leverage the captured bounding box to query the location cache database. This query will retrieve any relevant location data stored within the boundaries of the current map view.
  1. Data Visualization:
    • Display the retrieved location data as pin markers on the map. These pins will visually represent the cached locations within the user's current view.

Here's the markdown table with the description column summarized to 5 sentences:

May 4 to May 26Kick things off by meeting your mentors and fellow contributors. Share your new UI design and gather their insights. Use this feedback to polish your design before bringing it to life.
May 27th - May 31stDatabase design finalized.
May 2nd - June 7thDesign and initial development of upload screen.
June 8th - June 28thImplement image upload functionality with progress tracking, cancellation, and database interaction.
July 1st - July 6thImplement error handling and retry mechanism for uploads.
July 7th - July 12thMid Term evaluations.
July 13th - July 19thIntegrate upload process with contributor table and conduct testing..
July 20th - July 31stDesign and develop location cache database for storing, retrieving, and updating user locations.
August 1st - August 9thIntegrate map interaction with location cache to retrieve cached locations based on map viewport.
August 12th - August 17thImplement logic to display retrieved cached locations as markers on the map.
August 18nd - August 22ndImplement cache invalidation to remove outdated data and explore options for optimizing database queries.
August 23th - August 28thTest and refine location caching and map interaction functionality.
August 29 - September 2ndMentors submit final GSCOC contributor evaluations

Previous Contributions to Commons

S.No.PR No.Issue No.DescriptionStatus
1PR #5544#5522[Bug]: Thumbnail not visible while uploading rotated image.Merged
2PR #5466#5569BUG Rotated+uploaded pic not considered uploaded by custom pickerMerged

About Me

Lawal Abiola leveraged his Electrical and Electronic Engineering background from the University of Ilorin to develop a strong passion for coding. For the past 6 years, he has honed his skills in Android development, becoming proficient in utilizing Firebase, Git, UI development, and Retrofit. I am also broadened his experience with Ktor for server-side development, HTML and Javascript for web development, and even design tools like Adobe Illustrator and Adobe XD.

Relevant Skills

  • I bring expertise in managing development workflows with Github Actions and Git version control.
  • My skillset includes Android development using the Android SDK and designing user interfaces for Android apps.
  • I have a grasp of RxJava, Dagger2, and the AndroidX libraries for efficient Android development.
  • I'm comfortable working with networking libraries like Retrofit and OkHttp for data communication.
  • I prioritize code quality through unit testing practices for Android applications.
  • While my primary focus is Android, I also have familiarity with the Kotlin programming language.
  • In addition to Android, I possess a working knowledge of Python programming.
  • I understand how to interact with RESTful APIs using Python, including those provided by Wikimedia.
  • I have a foundational understanding of the Wikimedia API functionalities.


Are you eligible for Google Summer of Code?


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?

45 hours

Have you been accepted to GSoC before?

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

After GSoC

My commitment to Wikimedia extends beyond GSoC. I'm eager to help with issue resolution, idea generation, and code collaboration to make a positive difference.

Event Timeline

I see {F44022202} and similar in the proposal above. Is it images? Feel free to post them below using the "Upload file" button, or even upload them on Commons and post the URLs here. Thanks! :-)