Global templates/Proposed specification/it



Questa è una proposta di requisiti minimi per realizzare template e moduli globali.

Una sintesi di questa proposta si può trovare.

'''Questo NON è un progetto attualmente in corso, né ufficialmente approvato e prossimo a partire in un qualsiasi momento (almeno per adesso). Si tratta solo di un'idea, per quanto molto dettagliata.'''

L'obiettivo finale è di creare un gruppo di utenti e di tecnici che sia interessato a realizzare questo progetto, con tutti i requisiti necessari in termini di pianificazione, realizzazione, coinvolgimento delle comunità, eccetera.

Questo documento non entra nei dettagli tecnici, come l'archiviazione, la memorizzazione nella cache, l'implementazione, la progettazione del codice PHP, eccetera. Il suo scopo è cercare di definire i requisiti di come una tale funzionalità possa funzionare dal punto di vista degli utenti:


 * 1) che creano e curano template e moduli;
 * 2) che creano e curano pagine che contengono template e moduli, includendo in questa definizione tutti gli utenti e tutte le tipologie di pagine:
 * 3) * tutti i livelli di esperienza, da coloro che sono completamente a digiuno dell'argomento a coloro che hanno migliaia di edit alle spalle;
 * 4) * tutti gli strumenti di modifica, dal wikicodice a Visual Editor e Content Translation, a tutti gli altri mezzi (compresi i bot);
 * 5) * tutte le wiki: Wikipedia, Wikizionario, Wikivoyage, Wikidata, Incubator, eccetera, compresi eventuali futuri nuovi progetti;
 * 6) * tutte le lingue: inglese, francese, russo, spagnolo, armeno, persiano, zulu, manipuri, eccetera;
 * 7) * tutti i tipi di pagine: voci, pagine di discussione (delle voci, degli utenti o del progetto), pagine di progetto, categorie, manuali dei template, eccetera.

In poche parole
Una larga parte delle funzionalità dei progetti Wikimedia si basa su template e moduli Lua. Purtroppo, allo stato attuale, queste funzionalità non sono facilmente trasferibili da una wiki all'altra, sono male integrate con Wikidata e con i nuovi strumenti di creazione e modifica delle voci, come Visual Editor e Content Translation, e si adattano difficilmente ai dispositivi mobili. Questo causa uno spreco di tempo per gli utenti e grosse difficoltà in particolare per gli utenti nuovi e per gli utenti delle comunità più piccole. Deve essere possibile condividere queste funzionalità su tutti i progetti, similmente a quanto avviene con le immagini da Wikimedia Commons. Questo renderà renderà più veloce e stabile lo sviluppo del software e consentirà agli utenti di concentrarsi maggiormente sulla creazione di testi. In their current form they cannot be shared across different wikis and languages. Because of this they are hard to integrate with modern ways of creating and editing articles, such as Visual Editor, Wikidata, and Content Translation. They are also hard to adapt to mobile devices. This causes waste of contributors’ effort, and difficulties for new editors and smaller projects. It must become possible to share them across wiki sites, similarly to Commons images. This will make software development faster and more robust and will let editors focus more on writing.

Il problema
Nota: salvo dove diversamente specificato, il discorso sui template vale anche per i moduli Lua/.

I template permettono di sfruttare una consistente parte delle funzionalità dei progetti Wikimedia. Alcune di queste sono estremamente importanti (per esempio, gli infobox, le note, le “citazioni necessarie”, eccetera): tutti i lettori possono vederle e tutti gli utenti le incontrano quando modificano una voce. I template sono inoltre usati in moltissimi aspetti della manutenzione dei progetti, come le procedure di cancellazione o di problematicità, le discussioni sulle linee guida, la creazione di wikiprogetti, eccetera.

I template sono un meccanismo molto efficiente per realizzare, implementare e riutilizzare velocemente e su larga scala pezzi di codice e di markup su più pagine. Tuttavia, i template portano con sé anche dei problemi di accessibilità per tutte le categorie di utenti.

Utenti che usano il wikitesto
I template, alle volte, sono difficili da comprendere o modificare per gli utenti che usano il wikitesto. Gli utenti più esperti (ma non tutti!) magari possono incontrare meno difficoltà nel riconoscere e modificare uno di questi template, ma gli utenti meno esperti potrebbero rimanere sconcertati da quell'ammasso criptico di parentesi graffe, caratteri pipe, segni di uguale, eccetera. People who are experienced with using a particular template will probably identify it and be able to edit a page that includes it. However, editors who are not familiar with this template will have to look up its documentation when they encounter it, even if they are generally experienced with editing and other templates. And editors who have low experience will be baffled by the cryptic text with curly braces, pipe characters, equal signs, etc.

Usare una funzionalità di un template significa innanzitutto sapere che esiste un template, conoscerne il nome e poi digitarlo fra parentesi graffe ( – ) o copiarlo così com'è da un'altra voce o pagina. Questo non è affatto ovvio per un nuovo utente e, alle volte, anche gli utenti esperti sono costretti a consultare il manuale del template.

Alcune wiki hanno “risolto il problema”, inserendo un bottone apposito nelle toolbar per gli utenti. Tuttavia, nonostante molti dei template siano uguali o molto simili su tutti i progetti, questi bottoni restano localizzati sui singoli progetti.

Utenti che usano Visual Editor
Gli utenti che usano il VisualEditor hanno qualche facilitazione in più quando usano i template, ma anche loro possono incontrare dei problemi. Per esempio, anche in questo caso l'utente deve essere a conoscenza dell'esistenza del template, utilizzare la funzionalità “ ” nell'apposito menu e digitarvi l'apposito nome.

Il menu “” del VisualEditor ha funzioni apposite per inserire formule matematiche, geroglifici, spartiti musicali e altre funzioni ancora, ma non ha delle opzioni apposite per i template “Infobox”, “Senza fonte”, “Converti unità”, “Citazione”, eccetera. In altre parole, tutti i template sono gestiti come se fossero tutti uguali (pur sapendo che questo non è affatto vero).

C'è una eccezione al momento: alcune wiki hanno il pulsante “”, che permette di inserire note già formattate con gli appositi template di citazione. Questa, però, è la classica eccezione che conferma la regola. Inoltre, questa funzione necessita di essere configurata manualmente perfino per le sue caratteristiche di base - col risultato che moltissime wiki semplicemente non dispongono affatto di questo pulsante. Un'altra eccezione simile, aggiunta verso fine 2019, è il supporto aggiuntivo per i template “Citazione necessaria”, ma anche questi vanno configurati manualmente progetto per progetto perché il supporto possa funzionare.

Difficoltà per gli utenti che contribuiscono su più di un progetto
Molti template esistono in un progetto, ma non sono presenti in un altro progetto, oppure esistono, ma alcune delle funzionalità sono assenti o funzionano in modo diverso. Per questo motivo, spesso è difficile o addirittura impossibile “riutilizzare” in un altro progetto ciò che si è imparato su un progetto. Questo non succede solo fra progetti in lingue diverse (per esempio, Wikipedia in italiano e in inglese), ma anche su differenti progetti nella stessa lingua (per esempio, Wikipedia in italiano e Wikisource in italiano).

