A visual programming IDE for object-oriented languages
Welcome to Envision


The Envision project aims to develop an IDE for object-oriented languages that features a visual structured code editor and is used for large-scale software development.

Envision is an open-source project using the BSD license. The project is based on the Qt framework and is cross-platform. Envision was originally developed at ETH Zurich in the context of Dimitar Asenov's PhD studies.

To read about the motivation for building Envision and find out what are some of the key ideas for the IDE, please see the motivation page.


A short introduction that highlights some of the main concepts in Envision.

A demo of how the visualizations and interactions in Envision can be customized for embedded domain-specific languages.

A demo of useful ways to improve the readability of long methods with styled comments in Envision.

A demo of Envision's advanced version control features.

A demo of scripting Envision using its built-in command prompt, e.g. to perform a data-based refactoring.

Our CHI'16 talk presenting the results of a user study which shows that Envision's rich visualizations can substantially improve the understanding of code structure, compared to syntax highlighting.

Development status

Envision is still a proof of concept prototype and can not be used for programming yet. Nevertheless the current version illustrates some of the key visualization and interaction concepts for the IDE.

Envision currently runs on Linux and Windows. Development is done in Linux. There are two code branches on GitHub:

  • master - contains an older, more stable version of the IDE
  • development - contains the latest changes and features. This branch is typically updated on a daily basis and might contain severe bugs. When the development branch is "in a good state" it is merged into master.

Implemented features

  • A core component that finds and loads plug-ins at run time
  • A small test framework for testing plug-ins
  • An extensible application model (AST) which currently supports a subset of Java (partial generics, no interfaces, no reflection, no libraries), and C++ (some templates, partial C++11 support, few 'exotic' features)
  • Flexible visualizations
  • Code editing using a structured editor
  • Ability to customize how AST nodes are rendered based on context
  • Rich comments, including formatted text, diagrams, and embedded HTML/Javascript
  • Partial support for importing Java code

Missing features required for basic usability

  • Full support for importing/exporting to/from a programming language

Developer documentation and guidelines for contributors

NOTE: This developer documentation is continuously being updated with new content and is not yet fully complete. If there is something particular you would like to see here, let us know.

For an introduction to the project's design and organization for contributors, please check out the architecture of Envision.

Contributions to the project are welcome. Please visit the contribution guidelines for more details.

How to compile and run Envision?

For building Envision from source see the compilation instructions.

For hints on running Envision see the "Try Envision" page.


To see a complete list of contributors check out the credits page.