Abstrakte Wikipedia/Implementierungsphasen

From Meta, a Wikimedia project coordination wiki
Jump to navigation Jump to search
This page is a translated version of the page Abstract Wikipedia/Phases and the translation is 98% complete.

Die Entwicklung der abstrakten Wikipedia wird in zwei Hauptteilen ablaufen, die eine große Anzahl von Aufgaben enthalten. Im ersten Teil geht es um die Entwicklung des Wikis der Funktionen, im zweiten um abstrakte Inhalte und um die Generierung natürlicher Sprache. Auf dieser Seite gliedern wir den Beginn des ersten Teils weiter in Phasen auf. Die Phasen werden in Phabricator abgebildet und von hier aus verlinkt, ebenso wie Aufgaben und weitere Untergliederungen von Aufgaben.

Der kanonische Ort für Informationen über die Phasen und Aufgaben ist auf Phabricator zu finden. Diese Seite könnte veraltet sein. Schaue den aktuellen Stand auf Phabricator nach.

Wir gehen davon aus, dass es etwa ~10 Phasen geben wird, bevor das Wiki der Funktionen gestartet wird.

Alle folgenden Aufgaben gehören zu Aufgabe P1.2, wenn nicht anders gekennzeichnet.

Projektteil P1: das Wiki von Funktionen

Phase α (alpha): Header speichern, anzeigen und editieren — Yes check.svg Fertig

  1. Replizierbare Entwicklungsumgebung einrichten. — Aufgabe T258893
    • Yes check.svg Fertig Start Erweiterung. — Aufgabe T258893
    • Yes check.svg Fertig Aufgaben konfigurieren, Bootstrap-Inhalt hochladen.
    • Yes check.svg Fertig Bestehende JSON ContentHandler wiederverwenden. — Aufgabe T258893
    • Yes check.svg Fertig Eingabe von JSON-Objekten über die Rohschnittstelle ermöglichen. — Aufgabe T258893
  2. Yes check.svg Fertig Ausbau und Hardcode-Prüfer für JSON-Objekte, um die formale Richtigkeit von ZObjekten zu prüfen. Nichts, was nicht formal richtig ist, wird weiter verarbeitet oder gespeichert. Die formale Richtigkeit sollte wahrscheinlich sowohl im PHP- als auch im JS-Code geprüft werden (sollte sowieso einfach zu schreiben sein).
    • Yes check.svg Fertig in PHP — Aufgabe T258894
    • Formale Richtigkeit: Schlüsselsyntax, erlaubte Schlüssel, Werte sind Strings oder Proto-Objekte oder Listen von Werten. — Aufgabe T258894
  3. Yes check.svg Fertig Jedes gespeicherte ZObjekt der obersten Ebene muss ein Z2/Persistentes Objekt sein. — Aufgabe T258897
  4. Yes check.svg Fertig Z1/Objekt erzeugen, das einen Schlüssel vom Z1K1/Type anbietet.
  5. Yes check.svg Fertig Den hartkodierten Validator um Z1K1/Type-Prüfung erweitern.
  6. Yes check.svg Fertig Z2/Persistentes Objekt erzeugen. — Aufgabe T258897
  7. Yes check.svg Fertig Z2/Persistentes Objekt hat die Schlüssel Z2K1/ID und Z2K2/Wert und Z2K3/Proto-Label, wobei letzteres kontrafaktisch nur eine einzelne Zeichenkette ohne Sprachinformation ist. — Aufgabe T258897
  8. Yes check.svg Fertig Den hartkodierten Validator um Z2/Persistentes Objekt-Prüfung wie bisher erweitern. — Aufgabe T258897
  9. Yes check.svg Fertig Hardkodierte Anzeige für Z2/Persistentes Objekt (das ist der Header) bereitstellen (das ist eine ziemlich heftige Aufgabe). — Aufgabe T258898
  10. Yes check.svg Fertig Eine allgemeine Ansicht für das Z2K2/Wert Objekt bereitstellen. — Aufgabe T258898
  11. Yes check.svg Fertig Das Z2K3/Proto-Label in das eigentliche Z2K3/Label für mehrsprachigen Text umwandeln.
  12. Yes check.svg Fertig Z2K3/Label-Anzeige um mehrsprachigen Text erweitern.

Phasenabschlussbedingung: Als Benutzer [einer Site mit installierter MediaWiki-Erweiterung] kann ich einen String als neues ZObjekt erstellen und speichern, z.B. "Hallo Welt!".

