We have to be careful about this.
I�m not saying traits doesn�t have its place but they are a solution to millions of non-problems
Note that this issue does not come from presence of traits but from the combinaison of two things:
- conflation of base-level (a.k.a. domain-level) and meta-level APIs: but it's like that since the invention of smalltalk (however it can be solve with a mirror-based architecture)
- recent unification of Class and Trait APIs that require classes to answer #users.
So similar problems were already present before this unification. The unification just added a few ones (including #users).
Basically, all selectors of Behavior, ClassDescription and Class should not be used as domain-level class-side methods: that makes around 500 "reserved" selectors.
Here is a post to reflect and learn from the problems of our neighbours, the lispers guys:
It would be super awesome if we never ever ever have those problems
This is where the "only 5 reserved keywords" stop being true :)
I've been bitten by similar things and ended up using my own selectors, sometimes with a prefix.
Regards!