Traits: Intraclass reuse

Traits are groups of methods that can be reused orthogonally to inheritance. We defined Traits which allows one to structure classes orthogonally to inheritance and offer a better composition mechanism than mixins. We formalized traits and identify the problems with their introduction in strongly-typed languages. We proposed analysis to support the identification of traits in existing applications. We extended traits with the notion of state and visibility. PHP 5.4, PERL-6, Dr-Scheme OO layer, Squeak3.9 and Pharo include traits. Traits influenced Scala (http://scala.epfl.ch/) developed at EPFL. Fortress (a new language for scientific computation developed by G. Steele) is entirely based on a variant of traits (http://labs.oracle.com/projects/plrg/). Several libraries have been developed for Ruby and Javascript. Several research teams proposed formal type systems for traits, showing the interest of the scientific community: S. Drossopoulos, V. Bono/F. Damiano, L. Liquori and J. Reppy/K. Fisher.
    1. Alexandre Bergel and Stéphane Ducasse, Supporting Unanticipated Changes with Traits and Classboxes, Net.ObjectDays (NODE'05), 61–75, 2005, PDF.
    2. Alexandre Bergel, Stéphane Ducasse, Oscar Nierstrasz and Roel Wuyts, Stateful Traits, Advances in Smalltalk — Proceedings of 14th International Smalltalk Conference (ISC'06), 4406, 66–90, Springer, 2007, PDF, DOI.
    3. Alexandre Bergel, Stéphane Ducasse, Oscar Nierstrasz and Roel Wuyts, Stateful Traits and their Formalization, Journal of Computer Languages, Systems and Structures, 34, 83–108, Elsevier, 2008, Impact factor (2008) 0.421, PDF, DOI.
    4. Andrew P. Black, Nathanael Schärli and Stéphane Ducasse, Applying Traits to the Smalltalk Collection Hierarchy, 2002, PDF.
    5. Andrew P. Black, Nathanael Schärli and Stéphane Ducasse, Applying Traits to the Smalltalk Collection Hierarchy, Proceedings of 17th International Conference on Object-Oriented Programming Systems, Languages and Applications (OOPSLA'03), 38, 47–64, 2003, acceptance rate: 26/142 = 18%, PDF, DOI.
    6. Tristan Bourgois, Jannik Laval, Stéphane Ducasse and Damien Pollet, BLOC: a Trait-Based Collections Library - a Preliminary Experience Report, Proceedings of ESUG International Workshop on Smalltalk Technologies (IWST'10), 2010, PDF.
    7. Damien Cassou, Stéphane Ducasse and Roel Wuyts, Redesigning with Traits: the Nile Stream trait-based Library, ICDL'07: Proceedings of the 15th International Conference on Dynamic Languages, 50–75, ACM Digital Library, 2007, PDF, DOI.
    8. Damien Cassou, Stéphane Ducasse and Roel Wuyts, Traits at Work: the design of a new trait-based stream library, Journal of Computer Languages, Systems and Structures, 35, 2–20, Elsevier, 2009, Impact factor (2010) 0.619, PDF, DOI.
    9. Tom Cutsem, Alexandre Bergel, Stéphane Ducasse and Wolfgang De Meuter, Adding State and Visibility Control to Traits using Lexical Nesting, Proceedings of European Conference on Object-Oriented Programming (ECOOP'09), Springer, 2009, 21%, PDF.
    10. Stéphane Ducasse, Oscar Nierstrasz, Nathanael Schärli, Roel Wuyts and Andrew P. Black, Traits: A Mechanism for fine-grained Reuse, ACM Transactions on Programming Languages and Systems (TOPLAS), 28, 331–388, 2006, 5-Year ISI impact factor (2010) 1.478, PDF, DOI.
    11. Stéphane Ducasse, Roel Wuyts, Alexandre Bergel and Oscar Nierstrasz, User-Changeable Visibility: Resolving Unanticipated Name Clashes in Traits, Proceedings of 22nd International Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA'07), 171–190, ACM Press, 2007, Acceptance rate: 33/156=21%, PDF, DOI.
    12. Stéphane Ducasse, Damien Pollet, Alexandre Bergel and Damien Cassou, Reusing and Composing Tests with Traits, TOOLS'09: Proceedings of the 47th International Conference on Objects, Models, Components, Patterns, 252–271, 2009, acceptance rate: 17/67 = 25%, PDF.
    13. Stéphane Ducasse, Marcus Denker and Adrian Lienhard, Evolving a Reflective Language, Proceedings of the International Workshop on Smalltalk Technologies, 82–86, ACM, 2009, PDF, DOI.
    14. Adrian Lienhard, Stéphane Ducasse and Gabriela Arévalo, Identifying Traits with Formal Concept Analysis, Proceedings of 20th Conference on Automated Software Engineering (ASE'05), 66–75, IEEE Computer Society, 2005, acceptance rate: 28/291 = 9%, PDF, DOI.
    15. Florian Minjat, Alexandre Bergel, Pierre Cointe and Stéphane Ducasse, Mise en symbiose des traits et des classboxes : Application à l'expression des collaborations, Actes de Langages et Modèles à Objets (LMO'05), 11, 33–46, 2005, PDF.
    16. Oscar Nierstrasz, Stéphane Ducasse and Nathanael Schärli, Flattening Traits, 2005, PDF.
    17. Oscar Nierstrasz, Stéphane Ducasse, Stefan Reichhart and Nathanael Schärli, Adding Traits to (Statically Typed) Languages, 2005, PDF.
    18. Oscar Nierstrasz, Stéphane Ducasse and Nathanael Schärli, Flattening Traits, Journal of Object Technology, 5, 129–148, 2006, May-June, PDF.
    19. Nathanael Schärli, Stéphane Ducasse and Oscar Nierstrasz, Classes = Traits + States + Glue (Beyond mixins and multiple inheritance), Proceedings of the International Workshop on Inheritance, 2002, PDF.
    20. Nathanael Schärli, Stéphane Ducasse, Oscar Nierstrasz and Andrew P. Black, Traits: Composable Units of Behavior, 2002, PDF.
    21. Nathanael Schärli, Oscar Nierstrasz, Stéphane Ducasse, Roel Wuyts and Andrew Black, Traits: The Formal Model, 2002, PDF.
    22. Nathanael Schärli, Stéphane Ducasse, Oscar Nierstrasz and Andrew P. Black, Traits: Composable Units of Behavior, Proceedings of European Conference on Object-Oriented Programming, 2743, 248–274, Springer Verlag, 2003, acceptance rate: 18/88 = 20%, PDF, DOI.