Modulo:Software/man: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
documentazione languageCategories e licenseCategories
 
(13 versioni intermedie di 3 utenti non mostrate)
Riga 21:
Per quanto riguarda essere [[software libero]]:
# Il template {{Tl|Software}} ha <code>SoftwareLibero=''sì''</code>?
# La voce è {{WikidataProp|P31|tipo=id}} {{WikidataEl|Q341|tipo=id}} / {{WikidataEl|Q1130645|tipo=id}}?
# Fra le licenze di questa voce espresse in {{WikidataProp|P275|tipo=id}} ce n'è una {{WikidataProp|P31|tipo=id}} di {{WikidataEl|Q3943414|tipo=id}}? ([[w:WP:EXPENSIVE|funzione parser dispendiosa]], vedi [[#Albero licenze Wikidata]])
 
Per quanto riguarda essere [[software proprietario]]:
# Il template {{Tl|Software}} ha <code>SoftwareLibero=''no''</code>?
# La voce è {{WikidataProp|P31|tipo=id}} {{WikidataEl|Q218616|tipo=id}} / {{WikidataEl|Q178285|tipo=id}}?
# Fra le licenze di questa voce espresse in {{WikidataProp|P275|tipo=id}} ce n'è una {{WikidataProp|P279|tipo=id}} di {{WikidataEl|Q14624820|tipo=idQ3238057}}? ([[w:WP:EXPENSIVE|funzione parser dispendiosa]], vedi [[#Albero licenze Wikidata]])
 
=== specifiesALanguage ===
Riga 40:
# <code>sì</code>: questa voce dovrebbe (o potrebbe) mostrare l'etichetta dei linguaggi di programmazione. Vale per i [[Software libero|software liberi]] o se vi sono linguaggi specificati.
# <code>no</code>: la voce non dovrebbe (o non potrebbe) mostrare l'etichetta dei linguaggi di programmazione. Capita per [[software proprietario]] senza linguaggi noti.
 
;TODO: Da novembre 2018 questa funzione è inutilizzata e potrebbe essere rimossa.
 
