I feel like I'm the only one who thinks the original Scala-Reflect was the best macro-system so far: typed Expr[T]s, hygienic reify, splices & lifting. The usability problems seemed more superficial than fundamental. Most people don't need to break hygiene or make untyped trees
Hmm. I think the lack of quasiquotes made the construction of trees far too difficult for me to ever appreciate them, and reify blocks didn't give enough syntactic distinction between compile-time code and generated code. Maybe that's all just "usability", though.