Page MenuHomePhabricator

[Wikimedia Commons app ] GSoC proposal: Browse feature in Commons app
Closed, DeclinedPublic

Assigned To
Authored By
97balakrishnan
Mar 5 2018, 6:00 PM
Referenced Files
F15915521: Screenshot_20180320-201322.png
Mar 20 2018, 3:01 PM
F15884708: mockup4.png
Mar 19 2018, 4:36 PM
F15884704: mock2.png
Mar 19 2018, 4:36 PM
F15884706: mock3.png
Mar 19 2018, 4:36 PM
F15884702: mock1.png
Mar 19 2018, 4:36 PM
F15884699: SearchFlow.png
Mar 19 2018, 4:36 PM
F15883844: mock1.png
Mar 19 2018, 3:10 PM
F15883854: mock2.png
Mar 19 2018, 3:10 PM

Description

Profile Information

Name : S Balakrishnan
IRC nickname on Freenode : 97balakrishnan
Resume : Resume Link
Location : Chennai,India
Typical working hours: 7am to 6pm Timezone: UTC+5:30

Synopsis

About Wikimedia Commons
  • Wikimedia Commons is an online repository of free-use images, sound, and other media files.
  • The Wikimedia Commons Android app allows users to contribute by upload media files and see nearby locations from their android phones/tablets.

About this Project (Link to project idea)

This project aims at providing the option to

  1. Browse/search the Wikimedia Commons using the app.
  2. Download and Share content available in Wikimedia Commons

Providing this feature will be made to users without the need to login.This feature makes the content more convenient to access in the android platform and contributes to the aim of Wikimedia Commons " To provide a media file repository that makes available public domain and freely-licensed educational media content to all, and that acts as a common repository for the various projects of the Wikimedia Foundation."

Problems undertaken to be solved in this project :

1.The need for browsing Github discussion

  • Problem: The current version of Wikimedia Commons App is to currently focused on uploading media only. Many users request (as evidenced by Play Store feedback) that the browse/search feature be added to the app.
  • Proposed Solution: Create a Search activity which allows users to completely browse the WikiMedia Content.
  • Planned features:
    • General Search functionality.
    • Featured images scrollable activity.
    • Category wise search.
    • Picture and other media wise search.
    • Download and share feature.
    • Bookmark feature.

2.Access content without login Github discussion

  • Problem: The current version of Wikimedia Commons app requires the user to login for accessing the app. This acts as a barrier for many first time users who want to quickly take a look at the app.
  • Proposed Solution: Making the Browse feature and Nearby places available without login will resolve this problem.

3.Need to Handling large response results for queries Github discussion

  • Problem: When the Search Activity is designed the search results will be significant which may slow down the app.
  • Proposed Solution: Optimising the app by implementing pagination and threading using async tasks.

Possible Mentor(s)

Have you contacted your mentors already?

Yes. I have already contacted both my mentors while working on several issues in github and got feedback while documenting this proposal.

