Page MenuHomePhabricator

Commons Android app: Make upload more reliable
Closed, DeclinedPublic

Description

Profile Information

Name:Avanish Yadav
GitHub:Avanish
Linkedin:avanish-yadav
Other communication modes: Discord, Zulip, Slack.
Location (country or state) During GSOC: Varanasi/Dehradun India
Typical working hours (include your timezone) During GSOC: Between 4:00 pm to 2:00 am (IST) UTC+5:30

Synopsis

App
The Commons app of Wikimedia is a mobile application designed to allow users to contribute media files to Wikimedia Commons, a media repository that is hosted by the Wikimedia Foundation and provides free media content for use on Wikipedia and other Wikimedia projects. This app allows users to upload photos and videos directly from their mobile devices, add descriptions and categories, and apply licenses to their media files. Users can also search for and view media files on Wikimedia Commons and use them in their own projects.

Project
The proposed project for Google Summer of Code 2023 aims to address the issues related to uploading images to the Commons app of Wikimedia. The project specifically focuses on fixing three upload-related bugs, namely #5196, #5128, and #5136, which are affecting the app's reliability and functionality .The project will focus on improving the app's upload functionality and making it more reliable by addressing these issues. The proposed solution involves optimizing the upload process, adding error handling mechanisms and improving the user interface to provide better feedback to users during the upload process.

Possible Mentor(s)
@Nicolas_Raoul
@Kaartic

Have you contacted your mentors already?
Yes

Deliverables

For bug #5196:

  1. Identify the root cause of the issue and implement a fix to prevent the loss of picture location despite being present in EXIF data.
  2. Add automated tests to ensure that the fix works correctly.

For bug #5128:

  1. Identify the root cause of the issue and implement a fix to ensure that uploads do not fail or get stuck, even when uploading 5 or more pictures over a slow internet connection.
  2. Optimize the upload process to reduce the time it takes to upload pictures over a slow internet connection.
  3. Add automated tests to ensure that the fix works correctly.

For bug #5136:

  1. Identify the root cause of the issue and implement a fix to prevent retried uploads from getting stuck in a queued state.
  2. Add automated tests to ensure that the fix works correctly.

Possible Implementation

Bug #5196:

The loss of picture location despite being present in EXIF data could be caused by various reasons such as incorrect EXIF data, server configuration issues, or software bugs. To fix this, we will analyze the existing code to identify any possible errors or bugs that could be causing this issue. Once the root cause is identified, we will implement a fix that ensures that picture location is not lost despite being present in EXIF data. This may involve changes to the upload process, server configuration, or the use of third-party libraries.

One approach to fixing this issue is to check the EXIF data for each uploaded picture and compare it to the actual location of the picture. If there is a mismatch between the EXIF data and the actual location, the server could flag the picture for review and manual adjustment. Alternatively, we could use third-party libraries or APIs to automatically correct any inconsistencies in the EXIF data.

Once the fix is implemented, we will add automated tests to ensure that the fix works correctly. The tests will check that the picture location is correctly uploaded and stored, and that the location data is consistent with the actual location of the picture.

Bug #5128:

The upload process can fail or get stuck when uploading multiple pictures over a slow internet connection due to timeouts, connection drops, or server overload. To fix this, we will optimize the upload process to reduce the impact of slow internet connection by implementing various techniques such as resumable uploads, parallelization, and connection optimization. Additionally, we will add a feature to detect when an upload is stuck and retry the upload if necessary.

One approach is to implement resumable uploads, which allow the upload process to resume from where it left off in case of a connection drop or other interruption. We could also implement parallelization, where multiple pictures are uploaded simultaneously to reduce the time it takes to upload all pictures. Additionally, we could optimize the connection by adjusting the packet size, retry policy, and other connection parameters.

Another approach is to add a feature that detects when an upload is stuck and retries the upload if necessary. This feature could periodically check the upload status and automatically retry the upload if it is stuck. This will help ensure that all pictures are successfully uploaded, even if the internet connection is slow or unstable.

