Lively groups: shared behavior in a world of objects without classes or prototypes

Development environments which aim to provide short feedback loops to developers must strike a balance between immediacy and the ability to abstract and reuse behavioral modules. The Lively Kernel, a self-supporting, browser-based environment for explorative development supports standard object-oriented programming with classes or prototypes, but also a more immediate, object-centric approach for modifying and programming visible objects directly. This allows users to quickly create graphical prototypes with concrete objects. However, when developing with the object-centric approach, sharing behavior between similar objects becomes cumbersome. Developers must choose to either abstract behavior into classes, scatter code across collaborating objects, or to manually copy code between multiple objects. That is, they must choose between less concrete development, reduced maintainability, or code duplication. In this paper, we propose Lively Groups, an extension to the object-centric development tools of Lively to work on multiple concrete objects. In our approach, developers may dynamically group live objects that share behavior using tags. They can then modify and program such groups as if they were single objects. Our approach scales the Lively Kernel’s explorative development approach from one to many objects, while preserving the maintainability of abstractions and the immediacy of concrete objects.

[1]  Randall B. Smith,et al.  Self: The power of simplicity , 1987, OOPSLA 1987.

[2]  Robert Hirschfeld,et al.  Scoping changes in self-supporting development environments using context-oriented programming , 2012, COP@ECOOP.

[3]  Stanley M. Sutton,et al.  N degrees of separation: multi-dimensional separation of concerns , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[4]  David Ungar,et al.  Self , 2007, HOPL.

[5]  Josephine Micallef,et al.  Encapsulation, Reusability and Extensibility in Object-Oriented Programming Languages , 1987 .

[6]  John Maloney,et al.  Back to the Future The Story of Squeak, A Practical Smalltalk Written in Itself , 1997 .

[7]  Luca Cardelli,et al.  A Semantics of Multiple Inheritance , 1984, Information and Computation.

[8]  Daniel E. Lipkie,et al.  Traits: An approach to multiple-inheritance subclassing , 1982, COCS.

[9]  Bertrand Meyer,et al.  Object-Oriented Software Construction, 2nd Edition , 1997 .

[10]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[11]  Randall B. Smith,et al.  Directness and liveness in the morphic user interface construction environment , 1995, UIST '95.

[12]  Shigeru Chiba,et al.  Do we really need to extend syntax for advanced modularity? , 2012, AOSD '12.

[13]  Tommi Mikkonen,et al.  The Lively Kernel A Self-supporting System on a Web Page , 2008, S3.

[14]  Craig Chambers,et al.  Organizing programs without classes , 1991, LISP Symb. Comput..

[15]  A. Borning,et al.  The Stripetalk Papers : Understandability as a Language Design Issue in Object-Oriented Programming Systems , 2013 .

[16]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[17]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[18]  Ettore Merlo,et al.  Assessing the benefits of incorporating function clone detection in a development process , 1997, 1997 Proceedings International Conference on Software Maintenance.

[19]  Robert Hirschfeld,et al.  The Lively PartsBin--A Cloud-Based Repository for Collaborative Development of Active Web Content , 2012, 2012 45th Hawaii International Conference on System Sciences.

[20]  Daniel H. H. Ingalls The Lively Kernel: just for fun, let's take JavaScript seriously , 2008, DLS '08.

[21]  Oscar Nierstrasz,et al.  Context-oriented Programming , 2008, J. Object Technol..

[22]  Guy L. Steele,et al.  An overview of COMMON LISP , 1982, LFP '82.

[23]  Robert Hirschfeld,et al.  An open implementation for context-oriented layer composition in ContextJS , 2011, Sci. Comput. Program..