This is good news - the momentum of the Meteor community & of dev efforts is really infectious.
Probably not ready to be building 100 million user services on just yet, but utterly fantastic for quick prototyping & iterating services (which is a large part of what I do day-to-day).
I love Backbone & Ember and all the rest, but as mainly-a-designer/front-end-dev, if I can get away without writing an API in Rails and have everything just work I'll choose that any day.
I've also got this idea of a scale of 'magicness' from 0-10.
- 0 - writing the JS by hand, maybe with jQuery.ajax etc.
- 2 - Backbone - easy to use, easy to debug — just not very magical!
- 5 - Ember & Angular - pretty cool but still enough that the headaches can be off-putting
- 9 - Meteor - always seems to work, never frustrating, so magic that the occasional thing that's tricky to implement is totally worth the rewards.
edit: also, shameless plug - if you're in London and like tech meetups that aren't boring, come to the Meteor meetup. It's fun.
Is Meteor winning now? Commit activity of Derby.js (and Racer) seem really low. I already switched once from Meteor to Derby for more flexibility (npm packages, server-side express routes, etc.). But I'm wondering if Meteor now has more momentum.
Our initial goal in open sourcing the framework was to get some ideas out there and see what worked well and what didn't. We've learned a lot from this process, and we now have a much better idea of how to build a great system.
We are excited to see all of the innovation coming from Meteor, Firebase, and other new realtime systems. While there are similarities, our teams have different perspectives on what the future of web development looks like, and we believe there is still a great deal to be gained from further development of each of these platforms.
Currently, our changes to Racer will keep a similar API but make Derby apps much more stable and scalable to large production deployments.
I'm very happy that there are several active open source projects to choose from. I get a similar impression of Meteor vs. Derby as I get from Rails vs. Django.
(To me, their difference is about productivity vs. flexibility, although IMHO Rails eventually became just as flexible and "won". So it's interesting to see if Meteor achieves the same.)
Last I tried Derby.js, their examples wouldn't run. Some version issue that supposedly was fixed in the repos but not released yet. But when I used the repos instead there was something else that broke because of a backward compatibility breaking change. Since I couldn't get even the toy examples to work, I gave up.
Meteor, on the other hand, was extremely easy to get started with. The examples worked and the documentation was decent. Both Meteor and Derby.js are far from finished but to me Meteor seems like a much more polished product than Derby. I still hope both will live on because friendly competition is good and Derby has a niche.
Can you, if you have a mo, outline the pros and cons from your perspective? You seem to have a practical knowledge of this, a most useful thing. It might be enlightening for those of us who don't yet know either very well, and raise some questions which then get pondered...
Well, when I started with Meteor (January 2013), it was very easy to get a realtime app running (multiplayer HTML game) and the whole architecture was stable and reliable. But it was difficult to extend the app beyond the specific features provided by Meteor and its own custom packages, which seemed like a potential dead-end.
Derby, on the other hand, was very buggy from the start and it took a while to get anything working. But once the app was running, it was easy to add anything supported by Node.js/NPM/Express to it. In my case, I added some server-side Express routes (REST APIs) and server-side background processing (game logic). At that time, these seemed difficult to do in Meteor.
During the past few months, Derby has proven occasionally unreliable and the documentation is sketchy (the query section, especially regarding security, is quite incomplete). But it has not been a dead-end. There's always some way to work around the problems, e.g. by using a "real" MongoDB connection to read some data on the server side when Derby's queries fail for some reason.
Not entirely sure what you wanted to use Express for but I've found server-side JS with meteor very intuitive. REST APIs are really easy to roll with the Collections-API Meteorite Smart Package too.
It's quite possible that I just couldn't figure out the right way to do REST APIs in Meteor, before giving up and switching to Derby. I think I'm going to have to try it again soon.
I'm planning to build a real-time multiplayer javascript game from scratch, taking suggestions from the audience as we go. If you've been curious about Meteor and are in the area, come by!
We took inspiration from the great work Tom and Mike did on Meteorite; several of 0.6.0's features are essentially versions of what Meteorite let you do, except for much more deeply integrated into the core. For now, Meteorite is still a great tool for installing packages from Atmosphere into your app... a fully integrated third-party package repository is in the works but isn't part of 0.6.0.
If you wanted to implement a package that uses something Meteor specific (aka another Meteor package like Meteor.Accounts) you would still want to create a meteorite/atmosphere package instead of a node package right?
> We've added file-level JavaScript variable scoping. Variables declared
with `var` at the outermost level of a JavaScript source file are now
private to that file. Remove the `var` to share a value between files.
I think it is convenient to be able to declare global variables like that but perhaps there should be a way to monitor those ; in other words, it would be really convenient to have some form of alert system to notify you when a new global variable is created.
That way, globals created by mistakenly forgetting the 'var' keyword would be easily spotted.
This is under active development on the linker branch: https://github.com/meteor/meteor/tree/linker ! The goal, hopefully coming in one of the next few releases, is to provide package-scoped variables and explicit exports from packages, so that you don't need to rely on globals at all any more.
I'm happy to hear this. One of the primary problems with client-side development right now is the lack of commonjs style imports and exports -- something which people are trying to solve using component, etc. It'd be nice if Meteor had something baked in.
I think it would be good to have that on both the client and the server.
Also, as simple as this might be, making it a de-facto standard (on meteor) would be a good thing since it would be a tool that we can count on, all the time. There are too many browsers IMO to make an extension a viable option.
Whitelisting variables would be good as well ; that way we do not get alerted if it is something we expect to be global.
When it was first announced, I was fairly intrigued like everyone else and gave it a spin. At the time, I found it difficult to put the pieces together. Now, that's all changed.
Great example: I'm wiring up an accounts system in an app now and excluding styles, it will take about 5-10 minutes to write the auth code. Fully functioning and even ready to support popular third-party services.
Congrats on the release.
Randome side-question... when I visit meteor.com with cookies disabled, there is no content displayed (just the background image) -- is this indicative of meteor.js not functioning without cookies enabled, or is this just specific to how you've built your site?
IMHO I would expect a big proportion of the sites to break when you browse w/o JS nowadays ; nothing wrong with it, it's just the state of the web now...
Most sites are broken in some way without JS these days, but usually in a way that doesn't matter if if all you want to do is ready the body content, and sometimes it's actually an improvement. Not loading 10 sharing buttons, 15 analytics packages, and a bunch of ads due to them all relying on Javascript makes the internet a more pleasant place.
Meteor's some really addicting stuff. The only regression for me with that stack was losing some of Angular's really powerful client-side functionality. I looked at a couple of the existing bridge options, but none really appealed. I'm creating some nice glue, will put it up on Github once I can ensure it is stable.
Result: get the best of both Angular and Meteor, with the ability to use either (or both of their) reactivity.
Probably not ready to be building 100 million user services on just yet, but utterly fantastic for quick prototyping & iterating services (which is a large part of what I do day-to-day).
I love Backbone & Ember and all the rest, but as mainly-a-designer/front-end-dev, if I can get away without writing an API in Rails and have everything just work I'll choose that any day.
I've also got this idea of a scale of 'magicness' from 0-10.
- 0 - writing the JS by hand, maybe with jQuery.ajax etc.
- 2 - Backbone - easy to use, easy to debug — just not very magical!
- 5 - Ember & Angular - pretty cool but still enough that the headaches can be off-putting
- 9 - Meteor - always seems to work, never frustrating, so magic that the occasional thing that's tricky to implement is totally worth the rewards.
edit: also, shameless plug - if you're in London and like tech meetups that aren't boring, come to the Meteor meetup. It's fun.