Page MenuHomePhabricator

GSoC 2021 Proposal - Commons Android app - Custom pictures selector which indicates what pictures have been uploaded already
Open, Needs TriagePublic

Description

Custom pictures selector which indicates what pictures have been uploaded already

Profile Information

Name :Prince

Email :kushwahaprince418@gmail.com

University :Krishna engineering college, Ghaziabad, Uttar Pradesh

Github Link :https://github.com/Prince-kushwaha

Linkedin :https://www.linkedin.com/in/prince-kushwaha-bb80a8198/

Other communication modes : Zulip

Location during GSoC: Gurugram, Harayana, India

Typical working hours (include your timezone) : Between 3 pm to 1 am UTC +5:30

Possible Mentor(s)

Mentor: @Nicolas_Raoul (Nicolas Raoul)
Mentor: @Madhurgupta10(Madhur gupta)

Synopsis

The Wikimedia Commons Android app allows users to upload pictures from their Android phone/tablet to Wikimedia Commons. Commons is not only the image repository for Wikipedia but an independent project that seeks to document the world with photos, videos, and recordings.

Project:
The project is about adding a Custom Picture selector activity that also indicates what pictures have been uploaded to the commons android app.
Issue link : https://github.com/commons-app/apps-android-commons/issues/175

About Me

I am second year student, pursuing B.tech in Computer Science and Engineering from Krishna engeering College , Ghaziabad, Uttar Pradesh

I love Android Development and I have been doing it for the past one years. I am also a strong supporter of open source and I love contributing to it. I have contributed to the Commons Android app since october 2020.

I am an active member of Website and software development cell the official website and app development team of the institute.

I am also completed WebDevelopment course from Udemy :Certificated

Competitive programming
Codeforce profile

Other Skills - Developing Websites (Frontend and Backend) using HTML, CSS, Javascript and NodeJs, MongoDB

Past Experience

Past Experience

I am love android Development and contributing to the open source projects

I am also doing web web development and competitive programming

Projects

  • QuizAdminApp :Learn Firebase authentication, MVM, viewModel, Firebase DataBase
  • QuizApp :Learn Firebase DataBase, MVM
  • Todo-Website :Learn css, html ,Javascript ,ejs, mongoDB, express

competitive programming
Codeforce profile

Other Skills - Developing Websites (Frontend and Backend) using HTML, CSS, Javascript, Python and NodeJs, MongoDB

Implementation

What can be implemented?

  • Custom picture selector to select image for upload from phone
  • If an picture is already upload then on picture show an thumbails of Commons log and that picture is not selectable for Upload

Mockups

Design 1

  • Custom image Selector Floating Action Button

Design 2

  • A Linear view of all the albums on the phone arranged by the last modified data (camera, all media given higher priority).
  • Display the name, count of media items on the respective folder.
  • Show the thumbnail of the most recent item as the cover image for the folder.

Design 3

  • Multiple image select activity
  • User not allowed to select already uploaded images.

Implementation Strategy

Create an UI for custom image selector

  • Create Floating action button for custom image selector and add it to the +(plus) floating action button in contribution Activity
  • Define layout attributes, create XML files for both Design 1 , Design 2, Design 3
  • Create java files handling UI functionalities such as display folder name and item count, click listeners, scroll and animations.
  • Create a data loader class, get the data from content resolvers, and load thumbnails in the UI using glide.

Integrate the API

Implement caching the data with images

Integrate custom image selector activity with the Upload activity

  • Create an class which forwords selected image from custom image selector Activity to Upload Activity, to start Uploading process

Relevant Skills

  • Familiar with android architecture components.
  • UI design in Android.
  • Android SDK.
  • Jetpack library.
  • Github and git Version control.
  • Unit Tests in Android. ( Familiar with Robolectric environment on Junit framework )
  • Basics of Kotlin

Involvement

  • How are you involved with open-source?

    I am actively contributing to the Commons Android app project since October 2020, so far I have about 18 PR merged and also I have opened a lot of issues. I have also contributed to the other open-source organizations like Anki-Android,oppia-android
  • Apart from coding do you have any other kind of involvement with the organization? NO

