User:5xbe/OPW Monthly Progress Reports

Overview
This page contains a monthly summary of progress made on my OPW project, "Clean up Parsoid round-trip testing UI, including using a templating system," between December 10th 2013 and March 10th 2014.

Research Templating Systems

 * Test cases, rendering HTML lists and tables from JavaScript objects, with different DOM-based templating systems. See test cases in Github repo.
 * Notes on how the systems bind data differently, data on their use/maintenance, and factors to consider in selecting a templating system. See Github repo's readme, and Templating Wiki page.

Preparation/Tutorials

 * Set up Gerrit/Git review; made (and abandoned) a test change through Gerrit.
 * Node.js tutorial.
 * Background reading on Parsoid and templating.

Documentation Updates
Some small documentation updates to reflect recent restructuring of Parsoid's repo:
 * Readme updates (patch),
 * package.json update (patch),
 * Wiki page updates (revision1, revision2).

Research Templating Systems

 * Wrapped up investigating DOM-based templating systems. Team decision that none is suitable for longer term plans (Parsoid may develop its own templating system for those plans); decision to separate research/experimentation with DOM-based templating systems from other goals of my project.
 * Investigated string-based templating options.

Templating for Round-Trip Server
Refactored round-trip server code, using Handlebars templates to separate presentation from logic.
 * patches: 1, 2, 3, 4, 5, 6, 7, 8, 9.
 * closed bug 56785.

Round-Trip Server Web Interface Improvements

 * Created interface to compare non-consecutive regressions/fixes on http://parsoid.wmflabs.org:8001/commits (patch).
 * closed bug 52407.
 * Created views for certain significant types of regressions previously searched for by eye (patch). Views for:
 * Regressions introducing exactly one semantic diff into a perfect page,
 * Regressions introducing exactly one syntactic diff into a perfect page, and
 * Other introductions of semantic diffs to pages that previously had only syntactic diffs.
 * Made various smaller improvements:
 * Cleaned up server error and no results handling in round-trip server (patch),
 * Fixed HTTP request status codes,
 * Displayed links and header information when no results are returned (eg when there are no regressions, and the regressions view is requested),
 * Switched to a newer version of Handlebars and used its whitespace control syntax in round-trip server templates (patch),
 * Created a block helper to enable referencing different JavaScript files in different views in round-trip server (patch),
 * Changed order of revisions to old before new in round-trip server revision comparison views (patch).

Investigate and Change Diff Library for Round-Trip Testing
Parsoid is tested by converting many wiki pages to HTML and back, and then comparing each result with the initial wikitext. We are currently using the diffing library jsdiff to make this comparison. Because of bug 59840 - "jsdiff uses excessive time / memory on pages with a lot of lines":
 * Investigated an alternative library simplediff, and found that it resolves issue in bug 59840 (comparison summarized here),
 * Modified input/output processing in round-trip tester to use simplediff instead of jsdiff (patch).