Wikifunctions:Panoramica
- Il primo obiettivo di Wikifunctions è supportare i progetti Wikimedia, ma l'idea è di supportare anche altri progetti, più o meno come Wikidata. Questa è una descrizione di Wikifunctions al di là di Wikipedia.
- La nostra missione
- Un progetto Wikimedia aperto a tutti per creare e gestire collaborativamente una libreria di funzioni di codice che supporti i progetti Wikimedia e non solo, richiamabile e riutilizzabile da chiunque nelle lingue naturali e di programmazione del mondo
Wikifunctions è una repository aperta di codice che tutti possono usare e a cui tutti possono contribuire.
Wikifunctions è composta da funzioni. Queste funzioni possono avere una descrizione in molte lingue con un elenco di parametri, casi di prova, un elenco d'implementazioni in differenti linguaggi di programmazione, e altri metadati, tutto in diverse lingue (tra quelle sopportate per Wikimedia). Le implementazioni possono essere riutilizzate in altri progetti di software (applicazioni private o scripts), essere chiamate ed eseguite online (semplicemente nel browser, in un ambiente cloud, o in notebooks Jupyter[1] o PAWS[2]), composte per ottenere funzionalità più complesse, firmate, analizzate o convalidate e molto altro.
Wikifunctions è un progetto nello spirito di (ispirato a) Wikipedia, Wikidata, Wiktionary e altri simili proietti globali, collaborativi e culturali: consente a collaboratori di tutto il mondo di creare e gestire/mantenere una libreria multilingue di funzioni che possono essere usate per qualunque proposito. Ogni funzione può essere supportata da molteplici implementazioni in differenti linguaggi di programmazione, casi di test, pre e post condizioni, documentazione, metadati sotto forma di stime di runtime e garanzie di complessità per le diverse implementazioni, ecc. Gli utenti possono richiamare una funzione direttamente dal sito web, dal proprio codice o nelle proprie applicazioni, da una interfaccia di linea di comandi, o un'applicazione locale. La funzione può essere eseguita localmente nel browser, nel cloud o localmente e integrata nell'applicazione dell'utente.
L'obiettivo di Wikifunctions è creare sia un catalogo comune ben definito di funzioni che possono essere ampiamente riutilizzate, così come un ambiente nel quale le funzioni si possano combinare ed eseguire rapidamente al volo. Wikifunctions mira a rendere più facile la vita degli sviluppatori, in modo che possano affidarsi a questo repository come qualsiasi libreria esterna; per gli utenti finali permettergli di chiamare le funzioni a seconda delle necessità, in un modo che attualmente è solo disponibile con una copertura molto irregolare attraverso diversi web specifici, che spesso sono scritti in una forma web degli anni 1990 con applets di Java.
Tutte le funzioni sono pure, così da permettere un'esecuzione sicura in uno spazio isolato. Oltretutto, ogni implementazione può essere firmata crittograficamente e annotata con metadati. Gli utenti finali possono selezionare e verificare quale implementazione di ciascuna funzione utilizzare, in base alle risorse hardware disponibili e alle impostazioni della rete di fiducia.
Wikifunctions permetterà un facile accesso a grandi basi di conoscenza come Wikidata, ma anche a file binari di input e output. È completamente possibile caricare un'immagine come file di input e restituire risultati di analisi come ciò che è rappresentato nell'immagine, o quante colori differenti sono presenti nell'immagine – o un altro file binario, ad esempio in un formato diverso. Questo sarà reso disponibile per i flussi di lavoro su Wikimedia Commons.
Wikifunctions prosegue la tradizione di spostare più calcoli computazionali, che di solito avvenivano tramite linea di comando o con app utilizzate da utenti più esperti, sul Web e democratizzando l'accesso a funzionalità che prima non erano disponibili. Allo stesso tempo, aumenterà la produttività degli sviluppatori di tutto il mondo, poiché potranno semplicemente utilizzare una vasta libreria di codice invece di dover copiare e incollare risposte da siti come StackOverflow.
A differenza di Wikipedia, i contributori creano per lo più nuove implementazioni per una funzione invece di aggiornare le funzioni esistenti. Le implementazioni possono essere automaticamente testate rispetto ai test forniti, tra loro e ulteriormente analizzate.
Le implementazioni possono essere scritte in diversi linguaggi di programmazione, ma saranno in grado di chiamare funzioni implementate in altri linguaggi. Il motore di esecuzione può operare in modo fluido (anche se non necessariamente con le migliori prestazioni possibili) in linguaggi diversi. Sebbene nella maggior parte dei casi ci sia un notevole guadagno in termini di prestazioni componendo le funzioni all'interno di un unico linguaggio di programmazione, non esiste alcun obbligo a farlo. In molti casi, la velocità di sviluppo e il tempo del programmatore saranno più preziosi dei cicli di calcolo aggiuntivi spesi nel motore di esecuzione.
Note