Choosing a Javascript framework for NewOrbit

Get Started. It's Free
or sign up with your email address
Rocket clouds
Choosing a Javascript framework for NewOrbit by Mind Map: Choosing a Javascript framework for NewOrbit

1. Decision criteria

1.1. Enables clear division of labour between dev and UI devs -JM

1.1.1. Perhaps allows for easy division of work between devs and UI devs

1.2. Low barrier to entry -JM

1.2.1. Smooth learning curve if possible and some idea of how to up skill new people and UI devs quickly

1.3. Make it fast to develop the "crud" that makes up 80% of most applications

1.4. Enable us to have consistent approaches across projects, to facilitate moving team members with minimal pain

1.5. Enable us to automate "the boring bits"

1.6. Good community support

1.7. Viable long-term future

1.8. Explicitly not a decision criteria

1.8.1. It doesn't have to be the fastest or most memory efficient - it just have to be Good Enough

1.9. Attractive to potential recruits

2. Contenders

2.1. Aurelia

2.1.1. Notes

2.1.1.1. It has a paid support plan which may be good or bad

2.1.1.2. In terms of framework/non-framework, I'd put Aurelia somewhere between React and Angular

2.1.1.2.1. It feels more light-weight

2.1.1.2.2. It has more obvious extension points

2.1.1.2.3. It is explicitly designed to bring in stuff from other frameworks when you want

2.1.1.3. Watch the 30 minute video on http://aurelia.io to get a good overview

2.1.2. Pros

2.1.2.1. Favours convention over configuration

2.1.2.1.1. It's philosophy of "making the defaults easy but make it easy to then expand" seems to fit very nicely with our vision for Apogee and NewOrbit development in general

2.1.2.2. Fun

2.1.2.2.1. Not if you hate MV* frameworks AN

2.1.2.3. Commercial add-on packs to be available under support

2.1.2.3.1. Controls

2.1.2.3.2. Mobile controls

2.1.2.4. Very extensible

2.1.2.4.1. AN More so than other frameworks?

2.1.2.5. It's a framework

2.1.2.5.1. AN More so than other frameworks?

2.1.3. Cons

2.1.3.1. Less mainstream

2.1.3.1.1. Less support from other libraries/frameworks

2.1.3.1.2. AN Much smaller talent pool will want to work with this

2.1.3.2. No support for Foundation Zurb for apps, for example

2.1.3.3. Mobile development less streamlined at this point

2.1.3.3.1. No support from Ionic - though that may change

2.1.3.3.2. Can publish with Cordova

2.1.3.3.3. Commercial add-on pack with mobile controls

2.1.3.3.4. AN Developing paid option called Aurelia Interface

2.1.3.4. It's a framework

2.1.3.5. AN Commercial

2.1.3.5.1. They are a for profit company. I believe this will end like ExtJs. Without the support of the community, which it will not get as a paid product, it will never be able to compete with the development efforts of Google or Facebook.

2.2. Angular 2.0

2.2.1. Notes

2.2.1.1. The fact that we currently use Angular 1.0 is irrelevant

2.2.1.1.1. Upgrading is not obvious

2.2.1.1.2. It is different enough that we'd have to re-train anyway

2.2.1.2. John Papa's 2.5 hour Pluralsight Angular 2.0 overview course is a very good and very dense introduction that covers pretty much everything

2.2.2. Pros

2.2.2.1. It's a framework

2.2.2.2. Very wide community support

2.2.2.3. Everything works with Angular

2.2.2.3.1. Ionic

2.2.2.3.2. Foundation Zurb

2.2.2.3.3. Etc

2.2.2.4. Easy to hire for

2.2.2.4.1. Though not convinced that really matters - it's more of a recruiter argument :)

2.2.2.4.2. AN No it matters

2.2.2.5. Good story for mobile development with things like Ionic that just make it easy

2.2.2.6. Very comprehensive framework

2.2.2.7. AN Has abandoned MV* and moved to a component-based model like React.

2.2.3. Cons

2.2.3.1. It's a framework

2.2.3.2. Favours configuration over convention

2.2.3.2.1. Very configuration heavy

2.2.3.2.2. Irritating need to specify dependencies in what feels like unnatural places

