top | item 8237449

Isobuild: why Meteor created a new package system

61 points| Mandar | 11 years ago |meteor.com

51 comments

order
[+] igl|11 years ago|reply
Everything about Meteor reads like a marketing article.

How about:

- It defines global variables. - The documentation is full of red warning messages and "this will be easier in the future" - The code is pretty unorganized and has some wild pieces in there. - do any of your friends use/heard of meteor?

[+] matthewmacleod|11 years ago|reply
I don't think that's fair at all.

The whole point of Meteor is to play with different approaches to web development that will be required in the future (if you want to build big distributed, interactive web apps). It's not finished yet, and they're pretty upfront about that.

[+] mark_l_watson|11 years ago|reply
I can't agree. I used Meteor to rewrite an app that I had previously used Clojure and Clojurescript for.

It is faster to rewrite an app having written it once already, but still: it took half the time, had better user login/auth, and had sort-of real time multi-user support.

Meteor is very nice. Try it on a small project. The learning curve is easy.

[+] chubot|11 years ago|reply
Nitpick: does the term "isomorphic JavaScript" to describe JS that runs on both the client and server annoy anyone? Where's the isomorphism?

When I think of isomorphism I think of two things that look different but have the same structure. If you had a set of functions that are synchronous and a set that are async, then maybe you can call the sets isomorphic. Or if you have a Python library that mimics a command line tool, then they could be isomorphic.

[+] kaoD|11 years ago|reply
Iso = Equal. Morph = Shape. Isomorph = Same shape.

Isomorphic JavaScript = JavaScript that takes the same shape [in multiple environments].

You're thinking isomorphism as math terminology but it isn't. It's just borrowed from Greek. From a quick search it means "same shape" in regular English too!

Your nitpick would be akin to being annoyed by the use of "group" to mean "a number of people or things considered or classed together" because it has a specific meaning in math.

[+] tel|11 years ago|reply
That annoys the hell out of me. It's a cool word, sure, but it also has an incredibly tight technical meaning of which "runs of server and client" seems to have next to no relation.
[+] MisterMashable|11 years ago|reply
I was a bit turned off by the term 'isomorphic javascript' when I first read it mostly because of how it is so fundamental to mathematics and we can say the term isomorphic definitely earned its keep there. In programming I'm not so sure. The term does fit but it's a mouthful, almost as bad as XMLHttpRequest. Is there a cool word like AJAX to take the place of Isomorphic Javascript? Airbnb has a certain coolest factor and they've been using the term so it's most likely here to stay.
[+] untog|11 years ago|reply
Sounds interesting, but the devil is in the details. To use their example, HTTP.get() will have to deal with CORS on the web, but not in apps. If you end up with dozens of "oh yeah well for X you just need to add Y" situations then the utility is kind of wasted.

And to be honest, I still don't get why this requires a new package manager. NPM (with a utility library, perhaps) could perform most of these functions.

[+] rational-future|11 years ago|reply
>> HTTP.get() will have to deal with CORS on the web, but not in apps

You can still use exactly the same code in the browser and on the server. Allowing stuff like server-side rendering on old browsers and JS rendering for the majority of users from a single piece of code.

[+] astrodust|11 years ago|reply
If npm had some kind of conformance flag, where you could tag your package with the platforms it supports, this would help considerably.
[+] general_failure|11 years ago|reply
The specific http issue is already solved by browserify.

http://browserify.org/

[+] ajacksified|11 years ago|reply
I've been using browserify for quite a while now, and browserify is absolutely fantastic and handles building "isometric" apps with elegance.

I suppose it's nice that they bundle some functionality in like `camera`, but I don't see why that would be an "isopack" thing and not just an external library.

And anyway, doesn't building a framework-specific package disregard the "isometric" ideal: write once, run anywhere?

