Abstrakte Wikipedia/Implementierungsphasen

From Meta, a Wikimedia project coordination wiki
This is an archived version of this page, as edited by Verdy p (talk | contribs) at 14:21, 10 April 2021. It may differ significantly from the current version.

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.

Untergliederung Projektteil 1: Wiki von Funktionen

Phase α (alpha): Header speichern, anzeigen und editieren — Fertig

  1. 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
  2. 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
  3. Fertig Jedes gespeicherte ZObjekt der obersten Ebene muss ein Z2/Persistentes Objekt sein. — Aufgabe T258897
  4. Fertig Z1/Object erzeugen, das einen Schlüssel vom Z1K1/type anbietet.
  5. Fertig Den hartkodierten Validator um Z1K1/Type-Prüfung erweitern.
  6. Fertig Z2/Persistentes Objekt erzeugen. — Aufgabe T258897
  7. Fertig Z2/Persistent object hat die Schlüssel Z2K1/ID und Z2K2/value und Z2K3/Proto-Label, wobei letzteres kontrafaktisch nur eine einzelne Zeichenkette ohne Sprachinformation ist. — Aufgabe T258897
  8. Fertig Den hartkodierten Validator um Z2/Persistent object-Prüfung wie bisher erweitern. — Aufgabe T258897
  9. Fertig Hardkodierte Anzeige für Z2/Persistent object (das ist der Header) bereitstellen (das ist eine ziemlich heftige Aufgabe). — Aufgabe T258898
  10. Fertig Eine allgemeine Ansicht für das Z2K2/value object bereitstellen. — Aufgabe T258898
  11. Fertig Das Z2K3/Proto Label in das eigentliche Z2K3/Label für mehrsprachigen Text umwandeln.
  12. Fertig Z2K3/Label-Anzeige um mehrsprachigen Text erweitern.

Phasenabschlussbedingung: ein Zeichenfolgenobjekt kann gespeichert werden, z.B. „Hallo Welt!‟

Phase β (beta): Typen und Instanzen erzeugen — Fertig

  1. Fertig Hartkodierte Prüfer (Validatoren) für Z4/proto types and Z3/proto keys. — Aufgabe T258900
    • Ein Z4 hat einen Z4K2/keys 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. Fertig Z4/Type und Z3/Key erzeugen (Aufgabe P1.14).
  3. Fertig ZObjects mittels Label suchen. — Aufgabe T260750
  4. Fertig für diese Phase. Z4 type data und Schlüssel-Deklarationen zur Objektvalidierung verwenden. — Aufgabe T260861
  5. Fertig Z4 type data und Schlüssel-Deklarationen zur generischen Darstellung von Objekten verwenden. — Aufgabe T258901
  6. Fertig Z4 type data und Schlüssel-Deklarationen zur Bearbeitung und Erzeugung von Objekten verwenden. — Aufgabe T258903 & Aufgabe T258904
  7. Fertig Eine hartkodierte Anzeige- und Editierschnittstelle für Z12 type bereitstellen. — Aufgabe T258900

Phasenabschlussbedingung: ein Objekt in einem im Wiki definierten Typ kann gespeichert werden, z. B. die positive Zahl eins.

Phase γ (gamma): Funktionen, Implementierungen, Fehler — Fertig

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

Phasenabschlussbedingung: wir können einen Funktionsaufruf, eine Funktion und einen Test speichern (nur die Objekte, noch keine tatsächliche Auswertung), z.B. wenn(wahr, falsch, wahr) [lesen „wenn wahr, dann falsch, sonst wahr‟, d.h. die Negation.]

Phase δ (delta): Built-ins

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

Phasenabschlussbedingung: Benutzer können die drei Argumente für wenn auf der Wikipage eingeben und das Ergebnis auswerten.

Phase ε (epsilon): Funktionsaufruf

  1. JavaScript-Implementierungen (Aufgabe P1.12). — Aufgabe T275944
  2. Python-Implementierungen (Aufgabe O6). — Aufgabe T273517
  3. Es ermöglichen, Formulare zur Evaluierung einzubinden. — Aufgabe T261472
  4. Aufgabe P1.9: Review der Sicherheit bestehen. — Aufgabe T261473, …

Öffentliches Testsystem freigeben: Kann eine Funktion aus dem Wiki über ein Formular aufrufen, z. Haben Sie auf der Seite für die Add-Funktion ein Formular, um zwei Zahlen zu addieren. [Dehnungsbedingung: Tests sind angeschlossen und zeigen Ergebnisse auf den Funktionsseiten. Dies muss möglicherweise in eine spätere Phase verschoben werden, da möglicherweise nicht alle Anforderungen erfüllt werden. Muss von Phase ι erfolgen.]

Phase ζ (zeta): Komposition

  1. Kompositionsimplementierungen ermöglichen (Aufgabe P1.6). — Aufgabe T261468
  2. Öffentliches Testsystem freigeben (Aufgabe P1.4). — Aufgabe T261469

Phasenabschlussbedingung: Implementieren Sie eine Funktion negieren(BoolescherWert → BoolescherWert) unter Verwendung der Komposition. [Dehnungsbedingung: implementieren Sie eine Funktion curry. Muss in Phase κ ausgeführt werden.]

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

Phasenabschlussbedingung: der Kopf in einer Liste verwendet Generika für die ordnungsgemäße Validierung, d.h. wenn(Kopf([wahr]), falsch, wahr) validiert aber wenn(Kopf(["Text"]), falsch, wahr) jedoch nicht. [Diese Bedingung könnte vereinfacht werden.]

Phase θ (theta): Auftauen und Einfrieren

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

Phasenabschlussbedingung: auf einer eingefrorenen Seite kann ein Benutzer weiterhin die Bezeichnung ändern, nicht jedoch die Implementierung, während auf einer aufgetauten Seite beide möglich sind.

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: Wikitext kann zur Dokumentation eines ZObjects in verschiedenen Sprachen verwendet werden.

Phase κ (kappa): Aufräumen

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

Phasenabschlussbedingung: Startbereit.

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: Standort gestartet.

Aufgaben außerhalb der Phasen

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

  1. P1.1: Projektinitialisierung.
  2. P1.3: Testinfrastruktur einrichten.
  3. P1.8: Beta Wikifunctions freigeben.

Aufgaben nach Freigabe von Projektteil 1

Siehe auch