Page MenuHomePhabricator

[Wikimedia Commons app] Allow users to browse Commons from app
Closed, ResolvedPublic

Description

Profile Information

Name: Ujjwal Agrawal
University: IIT (ISM), Dhanbad
Email: ujjwal.iitism@gmail.com
Github: ujjwalagrawal17
IRC nick: ujjwalagrawal17
Other Contact Methods: Google Hangouts, Gitter Chat
Blog: https://ujjwalagrawal.wordpress.com/
Twitter: ujjwal171097
Location: India (UTC +5:30)
Typical working hours: Between 1 pm and 11 pm UTC +5:30
Link to GSoC Proposal

Synopsis

About the app:
The Wikimedia Commons Android app allows users to upload pictures from their Android phone/tablet to Wikimedia Commons. Wikimedia Commons accepts only freely licensed media files (that are not subject to any copyright). Users can upload images and then add various tags specific to them such as category, title, description, and license.

About the project:
The goal of this project is to enhance the already working Wikimedia Commons App by implementing an option to browse/search the Wikimedia Commons Repository.

Why this feature is needed?

  • More and more users are asking (as evident by Play Store feedback)to be able to also browse existing Commons images via the app
  • Quality of uploads will increase by letting users see other people's work

What can be implemented ?

  • Image Search on Wikimedia Commons using a text
  • Restrict the search results to images
  • Category Search
  • Previous Search queries of images and categories (Recent Search history)
  • Shows the sub-categories and the images present in that category
  • Allow users to skip login and browse and search in the app

How it can be implemented?

  • Explore Mediawiki APIs to search images using titles, search categories.(Probably using Mediawiki Search API)
  • Implement search activity which will contain 2 tabs
  • tab 1 for showing image list (if possible reusing featured images fragment)
  • tab 2 for showing category list
  • Implement async call requests to request search pictures, search categories dynamically on page scroll
  • Develop feature for displaying search results in search activity
  • Saving the clicked category/images in the local database
  • Showing in the recently searched list (both categories and images) if a search query is empty
  • Implement the category activity which will contain 2 tabs
  • tab 1 for showing sub-category list
  • tab 2 for showing images inside the category (if possible reusing featured images fragment)
  • Improving category activity by showing best images (images inside subcategory) using FastCCI
  • Add an option to skip login in Login Page which redirects to Featured Image Activity
Prototype:

I’ve been working on this feature for some time now. I had made a small prototype for the same.

  • Description
  • Added a Separate activity for search in which an edit text is present
  • Implemented a viewpager along with a tab layout in the activity
  • Added Browse Image fragment, Browse Category Fragment in the item of the viewpager
  • Now if a text is changed in the activity I call update list method in both the fragments with search query as a parameter
  • Method update list updates the list by fetching details from Wikimedia API: Search
  • For updating the list in recycler view I had added AdapterFactory, Renderer similar to other modules.

Mentors

Timeline

