Meteor was developed with simplicity in mind, even for beginners who have just started using JavaScript frameworks. One of the reasons that beginners should start with Meteor is that Meteor is a full-stack framework, this way they can get the complete learning experience when it comes to web development (back-end and front-end development), all by using a single platform and a single language.
Furthermore, Meteor does not have complex and esoteric concepts that may be hard to grasp by a beginner, it has a clear documentation and well-established coding conventions.
There's also a very useful resource for learning Meteor in the form of a book: Discover Meteor, by the authors of many Meteor packages.
A Meteor package can supply code for both the client and the server, and for mobile (Cordova) apps. For example, an autocomplete package supplies both server code to search a collection, and client code to display the results. The mdg:camera package supports the native camera if the app is built for mobile, or the HTML getUserMedia API to take pictures from the browser.
Meteor is built on top of Node.js and jQuery on the client.
Meteor enables the client and server to communicate data seamlessly, in real-time. You don't have to write any REST API or pub/sub code - Meteor takes care of it all automatically for you.
Meteor uses both your existing front-end library and it's own library called Blaze, which is integrated beautifully in the framework and fulfills the purpose of a true MV* front-end framework.
Meteor does not have support for server-side rendering of views, which is extremely helpful when it comes to SEO. However, there's a third-party server-side rendering package available for download. The Meteor team has also said that server-side rendering is on the roadmap.
Though lately Google has announced that the search engine can render JS and CSS files just like modern web browsers
Every time a change in the source file is saved, all connected clients will refresh automatically - browser tabs, mobile apps running in the simulator or on the physical device.
Or, deploy a Meteor app (meteor deploy myapp) and all clients, plus all mobile apps with the server set to myapp.meteor.com will automatically reload to use the code changes.
This drastically reduces the development cycle for apps in the App Store, where a regular update can wait for one to two weeks before being approved.
While Meteor only supports MongoDB and Redis natively, MySQL support is on the roadmap, and there are 3rd-party packages that integrate MySQL reactively with Meteor to some extent, such as numtel:mysql. For reactive PostgreSQL support, there is numtel:pg.
Meteor also has an official testing framework called Velocity. Velocity enables real-time unit testing and integration with Jasmine or Mocha syntax. Tests are automatically run when code is saved and the testing result is indicated by a green or red dot in the upper right corner of the app.
Meteor can generate mobile (iOS and Android) apps from the same codebase as the web app, using the Cordova (PhoneGap) library (which brings native device functionality to JavaScript applications).
Meteor-generated mobile apps are JavaScript, HTML and CSS bundles that run in a UIWebView (on iOS) or WebView (on Android). Apps can be run locally in the iOS/Android emulator, or on physical devices. You can also publish them to Google Play Store or Apple's App Store.
Moreover, these hybrid mobile apps benefit from hot code push, which dramatically accelerates the development cycle.
Meteor uses MongoDB, eliminating the choice among NoSQL databases. MongoDB is highly scalable - used to store petabytes of data and perform billions of operations daily at eBay, FIFA, Adobe, Craigslist, McAffee, Foursquare and others.
Meteor's package repository called Atmosphere has more than 5000 packages available. What's more is that Meteor can also use into the packages available for the Node ecosystem.
Meteor uses Kadira which is an excellent performance monitoring tool for Meteor apps. It profiles CPU and RAM consumption, subscription latency and throughput etc.
The community behind Meteor has created a useful application for debugging Meteor apps that will automatically delete collections and display client-side documents, allow you to control subscriptions and lets you modify the documents.
Meteor also has great support for server-side debugging, and WebStorm has also released full support for Meteor, including debugging capabilities.
MongoDB advertises scalability but only if you don't care about data-integrity. There are other backend options but none of them are officially supported.
It's common for the front-end and back-end to lose sync if an internet connection is flaky. Even though the connection should be in real-time, if the connection is weak, you may lose that real-time sync. For example, in chat applications you may have to refresh the page to get the latest updated data from the server.
While the docs are good and showcase simple pseudo-applicatopms, there is not much else i the from of things like auth integration, optimal front end pairing for SPA's, books/videos, and so on. Only a few (mostly outdated) articles focusing on the simplest possible scenarios.
FeatherJS uses primus which is a universal wrapper for real-time frameworks. Through primus you can easily choose which socket transport you want to use.
Feather can sync events happening in two different Node processes or even servers in real-time. For example: an event happens in server A, the user connected to server B is instantly notified of that event.
This is done through a central Redis or Mongo collection or through a websocket libraries' clustering library.
Since Feathers itself is built on top of Express (it's a thin wrapper over socket.io, primus and Express) and because of Feathers' highly modular nature, it's very easy to integrate Feathers in an existing Express project.
Feathers makes extensive use of modules (which are called Feathers services). These services work like ExpressJS middleware and can be used with app.use('/path', serviceObject).
Services help developers keep their applications modular and as minimal as possible, without any unnecessary libraries or bloat.
Through services, Feathers provides instant CRUD functionality, it also can easily expose a RESTful and real-time API through HTTP/HTTPS and websockets.
Derby renders it's client-side views on the server. This means that there's no "delay" in serving the content to the browser when the user requests it. It's also very helpful for SEO purposes.
Derby seems to have a small community of followers, at least compared to other Node full-stack frameworks. So it could be difficult for a beginner to find examples or help if they get stuck somewhere in their development.
Since Derby is still on version 0.8.x, it may not be ready for production for large applications since a lot of the API and features may change in the future.
Flux is a platform agnostic pattern which can technically be used with any application or programming language.
One of Flux' main features is that it enforces uni-directional data flow which means that views do not change the data directly.
This is useful because this way it's easier to understand an application as it starts getting more complicated. By having two-way data binding, it can lead to unpredictable changes, where changing one model's data would end up updating another model. By using the Flux architecture, this can be avoided.
The search crawler receives the rendered page from the server just like a normal user would. This makes applications developed with Catberry very SEO-friendly.
Catberry seems to be very popular in countries where English is not a native language (for example Russia). For this reason it can be very hard to find any resources in English outside the Catberry website.