Profile Information
Name - Priyank Shankar
Web Profile - https://www.github.com/shankarpriyank
Resume - https://drive.google.com/file/d/1DlZ7ASVB2bUs4wTOIzImeXHosKFTak8C/view?usp=sharing
Location (country or state) - India
Typical working hours (include your timezone) - 7 pm to 2 am 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 lossless crop/lossless rotate/lossless blur to the app. The user will then be able to crop a picture, rotate it by 90/180/270 degrees and blur specific parts of images like faces, number plates, etc for privacy reasons.
GitHub Link of the issue - https://github.com/commons-app/apps-android-commons/issues/1192
Commons Android App Repo - https://github.com/commons-app/apps-android-commons/
- Possible Mentor(s) - @Nicolas_Raoul , @Kaartic
- Have you contacted your mentors already? - Yes
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 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 - This library is needed to implement the rotate and crop feature in the app
- https://github.com/kamemak/jpegtran_pixelization - If time allows, this library will be required to implement the blur feature
Implementation Strategy
As discussed in this 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
Flow Chart
The blur feature seems the most challenging, as suggested by @Nicolas_Raoul 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 in some cases(for eg - Progressive, Huffman not supported exception), and once we have identified the edge cases we can do the needed fixes and also restrict the user for adding those images on which the feature is bound to fail | |
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 willing 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
Contributions To Commons App
Pull Requests
PR | Title | Status |
#5185 | Fix Misleading warning title for duplicate file name | Merged |
#5186 | Bug fix "Author field shows HTML tags when template used" | Open |
#5188 | Enable support toolbar for ProfileActivity | Merged |
Issues
Issue | Title | Status |
#5187 | App crashes when you click on Author Name | Open |
#5198 | Add a linter to the project | Open |
- 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 here. Some of the projects which I feel are worth mentioning are
- DocDelivery - DocDelivery is a package/shipment tracking application that helps the user track their incoming packages/shipments easily. 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 wiki
- Petty Planet - Petty planet is a place where you can upload pics of abandoned pets so that the people interested in adopting pets can connect to adopt the pets they wish to adopt. Learned a lot about MVVM, firebase storage, firebase real-time database, camera and file explorer in android etc.
- Imguram - Imugram as you may have guessed is basically an Instagram clone where you can scroll through the hot and top feed and also view stories. 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 here.
- I have also contributed to Oppia, list of my contributions can be found here
- I have recently started contributing to Kiwix in my free time, you can see my first pr 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 resume
Any Other Info
I made a POC app to test rotations and cropping of images using the library mentioned above, it's not comprehensive but you can still have a look at it here