Wikifunctions:Status updates/2025-12-04
| ◀ | ▶ |
And the name is Abstract Wikipedia
In October, we started the naming process for the wiki of language independent content. The process involved two rounds of voting: the first round in order to generate many names and find a few favorites to take to the second round. More than 150 Wikimedians voted in the first round on more than 100 community-submitted proposals, leading to five top proposals. Two weeks ago we then started the second round of voting, and we closed the voting process this Monday during the Volunteers’ Corner (recording below). 209 Wikimedians participated in the second round of voting. We removed votes that did not fulfill the eligibility criteria. Here are the results.
We counted 191 valid votes. In the first round of counting votes, Wikigenerator received the top vote 55 times, Abstract Wikipedia 54, Wikiabstracts 33, Proto-Wiki 28, and Multilingual Wikipedia 21 times. A tight race with the two top options being very close to each other. But since no option received an absolute majority of votes and Multilingual Wikipedia received the lowest number of votes, we removed that option and recounted the votes for the second round.
In the second round of counting votes, Abstract Wikipedia received 62 times the top vote, Wikigenerator 61, Wikiabstracts and Proto-Wiki each 34 times. Again, the two top options remained very close to each other, but again no option received an absolute majority. Since the lowest number of votes was received by both Wikiabstracts and Proto-Wiki, we removed both of these options, and recounted the votes for the third and final round.
In the third round of counting votes, Abstract Wikipedia received 100 and Wikigenerator 91 votes. This means that an absolute majority preferred Abstract Wikipedia over Wikigenerator, and this leads to Abstract Wikipedia winning the community vote.
We then submitted the name for a final legal review, which has since concluded and cleared the name Abstract Wikipedia for the use for the new wiki. We will now proceed with planning and developing Abstract Wikipedia.
We want to express thanks to everyone participating in the process, for making proposals, voting on the proposals, and spreading the word about the vote. We also want to thank all the internal teams who helped with the process, particularly the legal and brand departments.
Demo video for two new features: shareable function calls and custom statement component
Last week, we introduced and demoed a new feature in the newsletter: shareable function calls. It is now possible to link directly to a function call with filled-in arguments. What is 2+2? What day of the week did Wikipedia start?
Daphne Smit has made a video demonstrating that new feature. We hope you enjoy the new feature and find plenty of places you can use it!
Daphne also created a video demonstrating the new custom Wikidata Statements component, which makes the view of Wikidata statements so much more compact.
Recent Changes in the software
Last week was our regular fix-it week, and so it brought a wide range of interface improvements and bug fixes across Wikifunctions.
Based on community feedback, we identified and solved a bug where new custom error types were incorrectly treated as enumerations, requiring elevated permissions. This has now been fixed, and any logged-in user can successfully create new error types (T411332).
We also improved rendering performance. Expanding or collapsing steps in a function no longer triggers repeated API calls to re-render values; Successfully rendered results are remembered, making viewing compositions like this noticeably faster (T409722).
And we also made a lot of interface improvements:
- Function argument handling received an update (T405839, T368497): we resolved issues that appeared when editing/viewing labels for functions with many arguments (9+).
- Now, enum dropdowns appear in a sensible order (by ZID), and sorting across several lists has been improved.
- Browsing large lists in the ZObject selector is smoother now too (T409537); new items get added to the list now instead of being replaced.
- Test creation has been streamlined so that when creating a new test, the relevant test sections automatically open (T408175).
- Strings now display exactly as written, including leading spaces, ensuring accurate representation (T343608).
- Interacting with language components feels more intuitive as well: clicking on an empty language chip in a ZMonolingualString immediately expands to show the editable fields (T402812), and the multilingual string languages button is now using a smaller button so users do not get confused with the “about languages” button (T405629).
- Finally, we resolved an issue where the publish success message would reappear when navigating with the browser’s back button after publishing (T341672).
Wikidata components handling edge-cases
|
Components for Wikidata entities strongly depend on the Wikidata entity ID being available so that they can be rendered with the Wikidata entity label and the link to the corresponding page. However, frequently – and often in the context of a composition – Wikidata references in Wikifunctions may have unexpected values. These cases were not handled, and were appearing as red links (as reported in T406970) or empty fields (as described in T380440).
This week we have invested some time into pinning down all these edge cases and making sure that Wikidata entity components can reflect any existing value in view mode, edit mode, and when shown inside a collapsed function call. The edge cases we have identified are:
- A Wikidata entity reference has an empty ID: in this case, the view component should show some kind of placeholder that identifies its empty state.
- A Wikidata entity reference has a non-valid ID: In this case, the component should not produce a false (and potentially dangerous) link.
- A Wikidata entity reference (or its string ID) is defined by an argument reference or a function call: in this case, the component should detail its structure clearly.
In the table you can see how they looked before, and how they look after this change.
Feel free to explore it in the Sandbox composition Z30096! And see more screenshots on the respective task (T380440).
New options for retrieving Wikidata entities
Z6820 / Fetch Wikidata entities has received a major upgrade, with three new filtering arguments. As background, the first argument, unchanged, takes a list of Wikidata entity references, which can be of mixed types including Wikidata item reference, Wikidata property reference, Wikidata lexeme reference, Wikidata lexeme form reference, and Wikidata lexeme sense reference. Previously this function always retrieved the complete content of each requested reference.
The new filtering arguments allow for the retrieval of partial content. They can be used to substantially reduce the size of retrieved entities, which can make the content much easier to browse, and can also have performance benefits.
- The parts argument allows the caller to specify which parts of the requested entities should be retrieved. Its values are instances of Wikidata entity part, which include info, datatype, labels, descriptions, aliases, and statements.
- sitelinks and sitelinks/urls are also present, but not yet supported.
- Note that labels, descriptions, and aliases are only applicable when retrieving Wikidata items and properties.
- Wikidata's API documentation for parts (which the API calls props) can be found on the MediaWiki API help page for wbgetentities.
- The languages argument allows the caller to specify, for labels, aliases, and descriptions, which languages should be retrieved.
- The properties argument filters statements (in all of the entity types) for specific properties.
If desired, it will be easily possible to make wrapper functions which enable various bespoke uses of Z6820 / Fetch Wikidata entities, such as the following:
- Fetch full Wikidata entities ( <list of entity reference> )
- Fetch entity statements ( <list of entity reference> )
- Fetch entity labels ( <list of entity reference> )
- Fetch entity parts ( <list of entity reference>, <list of parts> )
- Fetch entity content in languages ( <list of entity reference>, <list of languages> )
- Fetch entity statements with properties ( <list of entity reference> <list of property reference> )
Each of these could also be written to take a single entity reference in the first argument, rather than a list. Please feel free to create a variety of wrapper functions!
Recording of Volunteers’ Corner
This week’s Volunteers’ Corner saw the close of the naming vote, and also us working together on a function for creating the French sentence "Un poulain est un jeune cheval." (A foal is a young horse).
The recording is available, as always, on Commons.
Fresh Functions weekly: 58 new Functions
This week we had 58 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!
- description of class with adjective and superclass (Z29743)
- ArticlePlaceholder render misc. Wikidata statement (Z29748)
- Monolingual text as HTML fragment w/ auto-langcode (Z29749)
- language is acceptable substitute? (Z29750)
- #UTC offset hours of timezone QID in standard time (Z29765)
- description of class with adj & superclass English (Z29773)
- English demonym for Wikidata item (Z29778)
- apply with common 1st arg and N 2nd and 3rd args (Z29787)
- Cartesian product of 2 lists with pairing function (Z29794)
- chunk list into lists of length <= N (Z29795)
- label of Wikidata property in language (Z29825)
- link to Wikidata property with localised label (Z29829)
- located in timezone statements from item or admin* (Z29835)
- English ordinal-superlative construction (Z29852)
- Wikidata statement has exact qualifier? (Z29868)
- display Time of day without seconds (rounded) (Z29883)
- round Time of day to the nearest minute (Z29884)
- replace nth regex match (Z29890)
- country (QID) has regional daylight savings dates (Z29894)
- country-wide daylight savings start date in year (Z29899)
- full date of weekday occurrence in month of year (Z29903)
- Gregorian calendar date not fully defined (Z29911)
- country-wide daylight savings end date in year (Z29916)
- location in daylight savings time on date (Z29919)
- country (QID) of location item (Z29921)
- date in start/end period of same year (complex) (Z29924)
- syllable count of English word (string) (Z29940)
- Low German indefinite noun phrase (Z29945)
- Wikifunctions language obj from Wikidata reference (Z29958)
- country (QID) has daylight savings (Z29961)
- Sunset sentence in English variants (Z29968)
- add hours (rational) to Time (Z29975)
- (#) best time zone for location and date (Z29979)
- Sunset sentence for location on date (Z30000)
- apply String transformation to Monolingual text (Z30009)
- prepend String to Monolingual text (Z30035)
- German: "Class is an adjective superclass" (Z30040)
- name of language in language (Z30043)
- inject HTML attribute into first tag (Z30060)
- description of class with adj & superclass French (Z30062)
A complete list of all functions sorted by when they were created is available.