Availability

  • Eligible for Google Summer of Code and Outreachy?

    I am only Eligible 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 this summer?

    No, I don’t have any other internship or plans for this summer. Google Summer of Code is the topmost priority for me this summer.
  • How many hours per week can you dedicate for this?

    I will dedicate a minimum of 40 hours each week for this project, I am willing to dedicate more if needed.

    Have you been accepted to GSoC before?

    No, I apply for gsoc first time.

TimeLine

TimeframeStart DateEnd DateTask
Community Bonding PeriodMay-17June -7 Getting Familiarized with app structure, Wikimedia Api, and Community
SubTask 1Community Bonding
SubTask 2work on Bugs and enhancement of app
SubTask 3Discuss about project
Week 1June -7 June -13 Add custom image selector floating action Button in contrinution activity ,Create an UI Layout to show All file of phone
SubTask 1Discuss UI with mentors
SubTask 2Create FAB(Floating Action Button ) for custom picture selector and add it to contribution activity
SubTask 3Completed UI Layout to show All file of phone
Week 2June -14 -June -20 Add the functionalities to extract file data from the phone , Binder data with UI
SubTask 1Create models and data source classes to fetch the data using content resolvers
SubTask 2Create ViewModels to handle the data
SubTask 3Bind Data with UI
Week 3June -21 June -27 Create an UI Layout to show All photo of file when click on file,Complete UI integration with data, load the data to the UI,Unit test
SubTask 1Create an UI Layout to show All photo of file when click on file
SubTask 2Complete UI integration with data, load the data to the UI
SubTask 3Unit test
Week 4June -28July-4 Improve the UI,test the functionality ,Code refactoring,Fix Bugs
SubTask 1UI improvement
SubTask 2Code refactoring
SubTask 3Test the functionality
SubTask 4Fix Bugs
Week 5July -5 July-11 Add Commons API to check the presence of a file
SubTask 1Test the API call using PostMan
SubTask 2Create class to handle Commons API to check the presence of a file
SubTask 3Blog Post
Week 6July -12 July -18First Evaluation,Complete Unit test ,Bug fixes.
SubTask 1 First Evaluation
SubTask 2fix Bug
SubTask 3Complete Unit tests
Week 7July -19 july -25 Load the API data to UI
SubTask 1Make the required changes to the UI, models to integrate the API data with UI
SubTask 2Load the API data to the UI and show the images to indicate uploaded to the commons
Week 8July -26 August -1 Implement caching the api data with images.
SubTask 1Create an viewModel which handle caching
SubTask 2Use the Univerasal-image-Loader library for caching of image
Week 9August -2August -8 Improve the performance, complete test for API, caching.
SubTask 1Improve the Performance
SubTask 2Unit test
Week 10August-9 August -15 Integrate the custom image selector activity with Commons app upload activity to process Uploading of images
SubTask 1Integrate the Custom image selector activity with Commons app Upload activity
SubTask 2Compleleted the project
SubTask 3Test the app
Week 11August-16 August -22 Final Submission
SubTask 1Final Evalution
SubTask 2Completed remaining Unit Test
SubTask 2Major bugfixes, Ui improvement
SubTask 3Overall Blog post

Contributions to Wikimedia commons

PULL request create: 19
Meged Pull Reques :18

Merged Pull Requst

Not Merge Pull Request

Pull Request