2.2.3.3. Maybe extensible but I suspect it's not as easy - please correct me?

2.2.3.3.1. AN Why would it not be?

2.2.3.4. Not fun (at least to me)

2.2.3.4.1. AN Perhaps, but what is not fun is cleaning up or working with the mess of most apps built on MV* frameworks

2.2.3.5. Maybe personal taste but templating pattern is horrible

2.2.3.5.1. confusing

2.2.3.5.2. goes against html conventions

2.2.3.5.3. too different to angular 1.0

2.2.3.5.4. AN Strings vs JSX is a loss, probably because it was too big for the team to bite off. But if your comparing from the viewpoint of an Angular 1.0 template of course it's going to look like crap, because in Angular 2 templates mean something else.

2.3. React

2.3.1. Notes

2.3.2. Pros

2.3.2.1. It's not a framework

2.3.2.1.1. AN Agreed

2.3.2.2. Does ReactNative mean mobile is easier? Is it even relevant or is it something quite different?

2.3.2.2.1. AN Easier? That is a very overloaded word. Less costly. More maintainable, more customizable, more performant, Yes.

2.3.2.3. (can be) very fast

2.3.2.4. Extremely flexible

2.3.2.5. Fun

2.3.2.6. AN IMO It's component architecture is more mature than Angular 2 and superior to any MV* framework

2.3.3. Cons

2.3.3.1. It's not a framework

2.3.3.1.1. You need to decide on a whole bunch of different libraries to put together your pack

2.3.3.1.2. You need to write quite  a lot of code to just get started

2.4. EmberJS (proposal)

2.4.1. Pros

2.4.1.1. 100% Convention over configuration

2.4.1.1.1. This means 0 project boilerplate - literally (see ember-cli)

2.4.1.1.2. Out of the box support for unit, integration & acceptance tests

2.4.1.1.3. Comes with predefined project structure (layer-oriented or feature-oriented [pods])

2.4.1.1.4. Adding components/features to the project is a breeze using built-in blueprints

2.4.1.1.5. Any part of the framework is extensible (very much like ASP MVC does)

2.4.1.1.6. Clear data flow through the application, based on well-defined layers

2.4.1.1.7. AN Sorry to disagree, but I believe convention-over-configuration is one of the worst paradigms to plague to development world in recent years.

2.4.1.2. An opinionated framework - with it's own API

2.4.1.2.1. AN Opinionated can be equally good or bad, depending on the opinion

2.4.1.3. Highly based on components (as in W3 standard)

2.4.1.4. Great documentation with big community (guides.emberjs.com)

2.4.1.4.1. AN Emberdocs, when I was considering it, we're one of the main reasons most people were avoiding it

2.4.1.5. Tons of community components via Ember Addons (emberobserver.com)

2.4.1.6. Uses React approach to rendering templates (smart model change detection)

2.4.1.7. Uses Handlebars templates which compile in a sourcetree (high rendering performance boost)

2.4.1.8. Has an extensible build pipeline

2.4.1.9. It's server API agnostic (it uses modifiable Serializers and Adapters to communicate with any type of data format the server might serve - mainly REST or JSONAPI)

2.4.1.10. Has a built-in ORM (Ember Data)

2.4.1.10.1. This means you never "have to" make an AJAX call manually - you just access the "store" and CRUD objects

2.4.1.11. Has a lightweight dependency injection system

2.4.1.12. Great Chrome Dev Tools plugin (Ember Inspector)

2.4.1.13. Write apps using ES2015

2.4.2. Cons

2.4.2.1. Steep/ish learning curve (not so much in later versions) - needs a committed team to work using latest practices

2.4.3. Notes

2.4.3.1. The framework's development has been fast lately, so some articles might be obsolete (at least those under version 2)

2.4.3.1.1. They have streamlined the release process with well-defined time releases

2.4.3.2. There's lots of meetups that discuss the achievements and road ahead (useful for seeing future updates)

3. Interested people

3.1. James M

3.2. Frans

3.3. Thomas Sileghem

3.4. Aaron

3.5. Mo

3.6. Phil

3.7. Henry

3.8. Ayyaaz

3.9. Andi

3.10. Damo

3.11. Tom H