[Updated with more frameworks and our experience so far with Loopback]
The Context for using Loopback for our application
One of the first things we do in a typical Node.js project is to pick the appropriate Node framework from the plenty of choices available. Current state of Node.js frameworks – Good: Lots of choices; Bad: No clear winner with a lot of momentum like Rails for Ruby.
We took a typical polyglot approach to a technology stack. The platform has 2 main components: one for intelligence (Data Crunching, Machine Learning, Text Analytics and so on). For this, we finalized a stack of LUIGI, Elastic search, Spark, R and Python with a little bit of MongoDB thrown in.
The second part of the platform is a typical business web application to expose output of the intelligent platform, business workflows etc.,
For this, we decided on Node.js because it lends itself well for micro-services architecture. Some of our UI is message driven. Having decided on Node.js, we needed a web application framework (if you are only looking for an API backend, there are other good options like https://senecajs.org/) for rapid application development. Some of our selection criteria were
We considered the following frameworks:
Unfortunately, in Node.js web framework landscape there is no one clear winner with mass adoption unlike for Rails for Ruby or Django for Python. There are a lot of fragmentation with each framework having some nice features but with very little adoption.
After the initial research, we quickly dropped Total.js and Koa.js because of considerations like lack of momentum, the strength of the organization behind it etc.
We quickly dropped mean.io and mean.js because they are tightly married to Angular and retrofitting React is a lot of work.
We gave more consideration to Meteor as it has nice features like:
But dropped it because the choice meant that we couldn’t have a pure Node.js runtime. Besides it was too opinionated, doesn’t play nice with non-meteor specific third party components. Also, the front end was not switchable.
Then it boiled down to Sails and Loopback. Sails had the most adoption and Loopback had the most recent momentum.
We picked Sails because of the maturity, adoption, good documentation, availability of many useful plugins and our developer knowledge.
5438 commits, 23 branches, 173 releases, 195 contributors
1705 commits, 44 branches, 95 releases, 62 contributors
But quickly switched to Loopback because of 2 events.
The Sails team have fragmented with most of the developers going to start a competing framework Trails.js (read this discussion: shit hit the roof. Also, though Sails had some decent GitHub statistics when we delve deeper most of it turned to be cosmetic changes like readme updates.
Finally, we decided to go with Loopback:
IBM has acquired StrongLoop which will only increase the commitment to the commercial suite of products and keep the dedicated team working on Loopback funded. And IBM has a good track record of contributing to open source projects like Apache Spark, Cloud foundry etc.
Our experience so far with Loopback:
Loopback has mostly lived up to its promise and it’s easy to roll out REST endpoints. But the pace of new features is not as fast as we thought. For instance, the new features in 3.0 release are mostly incremental – https://loopback.io/doc/en/lb3/3.0-Release-Notes.html.
Also, support has been fairly slow. Since Loopback does not have inbuilt multitenancy support, we created the functionality and gave pull request and still waiting.
More choices now:
Some of the other frameworks that caught our attention since then:
If you are planning on Microservices from get go, Seneca is a great framework.
Good breadth of functionality out of the box and very Rails like.
“Originally posted at PipeCandy by Murali Vivekanandan”