I agree with @cereal, it’s weird when you go through the official docs, and it recommends to install some weirdly named package to achieve very basic functionality.
I don’t mind if it gives a list of packages that let you take things further than what the docs explain, but it shouldn’t include examples or tutorials on how to use third-party packages. That should go into a « recipes » or « examples » section. You can’t have packages explained in the official docs that are outdated and unmaintained either (Again, a list of packages is fine, but not an official tutorial). Examples of external packages meteor relies on to work:
tmeasday:check-npm-versions
meteortesting:mocha
My opinion is that the meteor core should offer all the necessary abstractions to allow anyone to easily hook into meteor and write whatever code they need, without needing to use hacks.
My recent experience building a Gatsby website felt like that (thanks @stolinski for the tutorials btw ): As you learn more about the functionality of Gatsby, you realize that all the plugins you install, and much of the built-in configuration, simply uses the public APIs that Gatsby makes available. I.e. Gatsby uses their own low-level APIs to build Gatsby itself. You quickly get the feeling that you too can just use those APIs and rebuild those plugins yourself.
As a counter example in Meteor, when you look at the code in matb33:collection-hooks
, or the packages that need meteorhacks:meteorx
, it’s just hacks. It’s not discoverable, it’s not easy to use. In Meteor you’re always left doing the function replacing dance:
const originalMeteorFunc = Meteor.someImportantFunctionWithNoApiOrDocumentation;
Meteor.someImportantFunctionWithNoApiOrDocumentation = (...args) => {
doMyOwnStuff(...args);
return originalMeteorFunc(...args);
}
It’s fine, it’s not too difficult, but you’re completely on your own. I don’t understand why you need a “hacks” package to build a proper monitoring solution like Kadira for example, that stuff should be built using 100% public APIs.
So I would summarize it like this:
- Anything that gives you deep access to the meteor code-base, be it through good abstractions or through unofficial hacks, should be in the core.
Candidates I can think of, you’ll notice that all these things do the same thing: give more control to the developer: