Page MenuHomePhabricator

GSoC 2024 Proposal: Optimize Nearby and Custom Selector Feature for Commons Android App
Open, Needs TriagePublic

Description

Profile Information

Name - Rohit Verma
LinkedIn - rohit0111
GitHub - rohit9625
Location - Ghaziabad, India
Typical working hours - 9 am to 10 pm (IST) UTC+5:30

Synopsis

Summary

The Wikimedia Commons Android app allows users to upload pictures from their Android phone/tablet to Wikimedia Commons. It also provides several features like - Nearby, Maps, etc. for more usability.

This project aims to enhance the user experience by improving how the app handles Maps and Custom-image-selector with these objectives:-

  • Reduced Issues and Improved Stability: Through bug fixing and optimization efforts, this project will contribute to a reduction in the number of issues encountered by users. By addressing existing bugs and enhancing the app's performance, the overall stability and reliability of the Wikimedia Commons Android app will be greatly improved.
  • Showcasing Innovation: The implementation of features such as smooth Nearby functionality and automatic searching akin to Google Maps will showcase the innovative capabilities of the Wikimedia Commons Android app.
  • Make custom-selector smooth while scrolling and refreshing images
  • Modernize the application by using Kotlin instead of Java if possible
Possible Mentor(s):-

@Nicolas_Raoul @RitikaPahwa4444

Have you contacted your mentors already?

YES.

Timeline

PeriodTask
May 1 to May 26Community bonding period. I will work on existing bugs and enhancements labeled as nearby to get familiar with the feature's source code. Also, find the solution to make Custom selector smoother and reduce loading time. Practice SPARQL queries for nearby.
May 27Coding officially begins!
May 27 to June 9Work on Split Nearby into a fast query for coordinates + a details query. Testing code in different environments at the weekends
June 10 to June 23Replace the Search this area feature with automatic searching like Google Maps. Testing code and fixing related bugs will be considered during this period.
June 24 to June 30There are memory leaks in the `NearbyParentFragment`. Will work on optimizing code to avoid memory leaks.
July 1 to July 7Testing Round 1: Testing of the optimizations by maintainers.
July 8 to July 12Midterm evaluation period.
July 12Start working on Custom-image-selector.
July 14 to July 21Design the Custom-image-selector UI using Jetpack Compose as it will optimize the performance and reduce reloading of the whole UI whenever Marking as not for upload. Using Compose will not affect other features because I know how to work on Compose and views simultaneously.
July 22 to July 28Work on reducing the initial reloading time of the Custom Selector. Currently, it takes about 3-5 seconds.
July 29 to August 4Testing and receiving feedback from mentors and making changes if necessary. If got time then, I will start working on related bugs also.
August 5 to August 11Fixing issues related to Custom-image-selector:- Issue4630 & Issue5649
August 12 to August 19Finishing any leftover tasks from before, if there are any, and wrapping up everything. Coding period ends officially by the end of this week.
August 19 to August 26Final week: GSoC contributors submit their final work product and their final mentor evaluation (standard coding period).
August 26 to September 2Mentors submit final GSoC contributor evaluations (standard coding period)
September 3Initial results of Google Summer of Code 2024 announced

Deliverables

Week 1(May 27 - Jun 2)

Week 2(Jun 3 - Jun 9)

Week 3(Jun 10 - Jun 16)

Week 4(Jun 17 - Jun 23)

Week 5(Jun 24 - Jun 30)

Week 6(Jul 1 - Jul 7)

  • Final testing of the whole implementation
  • Evaluation by mentors before submitting midterm reports

Week 7(Jul 14 - Jul 21)

  • Exams will be over till this week.
  • Develop UI using Jetpack Compose for custom-image-selector because I believe it will help us optimize the whole feature.
  • Get reviews from the mentors before proceeding to the business logic

Week 8(Jul 21 - Jul 28)

  • Reduce initial loading time of custom-image-selector
  • Testing over the weekend