Deliverables Timeline
TimeTask
12 - 27 MarchProposal Reviewing and getting suggestions from mentors
27 March - 23 AprilContributing to Commons Repo by reporting issues, making PRs
23 April -14 MayCommunity bonding and getting familiar with the Wikimedia ,WikiData and Commons APIs
14 MayCoding begins
TimeTaskDeliverables
Week 1 (14 - 20 May)Getting in-depth implementation details and clarifying doubts with mentors on WikiMedia , Commons , WikiData APIs - Learning JavaRx. - Familiarising myself with featured images scrollable activity implementation, - Designing a sample RecyclerView UI for search activity - Designing a sample UI for Search History. - Getting feedback from mentors.- Finalised design and implementation plan for search activity and search history. - Documentation and blog.
Week 2 ( 21 - 27 May)- Started UI implementation for Search activity. - Testing and finding bugs in featured images scrollable activity.- Reporting issues and discussion with mentors on how to fix the bugs. - Fixing bugs and issues in feature images activity and performing final tests.- Fully functional featured images activity without any bugs. - Documentation and blog
Week 3 (28 May - 3 June)- Implementing UI for Search Activity. ( Initially implemented only for pictures).- Studying API Call requests to request Search results - Implementation plan discussion with mentors. - Displaying response results in the activity.- Completed Search activity for pictures. - Testing , Documentation and blog.
Week 4 ( 4-10 June)- Implementation for displaying other media results. - Making UI changes to show other media in search results. - Handling other media results - SVGs and Audio files.- Completed Search activity for pictures and other media. - Getting feedback, testing and debugging. - Documentation and blog.
Review 1
Week 5 ( 11-17 June)- Discussion with mentors and design UI for category search. - Implementing changes in API request methods. - Finalising output according to category. - Getting feedback,testing and fixing bugs,- Category wise search option fully implemented . - Documentation done and blog updated.
Week 6 ( 18 - 24 June)- Incorporate download and share option. - Discuss on implementing bookmark option. - Making necessary UI changes.- Download and share option - Bookmark option. - Documentation and blog.
Week 7 (25 June - 1 July)- Study APIs to analyse APIs and discuss how to get best search results. - Designing the request and response to obtain best search results for general search and category search.- Optimised search results - Testing, Documentation and blog updation.
Week 8 (2 - 8 July)- Discussion with mentors and plan to make search results faster. - Implementing threading to load Search results faster. - Implementing Pagination to load Search results dynamically on page scroll. - Getting feedback and testing. - Fixing bugs and make changes.- Optimised Search activity. - Documenting results and blog.
Review 2
Week 9 (9-15 July)- Making changes in app to search nearby places. - Making UI changes to implement nearby search results and integrate it with the existing nearby places activity.- Search feature completed in nearby places activity. - Documentation and blog updation.
Week 10 (16-22 July)- Discussion with mentors to make the search and nearby places activity available without login - Making implementation changes.- Search and nearby places activity made available without login. - Documentation and blog updation.
23 July - Aug 14 DeliverablesBuffer period- Perform final testing. - Fixing bugs. - Complete Documentation.

SearchFlow.png (977×121 px, 29 KB)

Implementation plan

1. Search Implementation
  • SearchView Library can be added to the UI to display the Search.
  • Searchable configuration done in xml to get the search query and configure suggestions with an intent and intentHandler to handle the click events on suggestions.

Search suggestions can be generated using the prefix search available in mediawiki api :
Search Module
action=query list=prefixsearch
Retrieves wiki page titles with the given prefix. See the showcase article Page info in search results. See module documentation for API:Prefixsearch and View generated API help.

-Reference

  • Save recent searches using a ContentProvider to display as search history during next search, an option for clear suggestion can also be added.
  • Implementing audio search results : Audio files can be displayed in search results using the MediaPlayer OpenSource Android Library with simple controls.
2. Browse without login changes suggested.
  • Adding skip button to login activity takes the user to browse activity.
  • When the user clicks on upload option the same login activity is opened.
  • If the user skips again, then display a toast saying "Can't upload content to Commons if user is not logged in"

Skip button added to login activity.

Screenshot_20180320-201322.png (1×720 px, 57 KB)

3. Optimising app

Pagination

Pagination is the process of dividing a document into discrete pages, either electronic pages or printed pages.

Wikipedia

  • Design a custom scroll listener and fix the number of results to be displayed in one page,
  • Create an adapter for pagination and link it to the Recycler view.
  • After the certain number of results are displayed get the next set of results from the offset value.
  • Add a Progressbar to display that the results are loading.
  • Incorporate pagination for the GSON Search response.

Mockups / Diagrams

  • Search UI

mock1.png (1×720 px, 91 KB)

mock2.png (1×720 px, 54 KB)

mockup4.png (1×720 px, 56 KB)

  • Featured images UI

mock3.png (1×720 px, 65 KB)

Participation

  • Progress on my internship goals would be tracked through project tasks and sub-tasks on Phabricator.
  • I will remain active in Email,Hangouts,IRC
  • I will regularly blog my learning at https://medium.com/@97balakrishnan\

About Me

