Most today's software is highly static, even if it is written in a dynamic language like Smalltalk. Developers are not encouraged to extend the frameworks they are using; and end-users are unable to change the features of their software without initiating a new development effort. In contrast, extensible software is designed for change; and customizable software can be adapted to new needs without requiring an in-depth knowledge of the underlying implementation domain.
In this presentation I will investigate on how to write truly dynamic software and I will distill common patterns of software customizability. As running examples I present tools that I worked on during my path of discovering Smalltalk. One of these examples is Magritte, a dynamic meta-model that gives end-users the possibility to customize their applications without the need of an additional development effort. Another example is Helvetia, an infrastructure enabling on-the-fly customization of the programming language and development environment.
68. Discussion
‣ UI independent
‣ Domain-specific reflection
‣ Extensible using subclassing/extending
‣ Can cause meta-confusion
‣ Can be limiting or slow
69. Other Users
‣ GLORP Relational Object Mapping
‣ Glamour Browser Model
‣ Monticello Code Model
‣ Announcement Event Model
‣ Magritte Meta-Model