This page will hold all progress and formal reports for my GSoC project, which can be found here on Phabricator.
The initial proposal was done on Phabricator and will be kept up to date there.
- 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.
- 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
edit
- 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
edit
- 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
edit
- 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 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.
Goals
|
Result
|
- Enable basic Vega display in VisualEditor
- Integrate basic editor dialog displaying raw JSON
|
- Vega graphs are now rendered by VisualEditor as a MWGraphNode
- On click, the user can invoke a dialog displaying the graph's raw JSON specification
- The user can edit the JSON and once applied, the changes are reflected in the graph
- A basic JSON validation is made to see if the spec given by the user is valid JSON. The dialog doesn't check (yet?) if the string given is a valid Vega specification string.
|
Goals
|
Result
|
- Reload Vega display on change
- Switch between basicgraph types (bar, area, point)
|
|
Goals
|
Result
|
- Parse a bar chart Vega specification and display it in the editor
|
|
Goals
|
Result
|
- Edit a bar chart Vega specification and have its changes applied
|
|
Goals
|
Result
|
- Edit a bar chart Vega specification and have its changes applied
|
|
[to be done]
Goals
|
Result
|
- Create a graph
- Delete a graph
|
|
Goals
|
Result
|
- Allow stacked bar and area graphs
|
|
Goals
|
Result
|
- Parse and edit a pie chart's Vega specification
|
|
Goals
|
Result
|
- Parse and edit a pie world map's Vega spec
|
|
Goals
|
Result
|
- Parse and edit a force-directed graph's Vega spec
|
|
Goals
|
Result
|
- Feature freeze
- Bug fixing
|
|
[to be done]