Page MenuHomePhabricator

GSoC 2019 Proposal : Add Structured Commons support to Commons Android app
Closed, DeclinedPublic

Description

Profile Information

Name: Shubham Pinjwani
University: IIT(ISM),Dhanbad
Email: shubhampinjwani710@outlook.com
IRC nick: sp2710
Github: https://github.com/sp2710
Location: India(UTC +5:30)
Typical working hours: Between 2 pm and 3 am UTC +5:30

Synopsis

About the app:
Wikimedia Commons(or simply Commons) is an online repository of images, sounds, and other media files. Files from Wikimedia Commons can be used across all Wikimedia projects in all languages, including Wikipedia, Wikibooks, Wikisource, and Wikinews, or downloaded for off-site use. The aim of Wikimedia Commons is to provide a media file repository that makes the available public domain and freely-licensed ed-ucational media content to all, and that acts as a common repository for the various projects of the Wikimedia Foundation. The Commons android app allows users to upload pictures from their Android phone/tablet to Wikimedia Commons.

About the project:
Structured Commons is really an important feature as it allows the Wikimedia Commons app to be truly multilingual. Captions are a one-line explanation of what this file represents. Multilingualism is the goal of captions. Depicts is the property that shows what does the image depict. These features of commons are very important as they allow the Commons to be multilingual. The aim of this project is to deploy these features in the commons android app with the following objectives:

  • Submitting captions to Structured Data in the Wikimedia Commons from the Commons android app.
  • Showing captions in the Media Details Screen localized in the user’s Language or fallback language.
  • In the Explore and Contributions in the Media Details screen show captions instead of filename localized in the user's language and fall back to the filename if no caption is available.
  • Describe uploaded pictures with "depicts" statements linking to Wikidata.
  • Let users search media by "depicts" statements.
  • Submitting media type in Commons.
  • Extracting metadata from files and storing the metadata in wikibase.
  • Extracting properties of Two-Dimensional images and storing the data in the wikibase.

Mentor(s)
@Ashishkumar468 and @Nicolas_Raoul

Timeline

1. Community Bonding Period [ May 6 - May 26 ]

Tasks
Community bonding period:

  • Communicate and bond with students and mentors.
  • Getting familiar with the app architecture and Wikimedia APIs, Learning RxJava.
  • Planning and designing UI mock-ups.
  • Researching about the relevant APIs.
  • Requirement Gathering and Documentation.

Deliverables

  • Community bonding report and blogs about the experience.

2. Week 1 [ May 27 - June 2 ]

Tasks

  • Fetching captions using the MediaWiki API. This can be done using the MediaWiki API as shown here. I’ve already made some progress here. Adding unit test cases.
  • Displaying the captions instead of filename in media details, localized in the user's language. Fall back to the filename if no caption is available.
  • Planning and designing the UI mock-ups for submitting captions to commons.

Deliverables

  • Caption instead of filename in media details in the user's language.
  • Unit test for this feature.
  • Finalize UI to submit captions to commons.

3. Week 2 [ June 3 - June 9 ]

Tasks

  • Researching about the relevant APIs for submitting captions to structured data.
  • Implementing the UI to submit captions in multiple languages. This can be done by adding a default field for a caption in the language in which the app is being used and then adding more captions in other languages exactly like what is done currently for descriptions.

Deliverables

  • UI to submit captions to structured data implemented.
  • Link to finalized API for submitting captions to commons.

4. Week 3 [June 10 - June 16]

Tasks

  • Using the API submit captions to structured data. Upload of this data can be done with media Info ID.
  • Getting the user's approval that the caption is licensed CC0 (independently from the image's license).
  • Writing unit test cases for the above changes.

Deliverables

  • Submitting captions to structured data using the API.
  • Unit test cases.

5. Week 4 [ June 17 - June 23 ]

Tasks

  • Start Creating a prototype that asks the user to find what her picture depicts.
  • Planning and designing UI mock-ups.
  • Improvements based on the feedback received from mentors, other community members.
  • Manual testing on different devices, emulators.
  • Code cleanup.
  • Bug fixes, Writing documentation.

Deliverables

  • Finalize UI to submit the depicts statements to the Wikimedia Commons.
  • Bug fixes.

PHASE I EVALUATION [ June 24 - June 28 ]

6. Week 5 [ June 24 - June 30 ]

Tasks

  • Searching for the relevant APIs for submitting depicts statements to commons.
  • Adding the UI to the app that will ask the user about "What the image depicts" similar to what is already implemented for categories. If available, each item's P18 image is shown as a thumbnail, to help people.

Deliverables

  • Implemented UI to submit the depicts statements to the Wikimedia Commons.
  • Link to finalize APIs for submitting depicts statements.

7. Week 6 [ July 1 - July 7 ]

