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
Period | Task |
---|---|
May 1 to May 26 | Community 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 27 | Coding officially begins! |
May 27 to June 9 | Work on Split Nearby into a fast query for coordinates + a details query. Testing code in different environments at the weekends |
June 10 to June 23 | Replace 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 30 | There are memory leaks in the `NearbyParentFragment`. Will work on optimizing code to avoid memory leaks. |
July 1 to July 7 | Testing Round 1: Testing of the optimizations by maintainers. |
July 8 to July 12 | Midterm evaluation period. |
July 12 | Start working on Custom-image-selector. |
July 14 to July 21 | Design 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 28 | Work on reducing the initial reloading time of the Custom Selector. Currently, it takes about 3-5 seconds. |
July 29 to August 4 | Testing 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 11 | Fixing issues related to Custom-image-selector:- Issue4630 & Issue5649 |
August 12 to August 19 | Finishing 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 26 | Final week: GSoC contributors submit their final work product and their final mentor evaluation (standard coding period). |
August 26 to September 2 | Mentors submit final GSoC contributor evaluations (standard coding period) |
September 3 | Initial results of Google Summer of Code 2024 announced |
Deliverables
Week 1(May 27 - Jun 2)
- Solve: Split Nearby into a fast query for coordinates + a details query
- Testing and review from the mentors
- Make necessary changes
Week 2(Jun 3 - Jun 9)
- Continue working on the query task and look for more optimization
- Solve:- Items with P3999 (date of official closure)
- Solve:- Making Nearby locations load faster
Week 3(Jun 10 - Jun 16)
- Solve: Load pins as I move the screen, cache pins, remove "search this area" button
- Implement a smooth experience similar to Google Maps
- Testing and reviews from mentors at the weekend
Week 4(Jun 17 - Jun 23)
- Work further on the same feature as suggested by the mentors
- Solve:- Wrong description language for Nearby upload (If got time)
- Solve:- Consider items with a "point in time" (P585) as not existing anymore
- Write tests if possible and have time
Week 5(Jun 24 - Jun 30)
- My exams will likely be from the end of June, so I will work on light tasks.
- Solve:- When the location mode is “device only”, the nearby information can not be obtained
- Look for optimization on the related code for better performance and prevent memory leaks by Nearby Fragment
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)
- Solve:- custom selector: App shows an upload failed notification even after upload succeeds
- Testing over the weekend
Week 10(Aug 5- Aug 11)
- Solve: When "Show already actioned pictures" disabled, Custom picker does not check uploaded-or-not status for never seen pics
- Solve:- Nearby -> Custom picker: Only allow 1 picture to be selected
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.
- Added Referer header property: #5417
- Fixed CI failing error: #5431
- Made nearby pins more visible: #5440
- Added regex to identify colon before uploading image: #5451
- Fixed misplaced icons for small screens: #5467
- Minor change that prevents occurrence of different fragment: #5488
- Better response given to the user by Snackbar: #5541
- Added a codemap for language code at Gerrit: #5571
- Fixed language switching for Chinese and others: #5560
- Allow only 1 picture to be selected by System Picker through Nearby: #5680
- 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.