The on-wiki version of this edition of the newsletter is here:
https://meta.wikimedia.org/wiki/Abstract_Wikipedia/Updates/2021-02-04
When we started the development effort towards the Wikifunctions site, we
subdivided the work leading up to the launch of Wikifunctions into eleven
phases <https://meta.wikimedia.org/wiki/Abstract_Wikipedia/Phases>, named
after the letters of the Greek alphabet.
This week we completed the second phase, Phase β
<https://meta.wikimedia.org/wiki/Abstract_Wikipedia/Phases#Phase_%CE%B2_(beta):_create_types_and_instances_Done>
.
With Phase α
<https://meta.wikimedia.org/wiki/Abstract_Wikipedia/Phases#Phase_%CE%B1_(alpha):_store,_display_and_edit_header_Done>
completed, it became possible to create instances of the system-provided
Types in the wiki. This meant that one could go to the wiki and create, for
example, a string, such as this Hello World!
<https://notwikilambda.toolforge.org/wiki/ZObject:Z101> String in Lucas
<https://meta.wikimedia.org/wiki/User:Lucas_Werkmeister>’s notwikilambda
demonstration <https://notwikilambda.toolforge.org/wiki/Main_Page> system.
The goal of Phase β
<https://meta.wikimedia.org/wiki/Abstract_Wikipedia/Phases#Phase_%CE%B2_(beta):_create_types_and_instances_Done>
was to allow the creation of Types on-wiki, and to allow the creation of
instances of these Types. The assumption is that we will provide just a
very small set of core Types, and that almost all of the Types will be
defined by the community on wiki. We have discussed Types before in Newsletters
#7 <https://meta.wikimedia.org/wiki/Abstract_Wikipedia/Updates/2020-11-10>
and #15
<https://meta.wikimedia.org/wiki/Abstract_Wikipedia/Updates/2021-01-21>. As
we discussed there, a good Type system can be very helpful in maintaining
and working with the catalogue of functions. It can help with choosing the
right function, with navigating and exploring the catalogue, and with
finding errors in the function implementations.
In order to demonstrate that we indeed completed Phase β, we created a Type
for Positive Integers <https://notwikilambda.toolforge.org/wiki/ZObject:Z70>
on the notwikilambda test site, and a literal instance of that Type
for the number
one <https://notwikilambda.toolforge.org/wiki/ZObject:Z701> (To make it
clear, we do not expect to have a page for every natural number, in fact it
might well be that the community decides to restrict their creation as
persistent objects. They will be usually created and passed through as
literals that are created on the fly. If you are interested in a catalogue
of natural numbers, I can refer you to the Linked Open Numbers
<http://km.aifb.kit.edu/projects/numbers/> project).
We have also considerably improved the user interface in Phase β, and it is
now often using labels next to the bare identifiers. The labels are fully
internationalized, and can be localized on-wiki (e.g. the labels for the
Type Positive integer can be edited right on the Type page
<https://notwikilambda.toolforge.org/wiki/ZObject:Z70>, as the key of the
type). Note that in order to have editing privileges on that wiki, you need
to be logged in. Many parts of the user interface used to be hard coded,
but now are dynamically pulled from the wiki.
There are of course bugs, and we are tracking them on the Phabricator task
board <https://phabricator.wikimedia.org/project/view/4876/>. If you
encounter new bugs, please do raise them. Either let us know, or create a
new bug report in the column “Needs triage” so that we know to review them.
We are starting now with Phase γ
<https://meta.wikimedia.org/wiki/Abstract_Wikipedia/Phases#Phase_%CE%B3_(gamma):_functions,_implementations,_errors>.
The goal is to create all the main Types of the pre-generic function model
<https://meta.wikimedia.org/wiki/Abstract_Wikipedia/Pre-generic_function_model>
- Function, Implementation, Tester, Function call, Error, and so on. There
are a number of tasks that will allow us to create these Types,
particularly Function call will have some magic features to them. A bit out
of order, we also started developing the supporting services, the function
orchestrator
<https://gerrit.wikimedia.org/g/mediawiki/services/function-orchestrator/+/refs/heads/main>
and the function evaluator
<https://gerrit.wikimedia.org/g/mediawiki/services/function-evaluator/+/refs/heads/main>.
This is in order to get input on the architecture
<https://www.mediawiki.org/wiki/Extension:WikiLambda> as soon as possible.
Once the function data model is in place, Phase δ
<https://meta.wikimedia.org/wiki/Abstract_Wikipedia/Phases#Phase_%CE%B4_(delta):_function_call>
will allow evaluating the function calls that we are building in the
current phase. This, and the composition of functions that will be enabled
in Phase ε
<https://meta.wikimedia.org/wiki/Abstract_Wikipedia/Phases#Phase_%CE%B5_(epsilon):_composition>,
will be the beating heart of the technical features that Wikifunctions will
provide. After δ it will be possible for everyone to call functions from
their wiki pages, and after ε it will be possible to create any kind of
function. Sure, there will still be tons of things that need to be
developed and improved, without question — but these will be the main steps
towards providing a glimpse into what Wikifunctions will bring to the
Wikimedia movement and beyond.
I want to end with a big shout out to the whole team, and to the volunteers
who were contributing patches - in particular Arthur P. Smith and Gabriel
Lee – and give a pointer to the logo concept contest
<https://meta.wikimedia.org/wiki/Abstract_Wikipedia/Wikifunctions_logo_concept>.
The submission deadline is on 23 February, and we already have nine great
submissions! Take a look, and be invited to add your own concept
submissions, ideas, and comments on others', and let others know who might
be interested.