Tasks

  • Using the API upload the image, and save its details along with depicts statements to the commons.
  • Start exploring the APIs that can fetch the “depicts” statements of the image.

Deliverables

  • Submit the depicts statements to the Commons using the APIs.
  • Link to finalized APIs for fetching depicts statements.

8. Week 7 [ July 8 - July 14 ]

Tasks

  • Using the API fetch the depicts statement.
  • Doing some changes in the UI of media details to show "depicts" statements. Add “depicts” statement in the media details page(for instance in Explore or from my contributions).
  • Planning and designing the UI for searching.

Deliverables

  • Fetching and adding the depicts statement in media details.
  • Finalise UI for searching through depicts statements.

9. Week 8 [ July 15 - July 21 ]

Tasks

  • Let users search by "depicts" statements. Implementing a structured search for images using the depict property of the image and displaying the image.
    • Implementing the UI for searching and displaying the media.
  • Adding test cases for the changes made.
  • Code cleanup.

Deliverables

  • UI for searching implemented.
  • Unit tests for the changes made.

PHASE II EVALUATION [ July 22 – July 26 ]

10. Week 9 [ July 22 - July 28 ]

Tasks

  • Using the MediaWiki search API for searching the image using the “depicts” statements.
  • Create tables in the local database (SQLite) for storing recently searched depict statements. Store search results in the local database to show search history.
  • Writing Unit Tests.
  • Searching for the relevant APIs to update and read media type in wikidata.

Deliverables

  • Search images using the depicts statement and displaying it in the app.
  • Recently searched depict history.
  • Unit test cases.

11. Week 10 [ July 29 - August 4 ]

Tasks

  • Extracting media type in app and updating the media type in commons at the time of uploading.
  • Showing the media type in media details.(If allowed)
  • Searching for the relevant APIs to update EXIF like data in wikimedia commons at the time of uploading.

Deliverables

  • Feature for updating media type in commons at the time of uploading.

12. Week 11 [ August 5 - August 11 ]

Tasks

  • Adding Unit test cases for the changes done.
  • Calling the APIs and updating the EXIF data .

Deliverables

  • Feature for updating EXIF like data in the wikibase.
  • Unit test cases for the changes.

13. Week 12 [ August 11 - August 18 ]

Tasks

  • If time allows extracting the properties of Two-Dimensional images in app.
  • Searching for the relevant APIs to update the properties in commons.
  • Calling the APIs to update the properties in commons at the time of uploading the image. Adding unit test cases.

Deliverables

  • Feature for updating Two-Dimensional properties of images from the app and unit test cases.

14. Week 13 [ August 19 - August 25 ]

Tasks

  • Final UI tuning of the app.
  • Thorough Testing, Exception Handling and distributing the app among beta testers (if allowed).
  • Bug fixes.
  • Code cleanup.
  • Improvements based on the feedback received from mentors, other community members.
  • Preparing Documentations, Wiki and FAQs.
  • Submitting the final work product.

Deliverables

  • Bug fixes and documentation.

FINAL EVALUATION [ August 26 – September 2 ]

Participation

  • I will work on a separate branch on git and will be uploading code to the forked repository almost on a daily basis and will create pull requests as and when a complete feature is done.
  • I will be online on IRC during my working hours ( 2:00 pm to 3:00 am UTC +5:30).
  • I will be available in outlook during my working hours.
  • I will write Weekly Blog Posts at https://sp2710.home.blog/.
  • Weekly reports will be published in my media wiki user page
    • What did I do last week?
    • What will I do this week?
    • What is currently preventing me from reaching goals?

About Me

I am a Sophomore at Indian Institute of Technology (ISM), Dhanbad. I am pursuing Bachelor of Technology with Master of Technology in Computer Science and Engineering as my Major. I have a keen interest in Android App development. I am a patient learner and like to work in collaboration.

How did you hear about this program?
I heard about GSoC in a college meetup. I am an open source enthusiast and I've always wanted to take part in Google Summer of Code.

Will you have any other time commitments, such as school work, another job, planned vacation, etc, during the duration of the program?
I have no other commitments this summer during gsoc period so I'll be able to give more than 40 hours per week. My end semester examinations end on 24th April and I can start my work from that day on. I would have to give some time for building the app for Add-it startup but it will get completed before community bonding period or maybe it will take 1 more week during community bonding period but I will be able to commit enough time to this project as there is not much work remaining for Add-it app. From the 1st or 2nd week of community bonding period I will be able to devote my full time to this project. 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. During the summer GSoC will be my first priority since I won't have any other commitments during this period.

Eligible for Google Summer of Code and Outreachy ?
I am applying only for GSoC as I am not eligible for Outreachy program.

