Here's an example function which shows that they can have multiple implementations (click the Details tab) - in this case there's an implementation in Python and one in JavaScript: https://www.wikifunctions.org/view/en/Z10070
> In particular, according to Keet, Grammatical Framework notably lacks the flexibility to handle certain aspects of Niger-Congo B languages’ morphology. The traditional answer to this kind of critique would be to say, “Let’s just organize an effort to work on Grammatical Framework.” The design philosophy behind Abstract Wikipedia is to make as few assumptions about a contributor’s facility with English and programming experience as possible. Organized efforts around Grammatical Framework (or otherwise) are not a bad idea at all. They may well solve some problems for some languages. However, the contributor pools for under-resourced languages are already small. Demanding expertise with specific natural languages like English and also specific programming paradigms contracts those pools still further.
and
> A solution designed by a small group of Westerners is likely to produce a system that replicates the trends of an imperialist English-focused Western-thinking industry. Existing tools tell a one-voice story; they are built by the same people (in a socio-cultural sense) and produce the same outcome, which is crafted to the needs of their creators (or by the limits of their understanding). Tools are then used to build tools, which will be again used to build more tools; step by step, every level of architectural decision-making limits more and more the space that can be benefitted by these efforts.
and
> The evaluation acknowledges little to no value to the effort that Wikifunctions is investing in being multilingual in terms of natural languages, even for implementations. It is unclear as to how a solution that is built on top of (the existing Lua-based Scribunto scripting system) would succeed in being multilingual, and not just be an English project which the other languages may be invited to use, if they understand it, but would be mostly blocked from contributing to.
The plan seems to actually be auto replace the Z values in the editor views with human readable values, which will automatically use the contributors preferred language.
This of course only works if all functions, and all parameters, etc have had labels submitted for your language.
They indicate wanting to cater to cultures that might not use a base 10 representation of numbers, so would presumably autotranforms numeric literals for people from those cultures.
They are worried about programming languages being englished based, but seem to think that similar autotranslating of keywords is a good enough approach, so that is why they NEED to support multiple languages, so that they might hypothetically support some language that supports base 60 math and keywords based on [insert language here].
Plenty of room for abuse here, as it would be really easy to edit functions being used for text generation of less popular languages to output offensive text, for things not tested by the test cases. And nobody except people who know that language will be able to tell for sure that this is not a legit contribution.
Then of course people will by trying to code sandbox and then container breaks, cryptominers, etc. I expect a giant game of whack-a-mole between the project and the admins.
On that note even ignoring the abuse, or people trying to utilize the service for free compute resources, I can see the costs of this service becoming substantial really quick. Just from things like legitimate contributions of test cases, and new language implementations, and running the test cases again all the different implementations.
> And nobody except people who know that language will be able to tell for sure that this is not a legit contribution
This is already the case with wikipedia, there was the recent story that most of the Scots wikipedia was written by someone who does not know the language, in the style of "English, as she is written".
Which solves about zero problems and creates many. Let's stop this woke nonsense and instead focus on improving english speaking ability of the world. Having a common language everyone understands only has benefits.
When I think of 'Western culture', I think of the culture that developed in Protestant Europe and English-speaking America from the early modern period onwards, and aspects of which are diffusing through the rest of the world. I agree that it's a bit too broad of a characterisation to really be of use, but it is a thing.
For many, many centuries. It's not anything from the last few years, nor is it "we against them".
The West is essentially all the world's nations whose cultures are derived from or greatly influenced by Latin speakers and Judeo-Christian values, which traces its influence back to Ancient Rome.
It's a very valuable and important thing to recognize, because things that people in the US and Europe often implicitly assume are human universals, aren't. They're only universal across the West, and not found in e.g. China or India.
So it's not creating division. It's recognizing difference that already exists, but that not everyone is always already aware of, because we tend to exist in our own little bubbles.
A solution designed by a small group of Westerners is likely to produce a system that replicates the trends of an imperialist English-focused Western-thinking industry.
WTF. Virtue-signaling identity politics has no place in computer science.
> WTF. Virtue-signaling identity politics has no place in computer science.
The fact that I couldn't type my name for decades in most IT systems because of the charsets used is not "virtue-signaling" to complain about, thank you.
You could just use whatever romanized version of your name is the standard for your language and writing system without any real down side except EEWWWWW ANGLOCENTRISM NOOOOO. That way people from other cultures around the world (who generally don't have trouble learning the latin alphabet in addition to their own) will be able to do something with your name rather than seing random symbols they can't even attempt to pronounce, won't remember and certainly won't be able to re-type.
When in Rome, do as the Romans (and use ASCII). Please don't be a dick and DDOS the Romans' IT systems with needing to support the vagaries of every foreign dialect in the world.
I'm not in Rome. I'm trying to book an airplane ticket in my country. But it's not possible to write my name, even though my name contains letters found in our alphabet.
> with needing to support the vagaries of every foreign dialect in the world
Then don't impact the Roman software on people outside Rome. Basically the definition of imperialism.
Edit:
> I think the Internet was a better place before Eternal September, when it was the exclusive precinct of relatively affluent white male nerds. (...) I think elitism is right.
Ah, I see this from you in another thread. So you're basically against other cultures and groups being present online. No wonder you want everyone to conform to your definition of how things should be. Too bad the ship has sailed, we're here.
You (or others you depend on) are choosing to use "Roman" software.
> I'm trying to book an airplane ticket in my country. But it's not possible to write my name, even though my name contains letters found in our alphabet.
It is possible to write your name in a way that lets the airline and airports identify you, which is what matters. It might not be possible to write it exactly the way you'd like but that's not causing any real issues except making you upset.
It's also pretty ironic to complain about having to deal with other cultures for (presumably) international travel.
> Then don't impact the Roman software on people outside Rome. Basically the definition of imperialism.
"Anglocentric" software isn't forced on anyone. You can campaing for your country to disregard all English writings and re-discover all that knowledge from first principles instead if you'd prefer. But that would make you much worse off, wouldn't it?
English-first computing dominates precisely because not having to deal with localization (or at least not initially) lets people focus on what actually matters to make work. Don't like it? Write your own software instead of complaining that relying other people's work means you sometimes have to adapt a bit.
> So you're basically against other cultures and groups being present online.
Plenty of people from other cultures (including me) have no problem with learning English to interact with the world and tap into the vast pool of English knowledge and tools. Language != Culture.
> Too bad the ship has sailed, we're here.
So is English as the lingua franca of the computing age.
Hate to be the one to break it to you but there's no such thing as "apolitical" technology. Everything designed by humans has and always will have some kind of ideological or political underpinnings or context. Just closing your ears and pretending that everyone is neutral and objective is foolish.
> A solution designed by a small group of people is likely to produce a system that replicates trends specific to this group and are not universal enough for our need.
What? It's a true statement, but it has little to do with computer science, but does to do with software engineering. Did the word "imperialist" trigger reflexive typing?
In my opinion this project is about 20 layers too abstract to actually produce working and useful software. But it's not virtue signaling if they're actually trying to do the thing, is it? Virtue signaling is when you act like you're doing something virtuous and then don't.
If they're trying to create a programming syntax that maps to every known human language, good on them. They'll probably fail, but it's not really a stupid concept, especially when your organization's purpose is to spread knowledge to the whole world.
It’s all a bit silly, any global encyclopedia is almost imperialist by definition. Organizing and categorizing knowledge in a centralized way is at its roots an imperialist project (see the history of science and its development alongside the rise of the British power for example). So might as well pick the best tools for the job (English and well known programming languages). Doing otherwise makes it seem like someone didn’t completely think through their motivations. Non-imperialists don’t build encyclopedias of global knowledge. Let local stay local.
No. A global encyclopaedia might be global, but does not have to be imperialist, if the control over the content and the ability to contribute to the encyclopaedia is not limited to imperial structures.
Unless you equate "global" with "imperialist", in which case your statement is true by definition. But then everything that is done on a global scale is necessarily imperialist, and then one of the two terms does not seem useful anymore.
> In my opinion this project is about 20 layers too abstract to actually produce working and useful software. But it's not virtue signaling if they're actually trying to do the thing, is it? Virtue signaling is when you act like you're doing something virtuous and then don't.
If one belives avoiding well-known tools and (english-based) programming languages is likely to actually make it easier for contributors using those languages to contribute to Wikipedia in those languages, then it's real. If one believes that this is not actually going to result in more usable tools, and the intention of avoiding tools from English-speaking Westerners is signalling rather than actually getting better results, then it's virtue signalling.
But they actually wrote that in English (while being fellows of Google - one of the most imperial corporations in existence - as I understand) and are sure to use a lot of existing - and English-based - tools to implement it. I mean, if they abandoned the whole Western English-based foundation they rest on - including Von Neumann architecture for computers they use, for example - and started building it from physical laws back up (oh wait, physical laws also mostly discovered by Westerners and they probably learned them in English, which already imbued them with the imperialist perspective) then maybe it could be recognized as a honest - if mind-bogglingly misguided - effort to expunge the presumed imperialist bias. Since it is never going to happen, it can not be anything but virtue signalling.
By that account, above discussion of what is and isn't virtue signalling is itself virtue signalling--mere platitudes rather than contributing to actionable outcomes.
I'd think us, or any foundation for that matter, should be able to lay out an agenda before outcomes are achieved, how (un)realistic they may be. A dot on the horizon to aim for, not necessarily achievable but a heading at least.
> By that account, above discussion of what is and isn't virtue signalling is itself virtue signalling--mere platitudes rather than contributing to actionable outcomes.
If you're just saying it for the upvotes, yes. If you're actually trying to get people to shift their efforts towards more effective things (such as translation support libraries that don't insist on avoiding English at every level), then no, it's legitimate effort.
> I'd think us, or any foundation for that matter, should be able to lay out an agenda before outcomes are achieved, how (un)realistic they may be. A dot on the horizon to aim for, not necessarily achievable but a heading at least.
I don't see how this is caring. This is dismissing and invalidating the work of large class of people (Westerners and English-speaking people) by applying a jargon label "imperialist" (what does that even mean here? That they are about to don pith helmets and rush out to re-conquer India?) and implying that this label automatically makes their contributions less worthy - to which implication you just added the implication that they are presumed to be incapable of caring about other people. Does look like particularly helpful for anything, rather quite alienating.
I always wonder why can't one choose to be nice to people without using divisive language, emotionally charged accusatory jargon (like "imperialist"), devaluing somebody's sincere contributions and framing the situation in group vs. group terms? Like, if the point is that you choose to be nice to people, why can't you start with being, you know, nice to people?
For example, if the same sentence was formulated as something like "expanding the contributor community by including people knowledgeable and proficient in languages not commonly spoken in the West and soliciting feedback from such contributors would greatly expand the appeal of the resulting solution and make it more widely applicable" - wouldn't that sound more nice to people?
This is brilliant! It serves as a single source of truth, builds on first principles, and acts like a universal test case.
Just as each Wikipedia article is about one "thing", each Wikifunction performs one job. Once you know a Wikifunction works reliably, you know every other Wikifunction which depends on it can theoretically trust its output.
This project seems really exciting, especially in the context of AI. Very cool and I hope to see it flourish.
Yes the whole goal with this is to extend the general notion of FaaS (Functions as a Service) into something that can work seamlessly, both within their own projects and across the Web. Similar to what Wikidata is already doing for common real-world entities and concepts. Of course, the devil is in the details with these kinds of things; it's likely that implementations of even the most basic functions will behave in subtly different ways across languages. Their testing framework is supposed to mitigate this but it looks quite ad-hoc.
I assume it's intentional, so that source code can be stored in a form that's independent of natural language. They can just call to a LSP backend for the implementation language to rename identifiers in the source code before showing them to the user, much like Wikidata does today with its semantic content.
I think you're about the goal, but in practice it looks more line they are making code that is readable in 0 languages instead of at least 1 language.
It looks like in practice people are unsurprisingly coming up with workarounds for this by adding some boilerplate code, these are the first two lines from the python example above (also all the local variables in the function are in English too):
def Z10591(Z10591K1, Z10591K2):
word, is_ra_plural = Z10591K1, Z10591K2
And what happens when they try to implement a language that doesn't allow function names like these? Or has multiple possible syntaxes for a function? Or differentiates between methods, lambdas, procs, etc? Or straight up doesn't have functions but is still very capable of solving the problem?
It depends on language, library, and which substring function. And in some languages, like Bash IIRC, some functions and scripts handle differently `foo=""` (variable foo is set to empty string) and `foo=` (variable foo is not set).
As long as you consider cups of water and cups of milk be different objects (i.e. cups are not interchangeable, and you can't just throw out milk and fill it with water) it is a completely sensible statement.
For example, in Jewish religious families, there are often two sets of kitchen utensils - for meat products and for dairy/other products, since mixing those makes the food unfit for consumption by a religious person. In this situation, if you said "I have an empty meat pot" and somebody answered you "No, I need an empty milk pot, give me another one!" - it would make a total sense. Even though both pots are empty, they are not the same kind of pot for their users.
Similarly, if a string is a sequence of certain objects (characters, bytes, runes, graphemes, whatever you please) then empty sequence of such objects is not the same as an empty sequence of other objects - you could append a character to it, but you can't append a database connection to it, for example, and expect something sane to happen.
So yes, "empty cup of water" is exactly what it is, because in most programming languages, empty cups are not all alike. In some languages, there are sequence types that are agnostic towards their elements, and then an empty sequence of that kind wouldn't be a sequence of anything - it'd be just a separate entity. But strings rarely are implemented this way, for many practical reasons.
You entirely missed the point of the example. The point is not that you are supposed to embrace their beliefs. The point is that object that are all alike in one system can be very different in another, and if you assume they are all alike, you will misunderstand what is going on. Such as, if you assume that empty string is just "nothing", you will misunderstand how strings - and in general, typed sequences - work in most programming languages.
It's like a bad student that when the teacher says "assume the train departs from the station at 9 am", to formulate a math problem, objects "but the train actually departs from our station at 10am!". Way to miss the point!
So, but wait... Is the genitive "of water" functioning like an assertion? "All of the contents of the cup are water."
And wouldn't that assertion, in the case where the cup has no contents, be a vacuous truth?[0]
In other words, a cup of water, if it actually has water in it, cannot also be a cup of magma. But there's nothing stopping an cup with no contents at all being "of" both.
As long as your language includes an empty string concept, why not? Similarly, is an empty array a subarray of any array? And on the other end, can you have an empty number boolean?
But then if empty string are part of a string at what index do you find an empty string within a string you cannot dereference the space between letters
And a much more interesting example which helps illustrate why Wikipedia built this: "genitive case of Bangla word in Python": https://www.wikifunctions.org/view/en/Z10594