I have been thinking about this topic lately.
We need to define what framework we want to use in the future and how do we get there. We need a strategy.
Requirements
The main requirement here is really stability which is the hardest thing to get in the javascript frameworks world. The main points here are that we choose a framework that:
- is not outdated already (like angularJS)
- can be upgraded easily as we go
- survives the test of time (is maintained in 2030 )
- is not too much intrusive dictating how to do things (this is clearly a weak point of Angular compared to React and Vue that offer more freedom to the developer)
I am on the conservative side about this decision. I dont think we should go wild and choose a framework new, exciting and awesome that will be completely dead in 2 years time. I think we need to think most of all about the long term here. This means I think we should keep to one of the main frameworks in the market right now: angular, react and vuejs.
Market Analysis
I looked at google trends:
You can see other trends in " 2. Angular vs React vs Vue: Popularity in 2020" here. For example, of the 3 frameworks, vueJS is the most stared project on github.
VueJS
I see that Vue.js is still smaller than Angular in terms of adoption BUT I just realized that vueJS is a creation of an Angular expert, from wikipedia “what if I could just extract the part that I really liked about Angular and build something really lightweight.”
It’s the first time I am looking at vueJS code. It looks surprisingly similar to Angular, which is a strong point for it’s adoption in OFN as we have (and will have for a long time) quite a lot of AngularJS code in OFN: https://en.wikipedia.org/wiki/Vue.js#Components
Angular
If we decide to keep in the Angular path, we need to upgrade from AngularJS to Angular, I have been reading about this and it just sounds complicated to me (I have only worked with AngularJS in a few projects, I have no experience with Angular). I have the feeling that learning Angular or learning VueJS would be the same type of effort for a dev with experience in AngularJS (I am not sure about this).
The upgrade path from AngularJS to Angular looks complex (maybe it isn’t that hard after we get the hold of it!) and maybe it’s easier to start from scratch in a different framework like vueJS.
React
React is the most popular framework out there (at my previous company I witnessed a lot of .net backend developers becoming react developers and loving it). I wouldnt be against migrating to it but I am concerned that it would require a longer learning curve (than angular or vue) for existing devs.
Decision?
I am afraid that setting up the upgrade to Angular will take us some time but setting up VueJS or React will also be a challenge. I am really not sure how to proceed. I am only sure we must make a decision and slowly get on with it.
What are you thoughts? Do we flip a coin?
This is related to the thread about the new BackOffice UI where I have also posted now.