A trait is an elementary unit of behavior for structuring object-oriented programs. A trait is essentially a set of methods intended to be composed with other traits in order to form a new trait. Moreover, a trait may be used by classes in order to share behavior between dissociated class hierarchies. Traits are traditionally perceived as an alternative to multiple inheritance, and have had a significant practical and theoretical impact.
FeatherTrait is a new calculus based on Featherweight Java that captures the essence of traits and proposes a simple type system that type-checks traits usages by classes. As mentioned by the authors, several alternative type systems have been proposed, and the main contribution of FeatherTrait is that it considers verification of traits composition as a noninvasive addition mechanism in the compilation phase.
Type-checking traits when they are effectively used by some classes is an additional step inserted before the class type-checking. The great benefit is to leave most of the different phases of the compilation untouched. This represents a plausible scenario for an adoption of traits in a statically typed language such as Java, since no major overhaul has to be considered.
The ideas, calculus, and proofs are clearly presented, and the authors make a great effort to motivate different aspects of their type system and consider the related work. This paper will definitely find an audience among people interested in traits and class inheritance in general.