Wikifunctions/Översikt

From Wikifunctions
This page is a translated version of the page Wikifunctions:About and the translation is 100% complete.
Wikifunctions första mål är att stödja Wikimedia-projekten, men kommer även främja vidare målsättningar, precis som Wikidata gör. Detta är en beskrivning av Wikifunctions utöver Wikipedia.
Uppdragsbeskrivning
Ett Wikimedia-projekt för att tillsammans skapa och underhålla ett bibliotek av kodfunktioner till stöd för Wikimedia-projekten och mer därtill, som alla kan anropa och återanvända på världens naturliga språk och programspråk

Wikifunctions är ett öppet kodarkiv som vem som helst kan använda och bidra till.

Wikifunctions består av funktioner. En funktion kan ha en beskrivning på flera språk med en lista över parametrar, tester, en lista över implementeringar på olika programspråk och mer metadata, allt på flera språk (bland de som stöds av Wikimedia). Implementeringarna kan återanvändas av olika mjukvaruprojekt (privata program eller skript), anropas och exekveras över internet (antingen genom webbläsaren eller i en molnmiljö eller i Jupyter[1] eller PAWS[2] notebook), kombineras för att erhålla mer komplex funktionalitet, signeras, analyseras, valideras och mycket mer.

Wikifunctions är ett projekt i samma anda som Wikipedia, Wikidata, Wiktionary, och andra liknande globala samarbetande och fria kulturprojekt: det samlar bidragsgivare från hela världen för att skapa och vårda ett flerspråkigt bibliotek av funktioner som alla kan använda, oavsett syfte. Varje funktion kan kopplas till flera implementeringar på olika naturliga språk och programspråk, testsviter, krav på in- och utdata, dokumentation, metadata i form av uppskattad exekveringstid, garanterad tidskomplexitet för de olika implementeringarna, med mera. Användare kan anropa en funktion direkt från webbplatsen, från sin egen kod eller applikation, från kommandotolk eller en lokal app. Funktionen kan köras lokalt i webbläsaren, i molnet eller inbäddat lokalt i användarens applikation.

Wikifunctions är tänkt att skapa såväl en gemensam katalog av funktioner som kan återanvändas brett, som en miljö där funktioner snabbt kan kombineras och exekveras. Wikifunctions har som mål att göra livet enklare för utvecklare, som kan förlita sig på denna katalog på samma sätt som andra externa bibliotek, och för slutanvändare som kan anropa funktioner när det behövs, på ett sätt som just nu bara är tillgängligt med ojämn täckning genom specifika webbplatser som ofta är programmerade som webbplatser från 1990-talet med Java applets.

Alla funktioner är äkta funktioner, för möjliggöra en säker sandlåda för exekvering. Varje implementering kan också förses med metadata och signeras kryptografiskt. Varje användare kan välja och utvärdera vilken implementering av varje funktion som hen vill använda, beroende på tillgänglig hårdvara och inställningar för tillitsnätverk.

Wikifunctions kommer också att tillåta enkel tillgång till stora kunskapsdatabaser som Wikidata, liksom till binära filer för indata och utdata. Det är fullt möjligt att ladda upp en bild som en indatafil och returnera analysresulat, exempelvis en beskrivning av vad som är avbildat, hur många färger bilden innehåller - eller en annan binär fil i ett annat format. Detta kommer att bli tillgängligt för arbetsflöden på Wikimedia Commons.

Wikifunctions bygger vidare på en tradition av att flytta beräkningar, som vanligtvis görs i kommandotolken eller i applikationer av mer datorvana användare, till webben för att demokratisera tillgången till funktionalitet som tidigare inte var tillgänglig. Samtidigt kommer det att öka produktiviteten hos utvecklare överallt om de kan använda ett stort bibliotek av kod i stället för att förlita sig på att kopiera svar från webbplatser som StackOwerflow.

Till skillnad från Wikipedia, kommer användarna främst skapa nya implementeringar av en funktion i stället för att uppdatera en befintlig. Implementeringarna kan utvärderas automatiskt mot testerna, mot varandra och analyseras djupare.

Implementeringarna kan skrivas på en mängd olika programspråk men de kommer ändå anropa funktioner skrivna på andra språk. Exekveringsprocessen kan sömlöst (däremot inte nödvändigtvis med högsta möjliga prestanda) arbeta med olika programspråk. Även om systemet i många fall presterar bäst för funktioner skrivna på ett gemensamt programspråk, är det inte nödvändigt att göra så. Ofta är utvecklingstakten och programmerarnas tid mer värt än de ytterligare processorcyklerna som förbrukas av exekveringsprocessen.

Referenser

  1. m:WikiCite 2017/Jupyter notebooks on Wikimedia sites
  2. PAWS