===Profile Information
Name - Priyank Shankar
Web Profile - https://www.github.com/shankarpriyank
Resume - https://drive.google.com/file/d/133_8_i5yMjWN8YI56RAzue8CW5qtrDTO/view?usp=sharing
Location (country or state) - India
Typical working hours (include your timezone) - 7pm to 2am IST(UTC+5:30)
You can know more about me through my resume
===Synopsis
The Wikimedia Commons is an Android app by the Wikimedia Foundation that allows users to browse and upload pictures to the Wikimedia Commons repository from phones/tablets. Users can select images from the gallery or directly from the camera for an upload. This project aims to add image editing features like crop/rotate/blur to the app.
GitHub Link of the issue - https://github.com/commons-app/apps-android-commons/issues/1192
Commons Android App Repo (for UI): https://github.com/commons-app/apps-android-commons/
- Possible Mentor(s) - @Nicolas_Raoul , @Kaartic
- Have you contacted your mentors already? - I have contacted @Nicolas_Raoul, but I am not in contact with @Kaartic
===Deliverables
====To be implemented
**A feature in the app to edit the images** - All the editing related work like crop, rotate, blur can be done on a single screen, so there will adding of a new screen in the app. And according to me and as suggested by [[ https://github.com/commons-app/apps-android-commons/issues/1192#issuecomment-467128354 | Vivek Kumar Maskara here ]] it would be the best to link this screen to the **Upload Activity**
To implement this feature we would need to all the following libraries/dependencies to the project -
- https://github.com/juanitobananas/AndroidMediaUtil
- https://github.com/ArthurHub/Android-Image-Cropper or https://github.com/k3b/LosslessJpgCrop
- https://github.com/kamemak/ajpegtran_example( It time allows, to implement the blur feature)
====Implementation Strategy
As discussed in this [[ https://github.com/commons-app/apps-android-commons/issues/1192 | thread ]], we will first load the image in a temporary file(editing the original file may lead to permission issues) and make all the needed operations on it and then upload the temporary file to the Wikimedia Commons server.
There might be slight changes in the final UI of the editing screen, but I am pretty sure that it at the end it will be similar to the screen proposed here -https://github.com/commons-app/apps-android-commons/pull/2542
The blur feature seems the most challenging, as suggested by @Nicolas_Raoul [[ https://github.com/commons-app/apps-android-commons/issues/1192#issuecomment-1471443510| here ]] the approach would be
# Split the JPEG image into many 8x8 JPEG images. Zero information is lost in this step.
# Blur only the blocks that the users wants to blur.
# Put all of the blocks back together. Zero information is lost in this step for non-blurred blocks.
====Timeline
| Period | Classification | Tasks
| **May 4 - 28**| **Community Bonding Period** | **Get to know the mentors and community, Read the documentation, Familiarize with the app structure, Start to refine the implementation strategy**
| | Information| I will be unavailable from May 15 to17 due to university exams |
| **Week 1 (May 29 - Jun 5)** | **Deliverables** | **Finalize the UI/UX** |
| | Subtask | Finalize the UI/UX |
| | Subtask | Add the needed dependencies, and check for any problems |
| | Subtask | Blog Post |
| **Week 2 (June 5 - Jun 12)** | **Deliverables** | **Link the Editing screen to the Upload Activity** |
| | Subtask | Make necessary changes to the Upload Activity |
| | Subtask | Ensure that the necessary data is seamlessly passed on to the EditScreen |
| | Subtask | Blog Post |
| **Week 3 (June 12 - Jun 19)** | **Deliverables** | **Initiate the rotate feature** |
| | Subtask | Start working on the rotation feature. |
| | Subtask | Finish the UI of the rotation feature |
| **Week 4 (June 19 - Jun 26)** | **Deliverables** | **Refine the Rotate Feature** |
| | Subtask | Start modifying the images passed by the Upload Activity |
| | Subtask | Pass the modified Image back to the Upload Activity |
| | Subtask | Blog Post |
| **Week 5 (June 26 - 3 July)** | **Deliverables** | **Testing the Rotate Feature** |
| | Subtask | Extensively test the new rotation feature with all sorts of images(different file types and different sizes) |
| | Subtask | Write tests for the feature |
| **Week 6 (July 3 - 10 July)** | **Deliverables** | **Fixing the corner cases of the Rotation** |
| | Subtask | According to my research, the rotation feature is bound to fail on some type of images, and once we have identified the edge cases we can restrict the user from using the edit feature on those images |
| | Subtask | Do the necessary code changes |
| | Subtask | Blog Post |
| **Week 7 (July 10 - 17 July)** | **Midterm Evaluations** | **Initiate the Crop feature** |
| | Subtask | Start working on the Crop Feature |
| | Subtask | Finish the UI of the Crop Feature |
| | Subtask | Midterm Evaluations |
| **Week 8 (July 17 - 24 July)** | **Deliverables** | **Refining the Crop Feature** |
| | Subtask | Start applying the crop operation of the image |
| | Subtask | Pass the image back to the Upload Activity |
| | Subtask | Blog Post |
| **Week 9(July 24- 31 July)** | **Deliverables** | **Testing the Crop Feature** |
| | Subtask | Extensively test the new crop feature with all sorts of images(different file types and different sizes) |
| | Subtask | Write tests for the crop feature.|
| **Week 10(July 31- 7 August)** | **Deliverables** | **Fixing the corner cases of the Crop Feature**|
| | Subtask | The crop feature is also bound to fail in quite a few scenarios. Once we have identified all those cases we can prevent those operation from happening|
| | Subtask | Do all the necessary changes needed|
| | Subtask | Blog Post |
| **Week 11(7 August- 14 August)** | **Buffer Period** | **I plan to keep one week as buffer period. Some merge conflicts may come up which may take some time to resolve**|
| | Subtask | Merge the crop and rotate feature in the main branch|
| | Subtask | If everything goes without any hiccups, I can start working on the blur feature during this time|
| **Week 12( 14 August- 21 August)** | **Deliverables**| **Start working on the blur feature** |
| | Subtask | Finalize the approach to take to implement the blur feature|
| | Subtask | Implement the UI for the Blur feature |
| **Week 13(21 August- 28 August)** | **Final Evaluations** | **Refining the blur feature** |
| | Subtask | Final report |
| | Subtask | Start breaking down the image into smaller pieces |
| | Subtask | Blurring the pieces selected by the user |
===Participation
I am open to communicate using any way that is recommended by the mentors. But overall, I think we can communicate well using GitHub issues, Comment sections of pull request in Github, Zulip, Google Meet.
===About Me
- Education - B.Tech (2020 -2024)
- University - Jaypee University Of Engineering and Technology, Guna
- How did you hear about this program? - I initially came to know about this program through Twitter
- During the community bonding I will have my university exams, after that my classes will resume in August(exact dates not decided yet)
- I am only eligible for Google Summer Of Code
- What does making this project happen mean to you? - Completing this project would mean a lot to me. I am a big supporter and promoter of Open Source and completing this project will enhance the experience of the Commons Android App and also encourage more people to use the app, which will give me an immense sense of satisfaction and pride
===Past Experience
- I have been developing android apps for about 3 years now. I have made a lot of personal projects, all of which can be found [[ https://github.com/shankarpriyank?tab=repositories | here]]. Some of the projects which I feel are worth mentioning are
- [[ https://github.com/shankarpriyank/DocDelivery | DocDelivery]] - Learned a lot about Clean Architecture, MVVM, Jetpack Compose, data caching and parsing, Dependency Injection, asynchronous programming using coroutines and flows, etc . More details can be found in the development [[ https://github.com/shankarpriyank/DocDelivery/wiki/Development-Wiki| wiki ]]
- [[ https://github.com/shankarpriyank/PettyPlanet | Petty Planet ]] - Learnt a lot about MVVM, firebase storage, firebase realtime database, camera and file explorer in android etc.
- [[ https://github.com/shankarpriyank/Imguram | Imguram ]] - Learnt a lot about API calling, testing, Retrofit,Coil, MVVM etc
- Describe any open source projects you have contributed to as a user and contributor (include links).
- I contributed to Organic Maps as a GSoC 22 mentee, I worked on adding the support for Android Auto in the app of Organic Maps. More info about my work can be found [[ https://summerofcode.withgoogle.com/archive/2022/projects/51VM0qGG | here ]].
- I have also contributed to Oppia list of my contributions can be found [[ https://github.com/oppia/oppia-android/pulls?q=is%3Apr+author%3Ashankarpriyank+is%3Aclosed | here ]]
- I have recently started contributing to Kiwix in my free time, you can see my first pr [[ https://github.com/kiwix/kiwix-android/pull/3193 | here ]]
- I have also worked as an android developer intern with a couple of startups and gained some invaluable experience, you can know more about them in my [[ https://drive.google.com/file/d/133_8_i5yMjWN8YI56RAzue8CW5qtrDTO/view?usp=sharing | resume ]]
===Any Other Info
I made POC app to test rotations, it's not comprehensive but you can still have a look at it [[ https://github.com/shankarpriyank/Image_Rotation_POC | here ]]