**Type of activity:** Pre-scheduled session.
**Main topic:** Handling wiki content beyond plaintext
== The problem ==
Wikitext as currently implemented is well-nigh unspecifiable. It is an untidy mix of organically-grown implementation (without clear divisions between functionality), obscure corner cases and workarounds, and bugs.
"Grunge" (or, Xtensible Wiki Markup, xwm, pronounced "zoom") is an attempt to find a clean specification for wikitext which looks as much as possible like current wikitext. Goals are:
* A grammar that fits on a single sheet of paper, with
* No backtracking,
* Regular syntax for links and templates,
* A way to represent any conforming HTML document, and
* Appearance as similar to current wikitext as possible.
The implementation is based on the Parsoid Mediawiki DOM spec and round trips using selser. Existing wikitext can be converted to DOM using Parsoid and then converted from there to "grunge" in order to allow "power user" editing. Eventually the primary representation in the DB could be shifted to grunge.
== Expected outcome ==
Grow mindshare for cleaning up wikitext; cover a variety of corners of the wikitext spec and determine consensus on which changes to wikitext are acceptable to editors.
== Current status of the discussion ==
There are a number of alternative markup proposals, including:
* subbu's "wikitext 2.0"
* markdown, restructured text, etc
* attempting to write a complete spec for wikitext
A prototype implementation of grunge has been developed, which has informed some of the design choices. The prototype can convert the "Barack Obama" article from Parsoid DOM to grunge, validating that the result definitively still "looks like wikitext".
== Links ==
* https://gerrit.wikimedia.org/r/316237 - prototype implementation
* http://spec.commonmark.org/ - markdown specification, for comparison
* {T149282} and [Wikitext 2.0](https://www.mediawiki.org/wiki/Parsing/Notes/Wikitext_2.0) - alternative proposal by @ssastry