Phase β (beta): Typen und Instanzen erzeugen — Yes check.svg Fertig

  1. Yes check.svg Fertig Hartkodierte Prüfer (Validatoren) für Z4/Proto-Typen and Z3/Proto-Schlüssel. — Aufgabe T258900
    • Ein Z4 hat einen Z4K2/Schlüssel mit einer JSON-Liste mit Z3s.
    • Ein proto key hat eine Z3K1/ID und Z3K2/Type und Z3K3/Label (spiegele die Label-Entwicklung für Z2K3?).
  2. Yes check.svg Fertig Z4/Type und Z3/Schlüssel erzeugen (Aufgabe P1.14).
  3. Yes check.svg Fertig Z-Objekts mittels Label suchen. — Aufgabe T260750
  4. Yes check.svg Fertig für diese Phase. Z4 type data und Schlüssel-Deklarationen zur Objektvalidierung verwenden. — Aufgabe T260861
  5. Yes check.svg Fertig Z4 type data und Schlüssel-Deklarationen zur generischen Darstellung von Objekten verwenden. — Aufgabe T258901
  6. Yes check.svg Fertig Z4 type data und Schlüssel-Deklarationen zur Bearbeitung und Erzeugung von Objekten verwenden. — Aufgabe T258903 & Aufgabe T258904
  7. Yes check.svg Fertig Eine hartkodierte Anzeige- und Editierschnittstelle für Z12 type bereitstellen. — Aufgabe T258900

Phasenabschlussbedingung: Als Benutzer kann ich ein Objekt erstellen und speichern, das einen beliebigen im Wiki definierten Typ implementiert, z.B. die positive ganze Zahl eins

Phase γ (gamma): Funktionen, Implementierungen, Fehler — Yes check.svg Fertig

  1. Yes check.svg Fertig Ein einfaches Fehlerobjekt einführen. — Aufgabe T261464
  2. Yes check.svg Fertig Einfache Funktion einführen. — Aufgabe T258957
  3. Yes check.svg Fertig Einfache Implementierung einführen, vorerst nur Built-ins. — Aufgabe T258958
  4. Yes check.svg Fertig Neue Funktionen und Built-ins entwickeln. — Aufgabe T261474
  5. Yes check.svg Fertig Einen einfachen Funktionsaufruftyp einführen. — Aufgabe T261467
  6. Yes check.svg Fertig Den Typ (Aufgabe P1.10) erproben. — Aufgabe T261465

Phasenabschlussbedingung: Als Benutzer kann ich einen Funktionsaufruf, eine Funktion und einen Tester speichern (nur die Objekte, noch keine eigentliche Auswertung), z.B. if(true, false, true) (gelesen "if true then false else true", d.h. Negation)

Phase δ (delta): Built-ins — Yes check.svg Fertig

  1. Yes check.svg Fertig Evaluierungssystem für Built-ins. — Aufgabe T260321
  2. Yes check.svg Fertig Es Web-Usern ermöglichen, die Evaluierung mittels eines API-Moduls aufzurufen (Aufgabe P1.5). — Aufgabe T261475
  3. Yes check.svg Fertig Spezialseite für den Evaluierungsafruf (Aufgabe P1.11). — Aufgabe T261471

Phasenabschlussbedingung: Als Benutzer kann ich über eine spezielle Seite eine eingebaute Funktion mit bereitgestellten Eingaben auswerten, z.B. um zu prüfen, ob die leere Liste leer ist.

Phase ε (epsilon): Funktionsaufruf — Yes check.svg Fertig

  1. Yes check.svg Fertig JavaScript-Implementierungen (Aufgabe P1.12). — Aufgabe T275944
  2. Yes check.svg Fertig Python-Implementierungen (Aufgabe O6). — Aufgabe T273517
  3. Yes check.svg Fertig Es ermöglichen, Formulare zur Evaluierung einzubinden. — Aufgabe T261472

Phasenabschlussbedingung: Als Benutzer kann ich eine spezielle Seite verwenden, um eine benutzergeschriebene Funktion in einer der unterstützten Sprachen auszuwerten, z. B. eine benutzergeschriebene Funktion in Python aufrufen, um zwei Zahlen zu addieren.

Phase ζ (zeta): Komposition — Yes check.svg Fertig

  1. Yes check.svg Fertig Kompositionsimplementierungen ermöglichen (Aufgabe P1.6). — Aufgabe T261468

