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
(
)
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-wikipe…
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(a)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(a)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(a)lists.wikimedia.org
_______________________________________________
Wikimedia-l mailing list --wikimedia-l(a)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.o…
To unsubscribe send an email towikimedia-l-leave(a)lists.wikimedia.org