When we want to compare frameworks, more often than not we do so using a Hello, World benchmark. After all, they’re simple, objective, and measurable. But the Hello, World benchmark misses the vast majority of features that a framework provides.
Recently I went looking for comparisons of JavaScript templating solutions, and I found this little gem. I found this interesting because of the way they went about evaluating their choices:
The Test
To pick between the 18 templating options, we assigned each option to a small team of front-end engineers and setup a test: render a (very simplified) LinkedIn profile.
…
The List
We gave each team a list of features to look for in their assigned templating solution. The idea was to fill out a score, from one (poor) to five (excellent), for each item:
[list]
[] DRY: how DRY is the templating technology? is there support for code-reuse and partials?
[] i18n: is there support for translations and multiple languages?
[] Hot reload: are changes visible immediately or is there a compile/deploy cycle?
[] Performance: how long does it take to render in the browser and server?
[] Ramp-up time: how is the learning curve?
[] Ramped-up productivity: once you’ve ramped-up, how fast can you build things?
[] Server/client support: can the same template be rendered both client-side and server-side?
[] Community: is there an active community using this project? Can you google issues?
[] Library agnostic: are there dependencies on other JS libraries, such as jQuery or Mootools?
[] Testable: how hard is it to write unit and integration tests?
[] Debuggable: is it possible to step through the code while it’s running to track down errors?
[] Editor support: is there an editor with auto-complete, syntax highlighting, error checking, etc?
[] Maturity: is this a relatively stable project or still experimenting and churning?
[] Documentation: how is the documentation?
[*] Code documentation: do the templates encourage/require documentation/comments?[/list]
I think this list of features for evaluation is phenomenal. If ever we were to do a thorough comparison of the various frameworks available, I imagine the list for evaluation would look very similar to this.
P.S. If anyone is interested in organizing a thorough framework comparison along these lines, then feel free to drop a quick reply saying so. If enough people are interested, this could be doable.