Inoltre, i template rendono più difficili le traduzioni per gli utenti che contribuiscono su progetti in lingue diverse, sia se realizzate manualmente sia se fatte tramite Content Translation. Spesso gli utenti sono costretti a saltare a piè pari i template, oppure ad aggiungerli o sistemarli in un secondo momento, oppure ancora un template può scoraggiare un utente dal completare la traduzione.

Moltissimi dei problemi riscontrati con Content Translation riguardano proprio la gestione dei template.

Nonostante l'estensione abbia una funzionalità che permette di tradurre o quantomeno di automatizzare parte del processo di traduzione, questa funzionalità funziona soltanto se il template ha un corrispettivo nella lingua in cui si sta traducendo e se esiste una traduzione dei parametri corrispondenti. Tutto questo va realizzato per ogni lingua, per ogni template, per ogni parametro ed eventualmente per ogni modifica - nonostante, spesso, le funzionalità dei differenti template siano le stesse.

In teoria, dovrebbe essere possibile trasferire e tradurre automaticamente o quasi tutti i template e i relativi parametri, per permettere agli utenti di concentrarsi sulla traduzione della voce o della pagina vera e propria (che poi è l'area dove il contributo umano è più necessario).

Un template può essere, in effetti, esportato da una wiki all'altra, ma una volta compiuta l'esportazione, di fatto il template diventa un fork della versione originale, rimanendo così com'è oppure venendo sviluppato a sé (e dunque diventando più o meno incompatibile con il template originale). Alcuni utenti possono periodicamente aggiornare a mano le differenti copie, ma questo non è affatto un metodo scalabile o che possa funzionare per tutte le svariate centinaia di progetti che abbiamo.

Anche i parametri di un template possono variare nel nome fra versione e versione, ma avere la stessa funzionalità. Si potrebbe ricorrere agli alias in TemplateData per mappare le differenze di traduzione, ma si tratta di una soluzione sub-ottimale: non è questo lo scopo degli alias e, soprattutto, si è comunque costretti a gestire manualmente ogni traduzione.

Un template è una combinazione di algoritmi, stringhe di testo e formattazione che ne rendono impossibile una traduzione lineare, come invece succede con il codice di base di MediaWiki e delle sue estensioni.

Difficoltà per gli utenti delle comunità minori
Un nuovo progetto Wikimedia viene creato installando le funzioni fondamentali di MediaWiki e un certo numero di estensioni di default. Tuttavia, questo non basta a mettere sullo stesso piano un nuovo progetto e un progetto già esistente, perché larghissima parte delle funzioni fondamentali viene in realtà implementata tramite i template (infobox, citazioni, tabelle, eccetera).

Difficoltà per gli sviluppatori di software
Per coloro che sviluppano codice per MediaWiki o le sue estensioni, bot o altri mezzi per analizzare, generare o modificare contenuti nelle pagine wiki è difficile sviluppare caratteristiche che dipendono dalla presenza o meno di un determinato template in una wiki. Gli sviluppatori di estensioni come GrowthExperiments, PageTriage, ContentTranslation, alcune componenti di Wikibase e così via, hanno la necessità di testarle in ambiente di produzione (che è una pessima idea) o di importare i template necessari sulle proprie wiki o su una wiki di test.

I ricercatori che estraggono dati sui contenuti wiki basandosi sui template sono spesso costretti a scrivere uno script separato per ogni wiki, così che spesso e volentieri si limitano a un progetto solo. Un esempio abbastanza eclatante è l'utilizzo dei template di progetto su Wikipedia in inglese per analizzare gli argomenti delle voci e valutarne la qualità.

Estensioni e template: similitudini e differenze
Uno dei principi di fondo di questa proposta è che template e moduli siano estremamente simili al codice di Mediawiki e delle sue estensioni. Parliamo, cioè, di un software che permette di implementare funzionalità che servono a una comunità di utenti - e questo è a maggior ragione vero per i template, che vengono sviluppati proprio dagli utenti in risposta alle proprie necessità. La differenza fra loro, tuttavia, è nel modo in cui vengono sviluppati, tradotti e implementati.

Template e moduli dovrebbero assomigliare di più alle estensioni per alcuni versi, mantenendo tuttavia determinate particolarità che al momento mancano alle estensioni. Facciamo qualche esempio:

Competenze nel creare template e moduli
Un'altra importante serie di considerazioni su cui si basa questa proposta è la seguente:
 * Saper sviluppare un template o un modulo non è banale, dal momento che entrambi hanno un sacco di funzionalità complesse.
 * Anche se molte delle funzionalità più importanti sono implementate tramite modelli e moduli, queste competenze sono spesso ignorate, sottovalutate o date per scontate.
 * Ci sono decine di utenti, sparsi per le varie wiki, che hanno queste abilità. Tuttavia, spesso si concentrano sulla propria wiki e comunicano relativamente poco con gli utenti di altre comunità o progetti. Anche se la tecnologia di base è la stessa ovunque, non c'è nessuna vera comunità globale di sviluppatori di template che sia paragonabile alla comunità globale di sviluppatori di MediaWiki. Esistono dei casi di collaborazione cross-wiki su alcuni template, ma sono pochissimi e poco coerenti fra loro.
 * Ci sono anche molte wiki in cui non ci sono utenti che posseggono queste abilità. Questi possono limitarsi a copiare template e moduli da altre wiki, senza però comprendere appieno come funzionino, oppure senza la possibilità di tradurli o mantenerli in modo efficace, oppure ancora potrebbero non usarli affatto.

Questa situazione è ben lontana dall'essere ottimale. Le competenze degli sviluppatori di template e moduli necessitano di essere maggiormente apprezzate, perché sviluppano funzionalità davvero necessarie che sono parte integrante delle loro comunità. In molte wiki di lingue diverse, gli sviluppatori di template inventano nuovi modi di strutturare, presentare e modularizzare dati e contenuti. Queste innovazioni potrebbero essere utili in tante wiki, ma non esiste ancora un meccanismo adeguato per raggiungere questo obiettivo.

E, naturalmente, qualsiasi soluzione a questi problemi non deve proporre tecnologie completamente nuove che mettano da parte anni di esperienza pratica acquisita dagli sviluppatori di template. Pertanto, bisognerà apportare il minor numero possibile di cambiamenti nella sintassi per lo sviluppo di template e moduli. Quello che deve cambiare è il modo in cui vengono distribuiti e riutilizzati fra le varie wiki e il modo in cui le stringhe di testo vengono tradotte.

Una proposta di soluzione, in sintesi
Ci sono già molte funzioni di MediaWiki che sono globali:


 * le immagini (tramite Commons)
 * gli account
 * osservati speciali globali - allo stato (fine 2020) in fase di sviluppo
 * eccetera.
 * osservati speciali globali - allo stato (fine 2020) in fase di sviluppo
 * eccetera.
 * osservati speciali globali - allo stato (fine 2020) in fase di sviluppo
 * eccetera.

Anche template e moduli dovrebbero, quindi, essere resi globali, gestendoli tramite un repository globale e traducendoli in modo simile a quello usato per le estensioni di MediaWiki.

Template e moduli globali permetterebbero agli sviluppatori di template in tutte le comunità di collaborare più facilmente allo sviluppo del codice.

Template e moduli globali permetterebbero ai traduttori di focalizzarsi sulla traduzione delle sole stringhe di interfaccia (i “messaggi”), senza doverle cercare nel codice e usando lo stesso metodo che si usa per tradurre le estensioni di MediaWiki.

Template e moduli globali permetterebbero agli utenti di tutte le wiki di scrivere e tradurre voci da altre versioni, senza dover essere costretti ad apprendere regole e competenze diverse in ogni altra wiki per poterne tradurre anche i template.

La sintassi di template e moduli e, più in generale, la loro manutenzione e gestione non cambieranno, quindi tutte le capacità acquisite lungo questi anni dagli utenti non diventeranno obsolete.

Tutti i progetti potranno utilizzare i template globali, ma non saranno costretti a farlo. Ciascuna comunità manterrà la possibilità di sovrascrivere qualsivoglia funzionalità, aspetto grafico, dato o altro, se necessario.

Tradurre i template sarà utile tanto quanto tradurre le estensioni MediaWiki.

I template devono essere semantici e globali
Per semantico si intende che tutte le altre componenti di MediaWiki (e in particolare Visual Editor e Content Translation) dovranno avere modo di individuare un determinato template con determinate funzionalità, così da poterlo integrare in una traduzione come infobox, template di citazione o di manutenzione, eccetera, e non come un template generico. Al momento, la cosa che più si avvicina all'obiettivo è TemplateData, che però descrive soltanto i parametri dei template e non permette, per esempio, a Visual Editor di inserire un pulsante “Inserisci infobox” nella toolbar. Currently, the closest thing there is to making templates semantic is TemplateData, but it only describes the template’s parameters. It doesn’t, for example, help Visual Editor add an “Insert infobox” button to the toolbar.

Per globale si intende che il codice di un template vada posto in un repository centralizzato, che permetta il suo riutilizzo in qualsiasi wiki.

Come rendere semantico un template
I template non sono mai stati fortemente semantici, nel senso che il software che elabora le pagine non è mai stato in grado di gestirli facilmente.

Tuttavia, esistono solo pochi esempi di template che sono stati resi semantici:


 * vari fra i template Cita, che sono utilizzabili tramite il pulsante “” nella toolbar di Visual Editor (e che però richiedono che venga prima scritto e localizzato un sacco di codice per configurare Citoid);
 * il template “Citazione necessaria”, che è stato adattato per Visual Editor verso fine 2019 in alcune lingue (per esempio inglese, ebraico o sloveno), ma non in altre, nonostante quasi tutti i progetti abbiano un template del genere (vedi anche );
 * i template per menzionare gli utenti tramite Flow (anch'essa da configurare localmente);
 * alcuni tool utilizzati per compiere ricerche sui dump di Wikipedia oppure sui template di monitoraggio dei progetti di Wikipedia in inglese (spesso aggiunti nelle pagine di discussione);
 * l'estensione GrowthExperiments suggerisce agli utenti di operare determinate azioni sulle voci, in base ai template in esse contenuti (i cui nomi però devono essere inclusi in appositi file JSON su ogni wiki, come per esempio le Wikipedia in ceco, vietnamita, coreano o arabo);
 * l'estensione PageTriage, configurata per funzionare con i template di disambiguazione di Wikipedia in inglese.

In quest'ultimo caso, di fatto l'estensione codifica in modo rigido i template di un progetto, rendendoli inutilizzabili in un altro progetto senza una significativa riscrittura. Ma anche nei casi in cui la configurazione su wiki sia poca cosa, come per Flow, comunque serve configurare qualcosa. Questo non può funzionare in modo efficiente per tutti i 900 e oltre progetti Wikimedia attualmente esistenti e per le migliaia di futuribili progetti che verranno.

Queste funzioni dovrebbero essere globali di default, almeno nella loro configurazione di base, in modo che possano essere utilizzabili da subito da estensioni, bot, programmi per analizzare i dump, eccetera.

Dove conservare i template
I template e moduli globali potrebbero essere conservati in una wiki centralizzata (Meta, Commons o una nuova wiki apposita) oppure su un repository (come Gerrit o un altro).

La migliore soluzione potrebbe forse essere una wiki apposita, in modo tale che i template e i moduli non vengano confusi con le immagini, le discussioni generali della comunità, eccetera.

Usare Gerrit è tecnicamente fattibile, ma si perderebbe un importantissimo elemento di accessibilità per chi gestisce e cura i template: per la maggior parte degli utenti, modificare una pagina wiki è molto più semplice e immediato che fare un commit e aspettare una revisione del codice. Quindi Gerrit non dovrebbe diventare il metodo primario per raccogliere e conservare i template.

Inoltre, il repository dovrebbe permettere la modifica di template e moduli al maggior numero possibile di utenti. Le regole di protezione e i permessi speciali, almeno inizialmente, dovrebbero essere uguali a quelle di tutte le altre wiki: tutto dovrebbe essere aperto di default, ma dovrebbe essere altrettanto possibile proteggere i template più comuni, sensibili o frequentemente vandalizzati. Ulteriori regole e livelli di protezione possono essere discussi dalla comunità più in là.

Il modo in cui saranno richiamati i template nelle wiki di arrivo è una questione di infrastruttura e architettura, ma è importante affrontare anche tutti gli altri requisiti. Queste cose sono state già discusse in passato da altri sviluppatori, per esempio riguardo il cosiddetto nel progetto del “namespace ombra”. Questo documento tenta di chiarire, invece, come tutto questo possa funzionare per gli utenti che modificano una pagina che utilizza un template o per coloro che gestiscono quel template: come scriverlo in modo da poterlo localizzare in futuro, come tradurlo, come configurarlo localmente, eccetera. Questi aspetti non sono stati affrontati in maniera sufficiente nelle passate discussioni in materia. These questions were discussed in the past by some platform developers, for example around the Shadow namespaces project. This document tries to address related questions of how it works for the user who edits a page that uses a template, or who maintains the template itself—how to write it in a localizable way; how is it translated; how is it locally customized; etc. These questions weren’t addressed sufficiently in the previous architectural discussions on the topic.

I template devono restare modificabili facilmente
Un aspetto importante dei template è che funzionano come tutte le altre pagine di una wiki: questo significa che gli effetti di qualsiasi modifica si applicano direttamente, senza revisioni o distribuzioni di sorta. Sebbene questo costituisca un pericolo (un solo edit vandalico potrebbe rovinare tante pagine), la verità è che questo sistema funziona quasi sempre bene.

Per questo, questa comodità deve essere mantenuta: gli utenti che si occupano di template molto probabilmente si rifiuterebbero di passare a un nuovo sistema che richiederebbe loro di imparare tutta una nuova serie di cose e che li costringesse a passare attraverso un'estenuante fase di revisione e distribuzione. Questo probabilmente esclude la possibilità di usare Gerrit, nonostante il suo processo di revisione e implementazione sia molto più veloce rispetto a quello in atto per le estensioni.

Deve essere possibile non rendere globali alcuni template
Non tutti i template devono essere resi globali per forza.

In realtà, alcuni template andrebbero considerati “locali” perché servono a garantire delle funzionalità che sono uniche di un dato progetto o di una data lingua. Per loro stessa natura, tali template non devono essere tradotti e, anzi, dovrebbe esserci un modo per segnalare ai traduttori umani e ai tool di traduzione (come Content Translation) che quei template non necessitano di traduzione e che possono essere ignorati o sostituiti. Questa considerazione rientra nello sforzo di rendere i template più semantici.

Deve essere possibile sovrascrivere una funzionalità o la forma di un template globale
Nessuna comunità dovrebbe essere messa in condizione di pensare che una data funzionalità venga imposta da una qualche forza esterna più “potente”, come la comunità anglofona di Wikipedia, la comunità di Wikidata, la WMF o chissà chi. I template globali dovrebbero essere sviluppati e usati in modo collaborativo per il bene comune. La maggior parte delle volte questo dovrebbe funzionare per tutti.

In alcuni casi, alcune comunità potrebbero volere che un dato template abbia una certa funzionalità che funzioni in un dato modo, oppure che permetta di mostrare le informazioni in un dato modo, oppure ancora non volere una certa funzionalità. Questa capacità di prevalere localmente sulle funzioni comuni deve essere garantita (o, per meglio dire, non deve essere tolta) fin dall'inizio.

Un template globale deve essere immediatamente utilizzabile in ogni wiki
Così come una pagina utente globale è oggi disponibile in automatico in ogni wiki in cui non esiste una pagina utente locale, un template o un modulo creato tramite l'infrastruttura globale dovrà essere immediatamente utilizzabile in ogni wiki.

Questo significa che non devono esserci passaggi extra, come dover copia-incollare intere pagine wiki, creare dei template che traducano i parametri stranieri, richiedere l'intervento di un amministratore, aspettare ore e ore l'aggiornamento della cache, eccetera.

Una volta aggiornata la versione centralizzata, i cambiamenti verranno mostrati immediatamente ovunque. Per prevenire vandalismi, la comunità provvederà ad adottare linee guida sulla protezione delle pagine e sulla possibilità di modificarle.

Qualora le stringhe di interfaccia (o “messaggi”) non siano ancora tradotte, il template sarà comunque utilizzabile e le stringhe mostrate nella lingua di fallback (per maggiori dettagli, si rimanda al paragrafo sulla localizzazione).

Deve essere possibile tradurre tutte le stringhe rivolte all'utente
Le stringhe di interfaccia (messaggi) di MediaWiki, delle sue estensioni e di alcuni tool (come Pageviews) sfruttano translatewiki.net per tradurre in modo veloce e semplice i messaggi di sistema. Questo processo di localizzazione è sufficientemente familiare per alcuni utenti in tutte le lingue.

Al momento, non è possibile fare la stessa cosa con i template. Siti multilingua come Commons o MediaWiki.org hanno il sistema “TNT” per tradurre alcuni template, ma si tratta di un sistema molto complesso e che non può essere riutilizzato anche su Wikipedia, Wikisource, eccetera.

In teoria, dovrebbe essere possibile tradurre i template così come si traducono i messaggi di sistema, ossia usando una wiki dove è attiva l'estensione Translate.

La stringa tradotta dovrà essere utilizzabile subito dopo averla tradotta tramite l'interfaccia di traduzione.

Potrebbe essere possibile modificare le stringhe anche dalla pagina, ma in generale dovrebbe essere preferibile farlo attraverso un'interfaccia di traduzione.

I traduttori dovrebbero essere in grado di concentrarsi esclusivamente sulla traduzione del testo. La presenza di codice rende più difficile contribuire a coloro che non hanno esperienza di programmazione o con i file JSON. Inoltre, modificare le traduzioni in lingue scritte da destra a sinistra in file di testo non elaborati è estremamente scomodo. L'estensione Translate risolve già tutti questi problemi.

Allo stesso modo, anche le pagine di documentazione dei template devono essere traducibili. Potrebbe bastare l'attuale estensione Translate per farlo, ma non si può escludere che servirà fare qualche piccolo adattamento.

In quale lingua mostrare le stringhe all'utente?
I template sono utilizzati perlopiù all'interno delle voci o delle pagine, quindi dovrebbe essere possibile mostrare di default i messaggi e i parametri nella lingua propria del progetto.

Alcuni template, tuttavia, sono utilizzati come elementi dell'interfaccia utente. Potrebbe essere, quindi, necessario anche permettere di mostrare messaggi e stringhe nella lingua preferita dall'utente, laddove sia differente da quella del progetto. Questo potrebbe essere ancora più importante in siti multilingua come Commons, Wikidata, Meta e Mediawiki.org.

Laddove non esista una traduzione, dovrebbe essere in generale utilizzata la normale catena di fallback di MediaWiki (per esempio, l'italiano per le versioni in veneto, lombardo o napoletano, lo spagnolo per le versioni in quechua o guaraní, il russo per quelle in baschiro o ciuvascio e così via). Nel caso in cui non sia prevista alcuna lingua di fallback o il messaggio non sia tradotto nella lingua prevista, l'ultima lingua di fallback è l'inglese.

Messaggi fondamentali
Ogni messaggio dovrebbe essere rappresentato come “chiave”, similmente a quanto accade oggi per i messaggi di MediaWiki, delle estensioni e dei tool.

Scrivere stringhe traducibili sarà probabilmente il cambio maggiore da affrontare nel processo di sviluppo dei template. Le stringhe fisse dovranno essere gestite separatamente e spostate nei messaggi, organizzati per chiave. Questo processo deve essere reso il più semplice possibile, sia per i traduttori, sia per chi effettivamente scrive i template, altrimenti nessuno di loro accetterà di usare queste funzioni e, anzi, rifiuteranno di farlo.

Per fare in modo che le chiavi siano uniche globalmente, si potrebbe inserire automaticamente il nome globale del template nella chiave del messaggio.

Tool di transizione
Per rendere più semplice la transizione verso template o moduli globali, si potrebbe sviluppare un tool che compia indicativamente i seguenti passaggi:


 * 1) esportare il template da una wiki e importarlo nella wiki globale;
 * 2) esportare a cascata tutti gli eventuali template aggiuntivi utilizzati dal primo template;
 * 3) identificare le stringhe, convertirle in una lista di chiavi e contemporaneamente sostituire all'interno del codice le stringhe con le chiavi corrispondenti;
 * 4) importare la documentazione e il TemplateData relativi al template;
 * 5) importare le pagine CSS necessarie.

