This page is a translated version of the page Abstract Wikipedia/Phases and the translation is 9% complete.

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 functions

Phase α (alpha): store, display and edit header  Gotowe 2020-08-25

  1. Set up replicable development environment.zadanie T258893
    •   Gotowe Start extension.zadanie T258893
    •   Gotowe Config works, upload bootstrap content.
    •   Gotowe Reuse existing JSON ContentHandler.zadanie T258893
    •   Gotowe Allow for entering JSON objects through the raw editing interface.zadanie T258893
  2.   Gotowe 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).
    •   Gotowe in PHP.zadanie T258894
    • Well-formedness: key syntax, allowed keys, values are strings or proto-objects or lists of values.zadanie T258894
  3.   Gotowe Every stored top-level ZObject must be a Z2/Persistent object.zadanie T258897
  4.   Gotowe Create Z1/Object, offering one key, Z1K1/type.
  5.   Gotowe Extend hardcoded validator to check Z1K1/type.
  6.   Gotowe Create Z2/Persistent object.zadanie T258897
  7.   Gotowe 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.zadanie T258897
  8.   Gotowe Extend hardcoded validator for Z2/Persistent object so far.zadanie T258897
  9.   Gotowe Provide hardcoded display for Z2/Persistent object (that is the header) (that is a pretty big task).zadanie T258898
  10.   Gotowe Provide generic view for the Z2K2/value object.zadanie T258898
  11.   Gotowe Turn Z2K3/proto-label into the proper Z2K3/label for multilingual text.
  12.   Gotowe Extend viewing for Z2K3/label with multilingual text.

Warunek zakończenia fazy: 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  Gotowe 2021-02-04

  1.   Gotowe Hardcoded validators for Z4/proto-types and Z3/proto-keys.zadanie 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.   Gotowe Create Z4/Type and Z3/Key (Task P1.14).
  3.   Gotowe Search for ZObjects by label.zadanie T260750
  4.   Gotowe Use Z4 type data and key declarations for validating objects.zadanie T260861
  5.   Gotowe Use Z4 type data and key declarations for generic view of objects.zadanie T258901
  6.   Gotowe Use Z4 type data and key declarations for editing and creation of objects.zadanie T258903 & zadanie T258904
  7.   Gotowe Provide hardcoded display and edit interface for Z12 type.zadanie T258900

Warunek zakończenia fazy:

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  Gotowe 2021-04-02

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

Warunek zakończenia fazy: 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  Gotowe 2021-05-11

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

Warunek zakończenia fazy: 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  Gotowe 2021-06-30

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

Warunek zakończenia fazy: 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): composition  Gotowe 2021-08-27

  1.   Gotowe Allow for composition implementations (Task P1.6).zadanie T261468

Warunek zakończenia fazy:

  • As a user, I can implement a function using composition of other functions, rather than writing it myself, e.g. negate(Boolean → Boolean).  Gotowe
  • (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 ι.]  Gotowe

Phase η (eta): generic types  Gotowe 2022-04-08

  1.   Gotowe Allow for generic types, particularly for Z10/List and Z8/Function, and replace Z10/List and Z8/Function.zadanie T275941
  2.   Gotowe Errors can be processed like ZObjects.
  3.   Gotowe User-defined types work with validators.

Warunek zakończenia fazy:

  • Being able to implement curry as a composition on the wiki, but without requiring strict static analysis  Gotowe
  • Making it possible to create the following three 'user-defined' types on the wiki: positive integer, sign, and integer  Gotowe
  • Being able to make a generic wrapper type through composition on the wiki  Gotowe

See also the newsletter posted about this phase.

Phase θ (theta): thawing and freezing  Gotowe 2023-06-19

  1.   Gotowe Freezing and thawing content (Task P1.7).zadanie T275942
  2.   Gotowe Task P1.9: Pass security review.zadanie T274682, …
  3.   Gotowe Launch public test system (Task P1.4).zadanie T261469

Warunek zakończenia fazy:

  • 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.
  • ZObjects are stored using the new canonical form for typed lists, and all parts are still working
  • View and edit function is implemented and tested successfully
  • When several implementations are available, the "best" is chosen. (Fitness determination to potentially be changed later.)
  • We measure the clock time & memory use of each function run, and display it on the execution result & in the implementation/test table.
  • Edits to system-defined ZObjects are restricted to users with the correct rights. Understandable diffs are emitted. Results are cached.
  • Text with fallback, references, strings, lists is implemented and tested successfully
  • A shared understanding with the community of how the team will contribute to Wikifunctions, and why, is documented
  • Designs for viewing and editing multi-lingual documentation on mobile and desktop are approved. UX is instrumented and data collected.

Phase ι (iota): documentation of objects

  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.zadanie T260954 & zadanie T260956
  5. Extend editing to deal with Z2K4/documentation.zadanie T260955

Warunek zakończenia fazy: As a user, I can document a ZObject in any and all supported languages, using a wikitext.

Phase κ (kappa): cleanup

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

Warunek zakończenia fazy: As the Abstract Wikipedia Team, we feel ready for launch, including sign-off from all relevant colleagues.

Phase λ (lambda): launch

  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.

Warunek zakończenia fazy: As a person on the Web, I can visit and use Wikifunctions.org to write and run functions directly on the site.

Unphased tasks

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

Post-launch tasks of Part 1

Zobacz też