PeriodTaskDeliverables
April 23 to May 14Community bonding period. - Communicate and bond with students and mentors, Create specific issues for the project, Getting familiar with the app architecture and Wikimedia APIs, Learning RxJava, Getting Familiar with featured images scrollable activity, fragment implementation, Link featured images fragment with already existing media details page, making changes in media details fragment for extra details like author name (if it wasn't done already on featured image fragment)Community bonding report and blogs about the experience, app architecture
May 14 to May 20Add search button/layout in featured image activity (linked with search activity), Decide and create search activity (including image search list) with mock dataSearch button/layout in Featured Image Activity, Search Activity Mockup, Image Search with Mock Data
May 21 to May 27Add a new instance of featured image scrollable fragment in search activity/fragment. Use the Mediawiki Search API to search image list results using text (search query). Modify featured image scrollable fragment to show search image results. The list will load Search results dynamically on page scroll. Using recyclerview onScrollChangeListener callback we will fetch new image list with offset and add it to previous list.Images feature with dynamic scrolling
May 28 to June 4Create tables in local database (SqLite) for storing recently searched images, Store search results in the local database to show search history (previously opened images), Restrict the search results to images, Decide and create UI for recent images searches (image title and timer icon), Use content providers similar to already existing Category ContentProvider to Show image search history (previous search queries) if the search query is nullPreviously searched images history (recently searched images)
June 5 to June 11Improvements based on the feedback received from mentors, other community members. Writing unit test for above implemented modules. Manual testing on different devices, emulators. Bug fixes, Writing documentation.Documentation of above modules, Unit test for image search, search history
June 11 to June 15Phase I evaluation
June 12 to June 18Modify layout of search activity to show both image list, category list fragment in it.(using viewpager and tablayout). Decide and create category search fragment using mock dataImprovements in Search Activity UI, Category Search with Mock Data
June 19 to June 25Implement category search using Mediawiki Search API. Show it in category search fragment. Make the search dynamic similar to image searchCategory search feature with dynamic scrolling
June 26 to July 2Create tables in local database (SqLite) for storing recently searched categories. Store search results in the local database to show search history (previously opened categories). Decide and create UI for recent category searches (category name and timer icon). Show category search history (previous search queries) if the search query is nullPreviously searched category history (recently searched categories)
July 3 to July 9Start exploring APIs that can fetch category details (list of subcategories, media inside that categories). Decide and Create UI mock up for Category Activity (2 tabs with viewpager). One fragment for showing subcategory list, other fragment for showing imagesLink to finalized API to fetch category details and fields that will be fetched, Category activity with mock data
July 9 to July 13Phase II evaluation
July 10 to July 16Fetch category details using relevant APIs. Implement Fragment 1 to show list of subcategories in fragment one showing all at once as a category does’t have more than 50 elements total (usually). Sorted alphabetically. Implement Fragment 2 to show list of images in a category(reusing featured image fragment)Category Activity with list of subcategories, images with dynamic scrolling feature
July 17 to July 23Improvements based on the feedback received from mentors and other community members. Writing unit test for above implemented modules. Manual testing on different devices, emulators. Bug fixes, Writing documentation.Documentation of above modules. Unit test for category search, search history, sub-category list, images inside category.
July 24 to July 30Add skip Option in Login which redirects to Featured Image Activity. Making changes in navigation base activity to hide items (my contributions, logout, other items which needs login) in navigation drawer and showing a login option in navigation drawer which takes the user to login page if user is not logged in (by checking from shared preferences). If time allows, Read about FastCCI/ Search other APIs to show the best images first.(images inside subcategories). Add spinner/menu and add 4 options (Good Pictures, Featured pictures, Quality Images, Valued Images)Skip Option in Login, Link to finalized API to fetch images inside subcategories, Improvements in Category Activity UI by adding spinner/menu
July 31 to August 6If time allows, Modify existing APIs for fetching new image list filtered according to item selected in menu/spinner.If time allows, Sorted Image list in category activity according to FastCCI
August 7 to August 13Write Unit test for FastCCI implementation. Improvements based on the feedback received from mentors, other community members. Manual testing on different devices, emulators. Writing documentation for final submission. Working on Project Presentation.Unit test for FastCCI. Project Presentation
August 14 to August 21Mentors submit final student evaluations.
August 22Final results of Google Summer of Code 2018 announced

Other Deliverables

  • Weekly report, and blog

Participation

Progress Report

  • I will remain online on IRC, Hangouts during my working hours ( 1 pm to 11 pm UTC +5:30)
  • I will write Weekly Blog Posts at (https://ujjwalagrawal.wordpress.com/).
  • I will share my blogs on Twitter.
  • Write Weekly Scrum Reports and update it to our mailing list [commons-app-android@googlegroups.com]
    • What did I do last week?
    • What will I do this week?
    • What is currently preventing me from reaching goals?
  • I will submit a Project Presentation

Where I plan to publish my source code

  • I will be working on a separate branch on git and uploading code to the forked repo almost on a daily basis, will be Creating pull requests when a complete feature is done.

Communication on task

  • I will use Github to manage bugs and task.

About Me

Personal background

I am a third-year B.Tech. undergraduate at Indian Institute of Technology (ISM), Dhanbad . I am pursuing Electronics and Communication Engineering as my Major. I have a keen interest in Android App development( I have been doing Android App Development from last 2 years). I use git and Github every day and I am well acquainted with how to use them for version control.

How did I hear about this program?

Heard about GSoC in a campus meetup. I am an open source enthusiast from past 1 year, I've always wanted to take part in Google Summer of Code.

Time during Summers

I have no other commitments this summer. So I'll be able to give 40 hours or more per week. My summer break starts on 30th April so I can start working full time from that day on. I'll not be taking any vacations. My classes start around 20th July but I will be able to commit enough time to the project as there are no exams during the period

Eligible for Google Summer of Code and Outreachy ?

I am applying only for GSoC as I am not eligible for Outreachy program. I am applying under Wikimedia Commons Android only.

What excites me about this project
I had developed a lot of apps during my college days, but I always wanted to develop apps that really help people. I loved the goal of Wikimedia Foundation "Global movement whose mission is to bring free educational content to the world".
I would be really great for me to apply my skills and contribute to such an organization.

Past Experience

I’ve been doing Android development since my first year. My first project was a Home Automation app to control LED lights using our mobile phone(Raspberry Pi behaving as a server)that I built in a hackathon. After that, I had started making apps for my learning purpose. Apart from the prototypes, I had also developed 2 apps that are on Google Play.

Spectrum'18:
I had developed this app for our departmental fest of electronics engineering (Spectrum). It has features like login, OTP verification using the phone number, Show list of events day wise, register for events, send notification for events.

Brand Store:
It is an app where users can get offers from nearby shops of different categories across their city. Shops can also register them and show their offers to the users of the app. Although the startup is closed now. but the app is still on google play.

Apart from this, I also have received the Google India Challenge scholarship for Android Developer nanodegree this year.

Contributions to Wikimedia Commons App

It has been an enriching experience contributing to the app and I look forward to continuing contributing to it. For all I have learned so far is that your contributions are not just the number of Pull Requests that you’ve got merged. But contributions can be in various forms like:

  • Creating New Issues
  • Finding Bugs
  • Helping New Contributors
  • Communicating with Moderators and helping them
Pull Requests:
  • Merged Pull Requests: (8/12)
  • Closed Pull Requests:
Issues:
  • Closed Issues: (10/16)

Event Timeline

Ujjwalagrawal17 removed a subscriber: Aklapper.

Removing unrelated tags; adding Google-Summer-of-Code (2018). Clarifications welcome (e.g. a descriptive task summary). :) Thanks!

Ujjwalagrawal17 raised the priority of this task from Low to Medium.Mar 3 2018, 12:17 PM
Ujjwalagrawal17 updated the task description. (Show Details)
Ujjwalagrawal17 updated the task description. (Show Details)
Ujjwalagrawal17 updated the task description. (Show Details)
Ujjwalagrawal17 renamed this task from GSoC Project Title to GSoC Proposal .Mar 6 2018, 8:15 PM
Ujjwalagrawal17 renamed this task from GSoC Proposal to GSoC Proposal : Feedback Sharing Module in Commons App.Mar 7 2018, 7:46 PM

Hi @Ujjwalagrawal17 ,

Thanks for putting this proposal up. I am guessing that tasks and deliverables are still being worked on? That's totally fine, but I would recommend putting the deliverables next to the tasks in the table (in a 3rd column), that will make it easier for us to view them.

Ujjwalagrawal17 renamed this task from GSoC Proposal : Feedback Sharing Module in Commons App to [Wikimedia Commons app] Allow users to browse Commons from app.Mar 17 2018, 10:35 PM
Ujjwalagrawal17 raised the priority of this task from Medium to Needs Triage.
Ujjwalagrawal17 updated the task description. (Show Details)
Ujjwalagrawal17 added subscribers: Nes, Nicolas_Raoul.

Questions

Is the timeline to be modified in any other way?
For e.g.
Decreasing time for some feature and giving it to other Changing order of doing things.
Is the proposal to be modified in any other way?
Adding more detail for something, Removing some detail, Changing the order of writing things, Anything wrongly written, Any comments on the readability of the proposal

Is there any difference between "Improvements based on the feedback received from mentors, other community members, Testing, Bug fixes, Writing documentation. Release app in Google play (at least in alpha)" and "Phase I evaluation"?
Is there a reason why Phase II is in the opposite order?

Minor notes:
to browse/search the Wikimedia Commons using the app -> to browse/search the Wikimedia Commons repository using the app (sounds more natural)
Image Search on Wikimedia Commons using a title. -> Image Search on Wikimedia Commons using text. (search will be done using not only "title" but also other metadata such as "description")
async calls requests -> async call requests
category/ images -> category/images
list(both -> list (both (space before parenthesis, in other places too)
Learning JavaRx, Getting Familiar with -> learning JavaRx, getting familiar with (no need for uppercase)
sanckbar -> snackbar

At first I misunderstood "Search history of images" as "Search in the successive versions of an image", actually it means being able to see your previous search queries, right?

@Nicolas_Raoul Thanks for the review I will update the proposal accordingly. I will update the timeline for Phase1 and Phase 2 evaluation and show it again. Actually, phase 1 and 2 are similar not in the opposite order. I will make it more clear and understandable.

@Nicolas_Raoul I had updated the proposal. Any other suggestions.

Summary

After the project, Image, Category Search on Wikimedia Commons is successfully included in the Wikimedia Commons App. Users can open the search page from Explore Activity of the app. A page for category details page which contains the list of images, subcategories, parent categories were added in the app and linked with various parts of the app. Users can now skip login if they don’t want to create an account and browse commons from the app.

Here is the link to Project Presentation that I made in the final week.

Successfully merged Pull Requests for the Project

This is the first time I have sent 50+ merged PRs for any open source project and I am very happy about it. Here is the link that contains information about the merged PRs.

I have also added other details about the project in past projects section in https://www.mediawiki.org/wiki/Google_Summer_of_Code/Past_projects#Browse_feature_in_Wikimedia_Commons_App

Can we close this now? @srishakatux

@Ujjwalagrawal17 @Nicolas_Raoul If there isn't anything remaining on this proposal that you plan to address, feel free to close this task!

Thanks everyone! :-)