Abstract Wikipedia/Phases

Other languages:
Bahasa Indonesia • ‎Deutsch • ‎English • ‎dansk • ‎español • ‎français • ‎italiano • ‎polski • ‎svenska • ‎українська • ‎ไทย • ‎한국어

Development of Abstract Wikipedia will proceed in two major parts, each consisting of a large number of tasks. Part P1 is about developing the wiki of functions, and Part P2 is about abstract content and natural language generation. On this page, we further break down the tasks of Part P1 into phases that each cover some of the work under a given task. The below contains links to Phabricator, where tasks and phases are broken down even further.

This wiki page might be stale. The canonical place for information about the tasks is Phabricator. Find our current state on Phabricator.

We expect to take about ten phases before launching the wiki of functions.

All the below phases cover work under Task P1.2: Initial development, unless marked otherwise.

Part P1: Wiki of functionsEdit

Phase α (alpha): store, display and edit header —   DoneEdit

  1. Set up replicable development environment. — task T258893
    •   Done Start extension. — task T258893
    •   Done Config works, upload bootstrap content.
    •   Done Reuse existing JSON ContentHandler. — task T258893
    •   Done Allow for entering JSON objects through the raw editing interface. — task T258893
  2.   Done Extend and hardcode checker for JSON objects to check for ZObject well-formedness. Nothing that is not well-formed will be further handled or stored. Well-formedness should probably be checked both in the PHP and the JS code (should be easy to write anyway).
    •   Done in PHP. — task T258894
    • Well-formedness: key syntax, allowed keys, values are strings or proto-objects or lists of values. — task T258894
  3.   Done Every stored top-level ZObject must be a Z2/Persistent object. — task T258897
  4.   Done Create Z1/Object, offering one key, Z1K1/type.
  5.   Done Extend hardcoded validator to check Z1K1/type.
  6.   Done Create Z2/Persistent object. — task T258897
  7.   Done Z2/Persistent object has the keys Z2K1/ID and Z2K2/value, and Z2K3/Proto-Label, the latter being counterfactually just a single string with no language information. — task T258897
  8.   Done Extend hardcoded validator for Z2/Persistent object so far. — task T258897
  9.   Done Provide hardcoded display for Z2/Persistent object (that is the header) (that is a pretty big task). — task T258898
  10.   Done Provide generic view for the Z2K2/value object. — task T258898
  11.   Done Turn Z2K3/proto-label into the proper Z2K3/label for multilingual text.
  12.   Done Extend viewing for Z2K3/label with multilingual text.

Phase completion condition: As a user [of a site with the MediaWiki extension installed], I can create and store a string as a new ZObject, e.g. "Hello world!".

Phase β (beta): create types and instances —   DoneEdit

  1.   Done Hardcoded validators for Z4/proto-types and Z3/proto-keys. — task T258900
    • A Z4 has a Z4K2/keys with a json List of Z3s.
    • A proto-key has a Z3K1/ID and Z3K2/type and Z3K3/label (mirror the development of label for Z2K3?).
  2.   Done Create Z4/Type and Z3/Key (Task P1.14).
  3.   Done Search for ZObjects by label. — task T260750
  4.   Done for this phase Use Z4 type data and key declarations for validating objects. — task T260861
  5.   Done Use Z4 type data and key declarations for generic view of objects. — task T258901
  6.   Done Use Z4 type data and key declarations for editing and creation of objects. — task T258903 & task T258904
  7.   Done Provide hardcoded display and edit interface for Z12 type. — task T258900

Phase completion condition: As a user, I can create and store an object implementing any on-wiki defined type, e.g. the positive integer one

Phase γ (gamma): functions, implementations, errors —   DoneEdit

  1.   Done Introduce a simple error object. — task T261464
  2.   Done Introduce simple function. — task T258957
  3.   Done Introduce simple implementation, for now only built-ins. — task T258958
  4.   Done Create a few functions and built-ins. — task T261474
  5.   Done Introduce a simple function call type. — task T261467
  6.   Done Tester type (Task P1.10). — task T261465