Phasenabschlussbedingung:

  • Als Benutzer kann ich eine Funktion durch Komposition anderer Funktionen implementieren, anstatt sie selbst zu schreiben, z. B. negate(Boolean → Boolean). — Yes check.svg Fertig
  • Dehnungsbedingung: Als Benutzer kann ich die Ergebnisse von Testern auf der Seite der jeweiligen Funktionsimplementierung sehen. [Dies muss möglicherweise in eine spätere Phase verschoben werden, da möglicherweise nicht alle Anforderungen erfüllt werden. Muss in Phase ι erfolgen.] — Yes check.svg Fertig

Phase η (eta): generische Typen

  1. Generische Typen ermöglichen, insbesondere für Z10/List und Z8/Function, und Z10/List und Z8/Function ersetzen. ― Aufgabe T275941
  2. Errors can be processed like ZObjects.
  3. User-defined types work with validators.
  4. Aufgabe P1.9: Review der Sicherheit bestehen. — Aufgabe T274682, …
  5. Öffentliches Testsystem freigeben (Aufgabe P1.4). — Aufgabe T261469

Phasenabschlussbedingung::

  • Als Benutzer erhalte ich bei der Verwendung von Elementen korrekte Validierungsrückmeldungen über deren Typ. Zum Beispiel sollte der Kopf einer Liste auf Sicherheit geprüft werden, d.h. if(head([true]), false, true) validiert, aber if(head(["text"]), false, true) nicht. [Diese Bedingung könnte vereinfacht werden.]
  • (Dehnungsbedingung) Als Anwender kann ich die Funktion curry mittels Komposition implementieren. (Muss in Phase κ durchgeführt werden).

Phase θ (theta): Auftauen und Einfrieren

  1. Inhalte einfrieren und auftauen (Aufgabe P1.7). ― Aufgabe T275942

Phasenabschlussbedingung:

  • Als Sysop kann ich jedes vom Benutzer geschriebene Objekt einfrieren und wieder freigeben (ähnlich oder vielleicht gleich wie das Schutzsystem von MediaWiki); alle vom System bereitgestellten Objekte werden dauerhaft eingefroren.
  • Als Benutzer, der eine eingefrorene Seite bearbeitet, kann ich die Beschriftung ändern, aber nicht die Implementierung, während auf einer nicht eingefrorenen Seite beides möglich ist.

Phase ι (iota): Dokumentation von Objekten

  1. Dies ist eine vorläufige Zuordnung, die die Dokumentationsaufgaben hierher verschiebt.
  2. Editieren der Kopfzeile (zusätzlich zur vollständigen Rohbearbeitung) bereitstellen (das ist eine ziemlich große Aufgabe) - das bezieht sich eigentlich nur auf die Beschriftungen.
  3. Die Editierung für Z2K3/Label um mehrsprachigen Text erweitern.
  4. Die Kopfzeile um Z2K4/Documentation erweitern. — Aufgabe T260954 & Aufgabe T260956
  5. Die Editierung um die Bearbeitung von Z2K4/Documentation erweitern. — Aufgabe T260955

Phasenabschlussbedingung: Als Benutzer kann ich ein ZObjekt in allen unterstützten Sprachen dokumentieren, indem ich einen Wikitext verwende.

Phase κ (kappa): Aufräumen

  1. Bereinigung und Aufräumen von Aufgaben, um alle Pre-Launch Aufgaben abzuschließen.

Phasenabschlussbedingung: Als Abstract-Wikipedia-Team fühlen wir uns bereit für den Start, einschließlich der Freigabe durch alle relevanten Kollegen.

Phase λ (lambda): Freigeben

  1. Phase λ (Lambda) ist für die Freigabe gedacht. Wenn es Pre-Launch-Aufgaben gibt, die das verhindern, dann ist das natürlich so.
  2. Ein neues Wikimedia-Projekt aufsetzen.
  3. Einige der Wiki-Seiten über das Projekt von Meta nach Wikifunctions verschieben.

Phasenabschlussbedingung: Als Person im Web kann ich Wikifunctions.org besuchen und nutzen um Funktionen direkt auf der Seite zu schreiben und auszuführen.

Aufgaben außerhalb der Phasen

Aufgaben vor der Freigabe, die erledigt werden müssen, aber noch nicht eingephast sind:

Aufgaben nach Freigabe von Projektteil 1

Siehe auch