State of Javascript è un progetto ideato dagli sviluppatori Javascript Raphaël Benitte, Sacha Greif e Michael Rambeau per "indagare" nel mondo dello sviluppo del potente linguaggio di scripting per il Web, ricavando dati su trend in uso, statistiche di utilizzo, percentuale di utilizzo dei vari framework/librerie, plug-in in voga, grado di soddisfazione ed altre voci similari, interrogando più di 20.000 sviluppatori provenienti da tutto il mondo.
Nell'ultima versione del sondaggio, gli autori sono andati più a fondo, senza chiedersi soltanto quali strumenti siano i preferiti dagli sviluppatori Javascript, ma anche il perché. A questo scopo, gli stessi autori hanno ricavato una lista di 12 fattori che a loro avviso sono una parte fondamentale per la scelta di un tool (framework/libreria) al posto di un altro:
Caratteristiche
Quante feature offre un framework? Il popolare React, ad esempio, è percepito da molti dei partecipanti al sondaggio come "incompleto", a causa della necessità di utilizzo di prodotti di terze parti come React Rounder e Redux per svolgere determinate tipologie di compiti come il routing.
Stabilità
Se il framework risulta essere completo, ma crasha ogni due minuti presentando degli errori, la sua popolarità calerà in modo obbligato. Scrivere codice, rilevare e sistemare bug diventa un onere in grado di determinare una migrazione verso altre soluzioni.
Performance
La velocità di esecuzione è un parametro che fa la differenza per molti sviluppatori Javascript. Un prodotto come Preact, che come recita il sito ufficiale rappresenta una scelta identica ma più veloce rispetto a React, è stato riconosciuto come alternativa valida da molti partecipanti al sondaggio.
Ecosistema
Ciò che si è creato attorno al prodotto è risultato essere di importanza rilevante tanto quanto il prodotto stesso: è una rappresentazione del grado di restituire la maturità del progetto. Pacchetti estensivi di alta qualità prodotti da terze parti sono uno dei migliori segnali a riguardo.
Community
Un fattore che è stato ripetutamente citato è la community che si sviluppa attorno al progetto. Utile per ricevere e fornire aiuto, incrementare le proprie conoscenze e capacità e per offrire/trovare servizi a corredo.
Curva d'apprendimento
Più la curva di apprendimento è bassa, più gli svilppatori tenderanno a scegliere il framework/libreria. Dai risultati del sondaggio si evince che la maggior parte degli sviluppatori (provenendo da un mondo in cui HTML e Javascript erano "separati") vedono React come più "complesso" da apprendere rispetto ad un'alternativa come Vue, più vicina alle abitudini front-end degli sviluppatori stessi.
Documentazione
Una curva d'apprendimento ridotta passa necessariamente da un'ottima documentazione. Più questa risulta essere chiara, immediata e ricca di esempi pratici, più gli sviluppatori tendono ad apprezzare un framework ed utilizzarlo più velocemente nei propri progetti. Molto apprezzati sono stati gli esempi nella documentazione che anticipano particolari problematiche nelle quali potrebbe incappare uno sviluppatore.
Strumenti
Strumenti realizzati con un particolare framework che offrono funzionalità di alta qualità sono un fattore determinante. Oltre a mostrare le potenzialità del prodotto, offrono una valida modalità per avvicinarsi allo stesso. Alcuni esempi sono il DevTools di Redux e TypeScript di Visual Studio.
Passato
Non sempre un prodotto "nuovo" riesce ad entrare nel cuore degli sviluppatori, proprio a causa della recente presenza nel settore. Un progetto che mostra la sua evoluzione nel tempo, con sistemi di tracciamento dello sviluppo come Github, tendono a godere di consensi molto più ampi rispetto a prodotti che appaiono come troppo recenti.
Team
Il team di sviluppo può essere una componente fondamentale per la popolarità di un framework Javascript. Il fatto che dietro React, ad esempio, ci fosse niente meno che Facebook, ha contributo in modo rilevante alla sua crescita ed alla sua popolarità. Facebook inoltre, rilasciando Relay e GraphQL, ha dimostrato che il successo di React non fu immeritato. Ovviamente non si tratta di un fattore vincolante, come dimostra il caso di Vue.
Compatibilità
Un fattore importante è il grado di compatibilità del framework. Un prodotto che evolve in modo repentino senza porre attenzione alla retrocompatibilità con le precedenti versioni non è apprezzabile da parte degli utilizzatori tanto quanto uno che si cura di questa caratteristica. E' il caso di React Rounder, nel passaggio dalla versione 3 a 4, che ha comportato un cambio di API, o di Angular, nel passaggio da Angular.js ad "Angular".
Momento
Quanto è popolare e quanto è stato sponsorizzato il progetto? Se da una parte una sponsorizzazione eccessiva può rischiare di diventare un indicatore di "poca sostanza" da parte del prodotto, dall'altra una corretta distribuzione dello stesso contribuisce enormemente alla crescita della sua popolarità. Più un framework è utilizzato, più tende ad essere adottato e diventare la scelta scontata da parte degli utilizzatori.