The on-wiki version of this newsletter can be found here:
https://meta.wikimedia.org/wiki/Abstract_Wikipedia/Updates/2022-02-04
--
Originally, the proposal for Wikifunctions was made under the name
“Wikilambda”. After the community decided to use Wikifunctions as the name
for the project, we adopted WikiLambda as the name for the MediaWiki
extension that will allow the creation and maintenance of a library of
functions in a MediaWiki system.
But what’s up with the lambda? Lambda is the 11th letter of the Greek
alphabet, and was a predecessor to the letter L in the latin alphabet.
Lambda is written in uppercase as Λ, and in lowercase as λ.
But what does it have to do with Abstract Wikipedia and Wikifunctions?
The early prototypes to implement the idea of Abstract Wikipedia (from
2013-2017) were aiming for a much simpler system: one in which we could
directly create and edit “meanings”, and then have the system take care of
translating those meanings into natural language texts. An early draft
<https://meta.wikimedia.org/wiki/A_proposal_towards_a_multilingual_Wikipedia>
describes the implementation of the system with templates based on language.
But none of these simple systems worked, as they wouldn’t scale to the
needs of generating even simple fluent natural language texts in many
different languages. The resulting templates or modules would have quickly
become too complex, and so their editing and maintenance would have been
restricted to a far too small community to be viable in the languages that
need it the most. As the system implementing the natural language grew in
expected complexity, it became clear that a different approach would be
required: instead of building a system that tries to hide the complexity of
natural language generation from the community working on it, and having
the community get stuck in the limitations of that system, let’s design a
platform that would allow us to work together on these complex tasks, and
allow the community to create layers of hidden complexity and abstraction
instead.
Instead of having a development team deciding what set of functions would
be required for the community's tasks, we create a platform where the
community can create and maintain those functions themselves.
This very quickly turned into a generic platform for creating all kinds of
functions. The next question became: how do we implement those functions?
In order to allow for a multilingual approach to function implementation,
we adopted the idea of composing (combining) existing functions.
Composing functions is an old idea. In fact, it is one of the most
foundational ideas in all of computer science: giving names to and using
functions, i.e. function abstraction and application. That is exactly what
the lambda calculus <https://en.wikipedia.org/wiki/Lambda_calculus> does.
Lambda calculus was developed by Alonzo Church
<https://en.wikipedia.org/wiki/Alonzo_Church> in the 1930s.
The 1930s were a turbulent time in many ways, and also in Mathematics: the
decade saw the dream of Mathematics and Logic being shattered, and its
foundation completely rebuilt. The comic Logicomix
<https://en.wikipedia.org/wiki/Logicomix> retells the dramatic story of
those events.
There were two main results: first, that not every mathematical question
can be answered
<https://en.wikipedia.org/wiki/G%C3%B6del%27s_incompleteness_theorems>; and
second, that every mathematical question that can be answered at all can be
answered by using a combination of a surprisingly simple and small
foundation. And not only that: there are many such foundational systems!
Lambda calculus is one, but so are Turing machines
<https://en.wikipedia.org/wiki/Turing_machine>, cellular automata
<https://en.wikipedia.org/wiki/Cellular_automaton> (such as Conway’s Game
of Life <https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life>), unrestricted
grammars <https://en.wikipedia.org/wiki/Unrestricted_grammar>, even simple
marble and lever games such as Turing Tumble <https://www.turingtumble.com/>
without any electric components are each capable of performing any possible
calculation there could ever be.
So lambda calculus was a main inspiration for how composition works in
Wikfunctions. But that’s not all!
In the 1960s, Richard Montague
<https://en.wikipedia.org/wiki/Richard_Montague> pioneered the linguistic
theory that was later called Montague grammar
<https://en.wikipedia.org/wiki/Montague_grammar>, an approach to formally
represent the meaning of natural language expressions. Montague took
inspiration in the lambda calculus, and since then the lambda calculus also
became a mainstay in linguistics. In this approach, the meaning of words
such as “some” or “every” are captured with simple expressions in lambda
calculus. You can read more about the use of lambda calculus in linguistics
in this introduction aiming at “absolute dummies”
<http://palmstroem.blogspot.com/2012/05/lambda-calculus-for-absolute-dummies.html>.
Or in this comic <https://imgur.com/a/XBHub> aimed at linguists.
Let me quote the words
<https://allthingslinguistic.com/post/95678520747/the-lambda-calculus-for-absolute-dummies-like>
of linguist Gretchen McCulloch
<https://en.wikipedia.org/wiki/Gretchen_McCulloch> about the use of lambda
calculus in linguistics:
“The Lambda Calculus is often used in semantics as a way of representing
meaning in a manner more independent of the specific words used in a
particular language.”
That is exactly what we are aiming for with Abstract Wikipedia!
The abstract content that will make up Abstract Wikipedia is basically
“just” a user-friendly and community-editable layer over lambda notation,
used to express the meaning of the Wikipedia articles. In a second step, we
then use lambda-calculus based compositions to transform these expressions
of meaning into natural language text that is then presented to the readers
of Wikipedia.
Which brings us to another connotation that lambda has: Λ or λ both look a
whole lot like the Chinese character 人, which can mean “human” or “person”
or “everybody” <https://en.wiktionary.org/wiki/%E4%BA%BA#Definitions>. And
that really represents for whom we are doing this work.
The lambda in WikiLambda is a conscious reference to both these bodies of
research. The new thing in WikiLambda is not the "Lambda" — it is the
"Wiki". It is this idea of bringing together a group of remarkable people
to see if they could build something new, something that can take us a step
closer to a world where everyone can share in the sum of all knowledge.