Abstrakte Wikipedia/Implementierungsphasen
Diese page wird aus historischen Gründen behalten. Vereinbarungen auf dieser Seite können überholt sein. Wenn du die Diskussion wieder in Gang bringen möchtest, kannst du die Diskussionsseite nutzen oder eine Diskussion im Community-Forum starten. |
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: Wiki der Funktionen
Phase α (alpha): Header speichern, anzeigen und editieren — Fertig 2020-08-25
- Replizierbare Entwicklungsumgebung einrichten. — Aufgabe T258893
- Fertig Start Erweiterung. — Aufgabe T258893
- Fertig Aufgaben konfigurieren, Bootstrap-Inhalt hochladen.
- Fertig Bestehende JSON ContentHandler wiederverwenden. — Aufgabe T258893
- Fertig Eingabe von JSON-Objekten über die Rohschnittstelle ermöglichen. — Aufgabe T258893
- 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).
- Fertig in PHP — Aufgabe T258894
- Formale Richtigkeit: Schlüsselsyntax, erlaubte Schlüssel, Werte sind Strings oder Proto-Objekte oder Listen von Werten. — Aufgabe T258894
- Fertig Jedes gespeicherte ZObjekt der obersten Ebene muss ein Z2/Persistentes Objekt sein. — Aufgabe T258897
- Fertig Z1/Objekt erzeugen, das einen Schlüssel vom Z1K1/Type anbietet.
- Fertig Den hartkodierten Validator um Z1K1/Type-Prüfung erweitern.
- Fertig Z2/Persistentes Objekt erzeugen. — Aufgabe T258897
- 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
- Fertig Den hartkodierten Validator um Z2/Persistentes Objekt-Prüfung wie bisher erweitern. — Aufgabe T258897
- Fertig Hardkodierte Anzeige für Z2/Persistentes Objekt (das ist der Header) bereitstellen (das ist eine ziemlich heftige Aufgabe). — Aufgabe T258898
- Fertig Eine allgemeine Ansicht für das Z2K2/Wert Objekt bereitstellen. — Aufgabe T258898
- Fertig Das Z2K3/Proto-Label in das eigentliche Z2K3/Label für mehrsprachigen Text umwandeln.
- Fertig Z2K3/Label-Anzeige um mehrsprachigen Text erweitern.
Phasenabschlussbedingung: Als Benutzer [einer Seite mit installierter MediaWiki-Erweiterung] kann ich einen String als neues ZObjekt erstellen und speichern, z.B. "Hallo Welt!".
Phase β (beta): Typen und Instanzen erzeugen — Fertig 2021-02-04
- Fertig Hartkodierte Prüfer (Validatoren) für Z4/Proto-Typen und Z3/Proto-Schlüssel. — Aufgabe T258900
- Ein Z4 hat einen Z4K2/Schlüssel mit einer JSON-Liste mit Z3s.
- Ein Proto-Schlüssel hat eine Z3K1/ID und Z3K2/Type und Z3K3/Label (spiegele die Entwicklung der Bezeichnung für Z2K3?).
- Fertig Z4/Typ und Z3/Schlüssel erzeugen (Aufgabe P1.14).
- Fertig Z-Objekte mittels Bezeichnung suchen. — Aufgabe T260750
- Fertig für diese Phase. Z4-Typdaten und Schlüssel-Deklarationen zur Objektvalidierung verwenden. — Aufgabe T260861
- Fertig Z4-Typdaten und Schlüssel-Deklarationen zur generischen Darstellung von Objekten verwenden. — Aufgabe T258901
- Fertig Z4-Typdaten und Schlüssel-Deklarationen zur Bearbeitung und Erzeugung von Objekten verwenden. — Aufgabe T258903 & Aufgabe T258904
- Fertig Eine hartkodierte Anzeige- und Editierschnittstelle für Typ Z12 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 — Fertig 2021-04-02
- Fertig Ein einfaches Fehlerobjekt einführen. — Aufgabe T261464
- Fertig Einfache Funktion einführen. — Aufgabe T258957
- Fertig Einfache Implementierung einführen, vorerst nur Built-ins. — Aufgabe T258958
- Fertig Neue Funktionen und Built-ins entwickeln. — Aufgabe T261474
- Fertig Einen einfachen Funktionsaufruftyp einführen. — Aufgabe T261467
- 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 — Fertig 2021-05-11
- Fertig Evaluierungssystem für Built-ins. — Aufgabe T260321
- Fertig Es Web-Usern ermöglichen, die Evaluierung mittels eines API-Moduls aufzurufen (Aufgabe P1.5). — Aufgabe T261475
- 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 — Fertig 2021-06-30
- Fertig JavaScript-Implementierungen (Aufgabe P1.12). — Aufgabe T275944
- Fertig Python-Implementierungen (Aufgabe O6). — Aufgabe T273517
- 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 — Fertig 2021-08-27
- 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)
. — 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.] — Fertig
Phase η (eta): generische Typen — Fertig 2022-04-08
- Fertig Generische Typen ermöglichen, insbesondere für Z10/Liste und Z8/Funktion, und Z10/Liste und Z8/Funktion ersetzen. ― Aufgabe T275941
- Fertig Fehler können wie ZObjekte verarbeitet werden.
- Fertig Benutzerdefinierte Typen arbeiten mit Validatoren.
Phasenabschlussbedingung:
- In der Lage sein,
curry
als ein Komposition im Wiki zu implementieren, ohne jedoch eine strenge statische Analyse zu erfordern. — Fertig - Ermöglicht das Erstellen der folgenden drei „benutzerdefinierten‟ Typen im Wiki:
positive ganze Zahl
,numerisches Zeichen
undganze Zahl
. — Fertig - In der Lage sein, einen generischen Wrapper-Typ durch Komposition im Wiki zu erstellen. — Fertig
Siehe auch den Newsletter, der zu dieser Phase veröffentlicht wurde.
Phase θ (theta): Auftauen und Einfrieren — Fertig 2023-06-19
- Fertig Inhalte einfrieren und auftauen (Aufgabe P1.7). ― Aufgabe T275942
- Fertig Aufgabe P1.9: Review der Sicherheit bestehen. — Aufgabe T274682, …
- Fertig Öffentliches Testsystem freigeben (Aufgabe P1.4). — Aufgabe T261469
Phasenabschlussbedingung:
- Als Administrator 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.
- ZObjekte werden in der neuen kanonischen Form für Typenlisten gespeichert und alle Teile funktionieren weiterhin
- Das Betrachten und Bearbeiten von Funktionen ist implementiert und erfolgreich getestet
- Wenn mehrere Implementierungen verfügbar sind, wird die "beste" ausgewählt. (Eignungsbestimmung, die später möglicherweise geändert wird.)
- Wir messen die Dauer & Speichernutzung für jede Funktionsausführung und zeigen sie beim Ergebnis der Ausführung & in der Tabelle der Implementierungen/Tests an.
- Bearbeitungen an systemdefinierten ZObjekten sind auf Benutzer mit den zugehörigen Rechten beschränkt. Verständliche Versionsunterschiede werden angezeigt. Ergebnisse werden gespeichert.
- Text mit Rückfall, Referenzen, Zeichenketten und Listen ist implementiert und erfolgreich getestet
- Ein gemeinsames Verständnis mit der Gemeinschaft, wie und warum das Team zu Wikifunctions beiträgt, ist dokumentiert
- Designs für das Betrachten und Bearbeiten mehrsprachiger Dokumentation in der mobilen Ansicht und auf dem Desktop sind genehmigt. UX ist instrumentiert und Daten gesammelt.
Phase ι (iota): Dokumentation von Objekten
- Dies ist eine vorläufige Zuordnung, die die Dokumentationsaufgaben hierher verschiebt.
- Editieren der Kopfzeile (zusätzlich zur vollständigen Rohbearbeitung) bereitstellen (das ist eine ziemlich große Aufgabe) - das bezieht sich eigentlich nur auf die Bezeichnungen.
- Die Editierung für Z2K3/Label um mehrsprachigen Text erweitern.
- Die Kopfzeile um Z2K4/Documentation erweitern. — Aufgabe T260954 & Aufgabe T260956
- 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
- 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
- Phase λ (Lambda) ist für die Freigabe gedacht. Wenn es Pre-Launch-Aufgaben gibt, die das verhindern, dann ist das natürlich so.
- Ein neues Wikimedia-Projekt aufsetzen.
- 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: