3-5 July 2006
CERN, Geneva
Europe/Zurich timezone

Envisage - An Extensible Application Framework

3 Jul 2006, 10:10
40-SS-D01 (CERN, Geneva)


CERN, Geneva

Python in Science Python in Science


Mr Martin Chilvers (Enthought Inc)


The Java world has two dominant frameworks for extensible application development: NetBeans and Eclipse. Although many people think of these two projects as IDEs, they are both built upon open architectures that are designed to support generic GUI application development. Treading lightly in the footsteps of these two excellent projects, Envisage attempts to bring similar capabilities to the Python community. The heart of Envisage is its plug-in architecture; in fact, the Envisage core is little more than a system for discovering, loading, starting and stopping plug-ins. Developers construct applications by choosing from the set of supplied plug-ins (possibly the empty set) and then adding their own to provide domain-specific functionality. Although an Envisage application need not have a GUI, Envisage comes with an ever-expanding set of plug-ins that simplify many of the more common and tedious aspects of GUI development (e.g., window management, menubars/toolbars, user preferences). It is worth noting that these 'standard' plug-ins are written in exactly the same way as those written by an application developer. Each plug-in uses the Envisage extension mechanism not only to contribute to what came before it, but also to define how future plug-ins can contribute to it. This mechanism is simple but consistent, and ensures that even extensions to an application are extensible. This presentation will introduce the Envisage plug-in architecture, and demonstrate how applications both with and without GUIs can be built with it.


  1. Introduction

1.1 What Is Envisage?
- Heritage
- Eclipse
- Netbeans
- The different faces of Envisage
- framework for extensible application development
- framework for GUI application development
- framework for scientific application development

  1. Framework for Extensible Application Development

2.1 Goals
- Extensible
- Scaleable

2.2 The Envisage core
- ~1000 lines of pure Python (1/4 of which are comments)
- the application as a plug-in container
- plug-in lifecycle management
- discovery/load
- start/stop
- the service registry

2.3 Plug-ins
- Extension mechanism
- Python instead of XML
- Typed definitions using Traits
- Extension points
- Extensions (contributions to extension points)

2.3.1 The Core Plugin
- Extension points
- Preferences
- Type Manager
- Adapters
- Categories
- Factories
- Hooks
- Runnables
- Services
- type managers

  1. Framework for GUI application development

    • The workbench plugin
    • views
    • editors
    • perspectives

    • The actions plugin

    • menubar
    • toolbar
    • context menus
  2. Framework for scientific application development

    • Resource plug-in
    • extensible data types
    • persistence
    • Plotting
    • Chaco
    • Python Shell
    • 3-D visulaization
    • Materials DB
  3. Future Work

  4. Python Eggs
  5. service based requirement mechanism

Primary author

Mr Martin Chilvers (Enthought Inc)

Presentation Materials