Wikifunctions:Status updates/2026-10-30
| ◀ | ▶ |
Errors and fallbacks in Abstract Wikipedia
As we start working with pilot communities to pick the first articles to show to readers, some key questions about errors and fallbacks on Abstract Wikipedia have come up.
How do we serve both contributors and readers well? When a Function call can’t render part of an article, contributors need to see the gap so they can fix it. Pilot communities deciding on whether to show readers an article need it to look finished to their readers. So, the same error or call to action that helps a contributor can make the article look unfinished to readers.
This leads to a second question: apart from the quality of its content, how does someone know when an article is ready for showing to readers? We don’t have a mechanism for deciding or showing this yet, and would like to open up the discussion on how we could handle this.
Today, there are four ways a Function call can behave when it can’t produce the expected result:
- It may raise an error, and display a red box with a message supplied by the community, hopefully giving a hint on how to fix the error, e.g. the Item that does not have a Lexeme in the right language.
- It may display a fallback rendering, capturing in some way what should have been displayed, and often with a link and a call to action. This can be some abstract notation borrowed from mathematics, QIDs, and often some noticeable colors.
- It may use the all-or-nothing rich text block (Z44729) Function which, in case the rendering returns a result, shows the results, and in case it raises an error, doesn’t show anything at all.
- It may silently ignore inputs and use a different language to the one requested, as decided by the Function's authors. This might be good enough generally but not in some edge cases, e.g. you ask for Swiss French and you get international French, and the idioms / vocabulary are different for this specific topic.
Now there are (at least) two competing wishes about what should happen when a Function cannot do its job:
- It should invite potential contributors to fix the issue
- It should either get out of the way and let readers read the rest of the article without looking broken, or it should tell us that this article would be missing crucial information and should not be rendered
The different solutions fulfill these requirements sometimes more, sometimes less:
- An error stops an article from being counted as an article available in the given language and invites the community to fix it up. We could use this information to block displaying these articles to readers (but do not do so currently).
- A fallback rendering displays as text, making it (for a computer) difficult to distinguish from a successful rendering. The system cannot know that this is not an article that works, and so it cannot e.g. block displaying that article to readers. The text invites the community to fix it up.
- Making a Function call optional does not block the article from being counted as a successfully rendered article, nor does it block showing to readers. But there is no indication that anything is missing, thus failing to invite the community to fix the Function call.
We see that all three solutions are lacking. We would like to invite the community to discuss possible ways forward, and to decide together on what to do.
A first suggestion could be:
- Block communities from showing articles to readers if they currently raise any errors in that language.
- Extend the optional Function with the ability to carry metadata (a notice, or a warning) which is collected and displayed on request, in order to continue to have the calls to action available, and still allow for a clean reading experience.
- Retire fallbacks for either errors or optionals.
One open question is also how to deal with reader-displayed articles that had no errors when they were initially shown, but produce errors now. One possibility would be to just remove the display, another could be to freeze the content and not render a new version until it renders without errors.
Another alternative that is being discussed by the community is to extend the configuration type to carry explicit information about fallbacks.
Let us know what you think! We will be following the IRC / Telegram chat and the talk page of this newsletter for a discussion.
Recent Changes in the software
This week we delivered a number of improvements to Wikifunctions, disrupted from last week due to the PHP security update.
In the Details view, we now show the number of sub-calls made (T440238). The display of the duration and other meta-data in the "Details" dialog should also now be better in RTL, though it is not (yet) translatable (T372704). We’ve also made several display fixes. Argument references no longer sometimes display incorrectly in the collapsed view, as they did on Z17290 (T368320). Very long values, like those on Z21409, now wrap instead of stretching off the page (T407594). We also no longer prompt you to “Run with latest data” on a Test case result, since that didn’t work there (T441305).
For type conversion, we now support type_convert_to_code / type_convert_from_code and typeConvertToCode / typeConvertFromCode functions in the executors. This will allow community-defined type-conversion functions to call default type conversion logic, reducing the complexity of type conversion and paving the way for full type-converter reuse.
Finally, we created on the back-end a set of Map/Filter/Apply functions to apply functions with arbitrary argument signatures, which expands the flexibility of functional primitives, allowing these functions to be applied to functions with arbitrary argument structures; the community has shored up this weakness with compositions, but a built-in function will be a bit more efficient and easier for the AW team to support. Due to the security disruption, these will be added onto Wikifunctions.org next week.
Next Volunteers’ Corner on November 9 at 11 UTC
The next Volunteers’ Corner will be on Monday, 9 November 2026 at 11:00 UTC. Note the earlier time in the day, in order to make it easier for some folks to attend this one. We plan to have the following agenda: there will be time to ask questions and discuss all matters arising. If we have time, we will write a function together. Everyone is welcome to join us on Google Meet.
Fresh Functions weekly: 182 new Functions
This week we had 182 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!
- join list of languages and list of lists of langs (Z46716)
- Russian gender/number of noun (Z46720)
- Russian gender/number from WD item (Z46727)
- Creative work - entity, class, creator, French (Z46732)
- Unlabelled (Z46738)
- apply eleven-argument function (Z46743)
- join list of QIDs and list of lists of QIDs (Z46747)
- Key references from Type (Z46759)
- Key reference from Key declaration (Z46762)
- label of item with indefinite article, French (Z46770)
- French indefinite article (string) indic. by item (Z46775)
- string for lexeme with indefinite, French (Z46782)
- Constant pressure heat (Z46791)
- object identity as ZID else object (Z46792)
- Simplified NOCT PV cell temperature (Z46796)
- PV reference yield, Yr (Z46799)
- (experimental) Word form from lexeme from item (Z46803)
- Abstract sentence from semantic predicate (Z46809)
- Sentence argument assignment (Z46811)
- Sentence phrase assembly (Z46829)
- Sentence agreement and morphology (Z46831)
- Language-specific sentence ordering (Z46850)
- Sentence orthographic realization (Z46859)
- lexemes with a sense for the predicates and roles (Z46869)
- verb lexeme for a relation (Z46870)
- English state sentence from its phrases (Z46890)
- join using Oxford punctuation, true multilingual (Z46899)
- Multilingual sentence from structured input (Z46907)
- Sentence from Wikidata statement (Z46917)
- Temporal adverbial for a time range (Z46926)
- Dagbani cardinals (Z46934)
- Sentence for item and property (Z46964)
- Developer sentence (Z46974)
- Author sentence (Z46980)
- Creator sentence (Z46984)
- Founder sentence (Z46989)
- Determiner form for the next word (Z46998)
- Coordinated phrase (Z47008)
- Form of lexeme for the next word (Z47021)
- Open list phrase (Z47036)
- Fragments joined with separator (Z47047)
- Malayalam particle attached to fragments (Z47052)
- Fragments with words around (Z47056)
- Date phrase (Z47062)
- Inception sentence (Z47091)
- Publication date sentence (Z47099)
- phrase for a time span (start and end), Japanese (Z47103)
- phrase for a time span (start and end), English (Z47104)
- phrase for a time span (start and end) (Z47105)
- (experimental) Lexeme forms from lexeme from item (Z47117)
- particle for a predicate-specific role, Japanese (Z47118)
- case particle registered on the verb, Japanese (Z47119)
- is this proper noun plural? (using Z47117) (Z47127)
- modifier with examples, Japanese (Z47131)
- modifier with examples, English (Z47132)
- modifier with examples (Z47133)
- Quantity phrase (Z47146)
- Quoted value phrase (Z47160)
- Sentence as HTML for item and property (Z47169)
- Topic pointer entry (Z47177)
- Area sentence (Z47184)
- Malayalam genitive of a name (Z47192)
- Predicate construction language preferences, Dagbani (Z47209)
- Predicate construction language preferences, Igbo (Z47211)
- Predicate construction language preferences, Malayalam (Z47213)
- Predicate construction language preferences, Latin (Z47215)
- Predicate construction language preferences, Spanish (Z47217)
- Predicate construction language preferences, other languages (Z47219)
- Inception sentence (HTML) (Z47221)
- Subject pronoun for item (Z47231)
- Publication date sentence (HTML) (Z47233)
- Area sentence (HTML) (Z47242)
- Classification sentence (Z47251)
- Subclass sentence (Z47253)
- Non-defining role sentence in French (Z47255)
- Occupation sentence (Z47258)
- Country sentence (Z47260)
- Administrative location sentence (Z47262)
- Location sentence (Z47264)
- Discoverer sentence (Z47266)
- Membership sentence (Z47268)
- Part of sentence (Z47270)
- Parts sentence (Z47272)
- Named after sentence (Z47274)
- Based on sentence (Z47276)
- Influence sentence (Z47278)
- Population sentence with year (Z47280)
- Follows sentence (Z47282)
- Followed by sentence (Z47284)
- Classification sentence (HTML) (Z47286)
- Subclass sentence (HTML) (Z47288)
- Country sentence (HTML) (Z47292)
- Administrative location sentence (HTML) (Z47294)
- Location sentence (HTML) (Z47296)
- Discoverer sentence (HTML) (Z47298)
- Membership sentence (HTML) (Z47300)
- Part of sentence (HTML) (Z47302)
- Parts sentence (HTML) (Z47304)
- Named after sentence (HTML) (Z47306)
- Based on sentence (HTML) (Z47308)
- Influence sentence (HTML) (Z47310)
- Population sentence with year (HTML) (Z47312)
- Follows sentence (HTML) (Z47314)
- Followed by sentence (HTML) (Z47316)
- Object pronoun for item (Z47332)
- entity is instance of multiple classes, Hindi (Z47336)
- Generic noun phrase for class (Z47339)
- Discourse structure strategy options, English (Z47366)
- Discourse structure strategy options, Latin (Z47368)
- Discourse structure strategy options, French (Z47370)
- Discourse structure strategy options, Spanish (Z47372)
- Discourse structure strategy options, Malayalam (Z47374)
- Discourse structure strategy options, Igbo (Z47376)
- Discourse structure strategy options, Dagbani (Z47378)
- Discourse structure strategy options, other languages (Z47380)
- Discourse structure strategy for language (Z47383)
- Discourse plan for item (Z47385)
- Clause form request (Z47387)
- Verb form fragment language options, French (Z47416)
- Verb form fragment language options, Spanish (Z47418)
- Verb form fragment language options, Latin (Z47420)
- Verb form fragment language options, Malayalam (Z47422)
- Verb form fragment language options, Dagbani (Z47424)
- Verb form fragment language options, Igbo (Z47426)
- Verb form fragment language options, English (Z47428)
- Clause for item and property (Z47435)
- Connective for discourse relation (Z47437)
- Adpositional complement for construction (Z47440)
- Collapsible string (Z47454)
- Discourse sentence assembly (Z47461)
- Designer sentence (Z47468)
- Architect sentence (Z47470)
- Programming language sentence (Z47472)
- Operating system sentence (Z47474)
- Replaces sentence (Z47476)
- Translations of lexeme sense (Z47478)
- Discourse property combinations (Z47485)
- Discourse combinations applicable to item (Z47487)
- Designed and developed sentence plan (Z47489)
- Influence and developer sentence plan (Z47491)
- Kind and location sentence plan (Z47493)
- Founders and inception sentence plan (Z47495)
- Basis and architect sentence plan (Z47497)
- Follows and followed by sentence plan (Z47499)
- Part of and parts sentence plan (Z47501)
- Programming language and operating system sentence plan (Z47503)
- Link an entity's realized span in HTML (Z47521)
- Genre sentence (Z47523)
- Colour sentence (Z47525)
- Collection sentence (Z47527)
- Manufacturer sentence (Z47529)
- Distributor sentence (Z47531)
- Maintainer sentence (Z47533)
- Studied by sentence (Z47535)
- Standards body sentence (Z47537)
- Implementation of sentence (Z47539)
- Series sentence (Z47541)
- Field of work sentence (Z47543)
- Border sentence (Z47545)
- Announcement date sentence (Z47547)
- Depends on sentence (Z47556)
- Platform sentence (Z47558)
- Use sentence (Z47560)
- Uses sentence (Z47562)
- Main subject sentence (Z47564)
- Depicts sentence (Z47566)
- Readable file format sentence (Z47568)
- Writable file format sentence (Z47570)
- Award sentence (Z47572)
- Product sentence (Z47574)
- Software engine sentence (Z47576)
- GUI toolkit sentence (Z47578)
- Build system sentence (Z47580)
- Distribution format sentence (Z47582)
- Typeface sentence (Z47584)
- Licence sentence (Z47586)
- Language of work sentence (Z47588)
- History of topic entry (Z47603)
- Economy of topic entry (Z47607)
- Demographics of topic entry (Z47610)
- Geography of topic entry (Z47612)
A complete list of all functions sorted by when they were created is available.