Die Parsermigration ist ein Prozess, der die Wikiprojekte um 2017/18 erreicht und wohl einige Jahre beschäftigen wird.
Auslösend ist der Umstand, dass die Interpretation undefinierter, fehlerhafter oder uneindeutiger Wikitexte durch Generationswechsel der auf den Wiki-Servern wirkenden Softwareprodukte zu veränderten Darstellungen führen kann. Korrekte Wikisyntax ist grundsätzlich nicht betroffen.
Geschichtlicher Abriss
Bearbeiten- Um 2003 entstand der erste Parser in der Programmiersprache PHP („PHP-Parser“ genannt).
- Er wandelt Wikitext in HTML.
- Auf dem Server läuft anschließend „Tidy“ und sorgt für einen einheitlichen und den wichtigsten Strukturanforderungen von HTML genügenden Dokumenteninhalt, der später auf unterschiedlichsten Geräten den Lesern präsentiert werden kann.
- Ab 2010 wandelt sich das Umfeld; es kommen Mobilgeräte auf, HTML5 eröffnet neue Techniken, es gibt neue Ansprüche wie den VisualEditor.
- Die Softwarekonzeption der ersten Jahre stößt zunehmend an Grenzen und kann die erweiterten Wünsche nicht mehr befriedigen.
- Parsoid wird entwickelt. Dies wurde zunächst in der Programmiersprache JavaScript geschrieben und kann damit anders als PHP, das nur auf dem Wiki-Server erwartet werden kann, im Browser des Lesers ausgeführt werden. Damit würde es möglich, ohne zwischenzeitlichen Serverkontakt zumindest kleinere Textpassagen direkt im Browser von Wikitext in HTML umzuwandeln und anzuzeigen.
- Allerdings war, nachdem zunächst der Parsoid in JavaScript fertiggestellt worden war, in einem längeren Diskussionsprozess 2016–2018 entschieden, dies wieder aufzugeben und Parsoid noch einmal zu entwickeln; dieses Mal wieder in der Programmiersprache PHP, was nur auf dem Server funktioniert. Damit gibt es Ende 2019 auch ein PHP-Parsoid.
- Sobald Parsoid voll ausgereift ist, wird der Parallelbetrieb mit dem „PHP-Parser“ eingestellt werden und dieser nicht mehr weiter gepflegt werden; alle Aufgaben und Weiterentwicklungen werden dann nur noch mittels Parsoid umgesetzt. Das scheint Ende 2019 oder Anfang 2020 produktionsreif zu sein.
Fehlerbehandlung
Bearbeiten- Die ursprüngliche Software hatte keinerlei Fehlermeldungen bei fehlerhafter Wikisyntax ausgegeben.
- Mysteriöse Konstrukte führten zu einem zufälligen Ergebnis oder wurden völlig ignoriert.
- Wenn die auf diese Weise produzierte Seite den Erwartungen der Autoren entsprach, beließen sie es dabei.
- Andere Interpretationen von mehrdeutigen Konstrukten sind jedoch genauso möglich, und ergaben als Seiteneffekt im Zusammenwirken der verschiedensten Softwareprodukte bei geringfügigen Änderungen, dass undefinierte Syntax nun eine völlig andere Deutung erhielt, Elemente plötzlich sichtbar wurden, oder andere Teile des Textes jetzt verschwanden. Da es niemals eine Definition gegeben hatte und geben konnte, nach welchen Regeln unspezifizierte Syntaxkonstrukte darzustellen sind, konnte auch kein Programmierer derartige Auswirkungen berücksichtigen.
- Die „Erweiterungen“ (Extensionen), etwa für Einzelnachweise, begannen damit, in ihrem Bereich Formalitäten zu prüfen und Fehlermeldungen anzuzeigen.
- Die „Kategorie:Wikipedia:Syntaxfehler durch MediaWiki-Komponente erkannt“ listet derartig beanstandete Seiten.
- Einige wenige Syntaxfehler aus dem Kernbereich der Wikisyntax werden dort mittlerweile auch registriert; jedoch nicht in der Seitendarstellung hervorgehoben und gemeldet.
- Parsoid stellt während seiner Tätigkeit beim Speichern einer neuen Seitenversion Fehler fest.
- 2017 wurde begonnen, einige der Parsoid-Fehlermeldungen in einer Datenbank zu sammeln und den Wikiprojekten zugänglich zu machen: Validierung.
Tidy-Ablösung
BearbeitenIn den ersten Jahren wurde der expandierte Wikitext mit dem Werkzeug HTML Tidy nachbearbeitet.
- Dieses hatte bei fehlerhaften Verschachtelungen nachgeholfen und versucht, eine geeignete Reihenfolge öffnender und schließender Tags zu erraten.
- Das ist zwingend notwendig, da die von Autoren verwendete Wikisyntax, die eingestreuten direkten HTML-Elemente und die von den Wiki-Erweiterungen generierten HTML-Strukturen zusammen ein heilloses Durcheinander liefern, das für HTML ungültig wäre und deshalb von jedem Browser bei den Lesern anders dargestellt werden würde.
- Diese Software ist in die Jahre gekommen und arbeitet unter heutigen Bedingungen und für HTML5 nicht mehr zuverlässig.
- HTML Tidy geht auf HTML4 (1998) zurück. Mit dem seit 2010 allmählich umgesetzten HTML5-Standard kommt die bislang bei MediaWiki eingesetzte jahrzehntealte Tidy-Version nicht mehr zurecht; Upgrades hingegen sind viel zu anspruchsvoll betreffend der Syntaxqualität vorhandener Wiki-Seiten und würden teilweise zu spürbar unterschiedlichen Darstellungen bei den Lesern führen.
- 2017/18 werden die Wikiprojekte nach und nach auf eine an Wiki-Seiten angepasste Version von RemexHTML umgestellt werden.
- Das ist immer dort möglich, wo für die wesentlichen vom Projekt präsentierten Seiten einmal eine bereinigte Wikisyntax festgestellt wurde.
- Siehe dazu den ersten Abschnitt („Hohe Priorität“) auf Spezial:LintErrors.
- Für die deutschsprachige Wikipedia ist die Umstellung Anfang Dezember 2017 erfolgt.
- Mehr bei mw:Parsing/Replacing Tidy (englisch) und FAQ.
Migrationswerkzeug
BearbeitenDas „Migrationswerkzeug“ ist ein Modus der Quelltextbearbeitung, bei dem in der jeweiligen Seitenvorschau nicht wie üblich eine Seitendarstellung erscheint, sondern in zwei Spalten nebeneinander angezeigt wird, wie bisherige und zukünftige Aufbereitung den Lesern präsentiert werden.
- Nicht jedes problematische Syntaxkonstrukt muss auch zu wahrnehmbar veränderter Darstellung führen.
- Der Zwei-Spalten-Modus bleibt auch über die zwischenzeitliche Anzeige der Änderungen erhalten und wirkt weiter bis auf die nachfolgenden Vorschau-Ansichten.
Das Migrationswerkzeug wurde Ende 2018 bis auf Weiteres in allen Projekten abgeschaltet; wurde Ende 2023 wieder reaktiviert. Für die Aktivierung gibt es zwei Möglichkeiten:
- Start der Quelltextbearbeitung statt der üblichen, mit dem URL-Parameter
action=edit
ausgestatteten Verlinkung mittelsaction=parsermigration-edit
.
Parser-Migrationswerkzeug aktivieren
Hinweis für JavaScript-Programmierer:
- An Stelle von
edit
undsubmit
inwgAction
trat"parsermigration-edit"
.
Weitere Informationen
Bearbeiten- mw:Parsoid (englisch)
- mw:Parsing/Replacing Tidy (englisch)
- FAQ (englisch)
- Phabricator – Quellcode: EPMI/*
- Wikipedia:WikiProjekt Syntaxkorrektur