Profile
Name: Ritika Pahwa
Email: ritikapahwa4444@gmail.com
Location: Delhi, India
Education: Indira Gandhi Delhi Technical University for Women, India (Expected Graduation Year: 2024)
LinkedIn: ritikapahwa4444
GitHub: RitikaPahwa4444
Other Communication modes: Discord, Slack, Zulip
Typical Working hours during GSoC: 9 am to 9 pm (IST) UTC+5:30
Synopsis
Wikimedia Commons is an Android app that enables users to upload and view pictures from their Android phone/tablet on the Commons server.
Commons App Repo: GitHub
Project
This project aims to fix uploads related issues and deal with metadata loss.
GitHub issue: Make upload more reliable
Mentors
Have you contacted the mentors already?
Yes.
Deliverables
Implementation
- #5196: Picture location is sometimes lost despite being present in EXIF
Possible Implementation Strategy: Based on the hints provided here, a number of scenarios can be analysed and the location loss may be fixed depending on the case.
- #5128: Upload often fails, especially when uploading 5 or more pictures over a slow Internet connection.
Possible Implementation Strategy: As described in the issue, the network parameters need to be experimented upon, and a retry loop may be incorporated.
- #5136(if time allows) Retried uploads stuck in queued state
Possible Implementation Strategy: As observed here, the uploading process gets resumed when a new upload is performed. This means that the STATE_QUEUED needs to be updated appropriately to the same state as that of a new upload once the internet connectivity resumes/the paused uploads are started again.
While these are the possible implementation strategies I could think of as of now, I am constantly researching and looking for alternate approaches too, in order to find the best implementation.
Timeline
Timeframe | Classification | Task |
---|---|---|
4 May - 28 May | Community Bonding Period | Connect with the mentors and learn more about the community, familiarise with the app structure, understand more about the upload process |
Partial Unavailability | Partially unavailable from 4 May to 15 May due to end semester exams at my University | |
TASK 1: Issue #5196 | ||
29 May - 4 June | Deliverable | Report key findings |
Subtask 1 | Imagine various scenarios where location loss is possible and investigate each of them | |
Subtask 2 | Analyse various possibilities and prepare a report on the observations | |
Subtask 3 | Finalise the implementation strategy for each scenario | |
5 June - 11 June | Deliverable | Fix location-loss |
Subtask 1 | Obtain location information appropriately from the EXIF data | |
Subtask 2 | Intensively test the application for any new bugs | |
12 June - 18 June | Deliverable | Unit tests |
Subtask 1 | Write/Modify unit tests for all the scenarios | |
19 June - 22 June | Deliverable | Finalise the changes for the first task |
Subtask 1 | Complete any pending task(s) | |
Subtask 2 | Incorporate any changes suggested by the mentors | |
Subtask 3 | Report/Blog | |
TASK 2: Issue #5128 | ||
23 June - 29 June | Deliverable | Report key findings |
Subtask 1 | Debug intensively for any error messages | |
Subtask 2 | Experiment with the network parameters by varying timeout or buffer sizes and prepare a report | |
Subtask 3 | Finalise the implementation strategy | |
30 June - 9 July | Deliverable | Fix for failing uploads |
Subtask 1 | Modify network parameters | |
Subtask 2 | Implement a retry loop if the uploads are still unreliable | |
Subtask 3 | Intensively test the application for any new bugs | |
10 July - 14 July | Evaluation | Mid-term evaluation |
Subtask 1 | Finalise the changes | |
Subtask 2 | Report/Blog about key findings and accomplishments | |
15 July - 28 July | Deliverable | Unit tests |
Subtask 1 | Write/Modify unit tests for the custom selector | |
29 July - 1 Aug | Deliverable | Finalise the changes for the second task |
Subtask 1 | Complete any pending task(s) | |
Subtask 2 | Incorporate any changes suggested by the mentors | |
Subtask 3 | Report/Blog | |
TASK 3: Issue #5136 | ||
2 Aug - 8 Aug | Deliverable | Report key findings |
Subtask 1 | Figure out the point of failure | |
Subtask 2 | Analyse and prepare report on key findings | |
Subtask 3 | Finalise the implementation strategy | |
9 Aug - 15 Aug | Deliverable | Fix stuck uploads issue |
Subtask 1 | Modify the state of the uploads appropriately | |
Subtask 2 | Intensively test the application for any new bugs | |
16 Aug - 22 Aug | Deliverable | Unit tests |
Subtask 1 | Write/Modify unit tests for the custom selector | |
23 Aug - 28 Aug | Deliverable | Finalise the changes |
Subtask 1 | Finalise the changes for the third task | |
Subtask 2 | Code cleanup and documentation | |
Subtask 3 | Incorporate any changes suggested by the mentors | |
Subtask 4 | Final Report/Blog about key findings and accomplishments | |
Participation
I plan to communicate my progress every few days and incorporate any feedback suggested by the mentors. I would communicate and ask for help on GitHub as well as Zulip, based on the nature of the task.
About me
I am Ritika Pahwa, a third-year student at Indira Gandhi Delhi Technical University for Women, currently pursuing my B. Tech in Computer Science and Engineering. I love developing Android apps and have been exploring Android development since my first year at college. My experience in developing and integrating AR features into Android applications has given me a unique perspective on creating user-friendly and engaging experiences.
How did you hear about this program?
I got to know about this program from a former GSoC alumnus.
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 at Wikimedia Foundation, that too as a part of Google Summer of Code only.
Past Experience
I have worked as a research intern (2 months), wherein I worked in a team of 4 members to develop an efficient algorithm for the NP-complete problem Battleship Solitaire.
Apart from this, my personal projects include:
Fit Friends: Formulated an Android application with an associate which motivates kids to perform some basic exercises; added text-to-speech functionality and introduced catchy and engaging sounds for kids. Tracked exercise activity using a database entity. Currently in the process of incorporating YouTube API to fetch video tutorials for the exercises.
Tech Stack Implemented: Kotlin, XML and Room Database
My Learning: I learnt how to work with databases, APIs and Kotlin Flows.
Onepad: Prepared a modern note-taking app by designing the splash screen, onboarding screen and launcher icon and implemented the system default theme, tested and debugged the application
Tech Stack Used: Flutter and Dart
My Learning: I had developed this project as a part of "PClub Summer of Code", a program run by the PClub to familiarise with the actual GSoC process. I learnt how to implement my existing knowledge even in those projects where I am new to the tech stack being used and utilise my problem-solving skills to fix any issues in a limited span.
You can find some more personal projects here.
Achievements
- Winner, App Development Track, Innerve Summer of Code 2021 for Find Your Nanny app
- Selected as one of the 67 Gold Microsoft Learn Student Ambassadors out of 500+ nominations for conducting events on open-source contributions and other community involvement
- Awarded with Special Mention for being among the top 11 teams out of 400+ registrations in Ideate ‘N’ Solve, an ideathon organised by Google Developer Student Club, IGDTUW
- Secured a rank in the top 60 students in the Python Coding Competitive exam conducted by Centre of Excellence-AI, IGDTUW
- Ranked 140 among 1000+ participants on Codeforces in Kotlin Heroes: Practice 9
Volunteer Experience
- Gold Microsoft Learn Student Ambassador: Delivered a speaker session that witnessed over 80 attendees; conducted a 1.5-hour event on open-source contributions with 25+ attendees
- Mentor, DESH KE MENTOR (A Delhi Government Initiative): Supervised 13 mentors who mentored over 50 girls; guided, mentored and motivated four girls at Delhi government schools
Motivation for the proposal
Being an admirer of great photographers and an open-source enthusiast, I always wanted to contribute to Commons. The fact that the uploaded pictures are used across Wikipedia inspires me even more since I am a regular user who loves authentic content on Wikipedia :) I have often experienced upload-related issues myself and would like to fix them so that all the Commons lovers get a seamless experience with the app.
Relevant Skills
- Experience in Android development with Kotlin, XML, Java
- Proficiency in using SQL and Room Database
- Git and GitHub
- Testing in Android: Instrumented as well as local tests
- Understanding of Retrofit, RxJava, Jetpack Compose
- Knowledge about Wikimedia APIs
Previous Contributions to Commons
I have been contributing to the Commons Android app since February 2023. You can find all my pull requests here.
Total: 6
Merged: 5
Open: 1
Pull Requests on Existing Issues
S. No. | Issue No. | Issue Description | PR No. | Tasks Performed | Status |
---|---|---|---|---|---|
1. | #5161 | Peer review: Always getting the same dozen pictures, no variety | #5170 | - Analysed and experimented with various API call parameters and URLs - Incorporated an entity to prevent older images from showing up again | Merged |
2. | #5074 | Numbers cropped in Leaderboard | #5143 | Enabled auto-scaling of text | Merged |
3. | #5191 | Dark mode: Some UI elements not conform | #5193 | Changed the map in the upload wizard at the location selection step and black font in the feedback dialog to conform to the dark mode; modified the unit test | Merged |
4. | #4671 | Robolectric 'application: Application!' is deprecated. Deprecated in Java | #5140 | Changed the deprecated RuntimeEnvironment.application to ApplicationProvider.getApplicationContext() in all the robolectric unit tests and optimised the imports accordingly | Merged |
5. | NA | NA | #5200 | Slight modification as discussed here | Open |
New Issues Raised
S. No. | Issue No. | Issue Description | PR No. | Tasks Performed | Status |
---|---|---|---|---|---|
1. | #5157 | Longer questions not appearing completely in Peer Review | #5162 | Changed the layout height to wrap_content as longer questions were not visible completely even on scrolling | Merged |
2. | #5195 | App crashes on pressing the "My Location" icon in the upload wizard | NA | NA | Open |
3. | #5194 | Some icons are barely visible in dark mode | NA | NA | Open |
Pull Request review
S. No. | Issue No. | Issue Description | PR No. | Tasks Performed |
---|---|---|---|---|
1. | #5187 | [Bug]: App crashes when you click on Author Name | #5199 | Figured out the cases where the changes fail and suggested improvements |
2. | #5174 | Wrong uploader in "X will be encouraged by your appreciation" label | #5183 | Reviewed the pull request and suggested improvements |
Availability
Are you eligible for Google Summer of Code?
Yes.
Do you plan to submit any other proposal apart from this one?
No, I plan to submit only one proposal.
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?
Since a major portion of the contribution period would be covered under my summer break (upto July 31), I can dedicate approx 30-35 hours per week. I have planned a few days for incomplete tasks. This would also include any new findings that may be relevant for the last issue to accommodate any academic classwork starting Aug 1.
Have you been accepted to GSoC before?
No. I am applying in GSoC for the first time.
Post-GSoC Involvement
In my 2-month contribution journey with the Commons app starting February 2023, I would say that my learning curve has witnessed a steep rise. I researched for some of the issues existing on the repo, analysed some pull requests from fellow contributors to understand how things work and learnt from them, helped some new contributors and posted my observations in the comments section. I was closely following up the updates on the GSoC tasks, and based on the suggestion here, while I was looking for the location-loss tagged issues for my GSoC proposal and before the new task was created, I came across issue #5094. As discussed here, I intend to fix this, too, during the GSoC period if time permits and the issue is still unresolved or take it up with other issues post GSoC period and stay involved with the community.