THIS IS A DRAFT OF THE FINAL PLAN FOR THIS PROJECT. THE FINAL PLAN IS AVAILABLE HERE T89287: Graph editing in VisualEditor
Profile
Name: Frédéric Bolduc
Email: bolducfrederic@gmail.com
IRC or IM networks/handle(s): ferdbold on freenode
Web Page / Blog / Microblog / Portfolio: Personal portfolio being developed, you can look at some of my work in the meantime on https://linkedin.com/in/bolducfrederic (French alert!) and https://www.github.com/ferdbold
Resume (optional): http://bit.ly/1IkmK2K (French right now, English one coming soon™)
Location: Quebec
Typical working hours: 9 to 17, GMT-5
Synopsis
This project aims to develop an extension for Extension:Graph which will allow users to edit Vega specifications (in the form of JSON strings) from a tailored UI inside VisualEditor, without having to open up the page source, thus reducing user-error risk.
Deliverables
Right now, Vega specifiations are considered by VE as a alien extension and are not rendered at all in the editor. My proposition is to divide this project into 5 core steps, which will need to be completed sequentially, but are all viable on their own (so the project could be shipped as-is at the end of any step):
- Enable Vega support into VisualEditor, in order for graphs to be properly rendered inside the edition page
- Enable real-time Vega previews in VE during edition, for all supported chart types. (At this point, this will work through raw JSON edition, but will be phased out as the UI develops)
- Develop a Vega parser allowing the module to read and edit bar chart specifications
- Implement an extensible UI dialog inside VE which can support read and edit operations on Vega specifications
- Extend progressively the module to other chart types (namely area charts, point charts, pie charts, maps and force-directed graphs)
Proposed timetable
This is being actively refined in the following mock. Once a final timetable is agreed there, it will be posted here. |
KEY DATE | TASK | Deliverable |
- | - | |
March 27 | Application deadline | |
April 27 | Student applications approved | |
Until May 25 | Community bonding, research on MV extension development, basic prototyping (as much as finals allow!) | |
May 25 - 31 | Design GraphData's UI, define the JSON parser's architecture | Mockup bundle, class diagrams |
June 1st - 7 | Enable Vega support into VE, Integrate basic UI framework for debug purposes | Static UI instanced on VE |
June 8 - 14 | Implement GraphData's JSON parser reading ability *(bar charts only)* | Simple UI filled with data fetched from JSON |
June 15 - 25 | Implement GraphData's JSON parser editing ability *(bar charts only)* | Simple UI able to save JSON data for a bar chart |
June 26 - July 3 | Midterm evaluation | |
July 3 - 9 | Implement GraphData final UI (see below for module list), ability to create graphs | Graph creation process implemented, support for multiple chart types |
July 10 - August 2 | Extend JSON parser functionality to other chart types | Extended UI able to support as many chart types as time allows |
August 3 | Feature freeze | |
August 4 - 16 | Bug-fixing, documentation polish | |
August 17 | Pencils down | |
August 18 - 22 | Final evaluations | |
Early UI mockups
Participation
I've been actively using Git (and other VCSes) for a few years now, so I've got the basic code review workflow and collaboration aspect pretty well established.
While I'll be working on this project, I'll submit my code for review daily to Gerrit. I like to keep things backed up, and doing this daily ensures that other developers will be able to keep track of my work much better.
Also, these are the additionnal means I plan to use to communicate progress:
- IRC: I'll stay online on freenode in #mediawiki-visualeditor as ferdbold during my working hours
I'll setup up a personal blog on ferdbold.com, on which I will post a weekly summary of my work.- I will post all weekly summaries and reports on this MediaWiki page.
About you
Education
I'm a video game development undergrad in my second year at Université du Québec à Chicoutimi.
In 2013, I graduated in Multimedia Integration (which is pretty much fancy-talk for front-end web development) at Cégep de Sainte-Foy.
How did you hear about Google Summer of Code?
I actually don't remember how I first heard about Google Summer of Code, I just know it was a while ago when I didn't know how to code and it looked like a great experience. Last year though, I went to a local dev meetup where it was mentioned, but it was already past the student application deadline. So here I am this year ;)
Will you have any other time commitments, such as school work, another job, planned vacation, etc., during the duration of the program?
I am heavily involved in a personal project of mine named Terra Arcana, a live-action role-playing organization who creates events every summer and supports the local LARP community. This year, our events will be held at the end of May and mid-August, which means I will have to devote some more time to them during these periods. Overall though, this should not hinder significantly the time I intend to devote to GSoC.
(Psst... I actually made that website!)
We don't just care about your project -- you are a person, and that matters to us! What drives you? What makes you want to make this the most awesomest wiki enhancement ever?
What initially sparked my interest for this particular project was that I've previously developed a node-based graph editor with MooTools and KineticJS on Terra Arcana's website, fetching . This editor is used as a skill tree that players of a role-playing game can use to customize their characters (inspired by Path of Exile's own web-based passive skill tree). I've really enjoyed doing this, so this task looked like it'd be right up my sleeve!
(This node-based editor is available at http://www.gnterraarcana.com. Sadly, it's kind of hard to find right now, since you have to actually make an account on the website and then make a new character and access their Skills ("Compétences" in French) page.)
As a video game developer, I like to work daily with visual assets and UI is one of the aspects of game dev that I enjoy the most. As such, I really like working with graphs and statistics, as well as design and deploy UI. I have the confidence that I have the dedication and patience needed to make this extension reliable and fun to use.
Past experience
Since my Cégep graduation in 2013, I have been working on web design and development with multiple agencies, as well as by myself. I've mainly dabbled in WordPress development, as well as a lot of responsive web design, as I've often been tasked to take the lead in front-end integration. While I haven't worked on any open source projects yet, I'm confident that my prior work experience will serve me well. Having already worked as a freelance designer and developer makes me even more confidence that I am able to give it my all during the entire summer.
I'm also a big fan of game jams. I've done almost ten of them now, including Global Game Jam, and I'll be adding the Ludum Dare to that list in three weeks. I always have a blast doing jams, and most of my games' source code is available on my GitHub account (since these projects are small, I don't really count them as open source experience).
I've also participated in various competitions and hackathons, such as Hack Québec, Ubisoft's Academia and the CS Games. These kinds of events helped round out my skills, as I've picked up useful knowledge on domains like VCSes, teamwork (especially with strangers!) and code rigor.
Other info
I also have a Bitbucket account, though I'm mostly working with Github now so stuff on there tend to be old. For the curious only ;)
I am not applying for Outreachy Round 10, as I'm not eligible.
Microtasks submitted
https://gerrit.wikimedia.org/r/#/c/200177/
https://gerrit.wikimedia.org/r/#/c/200319/