Wikifunctions:Project chat

From Wikifunctions
(Redirected from Wikifunctions:PC)

Welcome to the Project chat, a place to discuss any and all aspects of Wikifunctions: the project itself, policy and proposals, individual data items, technical issues, etc.

Other places to find help:

SpBot archives all sections tagged with {{Section resolved|1=~~~~}} after 1 day and sections whose most recent comment is older than 30 days.

Once we get new types, which ones will be coming out first?

I'm assuming that a List type would be one of the first ones and hopefully an integer type (I am most knowledgable about mathematical functions so this would be where I could be of the most use) but I'm wondering which specific ones are going to be first or if it will be like 5 types come out at once or if there isn't a clear plan yet or what. Obviously this is probably not going to come out for some time now and there is a lot to be added with just booleans and strings (and I haven't yet been approved to be a functioneer anyway :)) but I would love to have a better sense of all of this. Thank you! Cool314 (talk) 19:22, 19 October 2023 (UTC)Reply[reply]

@Cool314 Thank you for the extremely timely question! I will be picking up this question for this week's update. We indeed plan to open up the list type very soon, and I think that whole numbers are a good next type, but just like you I am curious to hear more from the community and what they would like to see next. --DVrandecic (WMF) (talk) 00:18, 15 November 2023 (UTC)Reply[reply]
Here is the promised update. --DVrandecic (WMF) (talk) 21:50, 16 November 2023 (UTC)Reply[reply]
Thanks for this update. It's not clear to me how hard each new type is/will be to create. This might determine how we answer some of your questions. So for example, if it's easy to make new types, then maybe we should eventually make all options of short natural numbers, long natural numbers, and unlimited natural numbers. But if every new type will continue to require developer work, then maybe we need to have a very rigorous discussion first so we get it right first time. --99of9 (talk) 23:46, 16 November 2023 (UTC)Reply[reply]
Initially we will need minor development work for each new Type, but that is planned to change, and in the medium term there won't be any developer interaction required to create new types. It would all be hosted on-wiki and be doable by the community, similar to properties on Wikidata.
Nevertheless it would be good to get the types right, because once they are started being used, it will be difficult to change them. Again, you might compare it to properties in Wikidata, where changing a property is quite a hassle, and might need changes in third party apps etc. But not because of any involvement with the Wikidata development team.
I hope the answer helps, and thanks for your patience, I have been traveling. --DVrandecic (WMF) (talk) 03:55, 2 December 2023 (UTC)Reply[reply]
PS. We have a csv workaround for lists of strings, so simpler compositions for the examples given are is vowel from CSV options, composition (Z11941) and test for Breton mutation, CSV composition (Z11942). It will be good to get proper lists though! --99of9 (talk) 23:46, 16 November 2023 (UTC)Reply[reply]
yes, lists is a very good one! -- DVrandecic (WMF) (talk) 23:28, 7 December 2023 (UTC)Reply[reply]

permission to add English name?

I'm getting a permission error when I try to add the English title to this function: Breton plural -ioù and soft mutation (Z11786). I'm a functioneer and have changed plenty of other labels, so I'm not sure what's different about this one. Is there a bug? Can anyone else edit it? --99of9 (talk) 07:35, 6 November 2023 (UTC)Reply[reply]

I edited it: but weirdly, I cannot undo it. And I am a global rollbacker (e.g. I can rollback your and my comments here on this page.) ―Justin (koavf)TCM 07:45, 6 November 2023 (UTC)Reply[reply]
Try Breton plural -ioù and soft mutation (Z11786). It looks like your edit was Breton plural -ioù and soft mutation, composition (Z11787). --99of9 (talk) 10:48, 6 November 2023 (UTC)Reply[reply]
I am also unable to edit Breton plural -ioù and soft mutation (Z11786), I get a "User does not have permission to edit" error. Terasail[✉️] 11:35, 6 November 2023 (UTC)Reply[reply]
I just test edited it again and undid it again: very bizarre. Also, for me [[Z11787]] displays as "Breton plural -iù and soft mutation, composition (Z11787)", but [[Z11786]] is "Untitled (Z11786)". ―Justin (koavf)TCM 18:08, 6 November 2023 (UTC)Reply[reply]
Hmm, I was able to create the label with my staff account, and then edit it with a normal Functioneer account. (In hindsight, I should have tested that in the reverse order; I was expecting to reproduce the problem. Sorry about that.)
Are there any other examples of the same problem? Quiddity (WMF) (talk) 19:33, 6 November 2023 (UTC)Reply[reply]
Yes, that seems to have fixed it. I think maybe it was clashing with a cached version of a different item with the same name [1], but the error message was about permissions rather than the existing name. In any case, I can no longer reproduce the problem, I'll look out for it happening again. --99of9 (talk) 23:49, 6 November 2023 (UTC)Reply[reply]
@Quiddity (WMF): to reproduce the bug, use the duplicate gadget (Mediawiki:Gadget-duplicate.js, it was created and then remove from the list of gadget by Ebrahim to avoid more problems, maybe they can tell us more ; there was also a thread on Telegram, something about keys renumbering IIUC). Cheers, VIGNERON (talk) 08:26, 14 November 2023 (UTC)Reply[reply]
@Quiddity (WMF) and VIGNERON:: As the result that discussion I disabled the tool from preferences but if you want to reproduce the issue you can manually execute the gadget on JS console. Sorry about the trouble the tool has made. Thanks! −ebrahimtalk 13:08, 14 November 2023 (UTC)Reply[reply]

Adding Spreadsheetfunctions and Visual Programming Languages to Wikifunctions

From my point of view not every one will be able to edit functions in Wikifunctions soon. It is too complicated to create or edit functions at the moment at least for me. There are mony people who can use Spreadsheetfunctions. I hope that there will be support for Spreadsheetfunctions and Visual programming languages soon. As people and the way how they learn and interact with a graphical user interface are different I think it will be not possible to enable all people to create functions on Wikifunctions. In the last three years I spent a lot of time on experimenting with different ways to generate source code. You can find some source code at WikimediaFoundation Gitlab and I hope something like that will be integrated in Wikifunctions. Maybe it is possible to create tools to add support for Spreadsheetfunctions and Visual Programming Languages into Wikifunctions soon at least through mapping the source code of blocks or spreadsheetfunctions to the programming languages Python and JavaScript. So offering a kind of Transpiler. Where the user gets the source code out of the tool and then needs to insert the source code in Wikifunctions. I wrote scripts in the programming language R for the described cases. Do you think that can be helpful for Wikifunctions and can someone help me creating such tools. I think whats missing is a user interface and how to combine the program for the frontend with the backend. I do not have experience with creating User interfaces. Please tell me what you think about that. Hogü-456 (talk) 16:59, 17 November 2023 (UTC)Reply[reply]

@Hogü-456: I'm sorry, I'm not sure what you mean exactly... Plus, isn't "composition" kind of similar to Visual Programming Languages? Anyway, I'll let the team answers but it is scheduled to add more languages to implementations. Cheers, VIGNERON (talk) 08:33, 18 November 2023 (UTC)Reply[reply]
I know that there are plans to add support for more programming languages and the way how compositions can be defined is a bit similar to Visual programming languages. I hope that after I mentioned it here again it will be checked if it is possible to use some parts of what I have written or at least do something similar. My expectations at the beginning have been too high and so maybe it is not necessary to add support of what I mentioned and I just need to spend more time to understand how it is possible to create functions in Wikifunctions.--Hogü-456 (talk) 17:27, 18 November 2023 (UTC)Reply[reply]

Object Diff reader user script

Hello, I have made a user script which will change an object diff to show object labels (Object/Function call/Reverse string) instead of the zObject id (Z1/Z7/Z10012...). This will get the labels in the language that the page is displayed in (If the object has a label for that language). If you are interested in trying/using it then you can add importScript('User:Terasail/ReadableDiff.js'); to your /common.js page. Terasail[✉️] 12:28, 26 November 2023 (UTC)Reply[reply]

I've found this script really helpful, thanks. If you don't want to navigate to the page yourself to look at the code, its at User:Terasail/ReadableDiff.js --DannyS712 (talk) 09:54, 1 December 2023 (UTC)Reply[reply]

How do I use a function somewhere else?

How do I use a WikiFunction somewhere outside of Wikifunctions, for example, Wikipedia? Aaron Liu (talk) 18:43, 27 November 2023 (UTC)Reply[reply]

At the moment it's not yet possible to call Wikifunctions from other wikis. As far as I know, it's also impossible to call one function from other (apart from composition). Msz2001 (talk) 18:48, 27 November 2023 (UTC)Reply[reply]
I am interested in using some functions of Wikifunctions implemented in Python outside of Wikifunctions. From my point of view it is an important question how far the functions of Wikifunctions will be reused outside of the Wikimedia projects and if it is a goal of Wikifunctions to enable reuse and calling from outside the Wikimedia projects or not. I think it is not necessary to offer a public API for Wikifunctions to access functions for computational purposes outside of the Wikimedia projects. Instead it should be easy to integrate a function into another script through copy and paste a function and change the variable and function name and I hope that if Spreadsheetfunctions are available as a kind of implementation it will be possible to reuse it for many people. I looked at some function implementations in Python and I think it is possible to reuse them. I try to do it in the next days and then I will let you know about my experience with reusing functions of Wikifunctions.--Hogü-456 (talk) 21:31, 30 November 2023 (UTC)Reply[reply]

Wikifunctions & Abstract Wikipedia Newsletter #134 is out: Welcome, Grace and Miguel! Appointing Functioneers now by community

There is a new update for Abstract Wikipedia and Wikifunctions. Please, come and read it!

In this issue, we present two new members of the team, we discuss the latest changes in software, and we announce that Functioneer right will be now assigned by the community.

Want to catch up with the previous updates? Check our archive!

Also, we remind you that if you have questions or ideas to discuss, the next Volunteers' Corner will be held on December 4, at 18:30 UTC (link to the meeting).

Enjoy the reading! -- User:Sannita (WMF) (talk) 12:01, 1 December 2023 (UTC)Reply[reply]

Future programming languages?

Are there plans to add more programming languages to Wikifunctions, e.g. Kotlin JS and maybe C++? I know Lua is planned, but what about anything else? Aaron Liu (talk) 00:57, 2 December 2023 (UTC)Reply[reply]

There are not any timelines for adding new programming languages, but there are a variety of proposals in phab:T307171 (Lua), phab:T298633 (Vlojure), phab:T298635 (Grammatical Framework), and phab:T301418 (a graphical language such as Scratch or Snap!) which you could add to. I'll encourage the team to share details on the which/when/how aspects of selecting, implementing, and maintaining support for new programming languages. I hope that helps. Quiddity (WMF) (talk) 01:41, 2 December 2023 (UTC)Reply[reply]
Hmm, thanks. I have created two tasks for Kotlin and LabView. Should there be a tracking supertask for such tasks? Aaron Liu (talk) 02:01, 2 December 2023 (UTC)Reply[reply]
Good idea. -- DVrandecic (WMF) (talk) 03:56, 2 December 2023 (UTC)Reply[reply]

Function page proposal: looking for feedback

Hi everyone,

This is Amin, one of the designers behind Wikifunctions.

We are currently working on the next iteration of the function page, and we would like to hear your thoughts on a possible new approach.

The current page includes two tabs:

  • About, where people can read the function description, consult the function name or aliases in multiple languages, and try the function.
    "Join strings" function with the About tab open.
    Function page with the About tab open.
  • Details, where people can read the function definition, view the function input(s) in multiple languages, consult any existing function implementation or test, and find the link to add a new implementation or test.
    "Join strings" function page with the Details tab open.
    Function page with the Details tab open.

While reviewing feedback shared on Phabricator, the Project chat, and the Telegram group we identified a few opportunities to be addressed as a first iteration.

We noticed that some of the information that we currently feature on the function page could be displayed with the “widgets” that we deployed on other Wikifunctions pages. For instance we could use the “About widget” to display the function information, or we could use the “Function explorer widget” to display the function definition.

About and Function Explorer widgets on a Test page.
About and Function Explorer widgets on a Test page.

After a few explorations we understood that those two widgets needed to be merged together on the function page to accomodate the editing of the function labels, from the function name to the function inputs labels.

Proposal for merging the About and Function Explorer widget into a new widget on the Function page.
Proposal for merging the About and Function Explorer widget into a new widget on the Function page.

This proposal reduces the space needed to display the same information, and possibly opt for a single view approach. We’re not touching the implementations and tests tables (for now!).

Proposal for a new Function page featuring a custom widget to display About and Function Definition information.
Proposal for a new Function page featuring a custom widget to display About and Function Definition information.

While there’s still some “unused” space, this is for accommodating content that might come in the future such as a “Function documentation widget” (next to “Try this function”?) or a “Where is this function used widget” (below “About”?).

Based on the new proposal, please feel free to answer any, some, or all of the following questions right below:

  1. What usually brings you to a function page? What are you trying to achieve when you visit this page?
  2. What do you think is working well in the new page?
  3. What flows are still confusing in the new proposal?
  4. Is there anything missing in the new page?
  5. What functionality is redundant in the new approach?

We're looking forward to hearing from you. Thank you! AAlhazwani (WMF) (talk) 09:34, 6 December 2023 (UTC)Reply[reply]

@AAlhazwani (WMF) The changes look good, not needing to switch tabs is an improvement. Personally I prefer being able to see the ZID in the page title in addition to the about box. The seperation between input type and label is minimal ("String"/"first string") and not ideal when scanning a page. It might be better if the label is on the left and input type is on the right in the same way that "join strings" and "Z10000" is formatted in the Name section. Terasail[✉️] 13:08, 6 December 2023 (UTC)Reply[reply]
I like the idea of single tab (or rather no tab 😉) layout. I'm wondering if making the Try this function box collapsible could be beneficial (with hidden/shown state saved across visits to a page), so that an editor/administrator etc. who is not really interested in calling the function can have more screen space for the more technical widgets below. Msz2001 (talk) 16:12, 6 December 2023 (UTC)Reply[reply]
I share with you my experiences of defining functions and writing implementations and writing test cases. I often wish I had a requirements specification when writing implementations and when using functions written by others. Neither titles nor descriptions can fulfill this role, as their respective character limits are too tight. Titles and descriptions are for readers, but specifications, which define how the function should handle corner cases or the expected complexity, are truly useful for contributors. That can fill up the unused space, I suppose. MilkyDefer 07:42, 7 December 2023 (UTC)Reply[reply]
Would the tests be able to fulfil this task of being a specification? -- DVrandecic (WMF) (talk) 23:30, 7 December 2023 (UTC)Reply[reply]
1. Instead of just “About”, why not “About this function [Z10000]?
2. I’m not convinced that “Name” should come before “Description”. It is just a preferred alias. In any event, it should be something like “English Name”. I’m not sure how we stand with multiple fallback languages, but I suggest we should always be clear which language each label is assigned to.
3. Personally, I find it often makes more sense to talk about the output of a function before specifying the required inputs.
4. Similarly, the label for an input is generally more informative than its type.
5. We don’t have a label for the output. My expectation would be that one of the aliases for a function would be an appropriate label for its “output” (that is, something like “joined string”). I suspect we may need to change the function model here, however.
6.It is odd that we have an “Other languages” button but no reference to the current language. This relates back to point 2. If the current language explicitly applies to all the details, then any details that are missing in that language should be shown as such, together with whatever details are available in some fallback language (with that language being explicitly labelled). GrounderUK (talk) 21:17, 7 December 2023 (UTC)Reply[reply]

Diff post Discussion at Hacker News: (koavf)TCM 21:08, 6 December 2023 (UTC)Reply[reply]

Questions around string reversal and tests

I decided to take another look at wiki functions today as I saw another announcement as it continues to move forward.

Ultimately I ended up looking at reverse string (Z10012) and Reverse String (grapheme level) (Z10548) and getting a bit turned around with either some bugs, general questions, or things missing in my understanding.

  • The `extended unicode grafems reverse` test case on 10012 fails for "ab🚵🏻‍♀️de". Is the expectation that all tests should pass? Is this actually something that we would want people to "fix" in this function in this case?
  • The `Reverse String (grapheme level)` function appears to just fail with a void result for `'Intl' is not defined`. What are the expectations around using things such as Intl?