In molti casi, questo processo automatizzato non basterà a creare un modulo o template pienamente utilizzabile da subito, ma almeno aiuterebbe molto nel processo di transizione.

Organizzare i messaggi
L'estensione Translate organizza i messaggi per gruppi (anche detti “progetti”), i quali a loro volta sono suddivisibili in sotto-gruppi: per esempio, “Article Placeholder”, “Score” e “Poem” sono tutti sotto-gruppi che si riferiscono alle estensioni corrispondenti di MediaWiki e che sono tutti inclusi nel gruppo “Estensioni usate da Wikimedia - Avanzate”, assieme a tante altre estensioni.

I progetti che riguardano le estensioni di MediaWiki sono configurati tramite appositi file YAML su Translatewiki.org e mostrati attraverso l'interfaccia di traduzione, che permette di selezionare un determinato gruppo di messaggi relativi a un determinato progetto.

Siccome ci sono molti più template che estensioni, potrebbe essere necessario apportare delle modifiche al sistema con cui l'estensione Translate gestisce attualmente i gruppi di messaggi, per poterlo adattare anche alla traduzione di template.

Ogni template dovrebbe costituire un gruppo di messaggi a sé. Template simili fra loro dovrebbero poi essere aggregati in macro-gruppi, un po' come succede oggi con le categorie (anzi, si potrebbe ricopiare in parte l'attuale sistema di categorie). Utilizzare un repository Git per organizzare questi messaggi è probabilmente una soluzione non efficiente, perché troppo complessa e lenta.

Sarebbe carino mostrare nomi di template e gruppi nella lingua preferita dall'utente, ma andrebbe bene ugualmente mostrare la versione in inglese. Quello che va bene ai traduttori delle estensioni, andrà bene anche ai traduttori dei template.

I template devono essere mostrati come gruppi di messaggi sulla pagina speciale dedicata alle statistiche (Special:LanguageStats) dell'estensione Translate. Questo aiuterà i traduttori a capire quali siano i template che necessitano di essere tradotti. Teoricamente, questa cosa dovrebbe funzionare come qualsiasi gruppo di messaggi, ma ci sono delle considerazioni aggiuntive da fare:
 * Ci saranno migliaia di template, quindi sarebbe bene che il design della tabella sia più o meno corrispondente.
 * La tabella dovrebbe mostrare su quante voci o pagine ciascun template è utilizzato, rendendo possibile ordinare le righe per questo parametro, in modo da poter capire quali template siano prioritari nella traduzione.

Capire come tradurre un template
Ogni manuale di template deve avere un link diretto all'interfaccia di traduzione nella lingua dell'utente.

Alcuni template utilizzano le etichette di Wikidata, anziché delle stringhe, come parte della loro interfaccia - come per esempio Wikidata Infobox su Commons o Infotaula persona (Infobox persona) su Wikipedia in catalano. Le etichette possono essere tradotte direttamente su Wikidata.

