I can think of few. The thing is, you approach it from a business point of view. Most developers don’t. Business means getting profit and reducing TTM (Time To Market). Software development is essentially the same, because business software is of course being built for… business right? So what is the problem? The below picture illustrates it pretty well. It originates from Martin Fowler’s book Refactoring:
As you can see it traditionally takes time for a good software system to become productive. It takes planning, hard thinking, talking, learning, discussing, and a lot of refactoring. Meteor in that sense feels counter intuitive, because a lot of that stuff has been done. Now suddenly the developer has to focus on the actual problem domain. A MVP can be profitable within just a few days with Meteor without having to boilerplate, glue, build API’s, decide on JSON structures, caching and clientside storage + reactivity. Especially when you use existing design systems like Bootstrap, Material-UI or Vuetify. I’ve built systems with Meteor that became valuable after just a few minutes of programming.
Business people love it, but developers get scared. Its simply too good to be true!
Reason 2: Meteor in context
Meteor on its own provides a huge business value. It also makes a lot of developers very happy. Development in Meteor is lovely - that is - for as long as you follow the Meteor approach to handling data, transpilation, API requests, the database and hosting it. Going against the opinionated flow of Meteor might get you in trouble - especially if you don’t have a lot of experience. Funny thing is though that Meteor simply follows some pretty good standards so there should be no reason to go against it.
In real life, software systems are part of a bigger ecosystem of tools. The simple scenario is where Meteor would work as a SAAS Dashboard where customers log in. This is where Meteor shines, but almost always there would be a need to build a simple static website that acts as the landing for prospects. I’ve worked at companies that had dozens of landing pages and just one platform. Today its less of an issue, but Meteor was not always good at static site building and things like SEO, multi-site support and had quite a bundle size (for example Minimongo is still part of the bundle).
Another example is the API. In reality, many bigger organisations have API’s all over the place. To leverage Meteor’s pub/sub system you will need a way to make requests on these API’s, bundle it and publish it in your publication. That’s why MDG came up with Apollo.
Reason 3: Meteor had its issues
What is still a big strength, but becomes less of a thing since (MDG tries to move away from it) is Atmosphere and its smart packages. While its a very powerfull way of adding isomorphic packages without having to configure anything, it is not what the javascript community wanted. NPM became defacto and therefore Meteor had to open up to NPM packages aswell. NPM support was not that pretty just a couple of years ago.
The build tool is powerful, but ‘was’ slow and had some issues. Many potential Meteor developers that tried Meteor stopped using it, because they got stuck on the build process (also in dev mode). “There is something broken, but I have no idea what”. Most of the Meteor magic happens in Meteor’s core. Good luck figuring out what went wrong if you wernt the one building or maintaining Meteor. What most people don’t get though is that the opposite is also true: “Good luck building your own flawless zero config platform using webpack”. Developers unfortunatly take a “Do it yourself” stance, since that’s how most developers became developer in the first place…
Not only that. There is the Dunning Kruger Effect - A coginitive bias that makes unexperienced developers think that building their own system would be possible within short notice and with just their own knowledge. They forget that MDG is a team of bright people, each with their own strengths and knowledge that work full-time on this platform. Good luck…
Reason 4: Blaze was the only choice for the clientside
Blaze is a very powerful view layer. Besides Vue I personally find it the best rendering framework of these days. Even better then React, simply because it works so well and intuitive. Not everyone is fan of Blaze though. To give an example: When React came in the picture, people wanted React, but couldn’t, because it wasn’t supported. Luckily it didn’t take long for MDG to realize that going against the greater JS community is not a battle they could win so they decided to make React the first class citizen of Meteor, causing a small uproar in Meteor’s community, because what about Blaze?
MDG did well here. They’ve made the right prediction and I did some very successful projects with React. I’m also very happy to see that Meteor now also supports Vue.
Reason 5: Marketing and communication
While the technical side of Meteor is briliant, there is almost no communication to the outside world on social media. The javascript community did not hear about Meteor’s adoptability that kept it bleeding edge even though there was a revolution going on in the Javascript landscape. For me as Meteor power user the transition from ES5 to ES7+ and the adoption of new concepts like reactivity HMR was flawless!
The community did not hear about Meteor’s legacy builds and Meteor’s zero config React integration, its flawless integration with Apollo and capabilities to build a simple Rest API using Webapp.
There is many more to mention, but I don’t think the platform Meteor is the issue here. Most issues are solved and its now a very stable platform. Its the Javascript community and how developers look at developing software. That’s why we need to step in. Promote Meteor, share your love, your success stories, share how Meteor helped you and don’t listen to people that laugh Meteor away simply because they didn’t try it.