The on-wiki version of this newsletter can be found here:
https://meta.wikimedia.org/wiki/Abstract_Wikipedia/Updates/2021-05-28
We have talked a lot in the past about what Wikifunctions aims to become: a
Wikimedia project for everyone to collaboratively create and maintain a
library of code functions to support the Wikimedia projects and beyond, for
everyone to call and re-use in the world's natural and programming
languages.
Today, in the tradition of the influential WP:NOT policy on English
Wikipedia <https://en.wikipedia.org/wiki/Wikipedia:What_Wikipedia_is_not>,
we publish an essay on what Wikifunctions aims not to be. WP:NOT was
started back in 2001, and was an important influence on the early
development of the English Wikipedia - evidenced by the fact that more than
2 million links to that page exist within the English Wikipedia.
So, without further ado — what Wikifunctions is not:
*Wikifunctions is not an encyclopædia of algorithms* in the sense that we
will have pages for famous and not-so famous algorithms such as Euclid’s
<https://en.wikipedia.org/wiki/Euclidean_algorithm>, Newton’s
<https://en.wikipedia.org/wiki/Newton%27s_method>, or Dijkstra’s algorithm
<https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm>, aiming to represent
all existing algorithms faithfully and in their historical context. Yes, we
expect to have a function for the greatest common divisor
<https://en.wikipedia.org/wiki/Greatest_common_divisor> (GCD) of two
integers. And there might or might not be one or more implementations which
are based on Euclid’s algorithm to calculate the GCD. But Wikifunctions
would not be incomplete if it didn’t, and if, instead, we had alternative
algorithms to calculate the GCD. If you are looking for that, many
Wikipedias are actually great resources
<https://en.wikipedia.org/wiki/List_of_algorithms>.
Unlike an encyclopedic overview of existing algorithms, Wikifunctions will
also invite original work. We will not be restricted to functions that have
been published elsewhere first, and we do not require for every function
and implementation to be based on previously published work. Wikifunctions,
much like Wikibooks and very unlike Wikipedia, will be open to novel
contributions. The main criteria for implementations will be: under which
conditions can we run a given implementation, and what resources is it
expected to take?
*Wikifunctions is not an app development site*. We do not expect to make it
possible to create full-fledged, stand-alone apps within Wikifunctions -
there will be no place to store state, we don’t aim to allow calling
external APIs or directly cause changes to other sites, and we don’t aim to
package up apps with icons and UX, etc.. We absolutely expect Wikifunctions
to be a very useful resource for app developers, and I can very much
imagine apps that are basically wrappers around one or more functions from
Wikifunctions, but these would still need code and other assets which
wouldn’t be part of Wikifunctions. We are not competing in the area of
no-code or low-code development sites.
*Wikifunctions is not a code hosting service*. Yes, sure, Wikifunctions
will host code, but not for whole projects, merely for individual
functions. There won’t be libraries, apps, or services developed on
Wikifunctions with bug-trackers, forums, etc.. There won’t be a Web-based
version control system such as mercurial or git running against
Wikifunctions. Again, we hope that there will be libraries, apps, and
services that will rely on functions available in Wikifunctions, but they
would be developed on a different site, such as Gerrit, GitHub, or GitLab.
*Wikifunctions is not a programming language*, nor trying to evangelise a
particular language. In fact, Wikifunctions will allow for functions to be
implemented in a multitude of programming languages. The possibility to
compose functions together to create higher level functions may look a
little bit like a new programming language, but it will be extremely
limited compared to most other programming languages, since we only allow
for nested function calls and that’s it.
*Wikifunctions is not an Integrated Development Environment*. We won't
provide you with an interface for creating and developing software
projects, interfacing with build, testing, and source control systems.
*Wikifunctions is not a question-and-answer Website*. We are not competing
with StackOverflow and similar Websites, where a developer would ask how to
achieve a certain task and have community members discuss and answer the
question. We won’t contain code snippets to help answer the question, but
we will organize code within our Website to enable the evaluation of
functions within a library of functions.
*Wikifunctions is not a cloud computing platform*. We do not provide
computing resources and access to services and APIs so that you can run
your computational needs on our platform, either for money or for free. Use
of Wikifunctions's evaluation platform is to improve access to knowledge
for everyone.
*Wikifunctions is not a code snippet Website*. We are not competing with
sites such as gist, or sites such as
rosettacode.org,
esolangs.org, or
helloworldcollection.de, where code snippets are collected either to share
them quickly with others or around a specific theme in different
programming languages. The reason for having functions be implemented in
multiple programming languages is not to contrast them and compare them for
the education of the users of Wikifunctions, but in order to be able to
efficiently and effectively evaluate functions in different environments
and to improve the reliability of Wikifunctions as a whole.
*Wikifunctions is not a code education platform*. We are not in the
business of teaching people how to code, the material in Wikifunctions will
not be laid out in a pedagogical order, and we also won’t make sure to
comprehensively cover all topics important for coding. In fact, we aim for
Wikifunctions to be usable for people who don’t know how to code and who
don’t need to learn how to code to use most of Wikifunctions effectively.
Though the Wikifunctions community may well help each other in sharing best
practices, style guides, and tips on how to use the site in different
languages, these will be aimed at the purpose of serving the world's
knowledge.
Wikifunctions is, as far as we can tell, a new kind of Website, aiming for
a new community. We very much hope to work together with many of the tools,
sites, communities, and kind of systems we have mentioned above: we want to
play together with IDEs, with cloud computing platforms, with app
development sites, and many more of the systems and tools we mentioned —
but we aim to be a novel thing and we hope to shape a new unique space out
for us: A Wikimedia project for everyone to collaboratively create and
maintain a library of code functions to support the Wikimedia projects and
beyond, for everyone to call and re-use in the world's natural and
programming languages.
--
In related news, the recording of the keynote about Abstract Wikipedia and
Wikifunctions at this year’s Web Conference is now available online:
http://videolectures.net/www2021_vrandecic_knowledge_equity/