This page is currently a draft. More information pertaining to this may be available on the talk page.Translation admins: Normally, drafts should not be marked for translation.
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 tools, sites, communities, and kind of systems that are out there: we want to play together with IDEs, with cloud computing platforms, with app development sites, and many more.
But we also 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.
So, without further ado, let's us also explore what Wikifunctions is not.
Wikifunctions is not an encyclopædia of algorithms
This means that we will not have pages for famous and not-so famous algorithms such as Euclid's, Newton's, or Dijkstra's 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 (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.
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 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
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 is trying to evangelise a particular language
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 (IDE)
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.