The on-wiki version of this newsletter can be found here: https://www.wikifunctions.org/wiki/Wikifunctions:Status_updates/2026-03-26 ---- First few days of Abstract Wikipedia Beta
Last week we kicked off the Beta of Abstract Wikipedia, and many of you came to visit and some of you came to become part of a new community. We are very excited about how things are going!
The numbers are constantly changing, but so far already more than 120 articles have been started. ChaoticVermillion https://www.wikifunctions.org/wiki/User:ChaoticVermillion has created a page to commemorate the first 25 articles https://abstract.wikipedia.org/wiki/User:ChaoticVermillion/First_Abstract_Wiki_pages. One thing we are particularly happy about is that more than 75 volunteers have made contributions to the wiki, and the wiki has seen more than 1000 edits already. We understand that contributing to Abstract Wikipedia is currently not a very user-friendly experience, and a lot of things are broken. We have already fixed a whole slew of things (see the section on Recent Changes in the software below), and we are working on many more.
Based on the initial reaction and your feedback, we are changing our plans for the upcoming quarters, to focus on bugfixes, features, and capabilities that you are raising. We are monitoring the Phabricator board, the Project chat, and the Telegram / IRC chat, and collecting your feedback and suggestions. This will be our priority in the coming months.
We are also excited to see that Wikifunctions is seeing a significant increase in the speed of creating new functions. This week we report 79 new functions! Some of them are working on languages that have seen no functions yet, some of them are providing functionality that help with writing Abstract Wikipedia articles.
By the way, here’s one tip: currently, caching for Abstract Wikipedia happens on the level of the “fragment”. This means that by putting several sentences into a single paragraph, the paragraph as a whole is being run, may cause time-outs, and will be cached. Instead, if, for now, you put one sentence into each fragment, caching and evaluation can be more spread out and should allow for more content. Eventually we want to fix that, but it may take a moment, so you can try out more by following this tip for now. This can be changed later again and pulled together into paragraphs if so wished.
As you might have noticed, there have been a few bugs that we've fixed and tweaks that we've made. We fixed a bug that meant that the code mis-configured some namespaces, so broke talk and User pages and published the very first articles in the wrong place (T420617 https://phabricator.wikimedia.org/T420617, T420649 https://phabricator.wikimedia.org/T420649). We switched the orchestrator's composition language temporarily back to v1 (T418887 https://phabricator.wikimedia.org/T418887), then made some quick fixes ( T419833 https://phabricator.wikimedia.org/T419833) and then re-enabled it — see below. We switched up a hard-coded link for policies to the new initial policy list. We fixed a bug that meant the creation workflow looked in the wrong place to make sure you didn't over-write an existing page ( T420725 https://phabricator.wikimedia.org/T420725), and it worked if you browsed directly to Special:CreateAbstract/Q123456 (T420916 https://phabricator.wikimedia.org/T420916). We adjusted the display of previews to correctly set the language's RTL status too (T420687 https://phabricator.wikimedia.org/T420687) and we added Help links for the pages to view and create Abstract articles.We're working now on improving performance and caching, fixing the /view/ links to work, making sure Abstract Wikipedia pages show up on the Tools database views, adding to the site statistics process, and a dozen other little things. Thank you for bearing with us!
Keep giving us feedback! We really appreciate your willingness to try things out, and are very happy to see you accepting this early version of Abstract Wikipedia. Status of Composition Language v2
A couple of weeks ago, we enabled composition language v2 in production. There were some minor bugs that the team was able to triage, but there was also a set of function calls that became categorically impossible to specify. An example case is here https://phabricator.wikimedia.org/T419833. These function calls worked in v1 because of 1) an extremely lazy execution model and 2) lax error handling. In v2, execution order is much stricter (and more comprehensible!), and error handling has become predictable. As a result, when a Z7/Function call https://www.wikifunctions.org/wiki/Z7 will cause an error, that error is immediately returned in v2.
We have since added a temporary layer of indirection https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-orchestrator/-/merge_requests/606 (hereinafter the "scope hack") to the v2 composition language. This will cause affected functions to work much in the way they did in v1. However, this is a temporary measure. It is bad for performance and it makes the Wikifunctions language semantics a bit strange.
In future, compositions that depend on error-handling functions (e.g. Z850/Try-catch https://www.wikifunctions.org/wiki/Z850 and Z853/Get error https://www.wikifunctions.org/wiki/Z853) should wrap top-level Z7/Function calls https://www.wikifunctions.org/wiki/Z7 in Z99/Quote https://www.wikifunctions.org/wiki/Z99, then use Z899/Unquote https://www.wikifunctions.org/wiki/Z899 inside of the composition. This technique is verified to work in all versions of the composition language, so it will be possible to migrate all existing functions.
Another unwanted side effect of v2 and its new strategy for error handling is that many of the failing function calls might return a different error type. While we will work to always return the most accurate and descriptive error type, it is possible that many calls that rely on Z850/Try-catch https://www.wikifunctions.org/wiki/Z850 to catch a specific error type will now fail until the expected error type is corrected to the one thrown by v2.
We will document all the content issues that we come across and track their status here: Wikifunctions:Request for cleanup https://www.wikifunctions.org/wiki/Wikifunctions:Request_for_cleanup. Once these functions have been migrated, we will roll back the scope hack. Recent Changes in the software
This week on Wikifunction, we made the following changes: When you're editing an article with the visual editor with a Wikifunctions call that creates a reference, we now show the style more clearly. We also now show the standard MediaWiki warning box when you're editing an old version of a Wikifunctions Object page (T364318 https://phabricator.wikimedia.org/T364318). Wikifunctions presentation at WikiCon Australia on 11 April 2026
Toby Hudson https://www.wikifunctions.org/wiki/User:99of9 will be presenting Wikifunctions in Practice: Reusable Logic for Wikimedia https://meta.wikimedia.org/wiki/Event:WikiCon%20Australia%202026/Submissions/Wikifunctions%20in%20Practice:%20Reusable%20Logic%20for%20Wikimedia at WikiCon Australia https://meta.wikimedia.org/wiki/Event:WikiCon%20Australia%202026 on 11 April 2026 at 12:00 local time at the National Film and Sound Archive of Australia https://en.wikipedia.org/wiki/National%20Film%20and%20Sound%20Archive in Kanbarra https://en.wikipedia.org/wiki/Canberra.
Here is the description of the talk: *Wikifunctions promises something simple but ambitious: write logic once, and make it reusable across Wikimedia projects and languages. Small, well-chosen functions can have outsized impact and eliminate some updating, copy-pasting, or even translation.**This talk focuses on goals and practical usage rather than internals or programming, but will allow plenty of time for questions from the audience to dig into the details. We'll see what Wikifunctions is and what it's for. We will test a range of existing functions on Wikifunctions directly. We will see how to embed the result of a function call in a regular Wiki page elsewhere on a sister project. Then we will look ahead to how Wikifunctions will play a key role in the future Abstract Wikipedia.*
Thank you Toby for giving this presentation! And everyone have fun at WikiCon Australia! Volunteer’s Corner upcoming on 13 April 2026
The next Volunteers’ Corner will be on Monday, 13 April 2026 at 17:30 UTC https://zonestamp.toolforge.org/1776101400. We plan to have the following agenda: there will be time to ask questions and discuss all matters arising. We will celebrate the launch of Abstract Wikipedia Beta. If we have time, we will either write a function together or work on an Abstract Wikipedia article together (volunteer-led). Everyone is welcome to join us on Google Meet https://meet.google.com/xuy-njxh-rkw. Fresh Functions weekly: 76 new Functions
This week we had 76 (!) new functions. That’s a lot more than usual, driven by the launch of Abstract Wikipedia Beta. Here is an incomplete list of functions with implementations and passing tests to get a taste of what functions have been created. Thanks everybody for contributing!
- enumerate adjacent-key typos for digit string (Z32085) https://www.wikifunctions.org/wiki/Z32085 - filter WD claims by exact predicate (Z32097) https://www.wikifunctions.org/wiki/Z32097 - sort list of Unicode code points, ascending (Z32109) https://www.wikifunctions.org/wiki/Z32109 - paragraph (Z32123) https://www.wikifunctions.org/wiki/Z32123 - later than (Time of Day) (Z32126) https://www.wikifunctions.org/wiki/Z32126 - sentence case section title from Wikidata label (Z32145) https://www.wikifunctions.org/wiki/Z32145 - paragraph from list of fragments with separator (Z32149) https://www.wikifunctions.org/wiki/Z32149 - State location using entity and class, Malay (Z32152) https://www.wikifunctions.org/wiki/Z32152 - defining role sentence in Hebrew (Z32160) https://www.wikifunctions.org/wiki/Z32160 - paragraph from list of sentences (Z32163) https://www.wikifunctions.org/wiki/Z32163 - Malay superlative form of adjective (lexeme based) (Z32177) https://www.wikifunctions.org/wiki/Z32177 - HTML unordered list with item tagging (Z32179) https://www.wikifunctions.org/wiki/Z32179 - wrap an HTML fragment as a list item (Z32180) https://www.wikifunctions.org/wiki/Z32180 - Malay first superlative form (teR-) (Z32185) https://www.wikifunctions.org/wiki/Z32185 - State location using entity and class, Tagalog (Z32193) https://www.wikifunctions.org/wiki/Z32193 - Shown in (English) (Z32199) https://www.wikifunctions.org/wiki/Z32199 - default cross-lingual fragment shown in (Z32204) https://www.wikifunctions.org/wiki/Z32204 - Sentence that something shown in (Z32208) https://www.wikifunctions.org/wiki/Z32208 - defining role sentence in Chinese (Z32212) https://www.wikifunctions.org/wiki/Z32212 - basic Abstract Wikipedia list item (Z32215) https://www.wikifunctions.org/wiki/Z32215 - Portuguese indefinite article (Z32225) https://www.wikifunctions.org/wiki/Z32225 - quantity comparison (Z32229) https://www.wikifunctions.org/wiki/Z32229 - quantity comparison, English (Z32230) https://www.wikifunctions.org/wiki/Z32230 - join text-like objects into HTML fragment (Z32234) https://www.wikifunctions.org/wiki/Z32234 - English non-defining role sentence (Z32244) https://www.wikifunctions.org/wiki/Z32244 - English collective role sentence (Z32249) https://www.wikifunctions.org/wiki/Z32249 - are Integers congruent modulo other Integer? (Z32261) https://www.wikifunctions.org/wiki/Z32261 - best values from Wikidata item statements (Z32290) https://www.wikifunctions.org/wiki/Z32290 - list has at most one element (Z32302) https://www.wikifunctions.org/wiki/Z32302 - join list of strings in given language (proper) (Z32308) https://www.wikifunctions.org/wiki/Z32308 - X exists in N Ys (Z32321) https://www.wikifunctions.org/wiki/Z32321 - Collective role sentence (Z32326) https://www.wikifunctions.org/wiki/Z32326 - Latin plural (Z32330) https://www.wikifunctions.org/wiki/Z32330 - Latin decline 1st declension noun (Z32340) https://www.wikifunctions.org/wiki/Z32340 - Latin decline 2nd declension noun (Z32343) https://www.wikifunctions.org/wiki/Z32343 - Latin decline 3rd declension noun (Z32347) https://www.wikifunctions.org/wiki/Z32347 - defining role sentence in Japanese (Z32355) https://www.wikifunctions.org/wiki/Z32355 - State location using entity and class, French (Z32371) https://www.wikifunctions.org/wiki/Z32371 - lexeme object list from lexeme references (Z32373) https://www.wikifunctions.org/wiki/Z32373
A complete list of all functions sorted by when they were created https://www.wikifunctions.org/wiki/Special:ListObjectsByType?type=Z8&orderby=latest is available.
abstract-wikipedia@lists.wikimedia.org