Skip to main content

Preserving Access to Previous System States in the Lively Kernel

  • Chapter
Design Thinking Research

Part of the book series: Understanding Innovation ((UNDINNO))

  • 10k Accesses

Abstract

In programming systems such as the Lively Kernel, programmers construct applications from objects. Dedicated tools make it possible to manipulate the state and behavior of objects at runtime. Programmers are encouraged to make changes directly and receive immediate feedback on their actions. However, when programmers make mistakes in such programming systems, they need to undo the effects of their actions. Programmers either have to edit objects manually or reload parts of their applications. Moreover, changes can spread across many objects. As a result, recovering previous states is often error-prone and time-consuming. This report presents an approach to object versioning for systems like the Lively Kernel. Access to previous versions of objects is preserved using version-aware references. These references can be resolved to multiple versions of objects and, thereby, allow reestablishing preserved states of the system. We present a design based on proxies and an implementation in JavaScript.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 149.00
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 199.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book
USD 199.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

References

  • Appeltauer M, Hirschfeld R, Haupt M, Lincke J, Perscheid M (2009) A comparison of context-oriented programming languages. In: International workshop on context-oriented programming. COP’09. ACM, July 2009, 6:1–6:6

    Google Scholar 

  • Borning A (1986) Classes versus prototypes in object-oriented languages. In: Proceedings of 1986 ACM fall joint computer conference. ACM’86. IEEE, November 1986, pp 36–40

    Google Scholar 

  • Cutsem T, Miller MS (2013) Trustworthy proxies: virtualizing objects with invariants. In: Proceedings of the 27th European conference on object-oriented programming. ECOOP’13. Springer, July 2013, pp 154–178

    Google Scholar 

  • Denker M, Gîrba T, Lienhard A, Nierstrasz O, Renggli L, Zumkehr P (2007) Encapsulating and exploiting change with changeboxes. In: Proceedings of the 2007 international conference on dynamic languages. ICDL’07. ACM, August 2007, pp 25–49

    Google Scholar 

  • Ecma/TS39 (2014) ECMAScript language specification (Draft for 6th Edition). Published April 27, 2014 (Draft, Revision 24). http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts. Accessed 11 May 2014

  • Gamma E, Helm R, Johnson R, Vlissides J (1995) Design patterns: elements of reusable object-oriented software. Addison-Wesley, Reading, MA

    Google Scholar 

  • Goldberg A, Robson D (1983) Smalltalk-80: the language and its implementation. Addison-Wesley, Reading, MA

    Google Scholar 

  • Hirschfeld R, Costanza P, Nierstrasz O (2008) Context-oriented programming. J Object Technol 7(3):125–151

    Article  Google Scholar 

  • Ingalls D, Wallace S, Chow Y-Y, Ludolph F, Doyle K (1988) Fabrik: a visual programming environment. In: Conference proceedings on object-oriented programming systems, languages and applications. OOPSLA’88. ACM, January 1988, pp 176–190

    Google Scholar 

  • Ingalls D, Kaehler T, Maloney J, Wallace S, Kay A (1997) Back to the future: the story of squeak, a practical smalltalk written in itself. In: Proceedings of the 12th ACM SIGPLAN conference on object-oriented programming systems, languages and applications. OOPSLA’97. ACM, October 1997, pp 318–326

    Google Scholar 

  • Ingalls D, Palacz K, Uhler S, Taivalsaari A, Mikkonen T (2008) The Lively Kernel—a self-supporting system on a web page. In: Self-sustaining systems. S3. Springer, May 2008, pp 31–50

    Google Scholar 

  • Kay A (2005) Squeak Etoys authoring and media. Technical report. Published February 2005. http://www.vpri.org/pdf/rn2005002_authoring.pdf. Accessed 7 Mar 2014

  • Krahn R, Ingalls D, Hirschfeld R, Lincke J, Palacz K (2009) Lively wiki: a development environment for creating and sharing active web content. In: Proceedings of the 5th International symposium on wikis and open collaboration. WikiSym’09. ACM, October 2009, 9:1–9:10

    Google Scholar 

  • Lewis B (2003) Debugging backwards in time. In: Proceedings of the fifth international workshop on automated debugging. AADEBUG’03. Springer, September 2003, pp 225–235

    Google Scholar 

  • Lieberman H (1986) Using prototypical objects to implement shared behavior in object-oriented systems. In: Conference proceedings on object-oriented programming systems, languages and applications. OOPLSA’86. ACM, June 1986, pp 214–223

    Google Scholar 

  • Lienhard A (2008) Dynamic object flow analysis. Ph.D. thesis. University of Bern, December 2008

    Google Scholar 

  • Lienhard A, Gîrba T, Nierstrasz O (2008) Practical object-oriented back-in-time debugging. In: Proceedings of the 22nd European conference on object-oriented programming. ECOOP’08. Springer, July 2008, pp 592–615

    Google Scholar 

  • Lincke J, Hirschfeld R (2012) Scoping changes in self-supporting development environments using context-oriented programming. In: Proceedings of the international workshop on context-oriented programming. COP’12. ACM, June 2012, 2:1–2:6

    Google Scholar 

  • Lincke J, Hirschfeld R (2013) User-evolvable tools in the web. In: Proceedings of the 9th international symposium on open collaboration. WikiSym’13. ACM, August 2013, 19:1–19:8

    Google Scholar 

  • Lincke J, Appeltauer M, Steinert B, Hirschfeld R (2011) An open implementation for context-oriented layer composition in ContextJS. Sci Comput Program 76(12):1194–1209

    Article  Google Scholar 

  • Lincke J, Krahn R, Ingalls D, Röder M, Hirschfeld R (2012) The lively partsbin—a cloud-based repository for collaborative development of active web content. In: Proceedings of the 2012 45th Hawaii international conference on system sciences. HICSS’12. IEEE, January 2012, pp 693–701

    Google Scholar 

  • Maloney JH, Smith RB (1995) Directness and liveness in the morphic user interface construction environment. In: Proceedings of the 8th annual ACM symposium on user interface and software technology. UIST’95. ACM, December 1995, pp 21–28

    Google Scholar 

  • Maloney J, Resnick M, Rusk N, Silverman B, Eastmond E (2010) The scratch programming language and environment. Trans Comput Educ 10(4):16:1–16:15

    Article  Google Scholar 

  • Pluquet F, Langerman S, Wuyts R (2009) Executing code in the past: efficient in-memory object graph versioning. In: Proceedings of the 24th ACM SIGPLAN conference on object oriented programming systems languages and applications. OOPSLA’09. ACM, October 2009, pp 391–408

    Google Scholar 

  • Shavit N, Touitou D (1995) Software transactional memory. In: Proceedings of the fourteenth annual ACM symposium on principles of distributed computing. PODC’95. ACM, June 1995, pp 204–213

    Google Scholar 

  • Steinert B, Hirschfeld R (2014) How to compare performance in program design activities: towards an empirical evaluation of CoExist. In: Design thinking research. Understanding innovation. Springer, January 2014, pp 219–238

    Google Scholar 

  • Steinert B, Cassou D, Hirschfeld R. CoExist: overcoming aversion to change. In: Proceedings of the 8th symposium on dynamic languages. DLS’12. ACM, January 2012, pp 107–118

    Google Scholar 

  • Taivalsaari A (1992) Kevo, a prototype-based object-oriented language based on concatenation and modules operations. Technical report LACIR 92-02. University of Victoria

    Google Scholar 

  • Taivalsaari A (1995) Delegation versus concatenation or cloning is inheritance too. In: SIGPLAN OOPS messenger 6.3, July 1995, pp 20–49. Issn: 1055-6400

    Google Scholar 

  • Taivalsaari A (1996) Classes vs. prototypes-some philosophical and historical observations. J Object Orient Prog 10(7):44–50

    Google Scholar 

  • Ungar D, Smith RB (1987) Self: the power of simplicity. In: Conference proceedings on object-oriented programming systems, languages and applications. OOPSLA’87. ACM, December 1987, pp 227–242

    Google Scholar 

  • Ungar D, Smith RB (2007) Self. In: Proceedings of the third ACM SIGPLAN conference on history of programming languages. HOPL III. ACM, San Diego, CA, June 2007, 9:1–9:50

    Google Scholar 

  • Van Cutsem T, Miller MS (2010) Proxies: design principles for robust object-oriented intercession APIs. SIGPLAN Not 45(12):59–72

    Article  Google Scholar 

  • Warth A (2009) Experimenting with programming language. Ph.D. thesis. University of California, Los Angeles, December 2009

    Google Scholar 

  • Warth A, Ohshima Y, Kaehler T, Kay A (2011) Worlds: controlling the scope of side effects. In: Proceedings of the 25th European conference on object-oriented programming. ECOOP’11. Springer, July 2011, pp 179–203

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Robert Hirschfeld .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2016 Springer International Publishing Switzerland

About this chapter

Cite this chapter

Thamsen, L., Steinert, B., Hirschfeld, R. (2016). Preserving Access to Previous System States in the Lively Kernel. In: Plattner, H., Meinel, C., Leifer, L. (eds) Design Thinking Research. Understanding Innovation. Springer, Cham. https://doi.org/10.1007/978-3-319-19641-1_15

Download citation

Publish with us

Policies and ethics