Abstract Wikipedia
|
This page is currently a draft. More information pertaining to this may be available on the talk page.
Translation admins: Normally, drafts should not be marked for translation. |
| Wikilambda (working title) | |
|---|---|
| Community decision. | |
| Status of the proposal | |
| Status | under discussion |
| Details of the proposal | |
| Project description | Many Wikipedia language editions have large gaps in knowledge. We want to close these gaps by allowing to create and maintain content in one place and allow the Wikipedias to use this content if they choose so, instead of doing that in each of the Wikipedia language editions individually. This will allow more people to access and create more knowledge in more languages in the Wikipedias. In order to do this, we need to represent the content in a way that can be translated to many different natural languages with high fidelity. We do this by introducing a new project, Wikilambda, that allows to create, maintain, catalogue and evaluate functions as a new form of knowledge the communities work on. This will allow completely new use cases, and allow more people to share in more forms of knowledge than today. |
| Is it a multilingual wiki? | one multilingual wiki |
| Potential number of languages | multilingual, in the same way as Wikidata |
| Proposed tagline | A wiki for functions |
| Proposed URL | Depends on the name which is to be a community decision. |
| Technical requirements | |
| New features to require | yes. A detailed technical proposal will be made available here. |
| Development wiki | Part of the technical proposal. |
| Interested participants | |
| Denny (proposal author) | |
Many Wikipedia language editions have large gaps in knowledge. We want to close these gaps by allowing to create and maintain content in one place and allow the Wikipedias to use this content if they choose so, instead of doing that in each of the Wikipedia language editions individually. This will allow more people to access and create more knowledge in more languages in the Wikipedias.
In order to do this, we need to represent the content in a way that can be translated to many different natural languages with high fidelity. We do this by introducing a new project, Wikilambda, that allows to create, maintain, catalogue and evaluate functions as a new form of knowledge the communities work on. This will allow completely new use cases, and allow more people to share in more forms of knowledge than today.
Proposal
Abstract Wikipedia is a proposed extension to Wikidata that would capture the content next to the Wikidata items. Think of it as a new namespace, where we could create, maintain, and collaborate on the abstract content. The individual Wikipedias - and I cannot stress this enough - have the choice to use some or any or all or none of the content from Abstract Wikipedia, but I most definitely do not expect the content of the current Wikipedias to be replaced by this. In fact, I have no doubt that any decent article in any language Wikipedia will remain superior to the outcome of the proposed new architecture by far. This is a proposal for the places where the current system left us with gaps, not a proposal to turn the parts that are already brilliant today dull and terrible tomorrow.
Wikilambda is a proposed new Wikimedia project that allows us to share in a new form of knowledge assets, functions. You can think of it as similar to Modules or Templates, but much extended, with places for tests, different languages, evaluation, and also for all kind of functions, not only those that are immediately useful for one of the Wikimedia projects, and most importantly, shared among the projects. So one of the first goals would be to increasingly allow fo a place to have global templates, another idea that has been discussed and asked for for a very long time. Wikilambda, just as Wikidata, is expected to start as a project supporting the immediate needs of the sister projects, and over time to grow to a project that stands on its own merits as well.
Background / supporting material / existing discussion
Paper
- Capturing meaning: Toward an abstract Wikipedia (short intro)
- CCC award for most innovative idea for the paper (it won both the Jury and Audience awards)
- Architecture for a multilingual Wikipedia (technical aspects)
- Collaborating on the sum of all knowledge across languages (social aspects)
Videos
Note that the two long videos are rather redundant to each other.
- Short intro to Wikidata and Abstract Wikipedia idea (New York, 2019) (18 min)
- Keynote at SWAT4HCLS (Edinburgh, 2019) (56 min)
- Keynote at EMWCon (Daly City, 2019) (1:02h)
Wikimedia community discussions
- Discussion on wikimedia-l about the paper proposing Wikilambda and Abstract Wikipedia
- Discussion on wikidata mailing list
- Discussion on Meta
- Signpost article on English Wikipedia - with discussion
- Kurier article on German Wikipedia - with a (mostly preceding!) discussion
- 2013 proposal on Meta and discussion
Proposed by
Denny Vrandečić is founder of Wikidata, co-founder of Semantic MediaWiki, first administrator and bureaucrat of the Croatian Wikipedia, community-elected member of the Board of Trustees of the Wikimedia Foundation 2015-2016.
Alternative names
Wikilambda is just a project name. One of the first tasks of the projects will be to come up with the communities with a name for the project and that is available as a domain name. Some options include Wikifunction, Wikicode, Wikialgorithm, but I am sure the community will have even better ideas.
Related projects / proposals
The following projects would be most affected by Wikilambda, but all Wikimedia Projects will be able to call functions in Wikilambda.
- Wikidata - suggested to store abstract Content in Wikidata next to the item pages
- Wikipedia - suggested to allow to display Content from Wikidata for missing articles
There are numerous proposals that cover aspects of Wikilambda and that have been made over the years (going back to 2001). The large number of related proposals is another indicator of the wish to get this done. In this proposal we aim to extract the common goals and learn from the other proposals:
- Global templates - a proposal with some overlapping goals
- WikiAI - a repository for ML models
- Wikitemplates - similar to the Global templates proposal above
- WikiDerivations
- Wikilanguage - linguist knowledge needs to be recorded in Wikilambda beyond Wiktionary
- Girgit - may be developed in Wikilambda
- WikiSandy - index Wikipedia content semantically
- Wikimath - a wiki that can do math
- DRMF - capture mathemtical formulas
- Wikimedia Pi Abacus
- WikiProves
- WikiTeched - providing an IDE for developing etc.
- Global-Wiki - the parts regarding global templates and modules
- WikiApps - provide access to functions and algorithms
- EncycloPDia - computational knowledge engine
- WikiCalculator - implementable in Wikilambda
- Konsciajxo - seems almost the same idea, but goes well beyond that
- Wikilinguistica - information about syntax and grammar etc.
- Wikidioma - information about agreement and declinations etc.
- WikiCode - pretty much the same idea
- Wikibot - give access to content in Wikipedia
- Wikipedia Virtual Mind - could be implemented with Wikilambda
Domain names
Depends on the name.
Mailing list link
- An email to wikimedia-l will be sent once this page is not a draft and the link will be added here
Demos
- A prototype implementation is available on Github.
- The easiest way to dive into the prototype is by reading the walkthrough.
Support and discussion
We don't really have an effective process for starting new projects, so I am trying to follow a similar path that we took for Wikidata back then. And back then it all started with Markus Krötzsch, me and others talking about the idea to anyone who would listen until everyone was bored of hearing it, trying out prototypes, and then talking about it even more, and improving all of it constantly based on your feedback. And then making increasingly concrete proposals until we managed to show some kind of consensus from the communities, you, and the Foundation to actually do it. And then, well, do it.
The goal is to show interest in making this goal a reality, and then go to the Board of Trustees and ask them to commit to this project (in rough strokes - the details of the proposal will be further adjusted with you). But in order for the Board to confidently agree, we need to show support for the project.
If you support the goals of this proposal, please express your support on the talk page.
Also discussions and reservations regarding the goal of the proposal or the project plan should be raised there.
Just as with Wikipedia and Wikidata and our other projects, this is a crazy idea at first. Maybe even more crazy than our other projects. And the only way there is a chance of us being successful is, if, eventually, thousands of us work together on it. The only way this worked in the past is by being open, start out collaboratively, discuss the path forward, and work towards creating the project together.
Wikilambda as a standalone project
Wikilambda's first goal is to support the Wikimedia projects, but just as Wikidata it will support goals beyond that. This is a description of Wikilambda beyond Wikipedia.
Wikilambda is an open repository of code that anyone can use and contribute to.
Every page in Wikilambda represents a function. A function has a description, a list of parameters, test cases, a list of implementations in different programming languages, and further metadata. The implementations can be reused in other software projects (private apps or scripts), be called and executed online (either just in the browser or in a cloud environment or Jupyter or PAWS notebooks), composed to achieve more complex functionality, signed, analyzed or validated, and much more.
Wikilambda is a project in the spirit of Wikipedia, Wikidata, Wiktionary, and others, and it allows contributors from all over the world to create and maintain a library of functions, which can be used by anyone for any purpose. Every function can be supported by multiple implementations in different programming languages, test cases, pre- and postconditions, documentation, metadata in form of runtime estimates and complexity guarantees for the different implementations, etc. Users may call a function directly on the Website, or from their own code or applications, from a command line interface, or a local app. The function may be executed locally in the browser, in the cloud, or locally and embedded within the users application.
Wikilambda is intended to create both a well-defined common catalog of functions which can be widely reused, and also an environment where functions can be quickly combined and executed on the fly. Wikilambda aims to make life easier for developers, who can rely on this repository like on any external library, and for end users who can call functions as needed, in a way that is currently only available with a very uneven coverage through specific websites who are often written in the form of 1990s Websites with Java Applets.
All Functions are pure, in order to enable a secure sandboxed execution. Also, every implementation can be annotated with metadata and cryptographically signed. End users can select and audit which implementation of each function to use, depending on their available hardware resources and web of trust settings.
Wikilambda will allow easy access to large knowledge bases such as Wikidata, but also to binary input and output files. It is entirely possible to upload an image as an input file and return analysis results such as what is depicted on the image, or how many different colors the image has - or a different binary, e.g. in a different format. This will be made available to workflows on Commons.
Wikilambda continues the tradition of moving more computation, which has usually happened on the command line or with apps by more computer savvy computer users, to the Web and democratize access to functionality that was not available before. At the same time it will increase the productivity of developers everywhere as they can just use a large library of code instead of relying on properly copy and pasting answers from StackOverflow.
Unlike in Wikipedia, contributors will mostly create new implementations for a function instead of updating existing functions. The implementations can be automatically tested against the given tests, against each other, and further analyzed.
Implementations can be written in a number of different programming languages, and yet to be able to call functions implemented in other programming languages. The execution engine can smoothly (although not necessarily with the highest possible performance) operate in different languages. Although in most cases there is a large performance boost by composing functions within a single programming language, there is no requirement to do so. In many cases, the speed of development and the developers time will be more valuable than the additional computer cycles spent in the execution engine.