Yes, everything has a beginning and an end.
This is the end for me. Meteor helped my life in many ways as a programmer during these past 3 years, but it is time to say goodbye and move on. Here are the main reasons why I am giving up on Meteor and moving to React and something else. Yes, I know I can use React with Meteor but I am giving up on that too.
1 – You never know when something is running or not running due to its reactiveness
During the early stages of Meteor, this was a big pain because my first impression of Meteor was that everything was constantly running and there was no end because of Meteor’s reactiveness.
Later I found out that there were many ways to check that out but I still thought a pain in the ass as other frameworks that I knew didn’t require that. I remember spending hours and hours, even days trying to debug code that was not supposed to be running on one page, but because of an unknown reason, it was!
Nowadays, we have the import/export declarations, which became very handy and this has finally sorted out this problem, but I always wondered why the MDG hasn’t thought of this declaration from scratch. The imports declaration should have been included since the very early stages of Meteor, not now.
2 – The larger the app gets, the slower it gets
Not sure if this is partially my fault, but I had the impression that when a Meteor app gets big enough, let’s say with over 50 pages, with many calls to Mongo, things start to get slower. Before Meteor, I used to code in Coldfusion but I had never experienced this kind of problem with it.
3 – Deploying Meteor on a production server was not that simple as they say
On a development machine, you just need to type Meteor and everything goes smoothly. After a few seconds, voila! You are running a Meteor web app on localhost and that is it.
So, when my Meteor app was finally ready to go, I thought the production server would be easy as well, but it was not easy at all. It was actually a huge pain to get things working properly on a production server.
I remember spending days to get Meteor up and running with MeteorUP. I had tried other deployment methods before but MeteorUP was the best one. At that time, MeteorUP had a version called Mupx that later was replaced again with the normal Mup. I tried both of them at different times and they both worked very well. I also tried something called Phusion Passenger without being successful.
4 – Being dependant on MongoDB
Mongo is not bad but being a programmer with several years of experience in MySQL and SQL server, I wish Meteor had more options to choose from when it comes to a database server.
5 – SEO and routing
After adding a few packages (and a lot of reading), I finally got SEO working on Meteor, but the routing system was really complicated. Iron Router was a mess and I got many problems and delays. We later migrated everything to Flow Router, which was much easier to use and worked better. Of course, we spent many weeks migrating our apps to the new router, so I wish Meteor had a default router to begin with, but it didn’t.
6 – Yes, we can choose Angular or React but most of us will still go with Blaze
Unless you really know Angular and React a lot, I still believe the rest of us will still go with Blaze just because most of the packages on Atmosphere work with Blaze only. I like Blaze, as I think it is much easier to use than Angular and React, but the thing is that if I am looking for scalability, I still think that React alone is a better option.
7 – And finally, Arunoda gave up so I will give up too
I am not that kind of person who will follow someone or something just because someone else did, but in this case, I must open an exception. Given all the reasons from one to six, and adding the fact that Arunoda, one of the most dedicated Meteor enthusiasts of all time, has given up on Meteor, for me this was the last straw. I was already thinking of moving away from Meteor even before he did, but when I heard that he was giving up, I decided to do the same thing.
Meteor has helped me improve my Javascript skills and MongoDB skills. It has also helped me to understand how to build reactive web apps and mobile apps. After I started coding in Meteor, I also had the opportunity to understand Nginx and Node better than ever before, as I was directly involved with Meteor deployments in most of my projects.
Thanks a lot Meteor and the Meteor community and I hope to see you guys again.