Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Meteor 0.6.0: brand new distribution system, app packages, NPM integration (meteor.com)
99 points by JanLaussmann on April 4, 2013 | hide | past | favorite | 44 comments


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 there anyway to bet a brunch / angular skeleton to maybe a 7, close to something like meteor without being tied down to their ecosystem?


I dunno man, this is my highly-subjective-rating-scale ;)


I think Derby and SocketStream might sit at the 7-8 spot.


You're right the html attribute approach goes with angularjs (source: http://blog.derbyjs.com/2012/04/14/our-take-on-derby-vs-mete...).


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.


We are still actively developing Derby and Racer. We are currently working on a re-write of Racer's internals on top of ShareJS that will make Derby useable for a production app. See: http://blog.derbyjs.com/2013/03/26/getting-derby-ready-for-p...

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.


In terms of momentum, community activity, and tech stack progress, Meteor seems to be way ahead of the competitors and accelerating faster.


You seem to be right. Meteor seems to give more tech talks and host more events than Derby too.


"Winning" is subjective, plus commit activity doesn't really correlate something to be of a higher quality.


[Shameless plug:] I'm giving an intro to meteor talk at Stanford tomorrow (Friday) at 5PM, in the Engineering (Huang) basement/hackerspace https://www.facebook.com/events/476872052366365/.

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!


Rats... I'll be busy prepping for a concert in sf this weekend https://ccrma.stanford.edu/events/modulations/

Are you Stanford Student? Will you be giving other talks on campus? Any links to the hackerspace?


I'm a recent Penn alumnus, but I live in the area.

The hackerspace: http://svihackspace.com/

If you're curious about making it out to a Meteor event in the area, check out the Meetup.com group: http://www.meetup.com/Meteor-SFBay/


Will the talk be recorded? I'm interested, but not at Stanford (unfortunately!) Even just slides would be good, if applicable.


Yep! Add yourself to the event, recording will be posted up there.


So, does this mean meteorite (http://oortcloud.github.com/meteorite/) is now obsolete?


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?


I think so. NPM packages are only supposed to rely on node and other NPM packages. Meteorite packages also rely on Meteor, which isn't an NPM package.


> 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.


Seems like a good idea to add outside of meteor projects too. Maybe an extension for Chrome dev tools that lists global variables loaded per page?


This will give you a list of globals in browser

for(var i in window){ if(typeof window[i]=="object"){console.log(i);} }

But I think op wanted variables server side as well


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.


Create a collection called MyVars and add this to your Server.js file:

Meteor.setInterval(function(){ for(var i in global){ if(MyVars.find({name:i}).count()==0){ MyVars.insert({name:i}); console.log("New Public Variable: ", i); } } }, 5000);

Thanks for the fun challenge :-)


Alert system if you're running Canary with experimental JS flag on:

Object.observe(window, function(changes){ console.log(changes) })

:)


I've recently fallen head over heels for Meteor.

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.

The best part: they haven't even hit 1.0.


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?


<noscript>This site uses JavaScript. You won't see any content without it.</noscript>


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.


Assuming you're trolling but worth pointing out that Meteor includes a Spiderable package so it's indexable by search engines etc.

http://meteor.com/blog/2012/08/09/search-engine-optimization


Yes, but last time I checked it's exposed to DDoS's, as it uses a headless browser, which is largely inefficient.


Any site which serves dynamic content without a caching layer is exposed to DDoS.


I'm not trolling. It doesn't cost much to simply indicate that a site needs JavaScript.


Devshop 2 was awesome, some of the best engineers I've ever met!


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.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: