I Introduction and Motivation:
1. Introduction
1.1. Motivation
Goal: direkt change and immediate feedback
- Move boundary between programming models down
- Move as many into EUD Level
- Allow users to customize tools and evolve environment
1.2. Contributions
- Pulling Tools into End-user Manipulateable Space -> Scripting Parts
Adapting Tools by Scripting Parts
- Allow to change Core System from Scripted Tools (from the outside) -> ContextJS
Evolving Behavior with Context-oriented Programming
1.3. Outline
2. Background
2.1. Lively Kernel
2.1.1. Classes and Modules
2.1.2. Morphs and Worlds
2.2. Context-oriented Programming
2.2.1. Behavioral Adaptation with Context-oriented Programming
2.2.2. Programming with Dynamically Scoped Layers
2.2.3. Lack of Alternative Scoping Mechanisms
3. Self-supporting Development Environments
3.1. Separation of Development and Runtime Environments
3.2. Integrated Development and Runtime Environments
3.3. Motivation: Evolving a Web-based Development Environment
II Approach:
4. Malleable Tools in Self-Supporting Development Environments
4.1. Parts and PartsBin
4.2. Direct Manipulation and Scripting
4.3. Immediate Feedback
4.4. Developing Tools as Scripted Objects
4.5. Meta-circularity in Tool Development
4.6. Summary
5. Using Scoped Behavioral Adaptations for Evolving Self-supporting Development Environments
5.1. ContextJS Syntax and Semantics
5.2. Separating Changes in Layers
5.3. Scoping Changes - Layer Activation
5.4. Merging Changes back into the Base System
5.5. Capturing Changes
5.6. Adapting Core Behavior from Scripted Tools
5.7. Summary
III Implementation:
6. An Open Implementation for Context-oriented Layer Composition in ContextJS
6.1. Open Implementation of Layer Composition
6.2. Global and Dynamically Scoped Layer Activation
6.3. Instance-specific and Structural Layer Activation
6.4. Composition of Layer Activation Strategies
6.5. Summary
7. The Lively PartsBin
A Cloud-based Repository for Collaborative Development of Active Web Content
7.1. Repository of Parts
7.2. Persistent Object-specific Behavior
7.3. Source Code vs. Objects
7.4. Cloning and Derivation History
7.5. Prototyping
7.6. Summary
IV Evaluation:
8. CaseStudies: Tools in Webwerkstatt
8.1. Scripted Tools
8.1.1. Developing a Splitter Morph
8.1.2. Evolving the Inspector by Adding the Splitter Morph
8.2. Server Side Scripting
CPU Visualization
8.3. Scoping Behavior Adaptations in the Lively Kernel
8.3.1. Test Runner Adaptation
8.3.2. Connector
8.4. Developing with ContextJS in Webwerkstatt
8.4.1. Visualizing Events
8.4.2. Text Coloring
8.4.3. Developing Auto-completion
8.5. Using ContextJS for Implementing Meta-Tools
8.5.1. Tracing with JavaScript
8.5.2. ContextJS Tracer
8.5.3. Finding a Font Size Bug in Lively Kernel
8.5.4. Understanding Layout Behavior
8.6. Summary
9. Tool Evolution in Webwerkstatt
9.1. Data Source: Repository and Runtime Analysis
9.1.1. At Runtime: A Lively World
9.1.2. Lively Repository
9.1.3. Parts and Worlds
9.2. Evolution of Tools in the PartsBin
9.3. Problems of Cloning
9.3.1. Overhead of Storing Scripts per Object
9.3.2. Outdated Versions of Scripts
9.4. Summary
10. Evaluation of ContextJS in Webwerkstatt
10.1. Sources of Layer Activations and Definitions
10.2. Layer Definitions
10.3. Layer Activations
10.4. Frequently Refined Methods
10.5. COP Usage in Webwerkstatt
10.6. ContextJS Performance Observations
V Related Work and Conclusion:
11. Related Work
11.1. Self-supporting Development Environments
11.2. Scripting Active Content
11.3. Adapting Tools
11.4. Context-oriented Programming
11.5. Dynamic Scoping of Behavioral Adaptation
11.6. Meta-programming Tools
12. Conclusion
12.1. Contributions
12.2. Future Work