Deprecating Mixin Support
Summary
Deprecate all Mixin support.
Motivation
For a while now, Ember has not recommended the use of Mixins. We should actually fully deprecate this.
Transition Path
All existing public Ember mixins will be deprecated:
- Ember.Mixin (from
@ember/object/mixin
) - Ember.PromiseProxyMixin (from
@ember/object/promise-proxy-mixin
) - Ember.Comparable (from
@ember/object/comparable
) - Ember.Enumerable (from
@ember/object/enumerable
) - Ember.Observable (from
@ember/object/observable
)
For users that still want mixin-like functionality, we should recommend class decorators. If this feels less ergonimic that we would desire, we can consider providing an addon that adds some sugar around this.
Exploration
To validate this deprecation, I've tried removing all Mixins in this PR: https://github.com/emberjs/ember.js/pull/20923
How We Teach This
We should remove all references from the guides and provide a deprecation guide.
Drawbacks
Some users probably rely on this functionality. However, it's almost certainly something that we don't need to keep in Ember itself.
Alternatives
None
Unresolved questions
None