Wikifunctions:Status updates/2025-12-18
| ◀ | ▶ |
We wish you a happy new Gregorian year!
2025 was an exciting year for Wikifunctions and Abstract Wikipedia. The system increased considerably in capability, and is now able to generate sentences in numerous languages. This year saw more than a thousand new functions. We held an open-ended community consultation and decided on an architecture —and a name— for Abstract Wikipedia. We introduced many new types, including the Wikidata-based lightweight enumerations.
The next year we expect to see the launch of the new Abstract Wikipedia wiki, and to allow a new community to form around writing and maintaining the first abstract encyclopedic articles. This will take us a huge step closer towards a world in which much more knowledge becomes available in many more languages, and in which everyone can contribute to the knowledge of the world.
We wish everyone wonderful holidays, and a happy new Gregorian year!
Newsletter taking a break
The next few days, most of the team will take off due to the holiday season at the end of the year. Expect the next update in the Week of 14 January 2026. We also don’t plan to have any code deployments in the next few weeks. The first Volunteers' Corner of the next year will be on 9 February 2026. We wish everyone peaceful days and see you in the new Gregorian calendar year!
Next Volunteer’s Corner on 9 February 2026
The next volunteer’s corner will be on 9 February 2026, on the usual place.
Template to Wikifunctions on Wikipedia
There are templates on English, German, Uzbek, Luxembourgian, Thai, and Sorani Wikipedia language editions to connect relevant functions on Wikifunctions from Wikipedia articles. Some interesting articles using that are:
- Blood compatibility testing
- Pangram
- Levenshtein distance
- Percent-encoding
- Reverse domain name notation
Thanks to Lucas Werkmeister for pointing this out!
Recent Changes in the software
There was no deployment last week, which means this week includes a larger set of updates than usual. Let’s start with reliability and performance improvements, followed by updates focused on clarity, visual editor workflows, and finally code editor behavior.
We created a new error type, Z580/Duplicated languages in a Multilingual string are not allowed, which is returned when multilingual string objects contain duplicate language monolinguals (T341624). This restriction was already in place in the Wikifunctions Multilingual component, but this change adds another layer of safety and makes the issue explicit to editors. We also reduced the failure TTL on both the client and repository sides. Previously, Wikifunctions fragments embedded on client wikis were cached even when a function call returned an error, meaning the “Content error” tag could persist for a long time after the function started working again. Now, successful fragments are cached for a month, while fragments that fail due to a server error are cached for only one minute, making ‘Content errors’ less persistent (T405477, T404581, T338243). In addition, we also added compression to the Orchestrator’s caching of Wikidata entities. Previously, entities larger than 1 MB were not cached due to size limits, but with compression all entities are now cached. This is expected to improve overall runtimes for functions that fetch entities, particularly Wikidata items.
Next are updates aimed at making system behavior clearer and easier to understand. We added documentation explaining how an implementation is chosen for a function call. Links to this new documentation are now available directly from the Implementation section of the Function Metadata dialog, making the selection strategy more transparent (T366659).
We also updated the metadata dialog to use a rendered view when displaying expected and actual results in failed tests, instead of showing raw JSON (T358807). Editors can still toggle between the raw JSON and the rendered object view for easier debugging.
A regression caused by a Codex update was fixed by restoring the close button in dialogs. Dialogs such as the metadata dialog now consistently show a close button again (T411655).
And following are several improvements focused on the visual editor workflows.
The function editor was improved so creators can change the default language before adding content. The language selector is now editable on launch and becomes locked only after content is entered, better supporting multilingual workflows (T350677).
In VisualEditor, the Wikifunctions insert dialog was updated so external links now open in a new browser tab, preventing editors from losing their editing context (T392722). And when inserting a function with a single input, selected text will now be used as the input value for the function call, aligning the workflow with common editor expectations (T395480).
Finally, there were a few updates focused on clarifying behavior and messaging in the editor.
We added a notice in the code editor when Z0 is detected, warning users that it will be replaced on publish (T408136). The notice appears while Z0 is present and disappears when it is removed, and the message clarifies that the change can be reverted in a subsequent edit. This was added because some Regexes might include patterns such as [a-zA-Z0-9]+; in the future we may detect the Regex and not replace the Z0, but for now the notice is hopefully sufficient.
And finally, we removed an incorrect warning in the HTML (Z89) code editor that said <a> tags were not allowed. Links are permitted to the Wikifunctions domain and to Wikipedia articles when used in embedded functions.
Fresh Functions weekly: 51 new Functions
This week we had 51 new functions. 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!
- best plural rep. via P5137 (Z30377)
- best Swedish plural rep. via P5137 (Z30380)
- best English plural rep. via P5138 (Z30383)
- Armenian noun, definite (Z30389)
- State location using entity and class, English (Z30397)
- Armenian instantiating sentence (Z30400)
- Armenian capitalise first letter and add full stop (Z30404)
- make Typed pair (Z30414)
- best singular swedish representation via P5137 (Z30426)
- object has key (Z30433)
- apply four-argument function (Z30438)
- default language sunset sentence (Z30443)
- find lexeme refs for a Wikidata item via P5137 (Z30460)
- Armenian, add յ if string ends with ա or ո (Z30473)
- Armenian regular noun, locative case (Z30479)
- Unlabelled (Z30484)
- (#) local time of sunset for location and date (Z30489)
- minutes to hour angle (radians) (Z30496)
- degrees to radians (rational to float64) (Z30503)
- latitude from Wikidata geo-coordinate (radians) (Z30509)
- Location using entity and class, Armenian (Z30514)
- longitude from Wikidata geo-coordinate (radians) (Z30519)
- equation of time (hour angle in radians) (Z30524)
- Unlabelled (Z30534)
- grammatical gender (c/n) of lexeme (Z30539)
- Armenian cardinal (Z30549)
- inscribed equilateral triangle side length (Z30565)
- height of inscribed equilateral triangle float (Z30569)
- area of inscribed equilateral triangle side (Z30579)
- area of equilateral triangle inscribed radius (Z30583)
- Malay article-less instantiating sentence (Z30598)
- defining role sentence in Malay (Z30609)
- reified Z9 (Reference) (Z30617)
A complete list of all functions sorted by when they were created is available.