What makes me the right person to complete this task
I have been developing Android applications from almost 1.5 years. I have completed more than 7 Android projects successfully and these experience helped me to prepare myself for events like this.
I have been contributing to open source and Wikimedia from almost 4 months and have found it a great platform for developers to collaborate and achieve certain goals. I have a good knowledge in Version controlling with Git. I have experience interacting with APIs programmatically (REST). I have made several projects using 3rd party libraries and APIs. I have contributed to the commons app and have knowledge of app architecture and MediaWiki APIs. I want to work with Wikimedia on this project as I think I have the required skills to bring this project to completion during summer. If I will get selected I will definitely try my level best to make this project successful. I will love to continue working and contributing to Wikimedia even after summers.

What does making this project happen mean to you?
I always wanted to develop apps that really help people. I like the idea of open source where we can collaborate with others and work to achieve common goals. I loved the goal of Wikimedia Foundation "Global movement whose mission is to bring free educational content to the world". I like the idea of Wikimedia Commons to provide a media file repository that makes the 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. It excites users to see their media being used by many people. It would be really great for me to apply my skills and contribute to such an organization and helping it to achieve its goals.

Past Experience

I’ve been doing Android development since my first year. I have made many small apps for my learning purpose for learning different features of Android. I have also contributed to some open source organizations including Wikimedia. Some relevant projects that I’ve worked on previously are:

Mdnews

This is the First app that I build while learning android development. Using this app we can convey news to the students in college regarding the activities happening in college. This app uses firebase as the back end.

From this app, I learned about APIs and how to use them in the android app.

DietManager(In Progress)

This app includes several features that help the user to maintain the diet and stay healthy. This app uses machine learning to do tasks. Some of the features include:

  • The user takes picture of the food with the app and the app will show the nutritional values of the food as the output to the user.
  • The user gives the Daily Nutritional requirement as the input in the app and the app will output the diet the user will need to take in order to maintain a balanced diet.
  • The app will keep a count of the users daily nutritional intake so that the user will be able to maintain the diet.

This app uses Flask as a back end. From this app, I learned about the flask framework and how to send and receive data using the flask. I learned how images can be sent to the back end and processed.

Github Link: https://github.com/sp2710/Diet-Manager

Yoyo Laundry

This is a startup of some students of IIT(ISM), Dhanbad. This app provides hassle-free laundry services at the door of the users. This startup is currently operational in cities of Prayagraj(Allahabad) and Ghaziabad.

I have worked on this app and implemented many features in this app. Currently, I am responsible for maintaining the app and do the necessary changes to the app. This app uses PHP as the back end. From this app, I learned about PHP and how to work with the database.

Play Store Link: https://play.google.com/store/apps/details?id=techoxa.com.yoyolaundry

Add-it(In Progress)

This is an upcoming startup. Currently, I am responsible for developing the whole frontend and backend of the app. This app will use Django as the backend.

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 can be in various forms such as:

  • Reporting Bugs
  • Improving the app by solving the bugs
  • Improving the app by doing enhancements to the app
  • Creating new issues
  • Collaborating with others to accomplish certain tasks
  • Helping new contributors

Commons is the first open source project to which I contributed. I’ve been indulged with this for the past 4 months. In this time I’ve solved some bugs and also implemented some new features. So far I have made over 39 Pull Requests to the project out of which 24 are already merged. I have also opened many issues.

Link to Pull Requests: https://github.com/commons-app/apps-android-commons/pulls?utf8=%E2%9C%93&q=+is%3Apr+author%3Asp2710+
Link to Issues Created: https://github.com/commons-app/apps-android-commons/issues?utf8=%E2%9C%93&q=is%3Aissue+author%3Asp2710+

Structured Commons

Apart from these issues I have also worked on structured commons issues. I’ve made some progress here. I have used MediaWiki API to fetch the captions from commons in the user’s language and show it in the media details. I have implemented it in a separate branch in the forked repository and have also raised a PR for it.

Issue Link: https://github.com/commons-app/apps-android-commons/issues/2337
Pull Requests Link: https://github.com/commons-app/apps-android-commons/pull/2662

In this PR I have added Captions in the media details page in the user’s language. I have also added unit test cases. To solve this issue I spent some time browsing MediaWiki API and learning about how to use them in the app. I also browsed and learned about structured commons and also learned how to write tests.

Related Objects

Mentioned Here
P18 my paste!

Event Timeline

Shubhamp2710 renamed this task from Add Structured Commons support to Commons Android app to GSoC 2019 Proposal : Add Structured Commons support to Commons Android app.Apr 8 2019, 8:22 PM

If you would like us to consider your proposal for review, please move it to the submitted column on Google-Summer-of-Code (2019) board.

(look for next steps in the email you'll receive shortly with an option to request for a debrief on why your proposal was not accepted)