Questions
For each of the criteria, here are the main questions that we will be taking a look at:
Learning curve
- How fast can you get going and get productive with the framework?
- Can you get by with Google and Stackoverflow?
- Do you need to take a course to learn it?
- How does this change as the application gets more complex?
Models
- What syntax is used to express models?
- What additional libraries do you need to use models?
- How easy is it to get/ sync models between client and server?
Views
- What syntax is used to express views?
- How do they interact with the controllers, models, and router?
Controllers
- What syntax is used to express controllers?
- Declarative or imperative?
- Support for two-way data binding, between the models and views?
Router
- What syntax is used to express a router?
- Does the router support flat or hierarchical routes?
- What additional libraries do you need to use the router?
Templating
- What is the templating syntax?
- Declarative or imperative?
- What additional libraries are used?
- Are the templates string based or DOM based?
- Are the templates easy to work with for designers who are not developers?
Components
- What syntax is used to express a component?
- What level of abstraction do these components sit at?
- How well do these components align with the current draft specification for web components?
Dependency management
- What syntax or convention is used to express that one module depends upon another?
- Does the framework encourage modular development to begin with?
- How robust is this means of managing dependencies between modules?
Build tooling
- What build tools exist to build an application using each framework?
- What limitations do the current build tools have, and what are they good at?
- What future build tools are in the pipeline?
Opinionation
- How opinionated is the framework with regards to how to develop an application?
- How does this opinionation benefit and detract from the framework?
Development tooling
- What tools exist to allow easy debugging of the application?
Dependencies
- What external libraries does each framework depend upon?
Community
- Who develops the framework, and who backs it?
- What is the size of active users of the framework?
Track record
- Who currently has applications in production built with each framework?
- What is the profile of the applications developed with each framework?
Contributions
- What is the nature of the open source contributions to each framework?
Maturity
- How long has each framework been around?
- How stable is each framework?
Level of abstraction/ structure
- What levels of abstraction around the concept of single-page application does each framework provide?
- What implications do these levels of abstraction have on the development process?
Testability
- How can one go about unit testing an application built using each framework?
- How can one go about end-to-end testing an application built using each framework?
- How testable are applications built using each framework?
- What is the level of importance accorded to testability by the authors of each framework?