Capitolo 11. Gestione delle dipendenze e problemi di compatibilità

Compatibilità di versione di RKWard

Facciamo del nostro meglio per assicurarci che le estensioni sviluppate per una vecchia versione di RKWard rimangano funzionanti nelle versioni successive di RKWard. Tuttavia, non è sempre vero il contrario poiché vengono aggiunte nuove funzionalità. Poiché non tutti gli utenti eseguono l'ultima versione di RKWard, ciò significa che la propria estensione potrebbe non funzionare per tutti.

Quando siete a conoscenza di tali problemi di compatibilità, dovreste assicurarvi di documentarlo nel file .pluginmap, utilizzando l'elemento <dependencies>. <dependencies> può essere specificato come figlio diretto dell'elemento <document> di .pluginmap o come elemento figlio di singole definizioni <component>. Nel primo caso, le dipendenze si applicano a tutte le estensioni nella mappa. In quest'ultimo caso solo ai singoli <component>. Potete anche combinare le principali dipendenze «globali» e «specifiche». In questo caso le dipendenze «globali» si sommano a quelle del singolo componente.

Vediamo un piccolo esempio:

<document ...>
        <dependencies rkward_min_version="0.5.0c" />
        <components ...>
                <component id="myplugin" file="versione_ridotta_della_mia_estensione.xml" ...>
                        <dependencies rkward_max_version="0.6.0z" />
                </component>
                <component id="mia_estensione" file="versione_precisa_della_mia_estensione.xml" ...>
                        <dependencies rkward_min_version="0.6.1" />
                </component>
                ...
x        </components ...>
</document>
        

In questo esempio, tutte le estensioni richiedono almeno la versione 0.5.0c di RKWard. Un'estensione, con id="myplugin", è disponibile in due varianti alternative. La prima versione, semplificata, sarà utilizzata per le versioni di RKWard precedenti alla 0.6.1. La seconda utilizza funzionalità nuove in RKWard 0.6.1 e sarà utilizzata solo a partire dalla versione 0.6.1.

Fornire varianti alternative come questa è un modo molto intuitivo per utilizzare nuove funzionalità, pur mantenendo il supporto per le versioni precedenti di RKWard. Le versioni alternative dovrebbero condividere lo stesso id (in caso contrario saranno generati avvisi) e possono essere definiti solo all'interno dello stesso file di .pluginmap.

Le estensioni che non sono compatibili con la versione in esecuzione di RKWard, e che non vengono forniti con una versione alternativa, saranno ignorati con un avviso.

Nota

In realtà RKWard 0.6.1 è la prima versione che interpreta le dipendenze e che segnala errori di dipendenza. Pertanto, contrariamente a quanto può suggerire l'esempio, specificare eventuali versioni precedenti nelle dipendenze non avrà alcun effetto diretto (ma potrebbe comunque essere una buona idea ai fini della documentazione).

A volte sarà persino possibile gestire i problemi di incompatibilità di versione all'interno di un singolo file .pluginmap, utilizzando l'elemento <dependency_check>, descritto nella sezione seguente.