Ovviamente, questi esempi non coprono la totalità delle necessità di traduzione dei template, ma sono legittimi e utili per scopi particolari. Fintanto che questa caratteristica sia descritta correttamente nella documentazione del template, può tranquillamente continuare a essere usata e probabilmente non necessita di adeguare appositamente l'infrastruttura. (Forse la traduzione delle etichette e dei valori rilevanti può essere in qualche modo integrata nell'interfaccia di Translate, ma questo è facoltativo.) This is done at the moment in Wikidata Infobox on Commons, Infotaula persona (Infobox person) in the Catalan Wikipedia, and in several other templates. These labels and values can be localized in Wikidata itself. Such usage cannot cover all the needs of template localization, but it is legitimate and useful for particular purposes. As long as this is properly described in the template documentation, this can continue to be used, and probably doesn’t need special infrastructure adaptations. (Perhaps the translation of the relevant labels and values can be somehow integrated into the Translate interface for localizing the template, but this is optional.)

Parametri e “parole magiche” dei messaggi
Molti messaggi di MediaWiki e delle sue estensioni usano dei parametri (talvolta chiamati anche “segnaposto” o “placeholder”), indicati come “$1”, “$2”, “$3”, eccetera e riempiti nel tempo di esecuzione. I parametri sono particolarmente importanti per facilitare la traduzione dei messaggi, perché lingue diverse hanno un ordine delle parole diverso.

Una funzione del genere servirà anche per i template globali - non necessariamente in forma “$1” o “$2”, si potrebbe adottare anche una forma più simile a quella dei template, ossia con le triple parentesi graffe ( { – } ). Questo aspetto va deciso dopo aver considerato anche le necessità relative al parsing e alla localizzazione.

Tuttavia, le “parole magiche” PLURAL, GENDER e GRAMMAR devono essere supportate anche per i messaggi dei template, così come lo sono per i messaggi di MediaWiki.

Documentazione dei messaggi
I messaggi traducibili di MediaWiki e delle estensioni hanno la possibilità di essere documentati, per la comodità di sviluppatori e traduttori. La documentazione include informazioni su dove appaiano i messaggi, spiegazioni sui parametri, se il parametro è un verbo o un aggettivo, eccetera. Questa documentazione è memorizzata come uno pseudo-linguaggio con il codice “qqq”.

Una documentazione del genere sarebbe utile anche per i template. Come memorizzarla rimane un problema di architettura tecnica. Forse si potrebbe utilizzare TemplateData, forse si potrebbe utilizzare il codice qqq, forse si potrebbe adottare un'altra soluzione.

Lingua originale
I template che saranno importati sulla piattaforma globale non proverranno solo dai progetti in lingua inglese, ma anche da progetti in altre lingue. A maggior ragione, i tool di traduzione e localizzazione devono supportare la traduzione da e verso ogni lingua e non solo da e verso l'inglese.

Messaggi obsoleti
Qualora un messaggio di MediaWiki o di un'estensione venga aggiornato nella sua versione inglese, il messaggio viene automaticamente marcato come obsoleto, tramite un'evidenziazione in rosa. La traduzione, laddove presente, continua a funzionare, ma viene mostrato ai traduttori come “da aggiornare” (anche se il responsabile della traduzione può anche contrassegnarlo come “non da aggiornare”).

Un meccanismo simile sarà necessario per la localizzazione dei template. Tuttavia, siccome sarebbe bene non costringere gli utenti ad adottare l'inglese come lingua di partenza, ci dovrebbero essere altri metodi di segnalare i messaggi come da aggiornare.

Considerazioni sulla traduzione dei moduli
I moduli Lua possono caricare e analizzare le stringhe traducibili di MediaWiki, ma non c'è un modo ben definito per centralizzare queste stringhe per quei moduli Lua ospitati sulle pagine wiki. Si potrebbe impacchettare i moduli Lua come parti di estensioni, per permettere loro di caricare i messaggi dai rispettivi file i18/*.json, ma questo avviene in pochissimi casi.