Once the optimizations are implemented, we will add automated tests to ensure that the upload process works correctly. The tests will check that all pictures are uploaded successfully, even under slow or unstable internet connections.

Bug #5136:

This bug occurs when a retried upload gets stuck in a queued state due to a lack of resources, server configuration issues, or software bugs.

To fix this, we will analyze the existing code and look for any possible errors or bugs that could be causing the retried uploads to get stuck in a queued state. Once we identify the root cause, we will implement a fix that ensures that retried uploads do not get stuck in a queued state.

One approach is to adjust the server configuration to ensure that there are enough resources available to handle the retried uploads. We could also optimize the upload process to reduce the number of retried uploads, for example, by implementing resumable uploads or connection optimization.

Another approach is to add a feature that detects when an upload is stuck in a queued state and retries the upload if necessary. This feature could periodically check the upload status and automatically retry the upload if it is stuck in a queued state.

Once the fix is implemented, we will add automated tests to ensure that the fix works correctly. The tests will check that retried uploads are successfully uploaded and that they do not get stuck in a queued state.

Timeline

Time FrameClassificationTask
Community Bonding Period
(May 4 - May 28, 2023):
Familiarize with the project codebase,
documentation, and community.
Comminicate and discuss project requirements
and objectives with mentors.
Subtask 1Setup development environment, tools, and infrastructure and
Review and improve the project proposal and timeline.
Subtask2Investigate the cause of the issue and finalize the implementation
Coding Period - Week 1
(May 29 - June 4, 2023):
Focus on bug #5128 (Upload often fails or gets stuck).Make necessary code changes to fix the bug.
Subtask 1Test the changes thoroughly to ensure that the upload process works
reliably and efficiently, especially when uploading several pictures.
Coding Period - Week 2
(June 5 - June 11, 2023):
Continue working on bug #5128Write and stabilize unit tests.
Subtask 1Verify that the upload process works as expected in various scenarios.
Subtask 2Review the code changes with your mentors and seek their feedback to
ensure that the changes align with the project's goals and best practices.
Coding Period - Week 3
(June 12 - June 18, 2023)
Continue working on bug #5128 Deploy and test changes
Subtask 1Conduct a load test to simulate various network conditions and
ensure that the upload process can handle large volumes of pictures
without any issues.
Subtask 2Optimize the code to reduce the amount of data transferred during the
upload process and improve its efficiency, especially when uploading over
slow network connections.
Subtask 3Fix any associated bugs and suggestions.
Complete bug #5128.
Coding Period - Week 4
(June 19 - June 25, 2023)
Start working on bug #5196
(Picture location is sometimes lost despite being present in EXIF).
Reproduce the issue (#5196) where picture location is sometimes
lost despite being present in EXIF.
Subtask 1Investigate possible solutions and discuss with mentors.
Coding Period- Week 5&6
(June 26 - July 9, 2023):
Partially nonavailabilityI have final (end semester) exam from 26 june
to 10 july
Mid-term Evaluation
(July 10 - July 14, 2023)
Mid-term EvaluationDiscuss progress with mentors and receive feedback.
Subtask 1Evaluate project status and adjust timeline if necessary.
Subtask 2Plan for the second half of the coding period.
Coding Period- Week 7
(July 15 - July 21, 2023)
Continue working on bug #5196Write and stabilize unit tests.
Coding Period- Week 8
(July 22 - July 28, 2023)
Continue working on bug #5196Deploy and test changes for bug #5196.
Subtask 1Conduct thorough testing to ensure that the issue has been resolved.
Subtask 2Document the changes made and update the project's README file.
Coding Period- Week 9
(July 29 - Aug 4, 2023)
Start working on bug #5136
(Retried uploads stuck in queued state).
Reproduce the issue and investigate possible solutions.
Subtask 1Investigate possible solutions and discuss with mentors
Subtask 2Work on fixing the issue and deploy changes to a test server for testing
Coding Period- Week 10
(Aug 5 - Aug 11, 2023)
Continue working on bug #5136.Finalize the implementation strategy.
Subtask 1Make necessary code changes to fix the bug
Subtask 2Conduct thorough testing to ensure that the issue has been resolved.
Coding Period- Week 11
(Aug 12 - Aug 18, 2023)
Continue working on bug #5136.Write and stabilize unit tests.
Subtask 1Refactor and optimize the code to improve performance and readability.
Subtask 2Update the project's documentation to include information about the fix for the issue.
Coding Period :- Week 12
(Aug 19 - Aug 28, 2023)
Finalize the implementation strategy for any remaining issues or features
Subtask 1Continue coding final changes, focusing on bug fixes and feature improvements.
Subtask 2Focus on code cleanup and documentation improvements.
Subtask 3Address any remaining issues or bugs
and prepare for final mentor evaluation.
Subtask 4Submit final mentor evaluation and
celebrate completion of GSoC project!

Participation

To communicate progress and ask for help throughout the project, I plan to utilize several platforms. Firstly, I will use GitHub to maintain a detailed and up-to-date project repository, which will serve as a central hub for all code changes, discussions, and issue tracking. I will commit my changes regularly and document them thoroughly, providing detailed explanations of any new features or bug fixes.

Additionally, I will communicate with my mentors and the community via Zulip, an open-source chat platform that provides threaded conversations and real-time notifications. I will regularly post updates on my progress, ask for feedback and advice, and engage in discussions with my mentors and fellow developers.

I will use email to communicate with my mentors on a more formal level, particularly when discussing sensitive or complex issues. I will provide clear and concise explanations of any problems or questions I may have.

About Me

I am Avanish Yadav, a second year Undergraduate student in Graphic Era University ,Dehradun ,India .I'm a computer science student with a passion for Android development . I've been interested in Android development for several years and have experience working on various Android apps. I have a solid understanding of Android fundamentals, including activity lifecycle, UI components, and data storage. I'm also proficient in Java and Kotlin and have experience working with popular Android libraries such as Retrofit, Glide, and Room.

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

I may have other commitments, such as coursework but I will prioritize my GSoC work and communicate any potential conflicts with my mentor as soon as possible.

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 in GSOC only.

What does making this project happen mean to you?

As a passionate Android developer, I'm always looking for new challenges and opportunities to improve my skills. I believe that the Google Summer of Code program is the perfect platform to do so, as it provides me with the chance to work on real-world projects with experienced mentors and contributors.

My ultimate goal for this program is to not only learn and grow as a developer but also to contribute to the open-source community and make a positive impact on users' lives. I believe that technology has the power to transform people's lives for the better, and I'm excited to use my skills and knowledge to create innovative and meaningful solutions.

Furthermore, I'm thrilled at the prospect of working with a talented team of developers from all over the world. I believe that collaboration and communication are essential components of successful software development, and I'm eager to learn from my peers and share my own experiences with them

Past Experience

I am pleased to share my past experiences, which have been instrumental in shaping my career as a technology enthusiast. As a passionate learner, I am always on the lookout for opportunities that help me gain knowledge and skills in diverse areas of technology.

  1. One such opportunity that I was fortunate to be a part of was a three-month internship program on Artificial Intelligence (AI) and Internet of Things (IoT) innovation and applications, organized by Graphic Era University and IEEE. During the internship, I had the opportunity to work on various projects related to AI and IoT, such as developing a web app which can detect the speed of Cyclone . This experience helped me develop a strong foundation in AI and IoT technologies and understand their potential in solving real-world problems.

    Certificate- Linkedin
  1. I also had the privilege of being a finalist in the Hackathon organized by the School of Computer Science, UPES, where I had the opportunity to work on video analytic tools. Collaborating with a team of talented individuals, we developed a solution that was well-received by the judges. This experience taught me the importance of teamwork, effective communication, and problem-solving skills in a fast-paced, competitive environment.

    Certificate- Linkedin
  1. I had the honor of publishing a Research paper on "Emerging Technologies for Sustainable Educational Tourism." This paper was the culmination of my research on the intersection of technology and education, and how emerging technologies can be leveraged to promote sustainable tourism. This experience helped me refine my research and analytical skills and also taught me the importance of presenting complex information in a concise and engaging manner.

Overall, my past experiences have equipped me with a strong foundation in emerging technologies and their applications, effective communication, teamwork, problem-solving, research, and analytical skills. I am confident that these experiences, combined with my passion for technology, make me a valuable asset to any team that is working towards creating innovative solutions to complex problems.

Relevant Skills

  • Proficient in Java and Kotlin programming languages.
  • Several years of experience working on various Android applications.
  • Solid understanding of Android fundamentals such as activity lifecycle, UI components, and data storage.
  • Experience working with popular Android libraries such as Retrofit, Glide, and Room.
  • Familiarity with Git version control system.
  • Knowledge of Wikimedia API.

Projects

  1. "Music Player App"- in Java Github
  2. "Weather App which is build in Kotlin" Github
  3. "Multiple Disease Prediction" -deployed on Streamlit Cloud
  4. "Cyclone Speed Prediction" -in Python Github

Contributions to Commons

Total:1
Merged:1

PRTaskStatus
#4797 Add one more choice to the listMerged

New Issue

IssueNameStatus
#5178Skip tutorial option not showing after signup/signin in Commons app Closed

PR Review

PRNameStatus
#5183 Fix: user reset for Thanks after ReviewMerged

Event Timeline

Avanishyadav123 renamed this task from Insert project title here to Make upload more reliable-.Mar 26 2023, 4:50 AM
Avanishyadav123 renamed this task from Make upload more reliable- to Commons Android app-Make upload more reliable.Mar 30 2023, 12:51 PM
Avanishyadav123 updated the task description. (Show Details)
Avanishyadav123 added a subscriber: Nicolas_Raoul.

Did you mean to include a timeline?

Yes, I did mean to include a timeline, thank you for checking.

Hi @Avanishyadav123, as the deadline for GSoC is quickly approaching in less than 48 hours (April 4th, 2023, 18:00 UTC), it's crucial that you submit your proposal on Phabricator and Google's program website in the recommended format as soon as possible. To avoid any potential last-minute rushes or server failures, we highly recommend that you submit your proposal early and keep updating it as needed before the deadline. Once you have submitted your proposal, please move it from the "Proposals in Progress" column to the "Proposals Submitted" column on the Phabricator workboard by simply dragging it. If you have any inquiries, please do not hesitate to ask. Good luck with your application!

@Gopavasanth Thank you for the reminder about the approaching deadline for GSoC 2023. I apologize for the delay in submitting my proposal as I have not been well for the past few days. However, I assure you that I am currently working on finalizing my proposal, and I will submit it on Phabricator and Google's program website in the recommended format within the next few hours.

Once I have submitted my proposal, I will move it from the "Proposals in Progress" column to the "Proposals Submitted" column on the Phabricator workboard. I appreciate your concern and assistance throughout this process.

Avanishyadav123 renamed this task from Commons Android app-Make upload more reliable to Commons Android app: Make upload more reliable.Apr 4 2023, 12:34 PM
Avanishyadav123 updated the task description. (Show Details)

Hi,@Nicolas_Raoul ,Could you please take a look at my proposal before I submit it.

A few things may be polished, but it is generally good enough, and very detailed. 🙂

@Avanishyadav123 We are sorry to say that we could not allocate a slot for you this time. Please do not consider the rejection to be an assessment of your proposal. We received over 100 quality applications, and we could only accept 9 applicants. We were not able to give all applicants a slot that would have deserved one, and these were some very tough decisions to make. Please know that you are still a valued member of our community and we by no means want to exclude you. Many applicants who we did not accept in previous rounds have become Wikimedia maintainers, contractors and even GSoC students and mentors this year!

Your ideas and contributions to our projects are still welcome! As a next step, you could consider finishing up any pending pull requests or inform us that someone has to take them over. Here is the recommended place for you to get started as a newcomer: https://www.mediawiki.org/wiki/New_Developers.

If you would still be eligible for GSoC next year, we look forward to your participation!