Page MenuHomePhabricator

GSOC 2024 Proposal: Improve Nearby Performance and Implement Enhancements
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 Nearby and Maps with these objectives:-

  • Enhanced User Experience: The proposed enhancements aim to streamline the Nearby and Maps functionalities, making them more intuitive and efficient for users. This will result in a more enjoyable and seamless experience when exploring Nearby, ultimately increasing user engagement and retention.
  • 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.
  • Implement nearby feature in Kotlin if required
  • At last make User Experience as best as possible
Possible Mentor(s):-

@Nicolas_Raoul @RitikaPahwa4444

Have you contacted your mentors already?

YES.

Timeline

PeriodTask
May 1 to May 26Community bonding period. I'll be working on existing bugs and enhancements labeled as nearby to get familiar with the feature's source code. Do research and have discussions with the mentors throughout this period. 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 and on some minor issues as well. 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(like:- Issue5529) 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 7Fixing : Issue4207 and testing of the optimizations by maintainers.
July 8 to July 12Midterm evaluation period.
July 12Begin further enhancements to the Nearby feature after midterm evaluation.
July 14 to July 21Making recenter to the current location feature more reliable and accurate. Fix related bugs if time allows.
July 22 to July 28I'll be working on the issue: Neaby pin does not disappear after submitting to Wikidata and fix related bugs also. Testing the changes at the weekend.
July 29 to August 4Working on the task: Bookmarked item does not disappear from map. Testing and receiving feedback from mentors and making changes if necessary.
August 5 to August 11Continuing to address any outstanding aspects of the tasks from the previous week. Also will be working on this exciting enhancement: Suggest a route of X kilometers around me, via as many Nearby points as possible throughout this period.
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)

  • Work further on the same feature if something remains otherwise
  • Solve: Maps tiles load slowly
  • Testing over the weekend

Week 5(Jun 24 - Jun 30)

  • My exams will likely be from the end of June, so I will work on light tasks.
  • Look for optimization on the related code for better performance and prevent memory leaks by Nearby Fragment

Week 6(Jul 1 - Jul 7)

Week 7(Jul 14 - Jul 21)

Week 8(Jul 22 - Jul 28)

Week 9(Jul 29- Aug 4)

Week 10(Aug 5- Aug 11)

Week 11(Aug 12- Aug 19)

  • Finishing any leftover tasks from before, if there are any, and wrapping up everything.
  • A week dedicated to conducting manual testing across all possible scenarios.

Week 12(Aug 19- Aug 26) Final Week

  • I will submit my final work product 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.

After GSOC

This is the first open-source project I am contributing to and I am lucky that I got helpful mentors The developer's community is very friendly and helpful. I feel like working in a motivated and helpful environment. I would love to contribute to the commons-android app after the GSoC. Also, consider mentoring next year's GSoC.

Event Timeline

"Maps tiles load slowly" is probably very lengthy to solve.
Maybe investigate it first, then identify what is the issue, then if relevant send a bug report to upstream (for instance OsmDroid or Wikimedia), then possibly work on it after upstream responded (for instance they might give tips).

"Suggest a route of X kilometers around me, via as many Nearby points as possible" will also probably take more than a week.

On the opposite these are very easy, maybe a few hours:

  • Items with P3999 (date of official closure)
  • Consider items with a "point in time" (P585) as not existing anymore

So all in all probably a good balance. It is expected that you may not adhere 100% to schedule, taking more time sometimes and less time sometimes, so don't worry too much about rewriting your schedule.

Thank you for reviewing my proposal :)
I'll start working on the task "Suggest a route of X kilometers around me, via as many Nearby points as possible" from the 10th week and continue working at the end of the 11th week. However, I can't wait for the week so I will start researching and finding a solution to the problem before the week comes.

Same for the task "Maps tiles load slowly". This seems important to enhance the Nearby. I think the most important one so I will also start outlining the working process way before the week. The time can be taken from the start of the 4th week to the end of the 6th week because of my exams I can't work on another big issue at that time.

The task you mentioned:-

  • Items with P3999 (date of official closure)
  • Consider items with a "point in time" (P585) as not existing anymore

will take hours for sure. So, if you say I can replace these tasks or include more tasks to increase the overall output of the project.

As you said, it's probably a balanced timeline, or maybe not. But I will try my best to get tasks done on time for sure :)
I am open to more changes, if anything I miss so please express your thoughts about the problem I gonna solve.