Detailed plan agreed with mentors
Done - no changes to the detailed plan at https://phabricator.wikimedia.org/T115101 at the present moment
Phabricator project created
Meetings with mentors started
Done - last meeting was at 2am UTC, 20th Nov on Google Hangouts. We discussed:
- Getting used to the codebase for the app (especially the categorization package)
- Communication plan (see below)
- Potential APIs for Phase 1: Wikidata API, Commons API, and searching for existing pictures with those coordinates. Plan to test these APIs to see which one fits our needs best.
- It was suggested that I announce my project on various mailing lists and try to recruit testers
- Emulators and testing
Bonding period report
- Set up project board and learned about project and task organization
- Set up and used Google Hangouts
- Installed Intel HAXM and enabled virtualization in BIOS in order to use the x86 emulator for Android (which is VERY much faster than arm - thanks for the tip Niedzielski!!)
- Announced project on wikitech-l, mobile-l, commons-l, and wikivoyage-l as well as at the Commons village pump, Wikivoyage travellers' pub, and Commons Mobile App discussion
- Started posting in Google discussion group for this app
- (In progress) Familiarize self with categorization package code
- (In progress) Read up on Wikidata API, Commons API, and how to search for existing Commons pictures with certain coordinates in preparation for Week 1's task
- Filled GitHub wiki with use cases that we can test APIs with for Phase 1
- Found out how to set up project with Android Studio (was previously using IntelliJ). Edited README file of project to include Android Studio setup
- It is good practice to use fragments for Android app development even if you aren't necessarily creating more than one type of layout at first, as it provides a good foundation for future additions/changes
- A good way to get used to a new codebase is the Android hierarchy viewer in Android Device Monitor (tree view), and using breakpoints for debugging
- It's good to test releases on at least two Android versions: (1) the target version, in our case API 17, and (2) the latest version, currently API 23
- Commit (and release) early and often
- I can collapse (and expand) blocks of code in the IDE - very useful for reading a very long class!
Problems faced and solutions found
- My mic was breaking up sometimes during the last Google Hangout, which must have been pretty disruptive. Will fix that prior to the next Hangout.
- Attempted to use UML support plugin in IntelliJ IDEA to generate UML diagram of project. Found out that Community Edition does not have that plugin. Applied for free Open Source license for Ultimate Edition, waiting for their decision.
- Switched to using Android Studio at mentors' recommendation. Initially had trouble importing the project, but eventually found out that the issue was that my installation of Android Studio had the Maven integration plugin disabled by default. Project works fine with Android Studio after enabling that plugin.
Changes to the original plan
- No changes so far
Minimum Viable Product
(Phase 1, release planned for week before midterm evaluation)
App should display suggestions for categories that are geographically nearby when the user uploads a photo - https://phabricator.wikimedia.org/T119163
- IRC (mostly #wikimedia-mobile)
- Weekly Google Hangouts starting Dec 7
- Daily progress reports and tasks on Phabricator
- GitHub wiki and issues - https://github.com/nicolas-raoul/apps-android-commons