|Notes, drafts, discussions|
|Ensaumples & mockups|
- Wikifunctions's first goal is ti support the Wikimedia projects, but it will support goals furth that, juist as wi Wikidata. This is a description o Wikifunctions furth Wikipaedia.
Wikifunctions is a open repository o code that any body can uise an contribute ti.
Aw page in Wikifunctions represents a function. A function haes a description, a leet o parameters, test cases, a leet o implementations in different programmin leids, an further metadata. The implementations can be reuised in ither software projects (private apps or scripts), be caad an executit online (either juist in the browser or in a cloud environment or Jupyter or PAWS notebeuks), composit ti achieve mair complex functionality, signed, analyzed or validatit, an muckle mair.
Wikifunctions is a project in the spirit o Wikipaedia, Wikidata, Wiktionary, an ithers, an it allous contributors frae aw ower the warld ti create an maintain a librar o functions, which can be uised bi anybody for any purpose. Aw function can be supportit bi multiple implementations in different programmin leids, test cases, pre- an post-conditions, documentation, metadata in form o runtime estimates an complexity guarantees for the different implementations, etc. Uisers micht caa a function directly on the Wabsteid, or frae thair ain code or applications, frae a command-line interface, or a local app. The function mebbe executit locally in the browser, in the cloud, or locally an embedded 'ithin the uiser's application.
Wikifunctions is intendit ti create baith a weel-defined common catalogue o functions which can be widely reuised and also a environment whaur functions can be quickly combined an executit on the flee. Wikifunctions aims ti mak life easier for developers, wha can rely on this repository lik on any external librar, an for end-uisers wha can caa functions as needit, in a wey that is currently yinlie available wi a verra uneven coverage throu specific wabsteids wha ar aften written in the form of 1990s wabsteids wi Java applets.
All functions ar pure, in order ti enable a secure sandboxed execution. Also, aw implementation can be annotatit wi metadata an cryptographically signed. End-uisers can select an audit which implementation o ilka function ti uise, dependin on thair available hardware resources an wab o trust settins.
Wikifunctions will allou easy access ti muckle knawledge bases such as Wikidata, but also ti binary input an output files. It is gey possible ti upload a image as a input file an return analysis results such as whit is depictit on the image, or hou mony different colours the image haes – or a different binary, e.g. in a different format. This will be made available ti warkflows on Wikimedia Commons.
Wikifunctions continues the tradition o movin mair computation, which haes usually happened on the command line or wi apps bi mair computer savvy computer uisers, ti the Wab an democratise access ti functionality that wisna available afore. At the same time, it will increase the productivity o developers aa wey as thay can juist uise a muckle librar o code instead o relyin on properly copy an pastin answers frae StackOverflow.
Unlik in Wikipaedia, contributors will mostly create new implementations for a function instead o updatin existin functions. The implementations can be automatically testit against the given tests, against ilka ither, an further analysed.
Implementations can be written in a nummer o different programmin leids, an yet ti dow ti caa functions implemented in ither programmin leids. The execution ingine can smoothly (althou no necessarily wi the heichest possible performance) operate in different leids. Althou in maist cases there is a muckle performance boost bi composing functions 'ithin a single programmin leid, there is no requirement ti dae sae. In mony cases, the speed o development an the developer's time will be mair valuable nor the additional computer cycles spent in the execution ingine.