PyCon 2005 Submission --------------------- Author: Martin Chilvers Address: Enthought Inc 515 Congress Ave Suite #1614 Austin TX 78701 E-mail: martin@enthought.com Telephone: 512-536-1057 Timeslot: 45 mins Title: Envisage - An Extensible Application Framework (An exercise in applied plagiarism) Summary ------- 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. Despite the fact that development is still in its early stages (especially when compared to the enormous effort that has gone into both Netbeans and Eclipse), Envisage has already been used to deliver production applications, with two more scheduled in the first half of this year. This presentation will introduce the Envisage plug-in architecture, and demonstrate how applications both with and without GUIs can be built with it. Comments -------- - Envisage is Open Source and will be released under some kind of BSD-style license. - Envisage itself requires no GUI toolkit. However the default UI plugin is written using two other Enthought packages (alos Open Source/BSD) 'traits' and 'pyface' that are specifically designed to support multiple toolkit back-ends. We have the wx versions up and running and the tk versions in the works. Presentation Outline -------------------- 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 2. 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 - common services - extension registry - import management 2.3 Plug-ins - Extension mechanism - Python instead of XML - Typed definitions using Traits - Extension points - Extensions (contributions to extension points) 3. Framework for GUI application development - Common UI abstractions - actions - views - editors 4. Framework for scientific application development - Resource plug-in - extensible data types - persistence - Plotting - Chaco - Python Shell - 3-D visulaization - Materials DB 5. Future Work - a Python IDE? ---- EOF ----------------------------------------------------------------------