-
Notifications
You must be signed in to change notification settings - Fork 3
Re-slice the Meteor system and packages #114
Comments
Few more things to add:
|
Hi @msavin - thanks for the feature request. Technically speaking, the Meteor package system already supports all of the functionality you've outlined here. Taking the tech out of this then, what remains is the decoupling of internal Meteor packages. Some decoupling is already under way (see #31 for example), but there is definitely a lot more that can be done. That being said, it's important to note that big picture pie in the sky feature requests like this are very difficult to help move forward. We should instead consider creating focused decoupling feature requests, that target specific areas of the Meteor codebase, in small chunks (like #31 targets disabling the mongo server). Small and focused FR's are not only easier to understand and discuss, but they're also easier to implement, test, review and ship. |
Maybe we could use this FR to outline which packages it would make sense to split up and why/how. |
Pretty much what I was getting at, I guess I could have phrased it better =) |
Whereas the NPM world provides a nice way to distribute libraries, I think Meteor's packaging system needs to look at packages a way to add or remove features from the framework.
It's pretty close to doing that, but has a number of issues, since a lot of functionality is coupled with-in a few jumbo packages.
For example:
mobile-experience
imposes many "packages for a great mobile UX," which can be easily argued against, and since they are mostly third party libraries, should not be handled by Meteor, but perhaps NPM.mongo
bundles the server side MongoDB driver with the client side cache (minimongo). If I try to remove the package, and just use minimongo as a cache, I get errors.meteor-base
is a bit of a mystery box. I would assume this is where things like Pub/Sub, LiveQuery, etc, live, but I have no way to access themdisable-oplog-tailing
🤔Now, imagine if, when we create a new package, we instead get a package list like this and can add/remove the features we want:
That way, I can build a lean app that doesn't use pub/sub and auto-updating, and so on. I think a big part of making this work will be to extend the Meteor package system to be able to say "this package should only work if package X is present", which I believe will serve as yet another differentiator against NPM.
This can also be a great way to provide long term support for packages. Each feature can have some kind of guarantee or lack of guarantee. Since MDG has jumped through big hooks to keep Meteor backwards compatible, they might as well enjoy the marketing benefits of it.
The text was updated successfully, but these errors were encountered: