Hello everyone!
I have been a somewhat active user of wikipedia and other wikimedia websites, and a while ago, I found out about wikifunctions. (As well as the Mailing lists!!)
At first, I thought it would be a useful programming tool, a repository of useful functions; however a lot of the functions there are seemingly trivial.
Examples of such "trivial" functions are: substring exists imap://noahpoulton2%40gmail%2Ecom@imap.gmail.com:993/fetch%3EUID%3E/%5BGmail%5D/Drafts%3E185?part=1.2&filename=Z10070 To Uppercase https://www.wikifunctions.org/view/en/Z10018 (as well as "To lowercase")
and most of the other functions "advertised" (for lack of a better term) in the "Functions to try out" section.
Then I go to more functions... https://www.wikifunctions.org/wiki/Wikifunctions:Catalogue and there are a lot of just string and boolean functions (*).
And then there are a lot of "functions" to do with natural languages. Which take up a good (70% at a guess) chunk of all of the functions.
Finally at the bottom of this there are some list based functions, which all seem trivial as well.
So now I want to ask a few questions.
1. In the "What Wikifunctions is not https://www.wikifunctions.org/wiki/Wikifunctions:What_Wikifunctions_is_not" page it says: "Wikifunctions is not an encyclopædia of algorithms". Why not? Would it not be better to have a concentrated, standardised place for useful algorithms (like Dijkstra's or sorting algorithms)? 2. Why are pretty much all of the functions trivial or just use built-in functions/modules? I get why the languages used (Python and Javascript) are the ones that are used (easy to read, high-level, popular languages) however I feel it would be better to use less built-in functions/modules, for example there is this https://www.wikifunctions.org/view/en/Z10127 function for SHA-256 encryption which literally imports a module, which feels like a bad thing to do. 3. Why are all the functions named something like `Z10124(Z10124K1)`? 4. Why so many natural language functions? It seems to me to be many more than all of the actual programming language functions? And, why? 5. In the FAQ, it says: "Wikifunctions is the first step towards building Abstract Wikipedia." what is meant by this? And, once again, why? 6. What can I do to help it reach it's full potential? This feels like it could be used in future to help (newer) programmers, which would require a lot more (complex) functions.
I want to finish this by saying that I do not think this is bad; just extremely unfinished! I think it has lots and lots of potential, it just needs more love from the community, which I hope it gets.
Thanks,
Noah Poulton.
(*) I am aware that in the FAQ https://www.wikifunctions.org/wiki/Wikifunctions:FAQ it says "
* At launch:
* We have the ability to have functions that work with Strings and Booleans.
"
With no explanation other than it being a new project.
Hi Noah,
Thank you for your interest in Wikifunctions! And I agree, I would love to see much more love for WIkifunctions :) You’re asking exactly the right questions, and thank you for raising them here, as it allows us to refine the FAQs and the documentation for Wikifunctions, so that it becomes hopefully clearer for people in the future who make the same journey of discovery that you had.
Answering your questions requires me to make a few subtle differentiations, and I apologize for the lengthy answer.
1) Why is Wikifunctions not an “encyclopedia of algorithms”?
The Wikimedia movement already has an encyclopedia of algorithms. It's called Wikipedia.
Wikifunctions is a platform with which the Wikimedia community will, in time, be able to use functions to build encyclopedias, text books, interactive content, and much more. We're not interested in functions for their own sake, or just as a way of documenting interesting code. We're looking for functions that are valuable for the Wikimedia's community's content. Some educational content could indeed be a comparative gallery of different algorithmic approaches to the same broad problem, but that's a limited area of interest compared to natural language generation, data processing, and the general computational needs that our communities have already shown the need for.
Indeed, Wikifunctions makes a distinction between a function – which answers a question – and its implementation – the mechanics of creating an answer for a question. Algorithms are directly relevant for an implementation. The focus of Wikifunctions is on functions, not on implementations and thus algorithms (although the latter are obviously crucially needed for the former).
We are worried that by calling ourselves an “encyclopedia of algorithms” we would create expectations that one should, or can easily, capture a diverse set of algorithms in Wikifunctions. But there will be many algorithms that we won’t be able to represent given the intentional system design trade-offs (e.g. Shor’s algorithm - https://en.wikipedia.org/wiki/Shor%27s_algorithm ), and a lot that are not immediately useful in Wikifunctions. This is why we prefer to present Wikifunctions as a library of functions instead. The difference is subtle, but we hope it makes sense.
We are not against people being motivated by providing a set of standard algorithms through Wikifunctions, but be warned that they might find themselves being somewhat frustrated because the requirements for such a goal will not be prioritized by the development team.
We are happy to discuss this point more, as it helps to sharpen our shared understanding and wording around the goal of Wikifunctions.
2) Why are pretty much all the functions trivial?
I am sure it is because we just started. Public availability of Wikifunctions only opened two months ago, and we have more than 600 functions available. It is to be expected that many of these early functions will be also available in standard libraries, particularly of languages such as Python which are known for having expansive standard libraries - https://xkcd.com/353/
Having said that, you point to the “70% of natural language generation functions”. These are in fact often not covered by standard libraries, and not just wrappers around existing standard library functions.
You can provide more than one implementation in one language, i.e. there being an implementation of SHA-256 using the standard Python hashlib does not mean you cannot implement it in Python without using the function from the library. That’s totally OK. Just no one did it yet.
3) Why are all the functions named something like `Z10124(Z10124K1)`?
They’re not. That’s something we need to improve in the UI. The name of the function with the ZID Z10124 - https://www.wikifunctions.org/view/en/Z10124 - is, in English, SHA-256. Each function has names in different languages. We still have a few spots where the IDs are directly visible. We want to reduce the number of such spots. If you would like to help us with that, you would be very welcome.
4) Why are there so many natural language functions?
Because one of the main goals of Wikifunctions is to provide the functions necessary for Abstract Wikipedia.
5) What is meant by this?
Abstract Wikipedia, as well as why it is built on top of Wikifunctions, is described further here: https://cacm.acm.org/magazines/2021/4/251343-building-a-multilingual-wikiped...
In short: we are aiming to use natural language generation functions in order to create accurate Wikipedia articles in many different languages from a single abstract representation about a topic. These articles can be used to fill current gaps in many language editions of Wikipedia. At the same time, the abstract representation would be maintained only once, but automatically kept up to date in all participating languages.
x) Why do we only have functions for strings, booleans, and lists?
Because we are still working on supporting more types. You can follow our progress through our weekly updates: https://www.wikifunctions.org/wiki/Wikifunctions:Status_updates https://meta.wikimedia.org/wiki/Abstract_Wikipedia/Updates
We are working right now on the features necessary to support our next type, numbers. That should allow for many more algorithms and functions that will need to be created and maintained.
6) What can I do to help it reach its full potential?
Join us! Join us in working on the functions we have, suggesting and creating new functions, creating more tests and implementations. Join our community in our discussions. Join us as a volunteer contributor to the codebase of Wikifunctions itself.
If you need pointers on how to join us, let us know.
I hope this clarifies a few things! Cheers, Denny
On Sat, Feb 10, 2024 at 12:31 AM noah poulton noahpoulton2@gmail.com wrote:
Hello everyone!
I have been a somewhat active user of wikipedia and other wikimedia websites, and a while ago, I found out about wikifunctions. (As well as the Mailing lists!!)
At first, I thought it would be a useful programming tool, a repository of useful functions; however a lot of the functions there are seemingly trivial.
Examples of such "trivial" functions are: substring exists To Uppercase https://www.wikifunctions.org/view/en/Z10018 (as well as "To lowercase")
and most of the other functions "advertised" (for lack of a better term) in the "Functions to try out" section.
Then I go to more functions... https://www.wikifunctions.org/wiki/Wikifunctions:Catalogue and there are a lot of just string and boolean functions (*).
And then there are a lot of "functions" to do with natural languages. Which take up a good (70% at a guess) chunk of all of the functions.
Finally at the bottom of this there are some list based functions, which all seem trivial as well.
So now I want to ask a few questions.
- In the "What Wikifunctions is not
https://www.wikifunctions.org/wiki/Wikifunctions:What_Wikifunctions_is_not" page it says: "Wikifunctions is not an encyclopædia of algorithms". Why not? Would it not be better to have a concentrated, standardised place for useful algorithms (like Dijkstra's or sorting algorithms)? 2. Why are pretty much all of the functions trivial or just use built-in functions/modules? I get why the languages used (Python and Javascript) are the ones that are used (easy to read, high-level, popular languages) however I feel it would be better to use less built-in functions/modules, for example there is this https://www.wikifunctions.org/view/en/Z10127 function for SHA-256 encryption which literally imports a module, which feels like a bad thing to do. 3. Why are all the functions named something like `Z10124(Z10124K1)`? 4. Why so many natural language functions? It seems to me to be many more than all of the actual programming language functions? And, why? 5. In the FAQ, it says: "Wikifunctions is the first step towards building Abstract Wikipedia." what is meant by this? And, once again, why? 6. What can I do to help it reach it's full potential? This feels like it could be used in future to help (newer) programmers, which would require a lot more (complex) functions.
I want to finish this by saying that I do not think this is bad; just extremely unfinished! I think it has lots and lots of potential, it just needs more love from the community, which I hope it gets.
Thanks,
Noah Poulton.
(*) I am aware that in the FAQ https://www.wikifunctions.org/wiki/Wikifunctions:FAQ it says "
At launch:
We have the ability to have functions that work with Strings and
Booleans.
"
With no explanation other than it being a new project.
Wikimedia-l mailing list -- wikimedia-l@lists.wikimedia.org, guidelines at: https://meta.wikimedia.org/wiki/Mailing_lists/Guidelines and https://meta.wikimedia.org/wiki/Wikimedia-l Public archives at https://lists.wikimedia.org/hyperkitty/list/wikimedia-l@lists.wikimedia.org/... To unsubscribe send an email to wikimedia-l-leave@lists.wikimedia.org
Hi Denny!
Thanks for responding to my email. This has been very helpful in understanding the true point of wikifunctions, and I'm glad I have helped in letting you know how to refine the documentations!
1)
I knew wikipedia could already be considered an encyclopedia of algorithms, I just thought it would make sense to have a concentrated wiki for them, but I guess that's just my opinion.
So from what I am reading, I guess the usage of a function in wikifunctions' context is different to a function in a programming (or a mathematical) context, meaning that for wikifunctions, it wants the functions to be more used to create things for the wikimedia project (such as, as you say: encyclopedias, text books, interactive content) instead of being used to help within programming (which may inevitably happen as a happy side effect).
You mention that "there will be many algorithms that we won’t be able to represent given the intentional system design trade-offs", what is meant by these "intentional system design trade-offs". Although it does still make sense as to why you would rather wikifuntions to be a library of functions over a library of algorithms.
2)
I would also have guessed that the reason many functions are fairly trivial due to it being so new. So I would like to ask, is there some sort of list of functions that wikifuntions wants to add that haven't been implemented yet, because I'd love to be able to help with adding more into it!
3)
If the functions being implemented like `Z10124(Z10124K1)` is merely a UI think, I think that I will fix some of them (if that's OK!).
4 & 5)
So does this mean that the many natural language functions are functions for translating between languages? Because from what I can tell this "Abstract wikipedia" means that only one "true article" is written and then translated for the user. And will the "abstract article" be in English, or will it translate from, for example, French to German?
Also if it is for translating between languages, then why have programming functions? Although, from reading the article you sent (https://cacm.acm.org/magazines/2021/4/251343-building-a-multilingual-wikiped...) are they just helpers from getting data from Wikidata?
x)
Thanks for these links, I will joins these!
I think that number types are a good next step!
6)
Yes, if you could give some pointers as to how to join you, that would be great!
Thank you a lot, this has definitely been of help (and don't apologise for the lengthy answer, it's exactly what I wanted).
- Noah Poulton.
On 13/02/2024 17:07, Denny Vrandečić wrote:
Hi Noah,
Thank you for your interest in Wikifunctions! And I agree, I would love to see much more love for WIkifunctions :) You’re asking exactly the right questions, and thank you for raising them here, as it allows us to refine the FAQs and the documentation for Wikifunctions, so that it becomes hopefully clearer for people in the future who make the same journey of discovery that you had.
Answering your questions requires me to make a few subtle differentiations, and I apologize for the lengthy answer.
- Why is Wikifunctions not an “encyclopedia of algorithms”?
The Wikimedia movement already has an encyclopedia of algorithms. It's called Wikipedia.
Wikifunctions is a platform with which the Wikimedia community will, in time, be able to use functions to build encyclopedias, text books, interactive content, and much more. We're not interested in functions for their own sake, or just as a way of documenting interesting code. We're looking for functions that are valuable for the Wikimedia's community's content. Some educational content could indeed be a comparative gallery of different algorithmic approaches to the same broad problem, but that's a limited area of interest compared to natural language generation, data processing, and the general computational needs that our communities have already shown the need for.
Indeed, Wikifunctions makes a distinction between a function – which answers a question – and its implementation – the mechanics of creating an answer for a question. Algorithms are directly relevant for an implementation. The focus of Wikifunctions is on functions, not on implementations and thus algorithms (although the latter are obviously crucially needed for the former).
We are worried that by calling ourselves an “encyclopedia of algorithms” we would create expectations that one should, or can easily, capture a diverse set of algorithms in Wikifunctions. But there will be many algorithms that we won’t be able to represent given the intentional system design trade-offs (e.g. Shor’s algorithm - https://en.wikipedia.org/wiki/Shor%27s_algorithm ), and a lot that are not immediately useful in Wikifunctions. This is why we prefer to present Wikifunctions as a library of functions instead. The difference is subtle, but we hope it makes sense.
We are not against people being motivated by providing a set of standard algorithms through Wikifunctions, but be warned that they might find themselves being somewhat frustrated because the requirements for such a goal will not be prioritized by the development team.
We are happy to discuss this point more, as it helps to sharpen our shared understanding and wording around the goal of Wikifunctions.
- Why are pretty much all the functions trivial?
I am sure it is because we just started. Public availability of Wikifunctions only opened two months ago, and we have more than 600 functions available. It is to be expected that many of these early functions will be also available in standard libraries, particularly of languages such as Python which are known for having expansive standard libraries - https://xkcd.com/353/
Having said that, you point to the “70% of natural language generation functions”. These are in fact often not covered by standard libraries, and not just wrappers around existing standard library functions.
You can provide more than one implementation in one language, i.e. there being an implementation of SHA-256 using the standard Python hashlib does not mean you cannot implement it in Python without using the function from the library. That’s totally OK. Just no one did it yet.
- Why are all the functions named something like `Z10124(Z10124K1)`?
They’re not. That’s something we need to improve in the UI. The name of the function with the ZID Z10124 - https://www.wikifunctions.org/view/en/Z10124 - is, in English, SHA-256. Each function has names in different languages. We still have a few spots where the IDs are directly visible. We want to reduce the number of such spots. If you would like to help us with that, you would be very welcome.
- Why are there so many natural language functions?
Because one of the main goals of Wikifunctions is to provide the functions necessary for Abstract Wikipedia.
- What is meant by this?
Abstract Wikipedia, as well as why it is built on top of Wikifunctions, is described further here: https://cacm.acm.org/magazines/2021/4/251343-building-a-multilingual-wikiped...
In short: we are aiming to use natural language generation functions in order to create accurate Wikipedia articles in many different languages from a single abstract representation about a topic. These articles can be used to fill current gaps in many language editions of Wikipedia. At the same time, the abstract representation would be maintained only once, but automatically kept up to date in all participating languages.
x) Why do we only have functions for strings, booleans, and lists?
Because we are still working on supporting more types. You can follow our progress through our weekly updates: https://www.wikifunctions.org/wiki/Wikifunctions:Status_updates https://meta.wikimedia.org/wiki/Abstract_Wikipedia/Updates
We are working right now on the features necessary to support our next type, numbers. That should allow for many more algorithms and functions that will need to be created and maintained.
- What can I do to help it reach its full potential?
Join us! Join us in working on the functions we have, suggesting and creating new functions, creating more tests and implementations. Join our community in our discussions. Join us as a volunteer contributor to the codebase of Wikifunctions itself.
If you need pointers on how to join us, let us know.
I hope this clarifies a few things! Cheers, Denny
On Sat, Feb 10, 2024 at 12:31 AM noah poulton noahpoulton2@gmail.com wrote:
Hello everyone! I have been a somewhat active user of wikipedia and other wikimedia websites, and a while ago, I found out about wikifunctions. (As well as the Mailing lists!!) At first, I thought it would be a useful programming tool, a repository of useful functions; however a lot of the functions there are seemingly trivial. Examples of such "trivial" functions are: substring exists To Uppercase <https://www.wikifunctions.org/view/en/Z10018> (as well as "To lowercase") and most of the other functions "advertised" (for lack of a better term) in the "Functions to try out" section. Then I go to more functions... <https://www.wikifunctions.org/wiki/Wikifunctions:Catalogue> and there are a lot of just string and boolean functions (*). And then there are a lot of "functions" to do with natural languages. Which take up a good (70% at a guess) chunk of all of the functions. Finally at the bottom of this there are some list based functions, which all seem trivial as well. So now I want to ask a few questions. 1. In the "What Wikifunctions is not <https://www.wikifunctions.org/wiki/Wikifunctions:What_Wikifunctions_is_not>" page it says: "Wikifunctions is not an encyclopædia of algorithms". Why not? Would it not be better to have a concentrated, standardised place for useful algorithms (like Dijkstra's or sorting algorithms)? 2. Why are pretty much all of the functions trivial or just use built-in functions/modules? I get why the languages used (Python and Javascript) are the ones that are used (easy to read, high-level, popular languages) however I feel it would be better to use less built-in functions/modules, for example there is this <https://www.wikifunctions.org/view/en/Z10127> function for SHA-256 encryption which literally imports a module, which feels like a bad thing to do. 3. Why are all the functions named something like `Z10124(Z10124K1)`? 4. Why so many natural language functions? It seems to me to be many more than all of the actual programming language functions? And, why? 5. In the FAQ, it says: "Wikifunctions is the first step towards building Abstract Wikipedia." what is meant by this? And, once again, why? 6. What can I do to help it reach it's full potential? This feels like it could be used in future to help (newer) programmers, which would require a lot more (complex) functions. I want to finish this by saying that I do not think this is bad; just extremely unfinished! I think it has lots and lots of potential, it just needs more love from the community, which I hope it gets. Thanks, Noah Poulton. (*) I am aware that in the FAQ <https://www.wikifunctions.org/wiki/Wikifunctions:FAQ> it says " * At launch: * We have the ability to have functions that work with Strings and Booleans. " With no explanation other than it being a new project. _______________________________________________ Wikimedia-l mailing list -- wikimedia-l@lists.wikimedia.org, guidelines at: https://meta.wikimedia.org/wiki/Mailing_lists/Guidelines and https://meta.wikimedia.org/wiki/Wikimedia-l Public archives at https://lists.wikimedia.org/hyperkitty/list/wikimedia-l@lists.wikimedia.org/message/F4BDVOTH65ITMNJG3TBVC34UL45LY4BR/ To unsubscribe send an email to wikimedia-l-leave@lists.wikimedia.org
Wikimedia-l mailing list --wikimedia-l@lists.wikimedia.org, guidelines at:https://meta.wikimedia.org/wiki/Mailing_lists/Guidelines andhttps://meta.wikimedia.org/wiki/Wikimedia-l Public archives athttps://lists.wikimedia.org/hyperkitty/list/wikimedia-l@lists.wikimedia.org/... To unsubscribe send an email towikimedia-l-leave@lists.wikimedia.org
So does this mean that the many natural language functions are functions for translating between languages? Because from what I can tell this "Abstract wikipedia" means that only one "true article" is written and then translated for the user. And will the "abstract article" be in English, or will it translate from, for example, French to German?
Not quite. Quoting a snippet from one of the links that Denny provided https://cacm.acm.org/magazines/2021/4/251343-building-a-multilingual-wikipedia/fulltext :
The multilingual Wikipedia has two main components: *Abstract Wikipedia where the content is created and maintained in a language-independent notation, and Wikifunctions, a project to create, catalog, and maintain functions. For the multilingual Wikipedia, the most important function is one that takes content from Abstract Wikipedia and renders it in natural language, which in turn gets integrated into Wikipedia proper. *
The key point is that articles in Abstract Wikipedia are in a language-independent notation. Content for readers is then generated from that notation into various natural languages. So this is not translation of articles from one natural language to natural language translation, it is creation of articles from the underlying abstract data independent of any natural language (hence the name "Abstract Wikipedia".
There's an example on that page https://dl.acm.org/cms/attachment/6160b355-5f45-4d3c-a441-51ef2adfd66b/f1.jpg of what an article in this abstract notation might look like. Hopefully that helps to make more sense of the whole idea.
(Disclaimer: I don't work on Abstract Wikipedia or Wikifunctions. I just enjoy following along. So I might not have stated all that in exactly the way Denny would have. If Denny says something different, listen to him and not me.)
Bill Pirkle Staff Software Engineer www.wikimediafoundation.org
On Wed, Feb 14, 2024 at 2:24 AM Noah Poulton noahpoulton2@gmail.com wrote:
Hi Denny!
Thanks for responding to my email. This has been very helpful in understanding the true point of wikifunctions, and I'm glad I have helped in letting you know how to refine the documentations!
I knew wikipedia could already be considered an encyclopedia of algorithms, I just thought it would make sense to have a concentrated wiki for them, but I guess that's just my opinion.
So from what I am reading, I guess the usage of a function in wikifunctions' context is different to a function in a programming (or a mathematical) context, meaning that for wikifunctions, it wants the functions to be more used to create things for the wikimedia project (such as, as you say: encyclopedias, text books, interactive content) instead of being used to help within programming (which may inevitably happen as a happy side effect).
You mention that "there will be many algorithms that we won’t be able to represent given the intentional system design trade-offs", what is meant by these "intentional system design trade-offs". Although it does still make sense as to why you would rather wikifuntions to be a library of functions over a library of algorithms.
I would also have guessed that the reason many functions are fairly trivial due to it being so new. So I would like to ask, is there some sort of list of functions that wikifuntions wants to add that haven't been implemented yet, because I'd love to be able to help with adding more into it!
If the functions being implemented like `Z10124(Z10124K1)` is merely a UI think, I think that I will fix some of them (if that's OK!).
4 & 5)
So does this mean that the many natural language functions are functions for translating between languages? Because from what I can tell this "Abstract wikipedia" means that only one "true article" is written and then translated for the user. And will the "abstract article" be in English, or will it translate from, for example, French to German?
Also if it is for translating between languages, then why have programming functions? Although, from reading the article you sent ( https://cacm.acm.org/magazines/2021/4/251343-building-a-multilingual-wikiped...) are they just helpers from getting data from Wikidata?
x)
Thanks for these links, I will joins these!
I think that number types are a good next step!
Yes, if you could give some pointers as to how to join you, that would be great!
Thank you a lot, this has definitely been of help (and don't apologise for the lengthy answer, it's exactly what I wanted).
- Noah Poulton.
On 13/02/2024 17:07, Denny Vrandečić wrote:
Hi Noah,
Thank you for your interest in Wikifunctions! And I agree, I would love to see much more love for WIkifunctions :) You’re asking exactly the right questions, and thank you for raising them here, as it allows us to refine the FAQs and the documentation for Wikifunctions, so that it becomes hopefully clearer for people in the future who make the same journey of discovery that you had.
Answering your questions requires me to make a few subtle differentiations, and I apologize for the lengthy answer.
- Why is Wikifunctions not an “encyclopedia of algorithms”?
The Wikimedia movement already has an encyclopedia of algorithms. It's called Wikipedia.
Wikifunctions is a platform with which the Wikimedia community will, in time, be able to use functions to build encyclopedias, text books, interactive content, and much more. We're not interested in functions for their own sake, or just as a way of documenting interesting code. We're looking for functions that are valuable for the Wikimedia's community's content. Some educational content could indeed be a comparative gallery of different algorithmic approaches to the same broad problem, but that's a limited area of interest compared to natural language generation, data processing, and the general computational needs that our communities have already shown the need for.
Indeed, Wikifunctions makes a distinction between a function – which answers a question – and its implementation – the mechanics of creating an answer for a question. Algorithms are directly relevant for an implementation. The focus of Wikifunctions is on functions, not on implementations and thus algorithms (although the latter are obviously crucially needed for the former).
We are worried that by calling ourselves an “encyclopedia of algorithms” we would create expectations that one should, or can easily, capture a diverse set of algorithms in Wikifunctions. But there will be many algorithms that we won’t be able to represent given the intentional system design trade-offs (e.g. Shor’s algorithm - https://en.wikipedia.org/wiki/Shor%27s_algorithm ), and a lot that are not immediately useful in Wikifunctions. This is why we prefer to present Wikifunctions as a library of functions instead. The difference is subtle, but we hope it makes sense.
We are not against people being motivated by providing a set of standard algorithms through Wikifunctions, but be warned that they might find themselves being somewhat frustrated because the requirements for such a goal will not be prioritized by the development team.
We are happy to discuss this point more, as it helps to sharpen our shared understanding and wording around the goal of Wikifunctions.
- Why are pretty much all the functions trivial?
I am sure it is because we just started. Public availability of Wikifunctions only opened two months ago, and we have more than 600 functions available. It is to be expected that many of these early functions will be also available in standard libraries, particularly of languages such as Python which are known for having expansive standard libraries - https://xkcd.com/353/
Having said that, you point to the “70% of natural language generation functions”. These are in fact often not covered by standard libraries, and not just wrappers around existing standard library functions.
You can provide more than one implementation in one language, i.e. there being an implementation of SHA-256 using the standard Python hashlib does not mean you cannot implement it in Python without using the function from the library. That’s totally OK. Just no one did it yet.
- Why are all the functions named something like `Z10124(Z10124K1)`?
They’re not. That’s something we need to improve in the UI. The name of the function with the ZID Z10124 - https://www.wikifunctions.org/view/en/Z10124 - is, in English, SHA-256. Each function has names in different languages. We still have a few spots where the IDs are directly visible. We want to reduce the number of such spots. If you would like to help us with that, you would be very welcome.
- Why are there so many natural language functions?
Because one of the main goals of Wikifunctions is to provide the functions necessary for Abstract Wikipedia.
- What is meant by this?
Abstract Wikipedia, as well as why it is built on top of Wikifunctions, is described further here:
https://cacm.acm.org/magazines/2021/4/251343-building-a-multilingual-wikiped...
In short: we are aiming to use natural language generation functions in order to create accurate Wikipedia articles in many different languages from a single abstract representation about a topic. These articles can be used to fill current gaps in many language editions of Wikipedia. At the same time, the abstract representation would be maintained only once, but automatically kept up to date in all participating languages.
x) Why do we only have functions for strings, booleans, and lists?
Because we are still working on supporting more types. You can follow our progress through our weekly updates: https://www.wikifunctions.org/wiki/Wikifunctions:Status_updates https://meta.wikimedia.org/wiki/Abstract_Wikipedia/Updates
We are working right now on the features necessary to support our next type, numbers. That should allow for many more algorithms and functions that will need to be created and maintained.
- What can I do to help it reach its full potential?
Join us! Join us in working on the functions we have, suggesting and creating new functions, creating more tests and implementations. Join our community in our discussions. Join us as a volunteer contributor to the codebase of Wikifunctions itself.
If you need pointers on how to join us, let us know.
I hope this clarifies a few things! Cheers, Denny
On Sat, Feb 10, 2024 at 12:31 AM noah poulton noahpoulton2@gmail.com wrote:
Hello everyone!
I have been a somewhat active user of wikipedia and other wikimedia websites, and a while ago, I found out about wikifunctions. (As well as the Mailing lists!!)
At first, I thought it would be a useful programming tool, a repository of useful functions; however a lot of the functions there are seemingly trivial.
Examples of such "trivial" functions are: substring exists To Uppercase https://www.wikifunctions.org/view/en/Z10018 (as well as "To lowercase")
and most of the other functions "advertised" (for lack of a better term) in the "Functions to try out" section.
Then I go to more functions... https://www.wikifunctions.org/wiki/Wikifunctions:Catalogue and there are a lot of just string and boolean functions (*).
And then there are a lot of "functions" to do with natural languages. Which take up a good (70% at a guess) chunk of all of the functions.
Finally at the bottom of this there are some list based functions, which all seem trivial as well.
So now I want to ask a few questions.
- In the "What Wikifunctions is not
https://www.wikifunctions.org/wiki/Wikifunctions:What_Wikifunctions_is_not" page it says: "Wikifunctions is not an encyclopædia of algorithms". Why not? Would it not be better to have a concentrated, standardised place for useful algorithms (like Dijkstra's or sorting algorithms)? 2. Why are pretty much all of the functions trivial or just use built-in functions/modules? I get why the languages used (Python and Javascript) are the ones that are used (easy to read, high-level, popular languages) however I feel it would be better to use less built-in functions/modules, for example there is this https://www.wikifunctions.org/view/en/Z10127 function for SHA-256 encryption which literally imports a module, which feels like a bad thing to do. 3. Why are all the functions named something like `Z10124(Z10124K1)`? 4. Why so many natural language functions? It seems to me to be many more than all of the actual programming language functions? And, why? 5. In the FAQ, it says: "Wikifunctions is the first step towards building Abstract Wikipedia." what is meant by this? And, once again, why? 6. What can I do to help it reach it's full potential? This feels like it could be used in future to help (newer) programmers, which would require a lot more (complex) functions.
I want to finish this by saying that I do not think this is bad; just extremely unfinished! I think it has lots and lots of potential, it just needs more love from the community, which I hope it gets.
Thanks,
Noah Poulton.
(*) I am aware that in the FAQ https://www.wikifunctions.org/wiki/Wikifunctions:FAQ it says "
At launch:
We have the ability to have functions that work with Strings and
Booleans.
"
With no explanation other than it being a new project.
Wikimedia-l mailing list -- wikimedia-l@lists.wikimedia.org, guidelines at: https://meta.wikimedia.org/wiki/Mailing_lists/Guidelines and https://meta.wikimedia.org/wiki/Wikimedia-l Public archives at https://lists.wikimedia.org/hyperkitty/list/wikimedia-l@lists.wikimedia.org/... To unsubscribe send an email to wikimedia-l-leave@lists.wikimedia.org
Wikimedia-l mailing list -- wikimedia-l@lists.wikimedia.org, guidelines at: https://meta.wikimedia.org/wiki/Mailing_lists/Guidelines and https://meta.wikimedia.org/wiki/Wikimedia-l Public archives at https://lists.wikimedia.org/hyperkitty/list/wikimedia-l@lists.wikimedia.org/... To unsubscribe send an email to wikimedia-l-leave@lists.wikimedia.org
Wikimedia-l mailing list -- wikimedia-l@lists.wikimedia.org, guidelines at: https://meta.wikimedia.org/wiki/Mailing_lists/Guidelines and https://meta.wikimedia.org/wiki/Wikimedia-l Public archives at https://lists.wikimedia.org/hyperkitty/list/wikimedia-l@lists.wikimedia.org/... To unsubscribe send an email to wikimedia-l-leave@lists.wikimedia.org
Hi Bill!
This has definitely been helpful with trying to understand why and how Wikifunctions and the proposed Abstract Wikipedia works! I probably should've read the link a bit more!
The one "true article" that I was referring to was the one which is in the language-indpendant notation.
To be honest, the example of the language-independent notation is a bit confusing (to me at least) but I am sure this is because it is an early mock up of what it may look like and will probably be more refined.
Thanks for clearing some more things up for me! - Noah Poulton
On 16/02/2024 20:43, Bill Pirkle wrote:
So does this mean that the many natural language functions are functions for translating between languages? Because from what I can tell this "Abstract wikipedia" means that only one "true article" is written and then translated for the user. And will the "abstract article" be in English, or will it translate from, for example, French to German?
Not quite. Quoting a snippet from one of the links that Denny provided https://cacm.acm.org/magazines/2021/4/251343-building-a-multilingual-wikipedia/fulltext:
The multilingual Wikipedia has two main components: **/*Abstract Wikipedia* where the content is created and maintained in a language-independent notation, and *Wikifunctions*, a project to create, catalog, and maintain functions. For the multilingual Wikipedia, the most important function is one that takes content from Abstract Wikipedia and renders it in natural language, which in turn gets integrated into Wikipedia proper. /
The key point is that articles in Abstract Wikipedia are in a language-independent notation. Content for readers is then generated from that notation into various natural languages. So this is not translation of articles from one natural language to natural language translation, it is creation of articles from the underlying abstract data independent of any natural language (hence the name "Abstract Wikipedia".
There's an example on that page https://dl.acm.org/cms/attachment/6160b355-5f45-4d3c-a441-51ef2adfd66b/f1.jpg of what an article in this abstract notation might look like. Hopefully that helps to make more sense of the whole idea.
(Disclaimer: I don't work on Abstract Wikipedia or Wikifunctions. I just enjoy following along. So I might not have stated all that in exactly the way Denny would have. If Denny says something different, listen to him and not me.)
Bill Pirkle Staff Software Engineer www.wikimediafoundation.org http://www.wikimediafoundation.org
On Wed, Feb 14, 2024 at 2:24 AM Noah Poulton noahpoulton2@gmail.com wrote:
Hi Denny! Thanks for responding to my email. This has been very helpful in understanding the true point of wikifunctions, and I'm glad I have helped in letting you know how to refine the documentations! 1) I knew wikipedia could already be considered an encyclopedia of algorithms, I just thought it would make sense to have a concentrated wiki for them, but I guess that's just my opinion. So from what I am reading, I guess the usage of a function in wikifunctions' context is different to a function in a programming (or a mathematical) context, meaning that for wikifunctions, it wants the functions to be more used to create things for the wikimedia project (such as, as you say: encyclopedias, text books, interactive content) instead of being used to help within programming (which may inevitably happen as a happy side effect). You mention that "there will be many algorithms that we won’t be able to represent given the intentional system design trade-offs", what is meant by these "intentional system design trade-offs". Although it does still make sense as to why you would rather wikifuntions to be a library of functions over a library of algorithms. 2) I would also have guessed that the reason many functions are fairly trivial due to it being so new. So I would like to ask, is there some sort of list of functions that wikifuntions wants to add that haven't been implemented yet, because I'd love to be able to help with adding more into it! 3) If the functions being implemented like `Z10124(Z10124K1)` is merely a UI think, I think that I will fix some of them (if that's OK!). 4 & 5) So does this mean that the many natural language functions are functions for translating between languages? Because from what I can tell this "Abstract wikipedia" means that only one "true article" is written and then translated for the user. And will the "abstract article" be in English, or will it translate from, for example, French to German? Also if it is for translating between languages, then why have programming functions? Although, from reading the article you sent (https://cacm.acm.org/magazines/2021/4/251343-building-a-multilingual-wikipedia/fulltext) are they just helpers from getting data from Wikidata? x) Thanks for these links, I will joins these! I think that number types are a good next step! 6) Yes, if you could give some pointers as to how to join you, that would be great! Thank you a lot, this has definitely been of help (and don't apologise for the lengthy answer, it's exactly what I wanted). - Noah Poulton. On 13/02/2024 17:07, Denny Vrandečić wrote:
Hi Noah, Thank you for your interest in Wikifunctions! And I agree, I would love to see much more love for WIkifunctions :) You’re asking exactly the right questions, and thank you for raising them here, as it allows us to refine the FAQs and the documentation for Wikifunctions, so that it becomes hopefully clearer for people in the future who make the same journey of discovery that you had. Answering your questions requires me to make a few subtle differentiations, and I apologize for the lengthy answer. 1) Why is Wikifunctions not an “encyclopedia of algorithms”? The Wikimedia movement already has an encyclopedia of algorithms. It's called Wikipedia. Wikifunctions is a platform with which the Wikimedia community will, in time, be able to use functions to build encyclopedias, text books, interactive content, and much more. We're not interested in functions for their own sake, or just as a way of documenting interesting code. We're looking for functions that are valuable for the Wikimedia's community's content. Some educational content could indeed be a comparative gallery of different algorithmic approaches to the same broad problem, but that's a limited area of interest compared to natural language generation, data processing, and the general computational needs that our communities have already shown the need for. Indeed, Wikifunctions makes a distinction between a function – which answers a question – and its implementation – the mechanics of creating an answer for a question. Algorithms are directly relevant for an implementation. The focus of Wikifunctions is on functions, not on implementations and thus algorithms (although the latter are obviously crucially needed for the former). We are worried that by calling ourselves an “encyclopedia of algorithms” we would create expectations that one should, or can easily, capture a diverse set of algorithms in Wikifunctions. But there will be many algorithms that we won’t be able to represent given the intentional system design trade-offs (e.g. Shor’s algorithm - https://en.wikipedia.org/wiki/Shor%27s_algorithm ), and a lot that are not immediately useful in Wikifunctions. This is why we prefer to present Wikifunctions as a library of functions instead. The difference is subtle, but we hope it makes sense. We are not against people being motivated by providing a set of standard algorithms through Wikifunctions, but be warned that they might find themselves being somewhat frustrated because the requirements for such a goal will not be prioritized by the development team. We are happy to discuss this point more, as it helps to sharpen our shared understanding and wording around the goal of Wikifunctions. 2) Why are pretty much all the functions trivial? I am sure it is because we just started. Public availability of Wikifunctions only opened two months ago, and we have more than 600 functions available. It is to be expected that many of these early functions will be also available in standard libraries, particularly of languages such as Python which are known for having expansive standard libraries - https://xkcd.com/353/ Having said that, you point to the “70% of natural language generation functions”. These are in fact often not covered by standard libraries, and not just wrappers around existing standard library functions. You can provide more than one implementation in one language, i.e. there being an implementation of SHA-256 using the standard Python hashlib does not mean you cannot implement it in Python without using the function from the library. That’s totally OK. Just no one did it yet. 3) Why are all the functions named something like `Z10124(Z10124K1)`? They’re not. That’s something we need to improve in the UI. The name of the function with the ZID Z10124 - https://www.wikifunctions.org/view/en/Z10124 - is, in English, SHA-256. Each function has names in different languages. We still have a few spots where the IDs are directly visible. We want to reduce the number of such spots. If you would like to help us with that, you would be very welcome. 4) Why are there so many natural language functions? Because one of the main goals of Wikifunctions is to provide the functions necessary for Abstract Wikipedia. 5) What is meant by this? Abstract Wikipedia, as well as why it is built on top of Wikifunctions, is described further here: https://cacm.acm.org/magazines/2021/4/251343-building-a-multilingual-wikipedia/fulltext In short: we are aiming to use natural language generation functions in order to create accurate Wikipedia articles in many different languages from a single abstract representation about a topic. These articles can be used to fill current gaps in many language editions of Wikipedia. At the same time, the abstract representation would be maintained only once, but automatically kept up to date in all participating languages. x) Why do we only have functions for strings, booleans, and lists? Because we are still working on supporting more types. You can follow our progress through our weekly updates: https://www.wikifunctions.org/wiki/Wikifunctions:Status_updates https://meta.wikimedia.org/wiki/Abstract_Wikipedia/Updates We are working right now on the features necessary to support our next type, numbers. That should allow for many more algorithms and functions that will need to be created and maintained. 6) What can I do to help it reach its full potential? Join us! Join us in working on the functions we have, suggesting and creating new functions, creating more tests and implementations. Join our community in our discussions. Join us as a volunteer contributor to the codebase of Wikifunctions itself. If you need pointers on how to join us, let us know. I hope this clarifies a few things! Cheers, Denny On Sat, Feb 10, 2024 at 12:31 AM noah poulton <noahpoulton2@gmail.com> wrote: Hello everyone! I have been a somewhat active user of wikipedia and other wikimedia websites, and a while ago, I found out about wikifunctions. (As well as the Mailing lists!!) At first, I thought it would be a useful programming tool, a repository of useful functions; however a lot of the functions there are seemingly trivial. Examples of such "trivial" functions are: substring exists To Uppercase <https://www.wikifunctions.org/view/en/Z10018> (as well as "To lowercase") and most of the other functions "advertised" (for lack of a better term) in the "Functions to try out" section. Then I go to more functions... <https://www.wikifunctions.org/wiki/Wikifunctions:Catalogue> and there are a lot of just string and boolean functions (*). And then there are a lot of "functions" to do with natural languages. Which take up a good (70% at a guess) chunk of all of the functions. Finally at the bottom of this there are some list based functions, which all seem trivial as well. So now I want to ask a few questions. 1. In the "What Wikifunctions is not <https://www.wikifunctions.org/wiki/Wikifunctions:What_Wikifunctions_is_not>" page it says: "Wikifunctions is not an encyclopædia of algorithms". Why not? Would it not be better to have a concentrated, standardised place for useful algorithms (like Dijkstra's or sorting algorithms)? 2. Why are pretty much all of the functions trivial or just use built-in functions/modules? I get why the languages used (Python and Javascript) are the ones that are used (easy to read, high-level, popular languages) however I feel it would be better to use less built-in functions/modules, for example there is this <https://www.wikifunctions.org/view/en/Z10127> function for SHA-256 encryption which literally imports a module, which feels like a bad thing to do. 3. Why are all the functions named something like `Z10124(Z10124K1)`? 4. Why so many natural language functions? It seems to me to be many more than all of the actual programming language functions? And, why? 5. In the FAQ, it says: "Wikifunctions is the first step towards building Abstract Wikipedia." what is meant by this? And, once again, why? 6. What can I do to help it reach it's full potential? This feels like it could be used in future to help (newer) programmers, which would require a lot more (complex) functions. I want to finish this by saying that I do not think this is bad; just extremely unfinished! I think it has lots and lots of potential, it just needs more love from the community, which I hope it gets. Thanks, Noah Poulton. (*) I am aware that in the FAQ <https://www.wikifunctions.org/wiki/Wikifunctions:FAQ> it says " * At launch: * We have the ability to have functions that work with Strings and Booleans. " With no explanation other than it being a new project. _______________________________________________ Wikimedia-l mailing list -- wikimedia-l@lists.wikimedia.org, guidelines at: https://meta.wikimedia.org/wiki/Mailing_lists/Guidelines and https://meta.wikimedia.org/wiki/Wikimedia-l Public archives at https://lists.wikimedia.org/hyperkitty/list/wikimedia-l@lists.wikimedia.org/message/F4BDVOTH65ITMNJG3TBVC34UL45LY4BR/ To unsubscribe send an email to wikimedia-l-leave@lists.wikimedia.org _______________________________________________ Wikimedia-l mailing list --wikimedia-l@lists.wikimedia.org, guidelines at:https://meta.wikimedia.org/wiki/Mailing_lists/Guidelines andhttps://meta.wikimedia.org/wiki/Wikimedia-l Public archives athttps://lists.wikimedia.org/hyperkitty/list/wikimedia-l@lists.wikimedia.org/message/LKCABXPQNUHUAT5DMGXXOCK7FHPYEEGI/ To unsubscribe send an email towikimedia-l-leave@lists.wikimedia.org
_______________________________________________ Wikimedia-l mailing list -- wikimedia-l@lists.wikimedia.org, guidelines at: https://meta.wikimedia.org/wiki/Mailing_lists/Guidelines and https://meta.wikimedia.org/wiki/Wikimedia-l Public archives at https://lists.wikimedia.org/hyperkitty/list/wikimedia-l@lists.wikimedia.org/message/EJ6NQ5LY5GPQS7ZIAZEZX7WQUABTM6ZO/ To unsubscribe send an email to wikimedia-l-leave@lists.wikimedia.org
Wikimedia-l mailing list --wikimedia-l@lists.wikimedia.org, guidelines at:https://meta.wikimedia.org/wiki/Mailing_lists/Guidelines andhttps://meta.wikimedia.org/wiki/Wikimedia-l Public archives athttps://lists.wikimedia.org/hyperkitty/list/wikimedia-l@lists.wikimedia.org/... To unsubscribe send an email towikimedia-l-leave@lists.wikimedia.org
wikimedia-l@lists.wikimedia.org