Riscrivere da capo i template in Lua potrebbe essere una soluzione più sostenibile sul lungo periodo, anche da un punto di vista tecnico, ma non necessariamente tutti gli utenti potrebbero voler utilizzare Lua - e la cooperazione di questi utenti è cruciale per il successo del progetto, quindi questa soluzione non può essere applicata a tutti i template. It is possible to package Lua modules as parts of extensions, and then they are able to load messages from the extensions’ i18/*.json files, but this is done in very few extensions at the moment. Rewriting templates in Lua may be a more robust solution from the engineering point of view, but Lua will not necessarily be embraced by all existing template maintainers, and their cooperation will be crucial to the project’s success, so this cannot be done to all templates.

Alcuni moduli tecnici e molto specifici che vengono comunemente utilizzati, raramente modificati e che non richiedono internazionalizzazione (come, per esempio, No globals e Arguments) possono probabilmente essere spostati senza grossi problei all'interno dell'estensione Scribunto.

Tradurre il nome del template
Un template può avere un nome diverso per ogni lingua, ma deve comunque essere connesso a un repository centrale.

I template e i moduli globali dovrebbero essere immediatamente utilizzabili in tutti le wiki senza passaggi aggiuntivi, quindi deve essere possibile utilizzare un template globale in una pagina wiki locale usando il suo nome globale. La comunità wikimediana nel suo complesso deciderà le linee guida su questi nomi globali.

Come per i parametri, anche i template possono avere nomi differenti a seconda della lingua. Questa è una caratteristica che deve essere mantenuta e dovrà essere individuato un modo per tradurre il nome dei template. Forse Wikidata potrebbe avere un ruolo in questo, ma non necessariamente.

Se questo non viene garantito, gli utenti eviteranno di usare i template globali, li ingloberanno all'interno di template locali o utilizzeranno altre soluzioni che comunque interromperanno il contatto con il template globale. Questo non solo non è desiderabile, ma è completamente l'opposto di quanto si prefigge questo progetto.

I nomi dei template devono essere tradotti esclusivamente in lingue a cui corrisponde un progetto wiki. Traduzioni in tedesco formale o inglese britannico sono probabilmente inutili e, comunque, ci dovrebbe essere un modo di sfruttare alias e redirect. Le varianti di una lingua, come per il serbo o il cinese, vanno invece gestite coerentemente con le necessità di quella comunità linguistica.

Se esistesse un template locale con lo stesso nome (tradotto o meno) di un template globale, la priorità verrà data al template locale. Questo funzionamento è simile a quello che accade con i file di Commons o con i messaggi locali di MediaWiki: il contenuto locale sovrascrive sempre quello globale.

Anche i nomi dei moduli lua sono spesso tradotti. I loro nomi possono essere tradotti per richiamarli direttamente nei template, ma siccome spesso si utilizza l'inglese, dovrebbe essere data priorità ai nomi globali all'interno del codice, per esempio nelle dichiarazioni.

Traduzione dei nomi dei parametri
I nomi dei parametri sono differenti in ogni lingua. Solitamente, si basano sulle parole corrispettive nelle differenti lingue, quindi è importante tenere quest'aspetto in considerazione per modificare comodamente la trasclusione nella sintassi wiki.

In teoria, un template globale dovrebbe avere dei nomi generici per i parametri per permetterne la traduzione in differenti lingue. Questo è, in un certo senso, alle etichette delle proprietà di Wikidata, ma si potrebbe rendere ancora più semplice: dal momento che l'inglese è una lingua franca per gli sviluppatori di software e che i template sono una sorta di software, si potrebbe utilizzare l'inglese come lingua di default al posto di numeri generici (come succede in Wikidata).

I nomi generici dei parametri sarebbero i nomi comuni di default, che funzionerebbero in tutte le lingue. I nomi tradotti in locale funzionerebbero, invece, solo nelle versioni che adottano quella particolare lingua come principale o fallback.

Le traduzioni dei parametri comunque vanno validate, per cui:


 * non devono contenere caratteri non validi;
 * non devono essere ripetuti all'interno dello stesso template;
 * ...altro?

Il processo di traduzione dei nomi dei parametri potrebbe, alla fine, risultare diverso da quello delle stringhe di interfaccia. I primi hanno dei vincoli tecnici da rispettare e devono rimanere stabili: in altre parole, cambiare il nome a un parametro potrebbe causare problemi alle inclusioni esistenti, quindi dovrebbero esserci dei meccanismi di salvaguardia in proposito.

Traduzione automatica dei parametri
Se tutte le traduzioni dei template e dei rispettivi parametri venissero gestite centralmente, sarebbe possibile avere una funzionalità semplice che permetta di richiamare un template già tradotto e perfettamente utilizzabile. Per esempio:

Input:

Output:

Questo sarà il modo principale per adattare i template tramite Content Translation. A differenza dell'attuale metodo per adattare i template, questo sarà preciso e completo, anziché basato su approssimazioni.

Con il Visual editor o con la wikisintassi introdotta nel 2017, copiare e incollare un template da una wiki in un altra lingua permette di effettuare la traduzione dei parametri automaticamente.

Dovrebbe tuttavia esistere un modo semplice di realizzare questo anche per chi usa la wikisintassi normale - per esempio, utilizzando una pagina speciale o un box di dialogo dove un utente può incollare il template e selezionare la lingua di origine, ottenendo un template con i parametri tradotti nella sua lingua.

In entrambi i casi, sarebbero tradotti solo il nome del template e dei parametri. La traduzione dei valori dei parametri è discussa in un'altra parte del documento.

Parametri senza nome
I parametri numerici e senza nome di un template devono, ovviamente, continuare a funzionare.

Tuttavia, bisognerà affrontare il problema di come localizzare questo tipo di parametri.

Tradurre i valori dei parametri
Oltre a rendere condivise le funzionalità e il design dei template, bisogna pensare alla possibilità di rendere anche i valori dei parametri condivisi - o non condivisi.

Alcuni valori sono gli stessi in tutte le lingue per loro stessa natura, come per esempio la pronuncia fonetica di un dato posto (per esempio, [dɛn ˈɦaːx] per L'Aia), l'anno di fondazione di una città, la formula chimica di un composto, eccetera. Almeno questi dovrebbero direttamente essere inseriti in Wikidata e da lì richiamabili all'interno del template.

Altri parametri, invece, dovranno essere tradotti o anche traslitterati, come per esempio i nomi propri di persone o di cose, i motti degli Stati, eccetera.

I template globali dovrebbero rendere tutto questo possibile, ma bisogna anche ricordarsi che è ancora pratica comune copiare e incollare queste informazioni da una wiki all'altra.

Alcun parametri possono essere facilmente tradotti o localizzati in modo automatico e l'infrastruttura dei template globali deve poter supportare questa funzionalità. Per esempio, numeri e cifre sono lievemente differenti rispetto ai nostri in birmano, in varie lingue dell'India e in altre lingue, ma questa cosa potrebbe essere tranquillamente gestita dal software.

I valori validi e funzionali dei parametri devono essere riutilizzabili in più lingue e non devono appoggiarsi esclusivamente a una sola. Per esempio, usare “yes” o “no” come valori booleani è troppo anglo-centrico: un cambio del genere probabilmente non richiederà cambiamenti nell'infrastruttura, ma quasi certamente sarà necessario un accordo nella comunità globale di sviluppatori di template su come fare in modo che un template sia funzionale in più lingue.

Direzione del testo
I template devono essere adattati alla direzione del testo (da sinistra verso destra o da destra verso sinistra) della wiki su cui vengono utilizzati.

Per questo, un template deve essere realizzato utilizzando gli allineamenti di testo a sinistra o a destra il meno possibile.

Bot
Molti template in molte wiki sono regolarmente modificati da bot. Questa possibilità deve essere mantenuta.

Questo non dovrebbe richiedere alcun cambio nell'infrastruttura attuale del software, ma viene comunque citato perché è un caso di utilizzo molto importante.

Transizione dei template dalle wiki più grandi al repository centrale
La lingua più utilizzata come base per le traduzioni tramite Content Translation è, di gran lunga, l'inglese, seguita dallo spagnolo, dal russo, dal francese, dal tedesco, dal catalano, dall'ucraino, dal cinese e dal portoghese. Per questo, ha senso che i template più comuni di queste comunità linguistiche (e in particolare quelli della versione inglese) siano quelli che più di tutti devono essere resi globali, per il bene di tutte le altre comunità.

Paradossalmente, gli utenti di queste comunità più grandi sono anche quelli meno interessati a raggiungere quest'obiettivo:


 * perché il template funziona bene per loro, quindi non c'è un motivo apparente per sforzarsi di rendere più facile la traduzione in altre lingue;
 * perché rifare da capo un template per renderne più facile la traduzione potrebbe richiedere molto tempo e potrebbe costringerli a doversi caricare nuove o differenti responsabilità nella manutenzione;
 * perché ampliare il numero di progetti che usano un determinato template potrebbe rendere più difficile in futuro raggiungere un consenso su delle eventuali modifiche necessarie;
 * perché gli utenti delle principali wiki potrebbero essere costretti a unire un template già esistente e uno da importare che hanno funzionalità uguali o simili.

Più che una considerazione tecnica, si tratta di una considerazione pratica e rivolta alle relazioni fra le comunità. Tuttavia, anche questi aspetti vanno presi in considerazione quando si prendono decisioni che hanno un impatto sull'architettura tecnica di un sito. Se non lo si facesse, l'intero progetto fallirebbe miseramente.

Finché esisteranno template comuni importanti ma non ancora globali, Content Translation e le altre estensioni dovranno comunque continuare a supportarli. Se l'infrastruttura per i template globali venisse creata e la migrazione dei template avvenisse con un ritmo sostenuto, allora gli sviluppatori potrebbero considerare di interrompere il supporto (e magari, un giorno, deprecare il codice) per alcuni template non globali.

Il ritmo di migrazione dei template dalle wiki maggiori verso il repository centrale potrebbe essere uno dei parametri per misurare la buona riuscita del progetto.

Deve essere possibile utilizzare i template sia con la sintassi wiki, sia con Visual Editor
Questo è un concetto ovvio, ma lo si ribadisce ugualmente: la possibilità di modificare una pagina in formato wikitesto rimane, così come la possibilità di modificare un template così come si è fatto finora. Semplicemente, questa modalità non deve diventare più complessa di com'è attualmente.

Tuttavia, Visual Editor viene utilizzato sempre più da utenti nuovi e vecchi, quindi ogni template deve funzionare (e funzionare bene) sia in modalità wikitesto, sia con Visual Editor.

Altre funzionalità relative ai template
Esistono delle funzionalità extra di MediaWiki e delle sue estensioni che riguardano i template e che devono continuare a funzionare nell'era dei template globali (richiedendo, forse, qualche aggiustamento).

MediaWiki
Dovrebbero esserci strumenti su ogni wiki per mostrare - almeno - l'analisi di base dell'uso dei template e dei moduli sulle varie pagine: in altri termini, il numero di inclusioni e invocazioni raggruppate per wiki e gli elenchi di pagine che utilizzano template e moduli. La funzione che mostra quali modelli sono richiamati da una pagina mentre viene modificata deve continuare a funzionare anche con i template globali.

Stesso discorso vale per le pagine “”, che anzi sono utilissime anche per le trasclusioni globali.

TemplateData

 * È possibile tradurre le descrizioni dei template e dei parametri in TemplateData e visualizzare le traduzioni nella lingua scelta dall'utente nella finestra di dialogo apposita di VisualEditor. Questa è una buona funzione che va preservata. L'interfaccia può essere ovviamente migliorata, ma almeno si parte da una buona base. L'aggiunta di un supporto per TemplateData nell'estensione Translate può essere una potenziale soluzione, ma non necessariamente l'unica.
 * I parametri de  devono continuare a funzionare. Allo stesso modo, dovrebbe essere possibile per le singole wiki personalizzare questi parametri - per esempio, alcuni progetti potrebbero preferire vedere scritto il template su un'unica riga, altri potrebbero preferire vederlo scritto su più righe.

Citoid

 * Citoid va configurato su ogni wiki attraverso dei file JSON, come per esempio Citoid-template-type-map.json. Nell'era dei template globali, dovrebbe diventare possibile condividere anche questi file, in modo che il pulsante “” diventi disponibile su tutte le wiki e funzionare allo stesso modo dappertutto di default. Come per i template, si deve comunque identificare un modo per aggirare la misura di default, casomai la comunità locale decida di voler operare altrimenti.

TemplateStyles

 * Deve esserci la possibilità di realizzare delle sottopagine per gli stili di un template all'interno dello stesso repository dei template, che possano essere richiamabili automaticamente di default ed eventualmente sovrascribili in locale.

TemplateSandbox

 * Special:TemplateSandbox deve continuare a funzionare.
 * Deve essere possibile modificare un template nel repository centrale e vedere in anteprima l'effetto delle modifiche su una determinata pagina di una determinata wiki.

TemplateWizard

 * L'attuale sistema di ricerca si basa sul motore di ricerca wiki. La lista dei risultati dovrà in futuro essere adeguata, per mostrare se il template è locale o globale.
 * TemplateWizard prende le informazioni sui template dalla API di TemplateData, quindi finché si continua a mantenere questa struttura, non dovrebbero esserci problemi. Inoltre, la localizzazione già funziona.

Wikibase

 * Wikidata può essere utilizzato per richiamare alcuni valori dal repository centrale alle wiki. Wikidata è già proficuamente utilizzata su varie versioni linguistiche di Wikipedia (come quella francese, ebraica, italiana, basca, russa, catalana, estone, eccetera) e su Commons, anche se l'implementazione varia da caso a caso. Questa funzione deve continuare a funzionare, ovviamente. Unificare il modo in cui i template richiamano determinati valori da Wikidata potrebbe essere una delle aree di maggiore impatto di questo progetto.
 * Questo potrebbe rendere più semplice l'integrazione di Wikidata Bridge, il progetto che permetterebbe di editare i dati su Wikidata tramite i template locali. Le modifiche ai template stessi sarebbero quindi effettuate solo una volta sul template locale e non su ciascuna wiki.

VisualEditor

 * Ovviamente, VisualEditor deve essere in grado di inserire sia i template globali, sia i template locali.
 * VisualEditor mostra un link alla pagina di descrizione del template nella schermata di dialogo. Questo link deve puntare ovviamente al template globale, quando usato.

Sviluppo
Lo sviluppo dell'infrastruttura necessaria per template e moduli globali è un progetto arduo e complesso, che va necessariamente diviso in parti più gestibili perché possa essere realizzato. A grandi linee, la scaletta in cui suddividere e realizzare il progetto è più o meno questa:


 * 1) : prima di rendere globali i moduli, bisogna innanzitutto creare un'infrastruttura per tradurli e localizzarli. Questo sarebbe di immediato aiuto soprattutto per i progetti che sono già multilingue, come Wikimedia Commons e Wikidata. Alcuni moduli vengono già tradotti attraverso il sistema “TNT”, ma si può fare di meglio.
 * 2) Moduli globali: i moduli diventano condivisi fra tutte le wiki. Questo dovrebbe avvenire prima di rendere i template globali, perché l'infrastruttura base dei moduli è più indipendente rispetto al nucleo di MediaWiki e perché sarebbero più semplici da migrare.
 * 3) Template traducibili: questo passaggio è simile a quello dei moduli traducibili e potrebbe sfruttare larga parte di quella struttura; tuttavia, ci sarà bisogno anche di tradurre i nomi dei template, dei loro parametri e forse anche qualche altra funzione (vedi le sezioni sulla localizzazione per maggiori informazioni).
 * 4) Template globali: l'ultimo passo per completare il progetto è rendere i template condivisi fra tutte le wiki.

Lo sviluppo di funzioni più avanzate, come rendere un template semantico, può e deve arrivare dopo la possibilità di renderli condivisibili. Se le due fasi fossero invertite, il codice che descrive semanticamente i template dovrebbe essere forkato su ogni singola wiki (più o meno come i template stessi), rendendo il codice più difficile da riutilizzare di come non sia già adesso.

L'accesso a template e moduli globali sarà disponibile per tutti i progetti Wikimedia. Ciò include tutte le versioni linguistiche di Wikipedia, Wikizionario, Wikivoyage, eccetera, nonché Wikimedia Commons, Wikidata, Meta, mediawiki.org, Wikitech, eccetera, nonché le wiki di prova (test.wikipedia.org, eccetera), come già avviene per le immagini da Wikimedia Commons. Anche se template e moduli globali saranno disponibili per tutti i progetti, questi non saranno obbligati a usarli.

Rendere i template riutilizzabili anche su progetti non Wikimedia potrebbe essere una buona idea. Potrebbe avere senso rendere i template riutilizzabili più facilmente non solo per i progetti Wikimedia, ma anche per altri siti basati su MediaWiki - anche se questo non porta direttamente benefici ai progetti Wikimedia. Questo sicuramente richiederà del lavoro aggiuntivo, ma potrebbe contribuire a migliorare la modularizzazione e, quindi, essere di beneficio anche per noi. Una funzionalità del genere sarebbe molto simile alla possibilità per i siti non Wikimedia di richiamare le immagini da Wikimedia Commons. Even though it doesn’t directly benefit Wikimedia projects, it may make sense to consider making templates easily reusable not only across Wikimedia projects, but also on other MediaWiki sites. Doing this will probably require some more work, but it may contribute to better modularization, and this may eventually benefit Wikimedia projects, too. This is comparable to the capability of direct embedding of images from Commons on non-Wikimedia websites.

Immagina un mondo
Immagina un mondo in cui ogni singolo essere umano possa condividere la somma della conoscenza umana - e in cui sia semplicissimo farlo perché i template sono diventati globali.

(Nota: quanto scritto nell'ultima colonna parte dal presupposto che l'infrastruttura di base esista per tutti i progetti Wikimedia e che i template più utilizzati siano centralizzati)

Stato della proposta
''Questa sezione si riferisce allo stato generale del progetto. Per i dettagli riguardo gli ultimi sviluppi e per una storia degli sforzi fatti finora, vedi questa pagina (in inglese).''

Come già scritto all'inizio, allo stato (dicembre 2020) questa pagina descrive soltanto una bozza di un ampio progetto e non costituisce alcun impegno da parte di alcuno a realizzare un qualsivoglia progetto in tal senso.

Idee simili sono state suggerite anche in passato: la più vecchia richiesta per rendere i template riutilizzabili fra progetti è del dicembre 2004 su Bugzilla ( Interwiki templates, ). Altre proposte simili sono state fatte più in là, come. Nel febbraio 2017, una proposta chiamata Global-Wiki fu chiusa perché “è stato raggiunto il consenso”: in realtà, solo alcune sue componenti sono state realizzate, come le preferenze globali, ma non i template.

La richiesta di un “repository globale centralizzato per template, gadget e moduli Lua” è stata la terza più votata nel Community Wishlist Survey 2015, mentre quella per i “gadget globali” è stata la più votata nel Community Wishlist Survey 2016. Nonostante questi risultati, nessuna di queste richieste è stata realizzata, perché non rientrava nei compiti dell'ufficio Community Tech, né sono state attribuite ad altri team.

Il progetto “Platform Evolution” (2018) ha indicato, fra i suoi obiettivi, l'intenzione di fornire supporto in futuro allo sviluppo dei template globali. Nella pagina “Platform Evolution/Recommendations”, dove vengono discusse delle idee per aggiornare la modularità dei contenuti, c'è scritto:


 * [...] i “box” sono un focus ideale per creare pagine modulari. Rappresentano funzionalità autonome, ma anche un'opportunità per consentire un'equa condivisione delle funzionalità degli utenti tra progetti e lingue, stabilendo una base tra progetti per condividere i template. Questo progetto ci costringerà anche a considerare come gestire il layout e la struttura del contenuto separatamente dal contenuto dei singoli pezzi.

Nella pagina “Platform Evolution/Goals”, fra gli obiettivi si legge:


 * Aumentare l'equità e il potere degli mezzi per contribuire. Vogliamo supportare i contributi in più modalità, compresi i file multimediali, in modi più interattivi e su tutti i progetti. Ciò significa adeguare alcuni strumenti già esistenti, come i template, per riutilizzarli in tutti i progetti e in tutte le lingue. Questo significa anche migliorare i tool di traduzione per eliminare i “silos di contenuti”. Infine, vogliamo anche rendere più semplice agli utenti la creazione di nuovi tool di contribuzione, localizzabili su più progetti.

Abstract Wikipedia, il nuovo progetto approvato da WMF nel luglio 2020 che verrà sviluppato nel prossimo futuro, include “un repository per condividere template e moduli fra i progetti WMF” fra i componenti del sottoprogetto Wikifunzioni, definendolo uno degli obiettivi principali (Wikifunzioni è il nome definitivo del progetto “Wikilambda”).

L'iniziativa è stata lanciata a settembre 2020 e affronta parte di questa proposta.

Nel Community Wishlist Survey 2021, la proposta “Templates translation” è risultata essere la più votata (e anche la più votata, al dicembre 2020, nella storia della Community Wishlist). Questa proposta affronta alcune parti di questa proposta, in particolare il paragrafo Traduzione automatica dei parametri.

Per altri esempi di relazione fra questa proposta per i template globali e i vari piani strategici nell'ambito della comunità wikimedia, vedi la pagina.

Non esiste alcun piano tecnico effettivo per realizzare una condivisione completa di moduli e template fra progetti. Questa pagina è un tentativo di ottenere un primo feedback dalle comunità riguardo un'idea del genere.

Link utili
Pagine che discutono argomenti simili a questo:


 * Platform Evolution/Goals
 * Platform Evolution/Recommendations
 * Multilingual Templates and Modules - un tentativo di realizzare una sorta di template e moduli globali tramite bot
 * meta:Community Wishlist Survey 2015/Results - la proposta per un repository centrale per template, moduli Lua e gadget globali arrivò al terzo posto nella classifica di quell'anno, è stato segnalata come “in fase di sviluppo”, ma ancora non se n'è fatto niente
 * meta:Which templates should be global? - una lista informale, fatta da vari utenti, di template che potenzialmente dovrebbero diventare globali
 * Requests for comment/Shadow namespaces - una richiesta di pareri (attualmente inattiva) su una proposta di implementazione tecnica di tale infrastruttura
 * - un meccanismo esistente, ma rudimentale, per trascludere contenuti fra progetti; considerato inefficiente e non sicuro, è attualmente disabilitato sui progetti Wikimedia
 * meta:Global-Wiki - una proposta simile, ma con uno scopo più ampio; rimasta aperta per vari anni, è stata chiusa scrivendo che “c'è un generale consenso”. Alcune delle cose esposte sono state realizzate (come le pagine utente e le preferenze globali), altre (come i template globali) non sono ancora state realizzate.
 * meta:Abstract Wikipedia - Una proposta più ampia, che include anche un repository per moduli e template globali (anche conosciuto come “Wikifunzioni”, precedentemente noto anche come “Wikilambda”).
 * m:Community Wishlist Survey 2021/Translation/Templates translation - Un desiderio della comunità che affronta alcune parti di questa proposta, in particolare il paragrafo Traduzione automatica dei parametri.