Abstract Wikipedia/Updates/2022-02-04
◀ | Abstract Wikipedia Updates | ▶ |
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 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 does. Lambda calculus was developed by 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 retells the dramatic story of those events.
There were two main results: first, that not every mathematical question can be answered; 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, cellular automata (such as Conway’s Game of Life), unrestricted grammars, even simple marble and lever games such as Turing Tumble 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 Wikifunctions. But that’s not all!
In the 1960s, Richard Montague pioneered the linguistic theory that was later called 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”. Or in this comic aimed at linguists.
Let me quote the words of linguist 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”. 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.