·addshore· talk to me! 15:40, 7 December 2023 (UTC)Reply[reply]

We need to figure out how we want to deal, as a community, with failing tests. My gut feeling would be that every test that is connected should pass for every implementation that is connected, and it is up to the functioneers to ensure that. In the end, the functioneers really decide which implementations are connected and not. We could let the system automatically disconnect implementations that fail a connected test, but I am wary about that for now.
Intl is currently not available in the JavaScript interpreter we use, and thus cannot be used in Wikifunctions. If we want to use Intl, we need to make it available. We don't have a process to make this possible right now, so I guess it's up between "let's discuss this here" and "file a task in Phabricator" -- DVrandecic (WMF) (talk) 23:36, 7 December 2023 (UTC)Reply[reply]
Yes, I have noticed that you are more conservative about connecting tests and implementations than I am. My criteria for connecting a test has so far been: is it something that a perfect version of this function would get right? And I deliberately go about writing (and connecting) tests that will be difficult to get right. This helps implementation writers to easily score how they are going as they improve their implementation. For connecting implementations, I have been (perhaps inconsistently) connecting at least the best performing implementation, on the assumption that for many functions (especially irregular language ones), the perfect function may never exist. I endorse the need for further discussion and guidance here. --99of9 (talk) 06:10, 8 December 2023 (UTC)Reply[reply]
Perhaps it would be helpful to have an intermediate level between connected and disconnected - something like "desirable". Or is that what you take disconnected tests to mean? --99of9 (talk) 06:12, 8 December 2023 (UTC)Reply[reply]
I'm no string handling expert, but I'm pretty sure Reverse String (grapheme level) (Z10548) is supposed to handle it by its definition, and reverse string (Z10012) isn't going to handle that ab🚵🏻‍♀️de test at all, since all Z10012 does is reverse the codepoints and not the graphemes (graphemes would need to be segmented according to Unicode® Standard Annex #29). 0xDeadbeef (talk) 17:24, 9 December 2023 (UTC)Reply[reply]
Tests apply to functions, not implementations, of course. If a test is a valid statement about how the function should evaluate, then it should not be disconnected from the function even if no implementation currently passes the test. As @99of9 suggests, it may be appropriate to distinguish between “valid but failing” tests and “invalid or contentious” tests. Where the consensus is that a test is invalid, it should generally be re-written as its negation. Similarly, if the consensus is that a valid test is unlikely to pass in any currently feasible implementation, the pragmatic limitation should be written into the function definition (making the valid test for an ideal function an invalid test for the currently limited function). GrounderUK (talk) 11:05, 8 December 2023 (UTC)Reply[reply]

Wikifunctions & Abstract Wikipedia Newsletter #135 is out: Announcing Wikifunctions on the Wikimedia Foundation blog. Looking for feedback on the Function page proposal

There is a new update for Abstract Wikipedia and Wikifunctions. Please, come and read it!

In this issue, we present the latest blogpost about us on WMF blog, and we invite you to share your feedback at the Wikifunctions' Project chat on the new proposed designs for the Function page.

Want to catch up with the previous updates? Check our archive!

Enjoy the reading! -- User:Sannita (WMF) (talk) 19:06, 7 December 2023 (UTC)Reply[reply]

Duplicate functions

There has now been a duplicate function created. String Length (Duplicate of Z11040) (Z12257) was created and is a duplicate of String length (Z11040). I have protected Z12257 for now to try to stop further editing and to ask what to do going forward with duplicate functions. Ideally we would turn it into a redirect but that is not possible at the moment (See: phab:T344973 and phab:T258915). Terasail[✉️] 12:48, 8 December 2023 (UTC)Reply[reply]

I agree that we need to be able to merge and redirect functions. Unfortunately this seems to be not of interest for the staff working on Wikifunctions. --Ameisenigel (talk) 18:05, 10 December 2023 (UTC)Reply[reply]

Hindi translation of existig functions

