Clean up Parsoid round-trip testing UI

Name and Contact Information
Name: Be Birchall

Email: 5xbebebebebe@gmail.com

IRC or IM networks/handle(s): be

Location: New York, NY, USA

Typical working hours: 9-5, Mon-Fri

Synopsis
The Parsoid project is developing a wiki runtime which can translate back and forth between MediaWiki's wikitext syntax and an equivalent HTML / RDFa document model with better support for automated processing and visual editing. It is currently used mainly with the VisualEditor project.

My project is to work on Parsoid's round-trip testing UI, including refactoring the code using a templating system. Using a templating system will allow us to separate code from UI, thereby cleaning up the current mix of HTML and JavaScript in use. We are considering using a DOM-based tempting system because of how this is in line with the longer term goals of Parsoid. The cleaned-up code will then allow us to improve UI more easily. I will work on improving the usability of existing views including to discover performance trends.

Deliverables
December 10 - March 10 (13 weeks)
 * December 10 - 23 (2 weeks) - Research and select an appropriate templating system for Parsoid's round-trip server code.
 * Research templating systems, focusing on DOM-based systems and writing about the results on a project subpage. (This continues work started as a "microtask.")
 * Use a simple test case, rendering a table from JSON data, to compare the candidate systems.
 * Learn about desiderata for templating system for Parsoid's round-trip testing code by becoming familiar with the code base and communicating with others involved with Parsoid.
 * Select an appropriate templating system.
 * 24 December - 30 December (1 week) - Prepare to refactor code.
 * Continue to become familiar with the relevant parts of the code base.
 * Learn how to use the selected templating system.


 * 31 December - 27 January (4 weeks) - Refactor round-trip server code with selected templating system.
 * 28 January - 3 March (5 weeks) - Other web UI improvements.
 * Improve usability of existing views. Example: bug 52407.
 * Update performance views to discover performance trends. The current stats view is not very informative, and we are thinking of:
 * adding aggregate statistics to the database, and
 * creating performance trend visualizations (likely using d3.js).
 * 4 March - 10 March (1 week) - Finalize documentation and code contributions.

About Me
I have been programming for about a year, and am a recent Hacker School alum. I've been programming mostly in JavaScript (including libraries), Ruby (including Rails and Sinatra), and some Scheme. I'm interested in JavaScript and data visualization, and have worked with d3.js. I started programming just after completing a PhD in Philosophy at Princeton, and before that came from a math/logic background. I have a MSc in Logic from the Institute for Logic, Language and Computation at the University of Amsterdam, and a BA in Math/Philosophy from Reed College. I have an interest in free software, and a few years ago taught a writing course for Computer Science majors where we read and discussed, among other things, philosophical and legal aspects of intellectual property, including free and proprietary software.

Participation
I'd make a full-time commitment to the internship, working Monday-Friday 9am - 5pm. I plan to use irc (Parsoid's channel #mediawiki-parsoid) and email with the project mentors to frequently check in: to ask for help and feedback, and to communicate progress. I expect to use GitHub to publish code while I'm working. I also expect to maintain a project blog.

Past Open Source Experience
Working on Parsoid at Wikimedia will be my first involvement with open source software as a contributor. The first step in my project is to research templating options, and (as a "microtask" -- currently in progress) I am creating a project subpage on Templating.

My own projects are all open sourced on GitHub, and (of course) I make a lot of use of open source projects for programming, such as programming languages and frameworks, as well as git/GitHub. Other examples of open source projects that I find myself using frequently are Google Chrome (which is mostly open source), and the typesetting program LaTeX.

I've also pursued an interest in free and open source software from a more theoretical perspective, and as mentioned in the "About Me" section above, I taught a related writing/discussion course.