![]() | This proposal is part of "A Dozen Visions for Wikitext". Shortcuts: Versioning - Grunge - Markdown - HTML-only wikis - Extension tag fragments - Syntax uniformity - Colon replacement - Backticks - Syntax for Discussions - #media - #lang - #balance - Long arguments - Variable-length/structured arguments - Annotations - Visual Templates - Page Description Language - Native Script Editing - One Wiki |
Before there can be a wikitext 2.0, or 1.1, or 0.9 or whatever version is “next”, we need a way to distinguish old from new stuff. The alternative is what we call a “flag day”, where we wake up one morning and say “today wikitext behaves like this, not that” and change the whole world at once. We’ve managed to do that a couple of times already, but it is slow and hard. I think–and you can disagree with me on this—that if we want wikitext to move more quickly, a good first step would be a way to mark some content as “new” so we can try new things out without breaking old things.
There are a number of obvious alternatives here. One which has been used in a lot of programming languages is just to put a flag at the top of an article page indicating either a version {{#version:2}}
, a particular language {{#markup:wikitext-2.0}}
, or something more granular to enable specific new features, like {{#usefeature:backticks}}
. Articles can transclude other articles, and we need to decide whether that feature flag or language version necessarily applies to transcluded content as well, or not.
Another option would be to use an extra bit of metadata, a “slot” in the Multi-Content Revisions model, to record a version identifier or set of enabled features.
Each article page also has a “content model”. This is typically used to distinguish wikitext pages from, say, Scribunto modules, or JavaScript gadgets, or TemplateStyles CSS. But we could also use it to mark certain articles as “wikitext 2.0” without using inline markup or an MCR slot.
Either way I’d expect it would look like this in VisualEditor: a metadata dialog that would let you either select the wikitext version or toggle specific feature flags, which would be recorded either in the wikitext or in the MCR slot.
It’s worth noting that the UX for changing a page’s content model already exists. You could simply select “wikitext2” in the standard dialog.
But currently you need special permissions in order to change a page’s content model. I think setting a feature flag for a page is something an ordinary editor should be able to do for a page they are writing.
Next section: Grunge