Hey, this seems interesting. How can I translate existing functions in Hindi? -- Suyash.dwivedi (talk) 19:12, 8 December 2023 (UTC)Reply[reply]

@Suyash.dwivedi, Do you mean to translate its labels and descriptions or to create ones like English plural (Z11089) but for Hindi? Msz2001 (talk) 19:27, 8 December 2023 (UTC)Reply[reply]
Yes like was able to do this Hindi translation edit -- Suyash.dwivedi (talk) 19:54, 8 December 2023 (UTC)Reply[reply]
It's done correctly. If you want to see more functions and objects, you can go to Special:ListObjectsByType/Z8. Msz2001 (talk) 20:19, 8 December 2023 (UTC)Reply[reply]
There's also the draft page at Help:Multilingual with further suggestions of areas for translators to consider contributing to, which may help you, Suyash.
Also, any improvements to that page would be great, especially in terms of making it: informative for newcomers who may or may not have [some/any] coding skills; and making a good structure so that any (current & future) lists within it scale cleanly once the page itself has been marked for translation (which could perhaps be done soon, if other folks are happy with the content that we started it off with?). Quiddity (WMF) (talk) 23:54, 8 December 2023 (UTC)Reply[reply]

Global sysops acting here

Hi all. I recently procedurally requested that global sysops not be allowed to act here since the current policy does not permit them to do so, but was told that we need an explicit discussion to opt-out of the group (which would generally also prevent them from acting here in the future if we do meet the default criteria). At the moment, per m:Global sysops#Scope it is against policy for global sysops to use their permissions here, but they are technically able to do so per m:Special:WikiSets/7. I propose that we request from stewards that the global sysops only be technically permitted to use their permissions here when the wiki falls within the scope of the group (i.e. remove wikifunctions from the wikiset now but if we ever run low on admins in the future then they can come back to helping). An alternative would be to permanently opt-out (unless we later change our minds). --DannyS712 (talk) 21:34, 9 December 2023 (UTC)Reply[reply]


Sorry, it seems like I'm not understanding. According to Meta's policy, global sysops would not use admin tools here, since there are sufficient local admins. There could be a situation in the future where there are not, so it would be permitted to have global sysops step in to do things that local admins aren't. Why would we want the latter to not happen? And since this is all just hypothetical, I don't understand what's motivating this now: did global sysops come here and cause problems somehow? ―Justin (koavf)TCM 05:24, 11 December 2023 (UTC)Reply[reply]

@Koavf well sometimes global sysops don't realize that there are enough local admins (I think I made a few patrol actions here that I shouldn't have) but this is mostly just to avoid potential problems. I didn't think it would be at all controversial to have stewards add wikifunctions to the wikiset so that global sysops wouldn't be able to use the rights here, but at m:Steward requests/Miscellaneous/2023-12#Wikifunctions GS it turns out that stewards want a local discussion to confirm that the policy should be enforced on a technical level. To be clear, I am not proposing a permanent opt-out, just trying to get community consensus to remove us from the group now that we have enough local admins - we can be added back in the future if we don't have enough local admins later. DannyS712 (talk) 15:46, 11 December 2023 (UTC)Reply[reply]
Sure. Thanks. ―Justin (koavf)TCM 15:48, 11 December 2023 (UTC)Reply[reply]


  • Enforce scope - remove from the group now but allow them in the future if we have too few admins at some point --DannyS712 (talk) 21:35, 9 December 2023 (UTC)Reply[reply]
  • Makes sense to remove now given the number of admins and the number of admin tasks that need doing here. While also re-allowing them in the future if numbers fall significantly without needing another discussion. Terasail[✉️] 15:02, 10 December 2023 (UTC)Reply[reply]
  • The proposal makes sense to me --Ameisenigel (talk) 18:10, 10 December 2023 (UTC)Reply[reply]

Switch Chinese Variants

I set the Chinese variant of String length (Z11040) to zh-hans, but I found that other pages were set to zh. I want to know how to modify it?

Perhaps we can also discuss whether it is necessary to translate all Chinese variants on this site? 星海子 (talk) 20:46, 10 December 2023 (UTC)Reply[reply]