Wikifuncties:Over
- Wikifuncties heeft als primaire doel om de verschillende Wikimedia-projecten te steunen, maar het heeft nog andere doelen, net zoals Wikidata. Hieronder staat een beschrijving van Wikifuncties buiten Wikipedia.
- Missieverklaring
- Een Wikimedia-project voor iedereen om samen een bibliotheek van code-functies te creëren en te onderhouden om de andere Wikimedia-projecten en meer te steunen, zodat iedereen deze mag aanroepen en hergebruiken in de natuurlijke en programmeringstalen van de wereld.
Wikifuncties is een open databank voor code-functies die iedereen mag gebruiken en waaraan iedereen mag bijdragen.
Wikifuncties bestaat uit functies. Een functie kan beschrijvingen in meerdere talen hebben met een lijst van parameters, testen, een lijst implementaties in verschillende programmeertalen, en verdere metagegevens (in meerdere talen, ook die door Wikimedia ondersteund worden). De implementaties mogen worden hergebruikt voor andere software-projecten (privé-apps of scripts) of online worden gehaald en uitgevoerd (gewoon in de browser of in een cloudomgeving of in Jupyter[1] of PAWS[2] notebooks), samengesteld om complexere functionaliteit te bereiken, ondertekend, geanalyseerd of gevalideerd en nog veel meer.
Wikifuncties is een project in de geest van Wikipedia, Wikidata, WikiWoordenboek en andere en maakt mogelijk dat bijdragers over de hele wereld een meertalige bibliotheek voor code-functies mogen creëren en onderhouden, die door iedereen voor iedere zaak mag gebruikt worden. Iedere functie mag ondersteund worden door meerdere implementaties in verschillende programmeertalen, testen, voor- en nacondities, documentatie, metagegevens in de vorm van looptijdschattingen en complexiteit-garanties voor verschillende implementaties, enz. Gebruikers mogen een functie direct op de website gebruiken, of in de eigen code of applicaties, van een opdrachtregelinterface, of van een lokale app. De functie mag lokaal uitgevoerd worden in de browser, in de cloud, of lokaal en ingebed binnen de applicatie van de gebruiker.
Wikifuncties is bedoeld om een een algemene catalogus van goedgekeurde functies te creëren die massaal hergebruikt kan worden en ook een omgeving bouwen waar functies meteen gecombineerd en uitgevoerd kunnen worden. Wikifuncties is bedoeld om het makkelijker te maken voor software-ontwikkelaars en die kunnen op deze databank vertrouwen zoals op elke externe bibliotheek, en voor eindgebruikers die naar behoefte functies kunnen gebruiken, op een manier die momenteel alleen beschikbaar is met een zeer ongelijke dekking via specifieke websites die vaak zijn geschreven in de vorm van websites uit de jaren negentig met Java-applets.
Alle functies zijn zuiver om een veilige uitvoering zoals in een zandbak mogelijk te maken. Bovendien kan iedere implementatie geannoteerd worden met metagegevens en cryptografisch ondertekend worden. Eindgebruikers wordt in staat gesteld te selecteren en te verifiëren welke implementatie van elke functie ze gebruiken, afhankelijk op hun beschikbare hardware en web- of vertrouwelijkheidsinstellingen.
Wikifuncties zal toegang tot grote informatiebanken zoals Wikidata en zelf tot binaire in- en uitvoerbestanden gemakkelijker maken. Het is volledig mogelijk om een afbeelding als invoerbestand te uploaden en resultaten te analyseren zoals wat op de afbeelding staat, of hoeveel verschillende kleuren ze heeft - of een andere binair gegeven, bijvoorbeeld in een andere formaat. Dit zal beschikbaar worden gemaakt voor workflows op Wikimedia Commons.
Wikifuncties zet de traditie voort van het verplaatsen van meer berekeningen, wat meestal gebeurde op de opdrachtregel of met apps door meer computerliefhebbers, naar het web en het democratiseren van de toegang tot functionaliteit die voorheen niet beschikbaar was. Tegelijkertijd zal het de productiviteit van software-ontwikkelaars overal ter wereld verhogen, omdat ze gewoon een grote bibliotheek met code kunnen gebruiken in plaats van te vertrouwen op het kopiëren en plakken van antwoorden uit websites als StackOverflow.
In tegenstelling tot Wikipedia zullen bijdragers meestal nieuwe implementaties voor een functie creëren in plaats van bestaande functies bij te werken. De implementaties kunnen automatisch worden getest met de gegeven testen, tegenover elkaar, en verder worden geanalyseerd.
Implementaties kunnen in een aantal verschillende programmeertalen geschreven worden, en ze kunnen functies gebruiken die in andere programmeertalen zijn geïmplementeerd. De uitvoeringsengine kan soepel (hoewel niet noodzakelijkerwijs met de hoogst mogelijke prestaties) in verschillende talen werken. Hoewel er in de meeste gevallen sprake is van een grote prestatieverbetering door het samenstellen van functies binnen één enkele programmeertaal, is er geen vereiste om dit te doen. In veel gevallen zullen de ontwikkelingssnelheid en de tijd van de ontwikkelaar waardevoller zijn dan de extra computercycli die in de uitvoeringsengine worden doorgebracht.