Proposal for the 'Upload To Commons app: Make categorization easy/reliable' project for the Outreachy Dec '15 - Mar '16 internship.
Name: Josephine Lim
IRC or IM networks/handle(s): josephine_l
Web Page / Blog / Microblog / Portfolio: I'm misaochan on GitHub. I've also recently created a blog to document my coding progress and things I've learnt.
Location: New Zealand
Typical working hours: 12:00 - 19:00 and 00:00 - 02:00 (GMT+13)
This project is aimed at improving the photo categorization functionality of the app. This would make it easier and faster for users to upload photos, as well as produce better-categorized photos (which makes it easier to find and re-use them). It should also reduces the need for the difficult and time-wasting task of guessing appropriate categories for uncategorized pictures taken by other people.
This will be achieved through 2 phases:
Phase 1: App should display nearby categories when user uploads a photo
- Identify the best strategy/APIs to find nearby categories
- Extract GPS coordinates from the picture
- Implement asynchronous calls to the APIs
- Show resulting categories
Phase 2: Category search should be made more "fuzzy" via approximate string matching
- Identify common patterns of category search near-misses
- Search for an API that would allow "fuzzy" search, and use it if available
- If not available, implement it by simple tricks like capitalization/pluralization
|Before Dec 7||Community bonding period||Bonding period report. Quick list of URLs|
|Dec 7 - Dec 13||Identify the best strategy/APIs to find Commons categories that are within a certain radius of the specified GPS coordinates||Wiki memo: cURL requests that provide the rights categories (30% false positives OK) for all possible use cases and edge cases|
|Dec 14 - Dec 20||Find a library to extract GPS coordinates info from a picture, and implement its use||Commits, screenshots|
|Dec 21 - Dec 27||Implement asynchronous calls to the APIs to match an uploaded picture's GPS coordinates with nearby Commons categories||Commits|
|Dec 28 - Jan 3||Display the resulting categories to the user alongside the "previous categories" that are currently already displayed||Commits, screenshots|
|Jan 4 - Jan 10||Cache categories, establishing a short-lived area->categories dictionary||Commits|
|Jan 11 - Jan 17||Manual testing of app, bugfixes, release to Google Play. Announce at various appropriate places to recruit testers||Release. App should display nearby categories after user has uploaded a picture and is selecting its category|
|Jan 18 - Jan 24||Identify common patterns of category search near-misses. Search for an API that would allow "fuzzy" search||Mid-term evaluation & report. Wiki memo|
|Jan 25 - Jan 31||Test the APIs found or test alternatives solutions, start implementing if time allows||Memo: test results|
|Feb 1 - Feb 7||Implement the fuzzy search||Commits|
|Feb 8 - Feb 14||Manual testing of 'fuzzy search' functionality in app||Test memo. App should display relevant categories if the user makes a typo or searches for 'near misses'|
|Feb 15 - Feb 21||If not disabled in preferences, use GPS to find nearby categories even when coordinates are not embedded in pictures (people might have moved, but it will sometimes be useful).||(Optional)|
|Feb 22 - Feb 28||Release to Google Play, final tests and bugfixes||Release. App deployed successfully and works as intended with no major bugs|
|Feb 29 - Mar 6||Update app documentation to reflect new enhancements. Work on other issues listed on GitHub if extra time||End-of-program evaluation & wrap-up report. App documentation up to date|
This project does not make use of Gerrit, so my source code will be published regularly on GitHub, via pull requests to the main Android Commons repository that is currently maintained by Nicolas_Raoul (mentor). I have used GitHub in the past and have already used this method to complete my microtasks, so I am reasonably familiar with it.
I plan to communicate progress via short daily reports on Phabricator and longer reports at milestones. Aside from that, I will be on IRC in the MediaWiki-General, #wikimedia-dev, #wikimedia- commons and #wikimedia-mobile channels.
I have started a blog in order to document my work in greater detail as well as the things I've learnt through my work on this project, and will continue to update it throughout the internship.
I was working in a different field before making the decision to go into Computer Science (which was a childhood dream of mine). I graduated with a Graduate Diploma in Science (major: Computer Science) from the University of Canterbury, then graduated with a Postgraduate Diploma in Science (major: Computer Science) from the University of Auckland.
How did you hear about this program?
I first heard about Outreachy from a Women in Computer Science group when I was attending the University of Auckland.
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 time commitments between those dates. If possible I would like to take a couple of days off for Christmas and New Year, and will talk to my mentors about making up the work in other weeks if it is granted.
We advise all candidates eligible to 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)?
No, no longer a student so not eligible for GSoC.
What drives you? What makes you want to make this the most awesomest wiki enhancement ever? What does making this project happen mean to you?
I got hooked on to Android app development when I made my first app as a University project - it was quite challenging, but also great to know that you made this little piece of software that other people can use. I really like how apps have contributed to changing the scene of software development, in that small groups of indie developers can make a really big difference.
I also really wanted to work for Wikimedia as my Outreachy internship, because I strongly identify with making information accessible to everyone, and have been an avid user of Wikipedia for over a decade. So I posted on a Phabricator task about reviving the Upload to Commons app asking if this could work for an Outreachy project, and some helpful souls linked me to Nicolas. He was very encouraging and helpful in getting me involved with the Upload to Commons project, so I'm hopeful about getting this little app out there and used by more people to populate the Wikimedia Commons repository.
Please describe your experience with any other FOSS projects as a user and as a contributor:
- Android - I have used an Android phone for several years, and have written an Android app (described in the following section). The customizability and open source nature of Android was a big factor in my choice between an Android vs an iOS phone. I have also contributed to the Upload to Commons Android app, as described in the bugfix section.
- Wordpress - I run a hobbyist foodie website that is powered by the Wordpress CMS. I have modified some of the Wordpress themes as child themes for my site, and also use several plugins. I've found the open source nature of the wordpress.org CMS and the themes/plugins that are built on it invaluable for getting a website set up easily, as well as learning CSS and PHP from.
- Hearthstone Deck Tracker - I play Hearthstone (an online TCG by Blizzard) in my spare time, and regularly use this deck tracker when I play (it has been approved by Blizzard, totally legit! :)). I've participated in discussion on its GitHub page and opened issues to offer suggestions.
- Other FOSS projects that I use: Mozilla Firefox, Python, Thunderbird mail client, Apache and MySQL for my website, and the Eclipse IDE.
Please describe any relevant projects that you have worked on previously and what knowledge you gained from working on them (include links):
I wrote an Android app for accessing Auckland University's web service, as part of a university project. The app enabled users to access information from the university's non-responsive computer science website via a suitable UI, and provided mobile-specific functionality such as adding contact details, emailing, and making calls. Through this project, I learnt Android app development and the basics of UI/UX development for mobiles and tablets.
Bugfixes and features I've written for the Upload to Commons Android app:
- Fixed "Fix usage reports or remove them" bug - Removed the "Send usage reports" button from the UI along with the dead code associated with it (merged - https://github.com/nicolas-raoul/apps-android-commons/pull/18 )
- Fixed "Package naming issue" bug - Changed the directory in which the source files were contained to match the code where they were declared as 'package fr.free.nrw.commons;' (merged - https://github.com/nicolas-raoul/apps-android-commons/pull/21 )
- New "Sign up" feature - Added "Sign up" button at login screen to allow users to create a Wikimedia account (merged - https://github.com/nicolas-raoul/apps-android-commons/pull/23 )
- Removed unused Campaigns feature - Prevented the launcher from creating a Campaigns shortcut when a user installs the app, and removed dead code behind this feature (merged - https://github.com/nicolas-raoul/apps-android-commons/pull/26 )
I have also released an update containing the abovementioned fixes to Google Play (with the app maintainer's permission).