Phase completion condition: As a user, I can store a function call, a function, and a tester (only the objects, no actual evaluation yet), e.g. if(true, false, true) (read "if true then false else true", i.e. negation)

Phase δ (delta): built ins —   DoneEdit

  1.   Done Evaluation system for built-ins. — task T260321
  2.   Done Enable web users to call evaluation through an API module (Task P1.5). — task T261475
  3.   Done Special page for calling evaluation (Task P1.11). — task T261471

Phase completion condition: As a user, I can use a special page to evaluate a built-in function with supplied inputs, e.g. to check whether the empty list is empty.

Phase ε (epsilon): native function calls —   DoneEdit

  1.   Done JavaScript implementations (Task P1.12). — task T275944
  2.   Done Python implementations (Task O6). — task T273517
  3.   Done Allow forms to be included for evaluation. — task T261472

Phase completion condition: As a user, I can use a special page to evaluate a user-written function in one of the supported languages, e.g. call a user-written function in Python to add up two numbers.

Phase ζ (zeta): compositionEdit

  1. Allow for composition implementations (Task P1.6). — task T261468
  2. Task P1.9: Pass security review. — task T261473, …
  3. Launch public test system (Task P1.4). — task T261469

Phase completion condition:

  • As a user, I can implement a function using composition of other functions, rather than writing it myself, e.g. negate(Boolean → Boolean).
  • (Stretch condition) As a user, I can implement the function curry using composition. [Must be done by phase κ.]
  • (Stretch condition) As a user, I can see the results of testers on the relevant function implementation's page. [This might need to be moved to a later phase as not all requirements may be met this point. Must be done by phase ι.]

Phase η (eta): generic typesEdit

  1. Allow for generic types, particularly for Z10/List and Z8/Function, and replace Z10/List and Z8/Function. ― task T275941

Phase completion condition: As a user, I am given proper validation responses when using items about their type. For example the Head of a list should be checked for safety, i.e. if(head([true]), false, true) validates but if(head(["text"]), false, true) does not. [This condition might be simplified.]

Phase θ (theta): thawing and freezingEdit

  1. Freezing and thawing content (Task P1.7). ― task T275942

Phase completion condition:

  • As a sysop, I can freeze and unfreeze any user-written object (akin to, or maybe the same as, MediaWiki's protection system); all system-supplied objects are permanently frozen.
  • As a user editing a frozen page, I can change the label, but not the implementation, whereas on an unfrozen page both are possible.

Phase ι (iota): documentation of objectsEdit

  1. This is a preliminary assignment, moving the documentation tasks here.
  2. Provide editing for the header (additionally to full raw editing) (that is a pretty big task) — this refers only to the labels, actually.
  3. Extend editing for Z2K3/label with multilingual text.
  4. Extend the header with Z2K4/documentation. — task T260954 & task T260956
  5. Extend editing to deal with Z2K4/documentation. — task T260955

Phase completion condition: As a user, I can document a ZObject in any and all supported languages, using a wikitext.

Phase κ (kappa): cleanupEdit

  1. Tightening up and clean up tasks, to close all pre-launch tasks.

Phase completion condition: As the Abstract Wikipedia Team, we feel ready for launch, including sign-off from all relevant colleagues.

Phase λ (lambda): launchEdit

  1. Phase λ (lambda) is meant for launch. If there are pre-launch tasks that prevent that, so be it, obviously.
  2. Set up a new Wikimedia project.
  3. Move some of the wiki pages about the project from Meta to Wikifunctions.

Phase completion condition: As a person on the Web, I can visit and use Wikifunctions.org.

Unphased tasksEdit

Pre-launch tasks that need to happen but are not phased in yet:

Post-launch tasks of Part 1Edit

See alsoEdit