Abstract Wikipedia is an initiative that will allow Wikifunctions, Wikidata, and the individual language Wikipedias to work together in order to make a baseline of knowledge available to, and editable by many more people across many languages.
Contributors will be able to call functions from Wikifunctions from within their wikis. For readers of the wiki, the result of the function call will be displayed. This can be used, for example, to calculate the age of a person, the population density based on population and area data from Wikidata, or to draw a graph and integrate it into a given article.
Another option to integrate Wikifunctions will be to integrate an interactive function call interface within their wiki. This could be used, for example, in a Wikipedia article to dynamically calculate the result of a physical equation based on reader-provided parameters, draw and interact with mathematical functions, etc.
The content of Abstract Wikipedia will generate natural language text. It is up to the individual Wikipedias which level of integration they choose.
The individual Wikipedia projects will have the possibility to choose to integrate parts of the content within an existing article; to choose which articles to integrate into their local Wikipedia; or to say that any article that is missing, and is available in Abstract Wikipedia, will be automatically integrated into the local Wikipedia.
More details can be found in the top 5 sub-sections of Abstract Wikipedia/Components.
Where will Abstract Wikipedia contents be stored?
This still needs to be decided in a discussion with the communities. We plan to have this discussion in 2023.
Which kind of functions will you focus on first?
It is up to the community on which parts of the function library they want to focus on first. We are planning to provide general support with writing functions if the community wants us to. We will very quickly focus on writing functions relevant for Abstract Wikipedia, which are mostly related to natural language generation.
Which internal knowledge sources can be used as data within functions?
Wikifunctions will be able to use data from Wikidata items, from Wikidata lexemes, and from Wikimedia Commons data pages and structured data. We plan to support further internal knowledge sources over time, in particular media files from Commons, texts from Wikisource, and any other content from the Wikimedia project.
Some thoughts on this topic are in the newsletter from Abstract Wikipedia/Updates/2021-05-28. The community will need to write a more detailed and updated version of this, over time.
- 维基函数上的文字内容将使用CC BY-SA 3.0许可协议。
- 函数签名和其它结构化数据采用CC 0许可协议发表。
- Code implementations in Wikifunctions will be published under the Apache 2 license.
- 抽象维基百科上的文字内容将使用CC BY-SA 3.0许可协议。
This is the summary, presented in Abstract Wikipedia/Updates/2021-12-21, of a month-long discussion happened on Meta in late 2021. There are still some points that will need to be addressed in the future, such as the license of the generated content from the abstract content.
We plan on drafting a more comprehensive document with the Legal department about how people can re-use code from Wikifunctions as painlessly as possible, while adhering to the license.
What was the thinking behind having the function written in Wikifunctions versus imported from elsewhere?
Similar to Wikipedia, two reasons:
- by creating the content for Wikifunctions specifically, we know it will fit in our ecosystem (also, copying code from another source will rarely work without adaptation anyway);
- legal security by creating it from scratch in Wikifunctions.
Who will decide which functions are suitable for Wikifunctions? Who will decide on the tests that define a function? Who will decide on which implementations should be attached to a given function?
The answer for all of these is that this will be up to the community, to decide on the scope of the project, and the appropriate processes for when to connect and disconnect an implementation or a tester. The team will implement rights that control who can connect implementations and testers to functions, and who can create new types. But how these rights will be associated with the roles that already exist, such as admins, or if new roles need to be introduced, will be decided together with the community.