=== languages ===
<pre>{{#invoke:Software|languages}}</pre>
 
Stampa i linguaggi di programmazione unendo i valori dal template con i valori da Wikidata dalla proprietà {{WikidataProp|P277|tipo=id}} e categorizzando:
 
;[[:Categoria:Software libero senza linguaggio]]: La voce potrebbedovrebbe mostrare linguaggi (adperché esempioè haun linguaggisoftware inlibero, Wikidata) peròma non lo lo fa. Probabilmente sono linguaggi non previsti nella [[#Configurazione|configurazione]].
;[[:Categoria:SoftwareP277 liberouguale senzasu linguaggioWikidata]]: La voce dovrebbe mostrareI linguaggi specificati softwarenel libero) ma non lo fa. Probabilmentetemplate sono linguaggipresenti nonidentici previstiin nella [[#Configurazione|configurazione]]Wikidata.
;[[:Categoria:LinguaggioP277 diletta programmazione uguale ada Wikidata]]: IIl linguaggitemplate specificatimostra nellinguaggi templateesclusivamente sonograzie presenti identici ina Wikidata.
;[[:Categoria:LinguaggioP277 didifferente programmazione letto dasu Wikidata]]: Il template mostraha linguaggi esclusivamenteche grazieWikidata anon Wikidataha (o viceversa).
;[[:Categoria:LinguaggioP277 diassente programmazione differente dasu Wikidata]]: Il template ha linguaggi che, Wikidata non ha (o viceversa)no.
;[[:Categoria:Linguaggio di programmazione assente su Wikidata]]: Il template ha linguaggi, Wikidata no.
;[[:Categoria:Linguaggio di programmazione da Wikidata non previsto]]: Capita quando in Wikidata c'è un linguaggio assente nella [[#Configurazione|configurazione]].
 
Line 59 ⟶ 60:
}}
 
=== languageCategories ===
== Considerazioni implementative ==
<pre>{{#invoke:Software|languageCategories}}</pre>
 
Categorizza la voce in base ai suoi linguaggi di programmazione espressi in Wikidata (usata internamente in <code>[[#languages]]</code>).
 
{{Cassetto
|titolo = Software per linguaggio di programmazione
|testo = <categorytree>Software per linguaggio di programmazione</categorytree>
}}
 
=== licenseCategories ===
<pre>{{#invoke:Software|licenseCategories}}</pre>
 
Categorizza la voce in base alle licenze con cui è distribuito il software.
 
{{Cassetto
|titolo = Software per licenza
|testo = <categorytree>Software per licenza</categorytree>
}}
 
== Considerazioni implementative ==
=== Albero licenze Wikidata ===
Ricostruzione dell'albero inverso delle licenze presenti in Wikidata:
Line 67 ⟶ 87:
|Albero delle licenze
|
* {{WikidataEl|Q207621|tipo=id}} <!-- licenza -->
** {{WikidataProp|P279|tipo=id}} <!-- sottoclasse di -->
*** {{WikidataEl|Q1156659|tipo=id}} <!-- licenza open source -->
**** {{WikidataProp|P31|tipo=id}} <!-- istanza di -->
***** {{WikidataEl|Q7603|tipo=id}} <!-- GNU GPL --> [[#Albero GNU GPL]]
***** {{WikidataEl|Q334661|tipo=id}} <!-- licenza MIT -->
***** {{WikidataEl|Q191307|tipo=id}} <!-- licenza BSD --> [[#Albero BSD]]
*** {{WikidataEl|Q3943414|tipo=id}} <!-- licenza di software libero -->
**** {{WikidataProp|P31|tipo=id}} <!-- istanza di -->
***** {{WikidataEl|Q26245522|tipo=id}} <!-- Eclipse Distribution License -->
***** {{WikidataEl|Q7603|tipo=id}} <!-- GNU GPL --> [[#Albero GNU GPL]]
**** {{WikidataProp|P279|tipo=id}} <!-- sottoclasse di -->
***** {{WikidataEl|Q1437937|tipo=id}} <!-- licenza di software libero permissiva -->
****** {{WikidataProp|P31|tipo=id}} <!-- istanza di -->
******* {{WikidataEl|Q334661|tipo=id}} <!-- licenza MIT -->
******* {{WikidataEl|Q191307|tipo=id}} <!-- licenza BSD --> [[#Albero BSD]]
******* {{WikidataEl|Q7603|tipo=idQ616526}} <!-- GNUlicenza GPLApache -->
******* {{WikidataEl|Q308915}} <!-- licenza MPL -->
*** {{WikidataEl|Q3238057}} <!-- licenza di software non-libero -->
**** {{WikidataProp|P31|tipo=idP279}} <!-- istanzasottoclasse di -->
***** {{WikidataEl|Q725920}} <!-- EULA -->
****** {{WikidataProp|P31}} <!-- istanza di -->
******* {{WikidataEl|Q28914702}} <!-- Microsoft EULA -->
 
=== Albero GNU GPL ===
Notare che {{WikidataEl|Q7603}} è reputato con i medesimi valori sia per {{WikidataProp|P31}} che per {{WikidataProp|P279}}, in quanto per alcuni è considerata una vera e propria licenza, mentre per altri una sottoclasse di licenze. [[d:Talk:Q308915]].
* {{WikidataEl|Q7603|tipo=id}} <!-- GNU GPL -->
 
* {{WikidataProp|P31|tipo=id}} <!-- istanza di -->
*** {{WikidataEl|Q10513452|tipo=idQ7603}} <!-- GNU GPL v1 -->
*** {{WikidataProp|P31|tipo=id}} <!-- istanza di -->
***** {{WikidataEl|Q27016750|tipo=idQ10513452}} <!-- GNU GPL v1+ -->
*** {{WikidataElWikidataProp|Q10513450|tipo=idP31}} <!-- GNU GPListanza v2di -->
***** {{WikidataPropWikidataEl|P31|tipo=idQ27016750}} <!-- istanzaGNU GPL div1+ -->
***** {{WikidataEl|Q27016752|tipo=idQ10513450}} <!-- GNU GPL v2+ -->
**** {{WikidataElWikidataProp|Q10513445|tipo=idP31}} <!-- GNU GPListanza v3di -->
***** {{WikidataPropWikidataEl|P31|tipo=idQ27016752}} <!-- istanzaGNU GPL div2+ -->
***** {{WikidataEl|Q27016754|tipo=idQ10513445}} <!-- GNU GPL v3+ -->
**** {{WikidataElWikidataProp|Q1131681|tipo=idP31}} <!-- GNUistanza AGPLdi -->
***** {{WikidataPropWikidataEl|P31|tipo=idQ27016754}} <!-- istanzaGNU GPL div3+ -->
***** {{WikidataEl|Q27017230|tipo=idQ1131681}} <!-- GNU AGPL v1 -->
***** {{WikidataElWikidataProp|Q27017232|tipo=idP31}} <!-- GNU AGPListanza v3di -->
****** {{WikidataPropWikidataEl|P31|tipo=idQ27017230}} <!-- istanzaGNU AGPL div1 -->
******* {{WikidataEl|Q27020062|tipo=idQ27017232}} <!-- GNU AGPL v3 -->
****** {{WikidataProp|P31}} <!-- istanza di -->
******* {{WikidataEl|Q27020062}} <!-- GNU AGPL v3 -->
 
=== Albero BSD ===
* {{WikidataEl|Q191307|tipo=id}} <!-- licenza BSD -->
** {{WikidataProp|P31|tipo=id}} <!-- istanza di -->
*** {{WikidataEl|Q18491847|tipo=id}} <!-- 3-clause BSD -->
 
=== Albero caso peggiore ===
Attualmente il "caso peggiore" per identificare un'{{WikidataProp|P31|tipo=id}} {{WikidataEl|Q3943414|tipo=id}} sembra essere il seguente (albero in cascata):
 
{{WikidataEl|Q27020062|tipo=id}} <!-- GNU AGPL v3 -->:
* {{WikidataProp|P31|tipo=id}} <!-- istanza di -->
* {{WikidataEl|Q27017232|tipo=id}} <!-- GNU AGPL v3 -->
** 1ª sotto-richiesta:
** {{WikidataProp|P31|tipo=id}} <!-- istanza di -->
** {{WikidataEl|Q1131681|tipo=id}} <!-- GNU AGPL -->
*** 2ª sotto-richiesta:
*** {{WikidataProp|P31|tipo=id}}
*** {{WikidataEl|Q7603|tipo=id}} <!-- GNU GPL -->
**** 3ª sotto-richiesta:
**** {{WikidataProp|P31|tipo=id}} <!-- istanza di -->
**** {{WikidataEl|Q3943414|tipo=id}} <!-- licenza di software libero --> {{SI}}
 
È perciò possibile limitare un massimo livello di ricorsione a 3 fintanto che questa struttura rimane invariata.
Line 128 ⟶ 157:
 
== Configurazione ==
{{Vedi anche|Modulo:Software/Configurazione}}
Al momento ogni linguaggio deve essere presente in:
 
;[[Template:Software/Linguaggio]]: I linguaggi qui presenti sono fruibili dai Wikipediani per inserirli nel template {{Tl|Software}}. I linguaggi vengono smistati per richiamare il corrispettivo template {{Tl|Software/L}} che si occupa della categorizzazione vera e propria per tale linguaggio e di stampare il wikilink alla voce del linguaggio, come ad esempio mostrare banalmente "[[C (linguaggio)|C]]" al posto di "[[C (linguaggio)]]". <small>Compilare con cura {{Tl|Software/L}} dato che in maniera concisa permette di scegliere quali sotto-categorie prevedere. Ad esempio se c'è una categoria dedicata ai software libero (come [[:Categoria:Software libero in C]]) ed eventualmente quella per il software proprietario, oppure se entrambe non ci sono, lasciando solamente una più generica [[:Categoria:Software in C]].</small>
Per cambiare il modo in cui è mostrato un linguaggio o una licenza, prova a guardare in [[Wikidata]] tale linguaggio o tale licenza. Considera anche che se il nome in Wikidata è troppo lungo, è scelto il {{WikidataProp|P1813}}.
;[[Modulo:Software/Configurazione]]: I linguaggi qui presenti sono inseribili automaticamente da Wikidata. Ognuno di essi richiamerà [[Template:Software/Linguaggio]].
 
Per aggiungere una categoria di un linguaggio, o una licenza, vedi [[Modulo:Software/Configurazione]].
 
{{Cassetto | Note storiche |
Fino a marzo 2017 per cambiare il wikilink alla voce del linguaggio o mostrare banalmente "[[C (linguaggio)|C]]" al posto di "[[C (linguaggio)]]" occorreva modificare il [[Template:Software/Linguaggio]] considerando complesse sotto-inclusioni del [[Template:Software/L]]. Inoltre ora non occorre più mantenere parallelamente la documentazione in [[Template:Software#Linguaggi]] perchè è generata. Prima era [[Template:Software/Linguaggio/man]].
}}
 
=== Risoluzione dei problemi ===
Se il template {{Tl|Software}} nonha mostra alcuni linguaggi, sebbene vi sianol'errore «''non&nbsp;in Wikidata, un linguaggio è assente in &nbsp;[[ModuloTemplate:Software/ConfigurazioneLinguaggio|lista]].''» significa che:
* Potrebbe essere un errore di battitura, si veda quella lista.
* Se non è un errore di battitura ma manca un linguaggio rilevante, vedere [[Modulo:Software/Configurazione]].
 
== Pagine correlate ==
Se il template {{Tl|Software}} ha l'errore «''non&nbsp;in&nbsp;[[Template:Software/Linguaggio|lista]]''», un linguaggio specificato nel template {{Tl|Software}} è assente in [[Template:Software/Linguaggio]].
* [[Template:Categoria software]]
 
<includeonly>[[Categoria:Moduli]]</includeonly><noinclude>[[Categoria:Manuali dei moduli]]</noinclude>