Keynote: ContextJS and Lively Kernel: Safely Evolving a Self-supporting Development Environment with COP
Computational reflection and meta-circularity, developing in self-supporting environments like Smalltalk inherently has the danger of breaking one’s own tools, which is more severe in a shared environment like Lively Kernel since changes can and often do affect more than a single user. Therefore, developers should have the means to change their system at run-time, to try out changes, and share new features or tool adaptations with others in a controlled way.
To address this, we use Context-oriented Programming (COP) to modularize changes to the base system. COP layers can be scoped, depending on the execution context, to make the development of the base system safer at run-time by reducing the risk of tools breaking themselves. Furthermore, layers can be used to share such changes in a wiki-like collaboration setting.
Webwerkstatt has been actively used for more than four years now—not only by a small group of core developers, but also by external users, including our students, for whom it has served as a shared development environment. During this time, its users successfully worked on their projects, adapted tools, and also helped to evolve Lively Webwerkstatt itself.