There have neen a number of posts recently in which comments have been made regarding the “Meteor framework” (my quotes), such as this one - a well presented examination of Meteor and getting to grips with the best way to structure an app. The main thrust of this post seems to be “why isn’t there one way to develop an app in the Meteor framework?” (my interpretation).
As it happens, you will struggle to find any official documentation referring to Meteor as a framework. The closest I got was on the Meteor Subprojects page which says “When building important software, whether in Meteor or with any other language or framework, good release engineering practices are essential.”
Generally, you will only find explicit references to Meteor as a platform:
- 1 - “Meteor is a complete open source platform for building web and mobile apps in pure JavaScript.”
- 2 - The Meteor Platform
- 3 - meteor-platform
- 4 - “Today, there’s a chance to create this new way — to build a new platform for cloud applications that will become as ubiquitous as previous platforms such as Unix, HTTP, and the relational database.”
Contrast this with:
- emberjs - A framework for creating ambitious web applications.
- angularjs - Superheroic JavaScript MVW Framework
- rails - “Ruby on Rails® is an open-source web framework that’s optimized for programmer happiness and sustainable productivity. It lets you write beautiful code by favoring convention over configuration.”
So, why the disparity and why the confusion - especially as googling for “software framework vs platform” suggests that there is a difference and there is confusion? It’s actually quite hard to pin down what it is that makes a framework vs what it is that makes a platform.
Wikipedia say that “In computer programming, a software framework is an abstraction …” and goes on to state “…[a framework] provides particular functionality as part of a larger software platform to facilitate development of software applications, products and solutions.”
A interesting view on Platform vs Framework notes that “…a platform allows a software to run, which is not a framework requirement, since it is more focused on design.”
So, where does that leave us with the whole “what is Meteor?” question. Look at that quote [4] again: “Today, there’s a chance to create this new way — to build a new platform for cloud applications that will become as ubiquitous as previous platforms such as Unix, HTTP, and the relational database.” and then listen to @debergalis for an insight into his vision for Meteor. It is not just a framework, it’s something far more ambitious.
My personal, overly simplistic view is that while the Meteor platform helps you build apps, it does so only by providing fundamental tooling, conventions and infrastructure. You could equally use these to build a framework in which application development patterns are opinionated, and scaffolding and boilerplating are well defined - an Ember or Ruby for Meteor applications, if you like.
Meteor is young and developers are still finding their feet. As more and more people come to the Meteor platform from less ambitious frameworks, they will keep asking the same questions.
Perhaps MDG themselves should be a little less coy in not making their own vision more explicit. As a community, we should be fostering the adoption of Meteor by more and more developers. One way of doing this may be to give those that need it the reassurance of well defined practices…
Perhaps it is time for the first Meteor based frameworks to appear.