Creare soluzioni web, anche le più semplici, al giorno d'oggi implica l'utilizzo e la conoscenza di vari linguaggi e tecnologie:
JavaScript per il codice client,
PHP/
Java, o
.NET per la parte server,
Apache o
Tomcat per rendere disponibile l'applicazione, ecc.
Opa cerca di risolvere tutto questo
fornendo un
unico linguaggio di programmazione per fare ogni cosa, dalla descrizione dell'interfaccia utente, alla scrittura della business logic fino all'accesso al database.
Non è necessario un plug-in apposito per eseguire le applicazioni
Opa (come succede se si usano altre tecnologie come
Flash o
Silverlight, ad esempio): infatti, è l'ambiente stesso che
trasformerà automaticamente le porzioni del sorgente, che devono essere eseguite all'interno del browser in normale codice JavaScript.
Ma non è finita qui: il progetto è in realtà una
soluzione chiavi in mano; difatti, a differenza di altre scelte tecnologiche dove è necessario installare e manutenere componenti separati come web server, database server, application server, ecc., in
Opa tutti questi elementi sono integrati all'interno della piattaforma semplificando così enormemente anche le operazioni di deploy e manutenzione.
Tutto questo si traduce in applicazioni incredibilmente compatte, ad esempio sono sufficienti appena
27 linee di codice per creare una completa chat web funzionante. Ovviamente questa semplicità ha un prezzo: la
curva di apprendimento. Sarà infatti necessario imparare non solo un nuovo linguaggio di programmazione, che poco ha a che vedere con quelli a cui gli sviluppatori web sono abituati, ma anche prendere familiarità con il "modo" in cui
Opa effettua accessi al database, gestisce la comunicazione o mostra i dati. In sostanza poco o niente delle skill acquisite dai normali sviluppatori di applicazioni web potrà essere impiegato in questo caso.
Opa è rilasciato con
GNU Affero General Public License e il
codice sorgente è ospitato su
GitHub, quindi tecnicamente chiunque potrebbe contribuire al progetto, se non fosse che a complicare ulteriormente le cose c'è il fatto che l'engine in sé è scritto in un linguaggio di programmazione decisamente poco conosciuto: l'
OCaml. Quindi in sostanza chi vuole contribuire al progetto dovrà imparare non uno, ma ben due nuovi linguaggi, e questo sicuramente non aiuterà a creare nel breve periodo una forte comunità di sviluppatori che ne alimenti la crescita.