User:Ferdbold/GSoC 2015 - Enable VisualEditor support in Graph extension

This page will hold all progress and formal reports for my GSoC project, which can be found here on Phabricator.

Initial proposal
The initial proposal was done on Phabricator and will be kept up to date there.

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.

Midterm evaluation
[to be done]

Final evaluation
[to be done]