Profile Information
Name : Arman Navodia
Email : armannavodia2002@gmail.com
University : Gujarat Techonolgical University
Linkedin: https://www.linkedin.com/in/arman-navodia/
Location : India (UTC +5:30)
GitHub : https://github.com/ArmanNavodia
Typical working hours : Between 6:00 pm and 2:00 am UTC +5:30
Synopsis
App
- The Wikimedia Commons Android app allows users to upload pictures from their Android phone/tablet to Wikimedia Commons. Commons is not only the image repository for Wikipedia but an independent project that seeks to document the world with photos, videos, and recordings.
- Commons App Repo : Github
Project
- This project aims to fix uploads related issues and deal with metadata loss.
- The project is about making the upload more reliable by fixing the issues of location being lost, failing uploads and retired uploads get stuck in the queued state
- Github issue : Make upload more reliable
Possible Mentor(s)
@Nicolas_Raoul
@Kaartic
Deliverables
To be implemented
#5196: Picture location is sometimes lost despite being present in EXIF
In latest versions of android there is a issue to read the EXIF data present in the images. It somehow does not parse the meta data present in the image. I tested this bug on API 31 device, even with the location data being present in the metadata it shows no location found.
Possible Implementation Strategy: Seeing the problem the possible approach can be to check the problems in the current EXIF reader that is implemented by ExifInterface and update the implementation accordingly. One thing that I observed while testing is that it works perfect for android 9. So problem is with the versions of android after that. Even there could be problem with the permissions because of the improvement in the security of the latest android versions.
#5128: Upload often fails, especially when uploading 5 or more pictures over a slow Internet connection.
This issue could be caused by the network timeout or maximum size of the data that can be sent at a time.
Possible Implementation Strategy: Check the network parameter such as timeout and other any such parameter. Check for the size limitations for the upload if any. Also code for retry upload can be added if max upload size and timeout is not causing the issue.
#5136(if time allows) Retried uploads stuck in queued state
The cause of the issue could be caused due to failing uploads is moved to queued state but never changed the state after that when reupload or resume button is pressed.
Possible Implementation Strategy: check for the STATE_QUEUED to find if the problem is associated with it. If queued state is root cause then it 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. Also it's important to ensure that the resumption of the paused uploads does not cause any conflicts or overwrite any previously uploaded data. It may be necessary to perform a comparison of the existing data with the data that is being uploaded to prevent any duplication or loss of information.
Timeline
Timeframe | Classification | Task |
---|---|---|
4 May - 28 May | Community Bonding Period | Connect with the mentors, learn more about the community, familiarise with the app structure, understand more about the upload process |
Try and test | Try and test out the things with the uploads to get clear understanding of how upload process works | |
TASK 1: Issue #5196 | ||
(week 1) 29 May - 4 June | Deliverable | Identify the primary cause |
Subtask 1 | Check the code and find the code that is causing this issue. | |
Subtask 2 | Brainstorm on strategy to fix this issue. | |
Subtask 3 | Discuss with mentor and finalize the implementation strategy. | |
(week 2) 5 June - 11 June | Deliverable | Fix bug |
Subtask 1 | Work on the implementation of above finalized strategy to fix the bug. | |
Subtask 2 | After implementation test for various scenarios. | |
(week 3) 12 June - 18 June | Deliverable | Write new/fix Unit tests |
Partially unavailable | Partially unavailable due to end semester exam (tentative*) | |
Subtask 1 | Write new /Modify old unit tests for all the changes in the code | |
Subtask 2 | Complete any pending task(s) | |
(week 4) 19 June - 22 June | Deliverable | Get feedback from the mentors |
Partially unavailable | Partially unavailable due to end semester exam (tentative*) | |
Subtask 1 | Incorporate any changes suggested by the mentors | |
Subtask 2 | write a blog or report of the progress. | |
TASK 2: Issue #5128 | ||
(week 5) 23 June - 29 June | Deliverable | Identify the primary cause |
Subtask 1 | Check the code and find the code that is causing this issue. | |
Subtask 2 | Brainstorm on strategy to fix this issue. | |
Subtask 3 | Discuss with mentor and finalize the implementation strategy out of all possible strategy. | |
(week 6) 30 June - 9 July | Deliverable | Fix bug |
Subtask 1 | Work on the implementation of above finalized strategy to fix the bug. | |
Subtask 2 | After implementation test for various scenarios. | |
(week 7) 10 July - 14 July | Deliverable | Mid-term evaluation/ Unit tests |
Subtask 1 | Finalize the changes | |
Subtask 2 | Evaluation | |
Subtask 3 | Write/Modify unit tests | |
(week 8) 15 July - 28 July | Deliverable | Get feedback from the mentors |
Subtask 1 | Complete any pending task(s) | |
Subtask 2 | Incorporate any changes suggested by the mentors | |
Subtask 3 | Report/Blog | |
TASK 3: Issue #5136 | ||
(week 9) 29 July - 1 Aug | Deliverable | Identify the primary cause |
Subtask 1 | Check the code and find the code that is causing this issue. | |
Subtask 2 | Brainstorm on strategy to fix this issue. | |
Subtask 3 | Discuss with mentor and finalize the implementation strategy out of all possible strategy. | |
(week 10) 2 Aug - 8 Aug | Deliverable | Fix bug |
Subtask 1 | Work on the implementation of above finalized strategy to fix the bug. | |
Subtask 2 | After implementation test for various scenarios. | |
(week 11) 9 Aug - 15 Aug | Deliverable | Unit test |
Subtask 1 | Write/Modify unit tests for the custom selector | |
(week 12) 16 Aug - 22 Aug | Deliverable | Get feedback from the mentors |
Subtask 1 | Complete any pending task(s) | |
Subtask 2 | Incorporate any changes suggested by the mentors | |
Subtask 3 | Report/Blog | |
(week 13) 23 Aug - 28 Aug | Deliverable | Final Submission. |
Subtask 1 | Final Evaluation | |
Subtask 2 | Major bugfixes, Ui improvement. | |
Subtask 3 | Remaining tests, code cleanup, documentation. | |
Subtask 4 | Overall Blog post. | |
Participation
I intend to get in touch with mentors via Zulip and Github to report my progress, ask for advice, or discuss the bug
About Me
I am Arman Navodia, a 3rd year student at Vishwakarma Government Engineering College, currently pursuing my B.E in Computer Engineering. I love developing Android apps and have been exploring Android development since my first semester at college. Apart from Android development I have tried developing web apps in react and cross platform apps in react native. Also I have interest in the Data Structure and Algorithms which helps me to think critically and creatively to solve the given problem/bugs.
- How did you hear about this program?
I got to know about this program from seniors in the college.
- 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.
- What does making this project happen mean to you?
Completing this project means a lot to me. I am a strong supporter of free and open-source work, by the completion of this GSoC Task more and more people will engage in contributing media to the Commons Android app. Also it will help me get understanding how the code base and projects are managed in such a big organizations.
Past Experience
Group projects:
Farmer360 :HTML , CSS , JavaScript , MongoDB, Flutter
- Farmer360 is an ongoing project that could help 150M+ Indian farmers and government in regulating the farmers data.
- Closely worked with the team to test and build the API’s and database along with the testing the project for the flaws which helped me to understand more deeply about the architecture of whole projects and how the data flows from backend to frontend and vice-versa
SecureBuddy : HTML, node, javaScript ,psql database
- Deployed a web application that checks for the vulnerabilities in the Github open source repository. This tool can prevent attacks on thousands of users that unintentionally use compromised repos.
- Being the team lead, managed the whole team and worked to develop the formulas for calculations, implemented the database along with helping to design architecture of project, testing and debugging the code.
Personal Projects:
Inventory App : Java, XML ,SQLite GitHub Repository
- It is app for storing the item with images in a mobile application which I developed for learning purpose. It offers features as capture image through camera and select image from gallery.
- In this I have used SQLite database for storing the items and used CardView to populate the items and listview to show items in the list
- Learned About : Designing, SQLite Database ,image storing
News App: Java, XML GitHub Repository, REST API
- Created a mobile application that fetches the new data from the server using API and displays it on the screen
- Learned About : APIs, listview, Json, HTTP request, Git, GitHub
More projects : Github profile
Major Achievements
- Selected as visiting student at Indian Institute of Technology Gandhinagar. Among the 2 students selected by Indian Institute of Technology Gandhinagar, from colleges under Gujarat Technological University, for the visiting students program with the Indian Institute of Technology Gandhinagar for academic year 2022-2023. Courses taken : Artificial Intelligence, Algorithms, Theory Of Computation, Philosophy, Ethical Leadership, Graphic Design
- Received felicitation for excellent performance in academics in 3rd Semester
Relevant Skills
- Familiar with android architecture components.
- Experience in Android development with Kotlin, XML, Java
- Proficiency in using SQLite, SQL, PostgreSQL, REST API and Room Database
- Git and GitHub
- Understanding of Jetpack Compose
- Unit testing in Android (Robolectric and Mockito)
- Basic knowledge of Wikimedia APIs
Previous Contributions to Commons
I have been contributing to the Commons Android app since February 2023 and the majority of my efforts go towards fixing bugs that result from logical mistakes rather than UI. You can find all my pull requests here
Total: 5
Merged: 5
Pull Requests on Existing Issues
S. No. | Issue No. | Issue Description | PR No. | Tasks Performed | Status |
---|---|---|---|---|---|
1. | #5180 | Duplicate filename notification completely replaces image-found-on-internet warning | #5192 | Changed the error code for file name exists. To check for the error effectively. Replaced switch case with multiple if statements so that every condition is checked. | Merged |
2. | #4731 | Nearby banner appearing in Media Details | #5150 | Added a condition where the nearby banner was updating and rendering again | Merged |
3. | #2296 | After canceling a sharing, application goes back to the search menu | #5156 | Added a media detail fragment in backstack in MediaDetailPagerFragment also removed the entry from the backstack when the user presses back button | Merged |
4. | #4700 | When the coordinates have been copied from another picture, explain it in description | #5166 | When the user was asked to use similar coordinate if the response was positive then added the string in description. | Merged |
5. | #4774 | Leaderboard: Taping on my avatar should open tip popup explaining how to change it | #5159 | Added a variable to track user login. Added on click listener on avatar show that on tap it shows toast message | Merged |
Certifications
I enrolled in and finished 9 of the 12 courses in the specialization in Android Development course on Coursera. Out of which 6 courses are related to native android development using kotlin rest are cross platform development courses using react native.
- Introduction to Android Mobile Application Development certificate
- key learning: Learned basics about Android Development.
- Version Control certificate
- key learning: Learned in depth use of git and Github.
- Programming Fundamentals in Kotlin certificate
- key learning: Learned Kotlin basics covering loops, conditions, variables, functions, etc.
- Principles of UX/UI Design certificate
- key learning: Learned about low fidelity wireframes and high fidelity mockups and learned to use figma .
- Create the User Interface in Android Studio certificate
- key learning: Learned to make UI using jetpack compose.
- Advanced Programming in Kotlin certificate
- key learning: Learned advanced topics covering constructor, objects, various types of classes, lambda functions.
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?
I can dedicate approx 18-20hrs hours per week. I have assigned few days for incomplete tasks as a buffer to accommodate any emergencies.
Have you been accepted to GSoC before?
No. I am applying in GSoC for the first time.