PR NumberTitleStatus Issue Number
#4325fix:Setting Language list is not an language list which is supported by Commons for caption and descriptionMerged#4321
#4306fix:App should respect device font-sizeMerged#4299
#4274Explore Search: No title bar for item, non-existent menu for item, wrongly-worded menu for categoryMerged#4271
#4176click on skip button in Peer Review after orientation change then app is crashedMerged#4143
#4233app crash in CategoryDetailsActivity when click on any media (image or video)Merged#4196
#4267when app theme is Dark then CategoryDetailsActivity ,SearchActivity ,WikidataItemDetalActivity, Profile Activity Toolbar color is not change to darkMerged#4196
#4188fix-Incomplete Nearby List shown in Landscape modeMerged##4196
#4202fixes-Failed to send thanks" notification, but thank actually sent successfullyMerged#3559
#4204Upload count does not get updated right away post successful uploadMerged#3559
#4104Repull request of fixes #4081 App is crash when Backbutton is pressedMerged#4081
#4139Crash when tapping on the nearbyNotification in Contributions activityMerged#4086
#4102fixes In nearby tab when back button is pressed nothing happen(#4096)Merged#4096
#4103fix bug #4101 In MediaDetailfragment Editext Dailog is Blank in Dark modeMerged#4101
#4074fixes After click on the image app is crashed (#4072)Merged#4042
#4028fixes Progress Bar Visibility change with Orientation Change and login process terminatedMerged#4086
#4041fixes #4026 (words cut off )Merged#4026
#3982Losing filled data when screen rotate (#3973)Merged#3973
#4100fixes #2296 After canceling a sharing, application goes back to the search menuPending#2296

Issues
Create Issue :19
CLosed Issue :18

Close Issue

Open Issue

Isuues NumberTitleStatus
#4307Search widget to choose description languageopen
#4278Media details categories editor: Category not actually addedOpen
#4321Setting Language list is not an language list which is supported by Commons for caption and descriptionclosed
#4452when app theme is Dark then CategoryDetailsActivity ,SearchActivity ,WikidataItemDetalActivity, Profile Activity Toolbar color is not change to darkclose
#4253App is Crash when click on Bookmark Bottom navigation bar icon or open Bookmark At Android API Level 25close
#4196App crash in CategoryDetailsActivity when click on any mediaclose
#4143click on skip button in Peer Review after orientation change then app is crashedclose
#4140Toolbar with share button is missing in Profile ActivityOpen
#4101In MediaDetailfragment Editext Dailog is Blank in Dark modeclose
#4096In nearby tab when back button is pressed nothing happenclose
#4086crashwhen tapping on the nearbyNotification in Contributions activityclose
#4081App is crash when Backbutton is pressedclose
#4079menu item are not visibleclose
#4072Crash after opening media from the explore searchclose
#4063After click on backButton, application goes back to the exploreActivityclose
#4031Textview(No Copyright violation) not fit in Peer Review Activityclose
#4001Progress Bar Visibility change with Orientation Change and login process terminatedclose
#3973Losing filled data when screen rotateclose

Contribtution to Anki-Android

PR NumberTitleStatusIssue Number
#8439fix :Deck ordering differs from Anki DesktopPending Merge#8397
#8439fix: ACRA Crash Dialog - Can't enter additional informationMerged#8380
#2584fix: "Fix #2580: Reformatted the filesMerged2580

Event Timeline

Thanks!
Would you mind explaining in a few words how you plan to cache API results? You can add this information to the "Implementation Strategy" section.

Hi, first feedback from my side:

  • " ," -> ", "
  • forword -> forwards
  • form -> from
  • Floating Action Buttoon -> Floating Action Button
  • Unit tests can be implemented every 2-3 weeks during the GSoC period.
  • Add a brief explanation to the UI mockups.
  • Add a link to view all your issues, also for other repo PRs (if any)

Thanks!

Hey @Prince418

Thanks for showing your interest to participate in Google Summer of Code with Wikimedia Foundation! Please make sure to upload a copy of your proposal on Google's program site as well in whatever format it's expected of you, include in it this public proposal of Phabricator before the deadline i.e April 13th. Good luck :)

GSoC application deadline has passed. If you have submitted a proposal on the GSoC program website, please visit https://phabricator.wikimedia.org/project/view/5104/ and then drag your own proposal from the "Backlog" to the "Proposals Submitted" column on the Phabricator workboard. You can continue making changes to this ticket on Phabricator and have discussions with mentors and community members about the project. But, remember that the decision will not be based on the work you did after but during and before the application period. Note: If you have not contacted your mentor(s) before the deadline and have not contributed a code patch before the application deadline, you are unfortunately not eligible. Thank you!