TodoMVC è un interessante progetto basato sull'implementazione della stessa applicazione ToDo utilizzando diversi framework JavaScript; nel complesso le soluzioni analizzate sono per il momento oltre una sessantina, alcune scritte in puro JavaScript come Ember.js, AngularJS (in almeno uno dei suoi rami di sviluppo), React e KnockoutJS, alcune basate sulla compilazione in JavaScript (Serenade, AngularDart, Spine..) altre in via di implementazione, come Thorax e PureMVC.
Attualmente la scelta a disposizione degli sviluppatori sembrerebbe essere quindi molto ampia, a tal proposito è però possibile chiedersi se questo stato di cose possa rappresentare un effettivo vantaggio per i coders; al di là delle motivazioni su cui si basano le preferenze personali (massimizzazione della produttività, semplicità d'uso..) volendo rispondere a tale quesito, potrebbe essere necessario prendere in considerazione alcune variabili in grado di determinare questo, almeno apparentemente eccessivo, proliferare di librerie.
Un primo fattore da tenere in considerazione è ricollegabile alla politica dei rilasci, i framework per lo sviluppo client side (ma non necessariamente solo questi ultimi) tendono ad essere messi a disposizione molto prima della realizzazione di una versione definitiva; se questa tendenza potrebbe rivelarsi positiva per garantire una maggiore partecipazione degli utilizzatori alla fase sperimentale, è logico ipotizzare che essa possa contribuire al numero elevato di progetti disponibili.
In secondo luogo bisognerebbe tener presente l'evoluzione dell'ambiente di riferimento per il funzionamento di JavaScript e, di conseguenza, dei framework basati su di esso; parliamo naturalmente dei browser Web che negli ultimi anni hanno dovuto integrare in modo abbastanza rapido il supporto a nuove tecnologie e standard, dando luogo a cambiamenti a cui le librerie si sono poi dovute adattare e devono continuamente adeguarsi. Un fenomeno di per sè virtuoso ma in grado di generare confusione.
Da segnalare poi una serie di ulteriori variabili in grado di contribuire allo stato attuale delle cose, come la grande diffusione di microframework in grado di fornire solo parzialmente le features necessarie per il completamento dei progetti, le problematiche relative alla retrocompatibilità (si pensi alle recenti polemiche su Angular 2) e, naturalmente, la disponibilità di documentazione, supporto e riferimenti in Rete.
Non che disporre di un'ampia scelta rappresenti necessariamente un problema, sarebbe semmai da scongiurare il paradosso che vuole un numero troppo elevato di opzioni corrispondere ad una maggiore difficoltà di effettuare la scelta corretta.