Just filling things in as I go, as I tend to be a bit forgetful otherwise. :) Will tidy it up closer to the end of the bonding period.
== Detailed plan agreed with mentors ==
Done - no changes to the detailed plan at https://phabricator.wikimedia.org/T115101 as far as we know.
== Phabricator project created ==
Done - https://phabricator.wikimedia.org/tag/commons-app-android-upload/
== Meetings with mentors started ==
Done - last meeting was at 2am UTC, 20th Nov on Google Hangouts. A few issues with my mic occasionally breaking up (sorry guys, will try to fix that in time for the next meeting), but otherwise pretty productive. We discussed:
- Getting used to the codebase for the app (especially the categorization package) - It was suggested that I use the Android hierarchy viewer in Android Device Monitor (tree view), and breakpoints otherwise
- Communication plan (see below)
- Potential APIs for Phase 1: Plan to try Wikidata API, Commons API, and searching for existing pictures with those coordinates. Fill GitHub wiki with use cases that we can test APIs with
- It was suggested that I announce my project on various mailing lists and try to recruit testers
== Bonding period report ==
=== Work done ===
- Work environnement has been properly setup. I will be using Mediawiki-Vagrant throughout the summer.
- Research on both the MediaWiki and VisualEditor environment has been done. I've learned about the basics such as ResourceLoader, Extensions, DataModel vs ContentEditable, Hooks, etc etc.
- I've familiarized myself with the Gerrit code review environment via my microtask.
- I've explored Phabricator's apps such as Conpherence, Pholio and Maniphest.
=== Lessons learnt ===
- Code style is very rigorous and important. I'll have to make a habit of using Grunt in order to adhere to the styleguide
- Patience and rigor is key to success here. Tutorials and proper documentation will not always be available, and I'll have to not be afraid to ask help or studying other people's code.
- Communication is key. So far a lot of help has been given to me by my mentors and other contributors, so most of the time I'll progress faster if I seek help at speedbumps.
=== Problems faced and solutions found ===
- git-review was a pain to setup at first. After much fiddling around I've managed to make it work, but since then I've formatted my work machine and the second setup was a breeze. So, kind of a fluke there.
- DM vs CE, and in general VisualEditor's architecture. It still is kind of a blur, but I've really only started to shed some light on it after starting to code instead of looking at documentation. Learning by example really is a powerful tool.
- Vega's syntax. This is still a main hurdle, since I will have to deconstruct Vega specifications in order for the UI to work. I've looked at the official documentation, as well as prior GUI tools powered by Vega.
=== Changes to the original plan ===
- Unit testing, as per MW's code standards, became a more prominent portion of the work to be done.
- The order of the tasks has been changed a bit, starting with Vega rendering in VE instead of starting with the user interface edit dialog.
=== Minimum Viable Product ===
- Vega specifications rendered within VisualEditor as new Graph nodes
- Parse and present Vega bar chart data to the user through a tailored UI dialog
- Allow the user to edit a bar chart through a tailored UI and have its changes applied in real time within VE
=== Communication Plan ===
- Communication with the mentors has been steady and great so far. Weekly meetings will be held on Google Hangouts every Monday morning for the summer, where we will discuss progress on the project, main problems and solutions, in standard Scrum fashion.
- For transparency, Maniphest will become my main tracking tool for this project. As such, every major task will be documented here, in order for all contributors to easily follow and comment on my work. I will also be available on freenode IRC as ferdbold during my working hours.