Page MenuHomePhabricator

GSoC 2023 Proposal - Commons Android app - Make upload more reliable
Closed, DeclinedPublic

Description

Profile Information

Name: Shaikh Mohammed Zaki Kaleem
Mobile No : +91 80874 65595
Email: zs84907@gmail.com
Github: https://github.com/zakisk
LinkedIn: https://www.linkedin.com/in/zaki-shaikh-907242125/
Twitter: https://twitter.com/dev_zaki
Address: Jalgaon, Maharashtra (India)
English Proficiency: Upper-Intermediate
Timezone: IST (Indian Standard Timezone)
Typical working hours: 10 AM to 6 PM. (IST)

Synopsis

About the App: The Wikimedia Commons app is an open-source app created and maintained by grantees and volunteers of the Wikimedia community to allow the Wikimedia community to contribute content to Wikimedia Commons.

Task: There are three sub-task to make Image upload more reliable, listed below
#5196 Picture location is sometimes lost despite being present in EXIF.
#5128 Upload often fails or gets stuck, especially when uploading 5 or more pictures over a slow Internet connection.
#5136 (if time allows) Retried uploads stuck in the queued state.

Mentors : @Nicolas_Raoul, @Kaartic

Have you contacted your mentors already?
No

Deliverables

I would be available for 4 hours a day early two or three weeks because if I will be selected I will have to survive the notice period in my company (planning to leave the company and become a full-time contributor) and It would be good that I will be informed that whether my proposal is selected or not so I can inform my company.

Week 1 (30th May - 5th June)
Issue #5196

  • Reproduction of bug
  • Analysis of causes
  • Adding effective logs to spot the issue
  • Comprehensive report on the issue.

Week 2 (6th June - 13th June)
Issue #5196

  • Discussion with mentors on possible solutions and picking the best
  • Implementation of solution

Week 3 (14th June - 21th June)
Issue #5196

  • Testing
  • Writing Unit test cases
  • Fixing bugs
  • Rewriting Unit test case for new changes

Week 4 (22th June - 29th June)
Issue #5196

  • Mentor review
  • Mentor review and suggestions
  • Implementations
  • Rewriting Unit tests for final confirmation according to suggestions.

Week 5 (30th June - 7th July)
Issue #5196

  • Final review deployment of Fix
  • Documentation
  • Merge and Evaluation.

Week 6 (8th July - 15th July)
Issue #5128

  • Reproduction of bug by slowing down the Internet
  • Analysis of causes
  • Adding effective logs to spot the issue
  • Comprehensive report on the issue.

Week 7 (16th July - 23th July)
Issue #5128

  • Discussion with mentors on possible solutions and picking the best
  • Implementation of solution

Week 8 (24th July - 31st July)
Issue #5128

  • Testing
  • Writing Unit tests.
  • Short Mentor Review and Suggestions.
  • Implementation of Suggestions Rewriting Unit Tests.

Week 9 (1st August - 8th August)
Issue #5128

  • Final review deployment of Fix
  • Documentation
  • Merge and Evaluation.

Week 10 (9th August - 16th August)
Issue #5136

  • Reproduction of bug by slowing down the Internet
  • Analysis of causes
  • Adding effective logs to spot the issue
  • A comprehensive report on the issue.

Week 11 (17th August - 24th August)
Issue #5136

  • Discussion with mentors on possible solutions and picking the best
  • Implementation of the solution

Week 12 (25th June - 1st September)
Issue #5136

  • Mentor Review and Implementation
  • Rewriting Unit test
  • Documentation and Final review deployment of Fix
  • Merge and Evaluation.
Note: I think this issue will not take much time as compared to others.

Participation

I would like to use slack for communication and GitHub for the source code repository.

About Me

I am Zaki shaikh an Android Developer have graduated in July - 2021 in Bachelor’s, major was Information technology, I have been working at Infoware since July - 2022 and have self-learning experience of 1.5 Years. I have contributed a substantial amount of code in 4 real-time apps in my organisation and have gotten my hands dirty in following...

Relevant Skills

  • Kotlin
  • Java
  • Jetpack Compose
  • XML UI
  • REST APIs
  • Third-party libraries and SDKs Integration
  • Workmanger (Background task)
  • Firebase crashlytics
  • Firebase Cloud messaging
  • Firebase Authentication
  • Firebase Real-Time Database
  • Firebase Firestore
  • Google Maps SDK
  • Sockets.io
  • Clean Architecture
  • Room Persistence Library (Sqlite Wrapper Library)
  • Git
How did you hear about this program?

In a youtube video

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

No

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)?

Yes, but I didn't decide organization yet.

What does making this project happen mean to you?

This project means to me a lot because I am a software development passionate specifically Android and didn't get a chance yet to contribute to a big organization codebase and work with mentors, I believe that It will hone my skills and confidence in open source contributions and participating in GSoc is also a big opportunity for a newbie of open-source because it teaches a lot helps in a career so to conclusion I eager to work on it (that's why I am planning to leave my Job because I strongly believe that I ain't learning there as much as I must).

Past Experience

  • I didn't fix any issues on the Wikimedia repo because I am applying too late (GSoC application's last date is tomorrow, apologies for it) If the mentor allows me to do so I can make a contribution to issues and can showcase my skills.
  • Last year I built an app for car reselling and auctions, the whole app was written in Kotlin and UI using Jetpack Compose and I learned to structure code by following clean architecture principles in MVVM design pattern and I used retrofit for REST API calls, Hilt as Dependency Injection, Kotlin coroutines, etc. In this project, I had a similar problem I needed to upload car images to the server and there might be some cases in which image upload could have failed.
    • The user has sent the app in the foreground state
    • The User Killed the app by cleaning it from recent apps
    • Interrupting Internet Connection
    • Big-size images take time to be uploaded.

I managed to overcome these problems by using WorkManager, Workmanager is the recommended solution for persistent work. Work is persistent when it remains scheduled through app restarts and the system reboots. If a user sends the app in the foreground or cleans it from recent apps Workmanager is still uploading Images and showing progress in the system notification. for slow connection, we can set Work Constraint to schedule tasks in Workmanager when the network is available, and it is a long-running task scheduler so it easily uploads big-size Images.

  • I have made a component to magnify Images in Jetpack Compose and I created a PR in a Compose Cookbook repository some days before and it was added to that repository.

Any Other Info

I have adequate knowledge of competitive programming my score can be seen on Codewars and Hackerrank.

Event Timeline

Hi! GSoC application deadline has passed. If you have submitted this proposal on the GSoC program website and would like your proposal to be considered for review, please move it from the "Proposals in Progress" to the "Proposals Submitted" column by clicking and dragging it on the workboard:
https://phabricator.wikimedia.org/project/view/6344/. TY!

Hello, Thank you for informing me I dragged it into "Proposal Submitted" and Yes I'd submitted on GSoc Website as well.

Gopavasanth subscribed.

@Zakisk 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!