Week 9(Jul 29- Aug 4)

Week 10(Aug 5- Aug 11)

Week 11(Aug 12- Aug 19)

  • Finalizing feature.
  • Manual testing to ensure a seamless experience with both features.

Week 12(Aug 19- Aug 26)

  • I will submit my final work and project report(if necessary).
  • Also submit the final mentor evaluation.

Note:- I will blog post my weekly progress every week or once every two weeks on my website or maybe on another platform(will decide through the bonding period).

Participation

  • I will use Zulip for communicating and discussing with mentors. Email can be also used for discussions.
  • Work on issues by creating a separate branch on my fork and keep the main branch up to date with the commons main branch. The main branch will be used for testing recent changes done by others.
  • Elaborate my learnings during the internship period at any one blog platform.

About Me

Hello, I am Rohit and I am pursuing a Bachelor of Technology in Computer Science & Engineering from Babu Banarasi Das Institute of Technology, Ghaziabad. Currently, I am in my 6th semester of the 8-semester program and I'll be graduating in 2025.

How did I hear about this program?

I have been looking for opportunities to work on real-world projects through some kind of internship since my first year. Then, I got to know about Open Source Contribution and after some more research, I found this program Google Summer of Code, GSoC for short. I heard about this program from YouTube and Google itself.

Will you have any other time commitments, such as school work, another job, planned vacation, etc, during the duration of the program?

Yes, I do have my college classes from 9 am to 2 pm that too 4 days a week as of my timezone. But I'll manage to work on tasks linked to this proposal after college.
I can manage to work at least 40 hours a week.

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 to the Wikimedia Foundation as a part of the Google Summer of Code program.

What does making this project happen mean to you?

As a tech enthusiast, I have been learning technologies since my first year and found Android Development interesting. I was willing to contribute to the Commons Android App since 2023 but I didn't have any development skills at that time. I practiced DSA in Java but that was not sufficient to contribute. Honestly, I got to know about the Commons Android app when I was exploring OSS. Before that, I didn't use any software like this. Then, I found this application useful for me as I click pictures for my hobby.
The large codebases and frameworks made me overwhelmed. Then, I started development in 2023 and learned Android Development with Koltin and Web Development as well. Now I am familiar with technologies like - Jetpack Compose, NodeJS, etc. However, the year passed so quickly and I made my first contribution in Jan 2024. I do know about working with modern technologies which can be useful to make commons updated not only by the latest version but with the latest technologies.

Past Experience

Bug Fixes

This is going to be my first experience working on an open-source project. So, I have fixed some bugs in Commons Android App to get familiar with the codebase.

  1. Added Referer header property: #5417
  2. Fixed CI failing error: #5431
  3. Made nearby pins more visible: #5440
  4. Added regex to identify colon before uploading image: #5451
  5. Fixed misplaced icons for small screens: #5467
  6. Minor change that prevents occurrence of different fragment: #5488
  7. Better response given to the user by Snackbar: #5541
  8. Added a codemap for language code at Gerrit: #5571
  9. Fixed language switching for Chinese and others: #5560
  10. Allow only 1 picture to be selected by System Picker through Nearby: #5680
  11. Rename be-x-old language code to be-tarask in languages list: #5676
Personal Projects

Although I worked on many Android projects through my learning process and created this note-taking app to conclude my learnings so far.

Pick Notes

Tech Stack: Kotlin, Jetpack Compose, Room, Retrofit, Dagger. NodeJS, and MongoDB for API.
Description: Pick Notes is an Offline First simple note-taking Android application developed using the MVVM pattern. It provides a simple and intuitive interface for managing personal notes conveniently. The application also includes authentication with client-side validations to ensure secure access to the note management functionality.
All the latest technologies are used in developing this application.

Event Timeline

On July 12 I see "GSoC contributors start working on their project with guidance from Mentors." ... at that point it is started already, so maybe no need for this sentence?

Apart from this, your proposal is great! Good choice of tasks.