The following are retrospective notes for the 5.0 release, focused on the Home and Browse perspective development using the 5.0 Thin-client stack:
- JQuery
- RequireJS
- BackboneJS
- Twitter Bootstrap
Good:
- JQuery+++
- Bootstrap: Scaffolding, fresh looking ++
- Backbone: Powerful
Bad:
- Backbone: Easy to do the wrong thing ( becoming unmaintainable ), not a complete stack. Leaves a lot of framework code to the developer
- Browse Perspective: Didn't follow Backbone best practices.
- Handlebars templates found wanting
- Backbone development: Missing best practices and enforcement
- RequireJS: mix-matched tech stack is straining RequireJS. Multiple nested requires to get things going
Ugly:
- Handlebars. String-based, arbitrary HTML
Starts:
- Stop splitting effort across multiple technologies. Pick one and mature the stack / practices.
- Consistent error handling and feedback framework
Considerations:
- Typed System. Dojo components are strongly typed and fully OO, allowing for Inheritance and composition ( mix-ins )
- Pick the right thing for the point in the stack
- Need to consider after-production extensibility through Plugins.
- Built-version (compressed, combined) of apps needs to remain flexible.
- Replace build-time RequireJS Compressor with a runtime compression facility in the platform
- This would allow new plugins to contribute code and have it compressed-in with the target module on next server start
After Retrospective discussion on going forward
JQuery
Everyone is in agreement that JQuery as a DOM query/manipulation/event library is perfect. A lot of it's usage is by libraries higher in the stack and not directly.
BackboneJS
Backbone does what it advertises well, but by it's own admission isn't a full-stack (backbone part). Much is left to the developer to coordinate, lots of repeated boilerplate by default.
Handlebars
No one is supporting the use of Handlebars going forward. It lacks the ability to modify templates programmatically (Plugin overlay scenario) and Lacks an easy path to DOM-snippet reuse (higher-level tags).
Twitter Bootstrap
Well received by most developers for widgets and layouts. A couple developers expressed a desire for a more programatic widget set in an OO framework like Dojo so derivatives can be easily written in code.
RequireJS
The Home and Browse perspectives, while using RequireJS for asynchronous loading, aren't compressed for production use. No real feedback in these contexts, but many voiced how difficult it is to orchestrate the loading of some areas of the platform where we have so many disparate technologies in use. Most problematic are areas where other Asynchronous loaders are present (GWT, Dojo).