Modulo:Software/man: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
isFreeSoftware(frame) return 'sì', 'no', nil
documentazione languageCategories e licenseCategories
 
(30 versioni intermedie di 3 utenti non mostrate)
Riga 1:
<includeonly>{{Protetta}}</includeonly>{{Man modulo}}
[[Aiuto:Moduli|Modulo]] [[Lua]] per integrare le informazioni espresse nel [[Template:Software]] con le informazioni provenienti da [[Wikidata]].
 
Se alcuni linguaggi sono assenti è un problema di '''[[#Configurazione|configurazione]]'''.
 
In seguito l'uso di alcune sotto-funzioni.
Line 13 ⟶ 15:
# <code>no</code>: è [[software proprietario]]
# <code>''nil''</code>: nessuna informazione per determinarlo
 
==== isFreeSoftware e Wikidata ====
A livello implementativo questa funzione cerca di uniformare alcune delle molte modalità con cui si può esprimere questa informazione in Wikidata.
 
Per quanto riguarda essere [[software libero]]:
# Il template {{Tl|Software}} ha <code>SoftwareLibero=''sì''</code>?
# La voce è {{WikidataProp|P31}} {{WikidataEl|Q341}} / {{WikidataEl|Q1130645}}?
# Fra le licenze di questa voce espresse in {{WikidataProp|P275}} ce n'è una {{WikidataProp|P31}} di {{WikidataEl|Q3943414}}? ([[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}} {{WikidataEl|Q218616}} / {{WikidataEl|Q178285}}?
# Fra le licenze di questa voce espresse in {{WikidataProp|P275}} ce n'è una {{WikidataProp|P279}} di {{WikidataEl|Q3238057}}? ([[w:WP:EXPENSIVE|funzione parser dispendiosa]], vedi [[#Albero licenze Wikidata]])
 
=== specifiesALanguage ===
Line 23 ⟶ 38:
 
Valori di ritorno:
# <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}} e categorizzando:
 
;[[:Categoria:Software libero senza linguaggio]]: La voce dovrebbe mostrare linguaggi perché è un software libero, ma non lo fa.
;[[:Categoria:P277 uguale su Wikidata]]: I linguaggi specificati nel template sono presenti identici in Wikidata.
;[[:Categoria:P277 letta da Wikidata]]: Il template mostra linguaggi esclusivamente grazie a Wikidata.
;[[:Categoria:P277 differente su Wikidata]]: Il template ha linguaggi che Wikidata non ha (o viceversa).
;[[:Categoria:P277 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]].
 
{{cassetto
|titolo = Software per linguaggio di programmazione
|testo = <categorytree>Software per linguaggio di programmazione</categorytree>
}}
 
=== languageCategories ===
<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:
 
{{Cassetto
|Albero delle licenze
|
* {{WikidataEl|Q207621}} <!-- licenza -->
** {{WikidataProp|P279}} <!-- sottoclasse di -->
*** {{WikidataEl|Q1156659}} <!-- licenza open source -->
**** {{WikidataProp|P31}} <!-- istanza di -->
***** {{WikidataEl|Q7603}} <!-- GNU GPL --> [[#Albero GNU GPL]]
***** {{WikidataEl|Q334661}} <!-- licenza MIT -->
***** {{WikidataEl|Q191307}} <!-- licenza BSD --> [[#Albero BSD]]
*** {{WikidataEl|Q3943414}} <!-- licenza di software libero -->
**** {{WikidataProp|P31}} <!-- istanza di -->
***** {{WikidataEl|Q26245522}} <!-- Eclipse Distribution License -->
***** {{WikidataEl|Q7603}} <!-- GNU GPL --> [[#Albero GNU GPL]]
**** {{WikidataProp|P279}} <!-- sottoclasse di -->
***** {{WikidataEl|Q1437937}} <!-- licenza di software libero permissiva -->
****** {{WikidataProp|P31}} <!-- istanza di -->
******* {{WikidataEl|Q334661}} <!-- licenza MIT -->
******* {{WikidataEl|Q191307}} <!-- licenza BSD --> [[#Albero BSD]]
******* {{WikidataEl|Q616526}} <!-- licenza Apache -->
******* {{WikidataEl|Q308915}} <!-- licenza MPL -->
*** {{WikidataEl|Q3238057}} <!-- licenza di software non-libero -->
**** {{WikidataProp|P279}} <!-- sottoclasse 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}} <!-- GNU GPL -->
* {{WikidataProp|P31}} <!-- istanza di -->
*** {{WikidataEl|Q10513452}} <!-- GNU GPL v1 -->
*** {{WikidataProp|P31}} <!-- istanza di -->
***** {{WikidataEl|Q27016750}} <!-- GNU GPL v1+ -->
*** {{WikidataEl|Q10513450}} <!-- GNU GPL v2 -->
**** {{WikidataProp|P31}} <!-- istanza di -->
***** {{WikidataEl|Q27016752}} <!-- GNU GPL v2+ -->
*** {{WikidataEl|Q10513445}} <!-- GNU GPL v3 -->
**** {{WikidataProp|P31}} <!-- istanza di -->
***** {{WikidataEl|Q27016754}} <!-- GNU GPL v3+ -->
*** {{WikidataEl|Q1131681}} <!-- GNU AGPL -->
**** {{WikidataProp|P31}} <!-- istanza di -->
***** {{WikidataEl|Q27017230}} <!-- GNU AGPL v1 -->
***** {{WikidataEl|Q27017232}} <!-- GNU AGPL v3 -->
****** {{WikidataProp|P31}} <!-- istanza di -->
******* {{WikidataEl|Q27020062}} <!-- GNU AGPL v3 -->
 
=== Albero BSD ===
* {{WikidataEl|Q191307}} <!-- licenza BSD -->
** {{WikidataProp|P31}} <!-- istanza di -->
*** {{WikidataEl|Q18491847}} <!-- 3-clause BSD -->
 
=== Albero caso peggiore ===
Attualmente il "caso peggiore" per identificare un'{{WikidataProp|P31}} {{WikidataEl|Q3943414}} sembra essere il seguente (albero in cascata):
 
{{WikidataEl|Q27020062}} <!-- GNU AGPL v3 -->:
* {{WikidataProp|P31}} <!-- istanza di -->
* {{WikidataEl|Q27017232}} <!-- GNU AGPL v3 -->
** 1ª sotto-richiesta:
** {{WikidataProp|P31}} <!-- istanza di -->
** {{WikidataEl|Q1131681}} <!-- GNU AGPL -->
*** 2ª sotto-richiesta:
*** {{WikidataProp|P31}}
*** {{WikidataEl|Q7603}} <!-- GNU GPL -->
**** 3ª sotto-richiesta:
**** {{WikidataProp|P31}} <!-- istanza di -->
**** {{WikidataEl|Q3943414}} <!-- licenza di software libero --> {{SI}}
 
È perciò possibile limitare un massimo livello di ricorsione a 3 fintanto che questa struttura rimane invariata.
}}
 
== Configurazione ==
{{Vedi anche|Modulo:Software/Configurazione}}
 
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}}.
 
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}} ha l'errore «''non&nbsp;in&nbsp;[[Template:Software/Linguaggio|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 ==
* [[Template:Categoria software]]
* [[Modulo:Software/Configurazione]]
 
<includeonly>[[Categoria:Moduli]]</includeonly><noinclude>[[Categoria:Manuali dei moduli]]</noinclude>