(as long as "anywhere" means that it's using meteor.)

[+] rational-future|11 years ago|reply
Browserify is just a hack, Meteor seems to be looking for a clean, long term solution.
[+] jordanlev|11 years ago|reply
off-topic (but perhaps related to the general usefulness of meteor): I browse with cookies and localStorage disabled by default. Every time I go to the meteor site to read something, the page just continually reloads itself without ever getting anywhere. I understand that some sites require cookies or localStorage to function (although I think it's nuts that that would be required for a site that is just displaying content and not an interactive application), but at the very least put up a message saying that cookies and/or localStorage must be enabled instead of just making my browser freak out. Thanks, can't wait to actually read about them without having to open a different browser :)
[+] mjackson|11 years ago|reply
tl;dr: "We want to build isomorphic apps, so we wrote a new package manager"

Coupling the goal of building isomorphic apps with the need for a new way of managing packages to accomplish that goal doesn't make any sense. How you install packages and manage dependencies has absolutely no bearing on what you can or cannot do with those packages.

In other words, you can write fully isomorphic apps using npm as your package manager. We're already doing it.

[+] unknown|11 years ago|reply

[deleted]

[+] hywel|11 years ago|reply
Why start from scratch? Seems like reinventing the wheel to start from a blank slate rather than forking npm etc. I guess forking doesn't get you to the top of HN though.
[+] avital|11 years ago|reply
From https://github.com/meteor/meteor/pull/516#issuecomment-12919...:

"If you think about it, if we tried to build all of the above on top of npm, it would be npm in name only. Even if Meteor packages were in npm, you wouldn't use the npm tool to find or install packages (you'd use a wrapper that implemented the 'release snapshots', 'curation', 'repeatability' considerations), nor could you drop them directly into existing npm applications (per 'client vs server' and 'asset bundling')."

[+] panarky|11 years ago|reply
This is awesome.

  With Isobuild and Cordova, you'll be able to add a camera package
  to your app and use one simple Camera.takePicture() API to take a
  photo, and then type one command to build your app not just for the
  browser, but for the iOS and Android app stores too.
[+] richardwhiuk|11 years ago|reply
As if anything is that simple. Where will the photo be stored? What effects will be applied? What format will it be in? How large will it be? What happens if it requires a permission request (e.g. in browsers and on iOS)? Will it auto generate the manifest file?
[+] icholy|11 years ago|reply
Because running the cordova commands is so hard.
[+] MisterMashable|11 years ago|reply
We can only hope their new package system will contain something that allows the programmer to chose their own database. I want to use Couchbase and Elasticsearch. I can't see why any other document store couldn't do the same job as Mongo. Don't get me wrong, I'm ok with Mongo (but it's not for me) but can't we make at least some choice???
[+] joeyspn|11 years ago|reply
I really don't mind about the packaging system, I think that the meteor team should put special emphasis in solving the scalability issues, cos right now (IMO) is the major barrier for adoption.

I find really useful all the features they're launching but there's no way I'm going to pay for a 8Gb and quadcore server just for supporting 100 concurrent visitors...

I started building a real-time webapp with meteor and had to switch to express + primus which was a much more efficient solution (orders of magnitude).

I really hope they do something about it ASAP... I really enjoyed working with meteor and still use for small projects, but for a medium/big app? not yet...

[+] jimmytidey|11 years ago|reply
Why do Meteor care so much about you starring them on Github?
[+] aioprisan|11 years ago|reply
It's a good way to drive the point home, by adding that last sentence in every post. An effective way to spread the word. What's wrong with asking that? For the past projects that I open sourced, I asked people to star them if they found them useful.
[+] pantalaimon|11 years ago|reply
That website is a prime example for https://news.ycombinator.com/item?id=8237996

It's really just text and a few images, nothing fancy, an ordinary blog post - yet it freezes my browser for what feels like half a minute while it uses 100% CPU for rendering. What the fuck?!

[+] sogen|11 years ago|reply
There's a huge .JS file in there, it has the whole site or so it seems. It has content: * the blog * Other pages like Get involved