Tell us about a few:

  • Your education (in progress) : Bachelor of Technology in IT 3rd Year at SSN College of Engineering,Chennai,India.
  • How did you hear about this program? Through college seniors
  • Will you have any other time commitments, such as school work, another job, planned vacation, etc, during the duration of the program? I don't have any other commitments during my semester holidays between May 16 to July 4. I can work ~30hrs a week after that.
  • We advise all candidates eligible for Google Summer of Code and Outreachy to apply for both programs. Are you planning to apply to both programs and, if so, with what organization(s)? I am applying only for GSoC as I am not eligible for Outreachy program. I am applying under Wikimedia Commons Android only.
  • What does making this project happen mean to you? I have been developing android apps for the past 2 years. I started discovering and contributing to new repositories as soon as i started using GitHub. I came to know about GSoC quite recently. My College friends strongly suggested to take part in this as it will be a good platform to contribute to learn and contribute. So I started looking for an organisation to contribute to. I was fascinated by WikiMedia Commons app repository. As i started contributing by reporting issues and sending PRs, I was able to interact and get help from Professional Developers from all over the world. I would like to continue my contribution and it will be a great opportunity for me to gain technical experience and learn a lot of new things.
My Contributions to Wikimedia Commons Android:

Past Experience

A few apps that i developed :

- Infinity Downloader

Playstore link
Github repo

I developed this android app to help my college students easily download and share notes from our intranet. This app can download multiple files from a target URL of a WebPage.
This app uses WebScraping technique to obtain the download links from target URL.

  • Retrieves the HTML code of the webpage. Uses HTTPURLConnection to parse the websites code and extract download links.
  • Parsing is done to extract download links from website
  • Download of files is done using AsyncTask.
  • Search suggestions based on Google Suggest Query Api using Retrofit Library.
  • Unsplash API used for generating background images

- Simple Weather app

Github repo
I developed this Simple Weather app to display the current weather details and forecast details.
This app was done by me as a part of the Mobile App Development Project my College.

  • Android weather app WunderGround api
    • Gets the user’s current latitude and longitude using Location Manager.
    • Places a request to the WunderGround API and get the response using RETROFIT (Client side REST API)
    • Uses RecyclerView to display the weather forecasts.

- DigitalTwin

Github repo
This app was developed as a part of my Research project at IIT Madras
DIgitalTwin is an android app which allows real time monitoring of functioning of home appliances
It uses ThingSpeak api to get data from sensors and send to cloud.
The cloud data is recieved in the app and displayed.

Other Contributions:

- FancyShowCaseView

Other Diagrams and Mockups

Timeline.png (1×393 px, 179 KB)

Event Timeline

The link "Pull down gesture removal for Map View" seems broken.

Familiarising featured images scrollable activity -> Familiarizing myself with the featured images scrollable activity
There are two "Review 1"

About "nearby search results": Do you plan to integrate search results into the existing Nearby map/list? Or create a separate UI?

I have made the corrections. I want to integrate the nearby searching with the already existing nearby places activity in my project.

97balakrishnan updated the task description. (Show Details)
97balakrishnan updated the task description. (Show Details)
97balakrishnan renamed this task from GSoC proposal: Browse feature in Commons app to [Wikimedia Commons app ] GSoC proposal: Browse feature in Commons app .Mar 16 2018, 8:37 AM
97balakrishnan updated the task description. (Show Details)
97balakrishnan updated the task description. (Show Details)
97balakrishnan raised the priority of this task from Low to Needs Triage.Mar 18 2018, 8:05 AM

Hi @97balakrishnan , can you please re-shape you timeline in one table with dates, steps and deliverables as in here: https://phabricator.wikimedia.org/T188597 . It is easier to read :)

97balakrishnan updated the task description. (Show Details)
97balakrishnan updated the task description. (Show Details)

@Nes @Nicolas_Raoul @maskaravivek Please see the additions I have made and the UI Mockups and pls give your suggestions. :-)

Hi @97balakrishnan I think voice search and media search (do you mean image processing) can be removed. Time is too short to implement those.

Besides, audio files is also our of scope according to me, and it never told on GitHub discussion either. Sorry for not recognizing those earlier. We can review those things later if this one will be selected proposal.

Ok Thanks @Nes I've updated the changes :-) ,
By 'other media search' I meant audio files and SVG files.