Come impostare un workflow decisionale per decidere se licenziare o meno Java.
Alla luce della politica di pricing per il modello di sottoscrizioni Java SE (ne abbiamo parlato qui) introtta a gennaio 2023, che tiene conto del numero di dipendenti delle aziende clienti invece dell’uso che viene fatto effettivamente di Java, le aziende dovrebbero valutare ottimizzazioni e scenari alternativi per ridurre l’impatto sul budget.
Ma per determinare per quali applicazioni richiedere (o non richiedere) la sottoscrizione, il primo passo è essere consapevoli degli usi di Java nei propri ambienti e del valore che esso apporta all’organizzazione. Per farlo la conoscenza della versione utilizzata, del contratto stipulato, delle modalità di utilizzo e delle funzionalità commerciali che si vogliono adoperare è indispensabile per prendere decisioni in occasione di rinnovi ed accordi di espansione.
Al momento il cambio di metrica da NPU/processori a dipendenti non riguarda le sottoscrizioni attive (“Customers of the legacy Java SE Subscription products continue to receive all the original benefits and may renew under their existing terms and metrics”) ma non è chiaro se ciò si estenda all’aumento delle quantità di licenze o per quanto tempo sarà garantito il rinnovo alle condizioni esistenti.
Per cui è bene capire cosa si ha in casa e come viene utilizzato, in modo da adoperare misure preventive di riduzione dei costi e regolarizzare la propria posizione di licenza nel caso in cui il vendor bussi alla porta (secondo Gartner potrebbe avvenire molto presto).
In questo articolo cerchiamo di fare chiarezza sui casi per cui licenziare Oracle Java, definendo un workflow decisionale per definire se l’utilizzo che facciamo di Java prevede o meno una sottoscrizione.
Java è stato rilasciato in open source e lo è ancora.
Infatti, lo sviluppo open source di Java è guidato da Oracle all’interno della community OpenJDK: l’applicazione OpenJDK è scaricabile gratuitamente dal sito https://openjdk.org/ ed è rilasciata senza supporto sotto licenza GNU General Public License. Questa è ancora la versione totalmente open source, in continuità con la volontà iniziale di SUN Microsystems, l’azienda che ha sviluppato il linguaggio di programmazione Java.
Se abbiamo scaricato Java SE da OpenJDK abbiamo una licenza GNU che non prevede sottoscrizione. E lo stesso vale per altri provider di Java che mantengono una versione “totally free”.
Lo step successivo è identificare lo scopo dell’installazione: se sono installazioni App/Middleware/OEM non è richiesta licenza. Infatti, le installazioni di Java che sono una componente di Oracle Middleware o di un’applicazione possono essere esentate dai calcoli in quanto sono coperte dalla licenza principale.
Ma attenzione, bisogna sempre verificare: ad esempio in OEM bisogna controllare che tutti i target gestiti con OEM siano dotati di sottoscrizione. Sappiamo, inoltre, che Java può essere richiesto per altre installazioni: secondo l’agreement BCL, se viene rispettato il “General Purpose” l’uso di Java è libero (ma questo lo vedremo più avanti).
La versione di Java scaricata dal sito Oracle è vincolata a un contratto: può essere BCL (Binary Code License Agreement) o OTN (Oracle Technology License Agreement). Entrambi i casi richiedono licenza, ma prevedono dei casi di utilizzo libero (es. General Purpose per BCL).
Con agreement BCL, l’applicazione presenta un mix di funzionalità gratuite e commerciali per cui è richiesta attenzione. Questo perché in seguito all’acquisizione di SUN da parte di Oracle nel 2010, il vendor ha aggiunto delle funzionalità proprietarie alla suite Java, inserendo il concetto di “restricted use”.
Un terzo agreement è NFTC Oracle No-Fee Terms and Conditions, ma non richiede licenza. A determinare l’appartenenza a BCL o OTN è stato un marcatore temporale legato alla “critical patch update” di aprile 2019: a partire da quell’aggiornamento, Oracle ha deciso che non erano più previsti aggiornamenti pubblici gratuiti per Java 8.
Dopo il rilascio della nuova LTS Java SE 21 sotto licenza NFTC, Oracle ha annunciato che Java SE 17 riceverà gli aggiornamenti gratuiti solo fino a settembre 2024, per cui tutti i futuri aggiornamenti (dall’update 13 e superiori) rientreranno sotto contratto OTN.
Facciamo un riepilogo degli agreement legati alla versione:
Il BCL riguarda le versioni (compresi gli aggiornamenti) rilasciate prima del 16 aprile 2019, dalla versione 5 alla 10 (esclusa la versione 8 in seguito all’update 211, poi lo vedremo nel dettaglio).
L’Oracle BCL prevede un concetto di “restricted use” e quindi richiede il pagamento di una sottoscrizione per utilizzare Oracle Java, ad eccezione dei casi in cui:
Il BCL definisce “Software”, “General Purpose Desktop Computers and Servers”, “Programs” e le relazioni tra questi termini. All’interno del BCL, si legge che Java è gratuito nei casi in cui vengano rispettate le condizioni di “general purpose computing” (i casi di “utilizzo generico” come la visualizzazione di contenuti tramite browser, l’utilizzo di mail o di applicazioni di produttività come può essere una suite per erogare webinar in streaming)
“General Purpose Desktop Computers and Servers” means computers, including desktop and laptop computers, or servers, used for general computing functions under end user control (such as but not specifically limited to e-mail, general purpose internet browsing and office suite productivity tool)
“Oracle grants you a non-exclusive, non-transferable, limited license without fees to reproduce internally and use internally the software complete and unmodified for the purpose of designing, developing, and testing your programs.”
Allo stesso tempo nel BCL Oracle definisce anche che:
“You may not use the Commercial Features for running programs, Java applets or applications in your internal business operations or for any commercial or production purpose, […]. If you want to use the Commercial Features for any purpose other than as permitted in this Agreement, you must obtain a separate license from Oracle.”
In altre parole, è necessario pagare una licenza commerciale per utilizzare qualsiasi funzionalità commerciale. Sembra semplice, ma è sorprendentemente facile attivare e utilizzare inavvertitamente le funzioni commerciali di Java. Scaricare il software Java dal sito web Oracle, che presenta un mix di funzioni gratuite e commerciali, richiede attenzione su quali siano le funzioni aggiuntive per cui è richiesta licenza.
Infatti, bisogna essere consapevoli di quali sono le funzionalità commerciali incluse automaticamente in Java SE, leggendo il sito Oracle e i termini aggiuntivi. Tra queste troviamo:
Quindi, se la versione scaricata rientra tra quelle sotto BCL, bisogna verificare se l’utilizzo rientra in quelli previsti dal “General Purpose”, per cui non è richiesta licenza.
Ma quest’ultimo decade se: 1) applico l’update di aprile 2019 e se 2) vengono utilizzate funzionalità commerciali al di fuori di Test e Sviluppo per applicazioni interne.
A partire da aprile 2019, Oracle ha cambiato la politica di licenza per JDK8: non essendo più previsti aggiornamenti pubblici gratuiti per Java 8 (che era la versione più diffusa tra gli sviluppatori), le aziende dovevano cominciare a pagare il supporto commerciale o cercare un sostituto per Oracle Java.
A partire da questo “critical patch update”, le licenze JDK scaricate dal sito Oracle rientrano sotto il contratto OTN, ovvero dall’aggiornamento successivo al 8u202. Anche le licenze sotto BCL, una volta fatto l’aggiornamento di sicurezza, rientrano sotto OTN.
Questo agreement è sostanzialmente diverso dal BCL: decade il concetto di “General Purpose” ma sono previsti usi gratuiti come:
Con l’uscita di Java17 nel 2021, Oracle ha modificato i termini di licenza e ha introdotto la licenza NFTC Oracle No-Fee Terms and Conditions, sulla base del feedback degli sviluppatori che desideravano avere Java nuovamente libero per l’uso commerciale.
Come accennato prima, con la nuova LTS Java SE 21, la versione 17 non richiede sottoscrizione solo se ha aggiornamenti precedenti all’update 13.
Se si utilizza una versione con aggiornamenti successivi, viene licenziata con OTN e quindi sono vietati gli utilizzi commerciali (salvo le eccezioni previste sotto “License Rights and Restrictions“)
Lo switch alla versione Java SE 17 fino a poco fa era una delle soluzioni che si potevano prevedere per ridurre l’impatto sul budget legato alla nuova metrica. Ora bisogna valutare sotto quale contrattualistica rientra (se OTN o NFTC)
Possiamo comunque adoperarci per migrare alla Java SE 21 o prevedere altre contromisure, ad esempio rimuovendo Java o passando a versioni open source o ancora prevedendo casi in cui l’utilizzo è gratuito, ma ricordiamo che in qualsiasi momento un dipendente o un appaltatore potrebbe installare Java senza la licenza appropriata, e allora non sareste più conformi.
Il problema non è solo la compliance: i costi di migrazione, aggiornamento o supporto (es. OpenJDK non lo prevede) potrebbero essere superiori al mantenimento dello status quo.
In WEGG ci occupiamo di ottimizzare la spesa legata alle licenze con le strategie più adatte per la vostra azienda, in modo da garantire il valore di Java e la sua conformità in ogni momento.
Approfondimenti
I NOSTRI UFFICI
I NOSTRI UFFICI
PADOVA
Via Arnaldo Fusinato 42, 35137
MILANO
Viale Enrico Forlanini 23, 20134
ROMA
Viale Giorgio Ribotta 11, 00144
Copyright © 2022 WEGG S.r.l. • P.I 03447430285 • C.F. 02371140233 • REA 311023
Azienda certificata ISO 9001:2015