|Notes, drafts, discussions|
|Examples & mockups|
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 — Done
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 — Done
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 — Done
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 — Done
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 — Done
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): composition — Done
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). — Done
- (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 ι.] — Done
Phase η (eta): generic types
- Allow for generic types, particularly for Z10/List and Z8/Function, and replace Z10/List and Z8/Function. ― task T275941
- Errors can be processed like ZObjects.
- User-defined types work with validators.
- Task P1.9: Pass security review. — task T274682, …
- Launch public test system (Task P1.4). — task T261469
Phase completion condition::
- As a user, I am given proper validation responses when using items about their type. For example the
Headof 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.]
- (Stretch condition) As a user, I can implement the function
curryusing composition. [Must be done by phase κ.]
Phase θ (theta): thawing and freezing
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 objects
- This is a preliminary assignment, moving the documentation tasks here.
- Provide editing for the header (additionally to full raw editing) (that is a pretty big task) — this refers only to the labels, actually.
- Extend editing for Z2K3/label with multilingual text.
- Extend the header with Z2K4/documentation. — task T260954 & task T260956
- 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): cleanup
- 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): launch
- Phase λ (lambda) is meant for launch. If there are pre-launch tasks that prevent that, so be it, obviously.
- Set up a new Wikimedia project.
- 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 to write and run functions directly on the site.
Pre-launch tasks that need to happen but are not phased in yet:
Post-launch tasks of Part 1
- P1.13: Access functions.
- P1.15: Lua-based implementations.
- P1.16: Non-functional interfaces.
- P1.17: REST calls.
- P1.18: Accessing Wikidata and other WMF projects.
- P1.19: Monolingual generation.