= Transform picture (crop/rotate/etc) within the app =
== Profile :- ==
**Name: Rishav Gupta**
**Email**: rishavgupta933@gmail.com
**Education**: B-tech (CSE) 2nd year student , Gurunanak Institute of Technology
**Linked-in**: [[ https://www.linkedin.com/in/rishav-gupta-edutainer/ | Rishav Gupta ]]
**Github :** [[ https://github.com/Rishavgupta12345 | Rishavgupta12345 ]]
**Other communication modes**: Hangouts, discord, Zulip, Slack.
**Location during GSoC**: kolkata/West Bengal, India
==**Synopsis**:==
**App**
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.
**Project:**
The project is about implementing a feature that allows the user to Transform pictures (crop/rotate/etc) within the app.
Issue link: https://github.com/commons-app/apps-android-commons/issues/1192
==**Implementation**:==
===== **To be implemented** :- =====
- **Feature that allows the user to Transform pictures (crop/rotate/etc) within the app :- ** While uploading any image in Wikimedia the user will be given an edit option where the user can edit the picture according to the need.
- **Library :- ** To implement the required feature I will use the latest photo editing library of android which is [[ https://www.dsphotoeditor.com/android | DS photo editor ]]
===== **Mock UI** :- =====
**Screen 1 :**
{F35029491}
While uploading the photo a new EDIT button will be added, clicking on which all the required edit features will be visible to the user
**Screen 2 :**
{F35029494}
Example of all the features which will be displayed to the user for editing the photo
**a) Crop feature :**
{F35029497}
Example of the crop feature which will be implemented.
**b) Rotate feature :**
{F35029500}
Example of the rotate feature which will be implemented.
===== **Further implementation** :- =====
The [[ https://www.dsphotoeditor.com/android | DS photo editor ]] library, I am using provides many exclusive photo editing features. For example, the crop/rotate feature is shown above. Further, I will discuss with the mentors about the other features like blur, contrast, etc which they want to be implemented in the app. And implement them in the app according to their need.
==**Mentors** : ==
@Nicolas_Raoul
@Madhurgupta10
@AdityaSrivastav2009
==**Timeline** :==
TODO
==**About Me** : ==
I am Rishav Gupta, a sophomore at [[ https://gnit.ac.in/ | Gurunanak Institute of Technology ]], India pursuing Btech in Computer Science and Engineering (expected 2024). I am an active member of the BitByte Coding club of my college. When I entered college I developed my interest in android development. And worked on different self-made and open source projects. This helped me gain a good knowledge about it.
I like to sing and listen to music. My hobby is photography and experimenting with photoshop. I read self-development books in my free time and solve Rubix cube for fun
==**Availability** :==
- **Are you eligible for Google Summer of Code ?** I’ve read the eligibility criteria and I am eligible to apply for Google Summer of Code.
- **Do you plan to submit any other proposal apart from this one ?** No, I am only submitting this proposal.
- **Do you have any other plans during the period of GSoC ?** No, I don’t have any other plans during the period of GSoC.
- **How many hours can you dedicate to this ?** I have no other commitments this summer. I’ll be able to give 40+ hours per week. If
required I can put in more time to finish up the goals for the week.
- **Have you been selected to GSoC before ?** No, this is my first time participating in GSoC.
==**What Excites me about this project** :==
I am very passionate about photography and photoshop is my hobby. That's the prime reason I am contributing to WIKIMEDIA and chosen it to work in GSoC. Wikimedia is all about media and photos which I am all about. And thus the project to implement transforming and editing the photos within the app is the best match to my interest and mastery.
==**Why should I be selected for the project** : ==
- **Skill** :- I am passionate about android development. I’ve worked on android projects for a long time and have a good knowledge of its architecture. I am familiar with the latest android technologies and am well versed in the Java/Kotlin programming language. I have knowledge of API and caching in android. I’ve developed an application following professional MVVM architecture and am familiar with jetpack libraries. As a part of my course curriculum, I know Datastructures and Algorithms (DSA) and Databases and Management Systems (DBMS) . And a photoshop expert. Thus, I believe I have the perfect set of skills required for this project.
- **Knowledge**:- I've been contributing to the Commons android project since Jan 2022. Fixed many issues, reported some, helped maintainers in review, and cleaned 50+ old issues to make the project repository cleaner.
==**Past Experience** : ==
I’ve worked on many android applications and is learning android dev for a year now. I’ve contributed and collaborated on several open-source projects. I am familiar with git, GitHub, and version control. I have also participated in open source contests like Hacktoberfest and IIT Kharagpur winter of code and successfully cleared them.
**Projects** :
- [[ https://github.com/Rishavgupta12345/minesweeper | Minesweeper ]] - developed a minesweeper android game.
- [[ https://github.com/Rishavgupta12345/music-player | Music player ]] - An app to play the songs on your phone.
**Relevant Skills**
- Familiar with android architecture components
- UI design in Android.
- Android SDK.
- Jetpack library.
- Github and git Version control.
- Unit Tests in Android.
- can work on both JAVA/KOTLIN
==**Contributions to Wikimedia Commons** ==
**PULL REQUESTS**
- **Total = 11**
- **Merged = 9**
- **Open = 2**
| **PR LINK** | **TITLE** | **STATUS** | **MY LEARNING** |
| [[ https://github.com/commons-app/apps-android-commons/pull/4873 | #4873 ]] | Copyright warning for beta flavor | merged | adding popup feature was something I learnt new while solving this issue
| [[ https://github.com/commons-app/apps-android-commons/pull/4882 | #4882 ]] | Add link to user guide in About | merged | learned about adding hyperlink into the app
| [[ https://github.com/commons-app/apps-android-commons/pull/4863 | #4863 ]] | The empty screen while no images found in custom picture selector | merged | this issue made me struggle a lot but was simple and taught me never to give up
| [[ https://github.com/commons-app/apps-android-commons/pull/4884 | #4884 ]] | The empty screen while no images found in custom picture selector [bug] | merged | test failed from above pull request , entirely a new experience, I learned the importance of UnitTesting
| [[ https://github.com/commons-app/apps-android-commons/pull/4860 | #4860 ]] | could be success could be failure | merged | small mistake in a string can make a entire app Un-functional
| [[ https://github.com/commons-app/apps-android-commons/pull/4890 | #4890 ]] | [Bug]: UnknownFormatConversionException: Conversion = 'এ' | merged | again a small string mistake made the app unfunctional, solved easily
| [[ https://github.com/commons-app/apps-android-commons/pull/4789 | #4789 ]] | Fix warnings for ImageFileLoader.kt | merged | fixing warnings using the android studio suggestion itself
| [[ https://github.com/commons-app/apps-android-commons/pull/4899 | #4899 ]] | Prod/beta flavor messages may be nonsense for users | merged | added quality information for users
| [[ https://github.com/commons-app/apps-android-commons/pull/4915 | #4915 ]] | Improve review feature documentation | merged | got some insights about showing popup dialog
| [[ https://github.com/commons-app/apps-android-commons/pull/4920 | #4920 ]] | Replace toasts with snackbars where appropriate | open | got to know about the working of snackbars
| [[ https://github.com/commons-app/apps-android-commons/pull/4766 | #4766 ]] | Make the app more accessible - content description | open | use of adding content discription
**ISSUES CREATED**
| **ISSUE LINK** | **TITLE** | **STATUS**
| [[ https://github.com/commons-app/apps-android-commons/issues/4887 | #4887 ]] | Clear the old issues in this repository | open
| [[ https://github.com/commons-app/apps-android-commons/issues/4894 | #4894 ]] | [Bug]: language Bengali has many string problems | open
**OTHER TASK**
This is something that is a completely different form of contribution one can do to an organization. While searching for issues to work on I found out that the current repository of WIKIMEDIA is filled up with obsolete and irrelevant issues. There were **550+ issues** when I first started working. So I decided to inform about those to the mentors of our organization so that they can review and close those issues. And I was successful to close about **45+ issues**.
- **Links** :-
[[ https://github.com/commons-app/apps-android-commons/issues/4498| #4498 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/4709| #4709 ]] , [[https://github.com/commons-app/apps-android-commons/issues/4459|#4459 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/4443| #4443 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/4594|#4594 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/3066|#3066 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/3917|#3917 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/3607|#3607 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/2919|#2919 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/2836|#2836 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/4398|#4398 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/4855|#4866 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/4589|#4598 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/4307|#4307 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/4388|#4388 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/4269|#4269 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/4234|#4234 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/4131|#4131 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/3956|#3956 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/3987|#3987 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/3394|#3394 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/2950|#2950 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/2920|#2920 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/2910|#2910 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/3247|#3247 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/3208|#3208 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/2785|# 2785 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/4676|#4676 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/3871|# 3871 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/4670|#4670 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/3777|#3777 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/3246|#3246 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/2002|#2002 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/2747|#2747 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/2891|#2891 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/3123|#3123 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/3204|#3204 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/3431|#3431 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/3663|#3663 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/3866|#3866 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/3907|#3907 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/3951|#3951 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/3968|#3968 ]] , [[ https://github.com/commons-app/apps-android-commons/issues/4209|#4209 ]]