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, named after the letters of the Greek alphabet.


This week we completed the second phase, Phase β.


With Phase α 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! String in Lucas’s notwikilambda demonstration system.


The goal of Phase β 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 and #15. 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 on the notwikilambda test site, and a literal instance of that Type for the number one (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 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, 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. 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 γ. The goal is to create all the main Types of the 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 and the function evaluator. This is in order to get input on the architecture as soon as possible.


Once the function data model is in place, Phase δ 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 ε, 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. 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.