Since most dynamic languages are easy to learn, they are well-suited
for education. Similarly, their interactive workflow provides many
benefits for data analysis.
This is propably why dynamic programming languages are becoming
increasingly popular . For instance the
Scientific Python ecosystem is blooming and
provides powerful tools for science and data exploration. Exciting
demonstrate that dynamic languages can be nearly as fast as compiled
All these tools are open source and free for anyone to use. So, whether
you’re a high-school kid who wants to create a game, a scientist who
wants to process some data, or anything in between, the tools you need
are probably there ...
However, newcomers often don’t know where to start, and the development
environments that most developers use are not well suited for beginners.
Zoof aims to reduce these obstacles by making it as easy as possible
to get access to the tools, and provides an intuitive environment to
We believe that the art of writing software can (and should) be a much
more common skill. Many exciting tools already exist; with Zoof we bring
them to a wide audience.
(These are the features that Zoof will have, see status below)
Get going quickly
With Zoof you can use programming languages that are already
installed, or you can easily spawn a new environment.
Zoof minimizes clutter and provides information when the user needs
it. The tip system will help you adopt an efficient workflow
without getting in the way.
Run code from file, cell or selected lines with a single key combination.
Make use of powerful introspection tools like autocompletion, call tips,
interactive docs, and workspace.
Preserve state accross sessions, smart-open instead of tabs. No
more saving or closing of files, and more. (Some of these features will
be experimental at first.)
Zoof is available on Windows, Linux and OS X. Binaries/installers
are provided for each platform. Zoof also runs on the Raspberry Pi!
Zoof provides a well-documented API and an extension system to allow
others to write new functionality, tools, and support for new
Zoof is free as in speech. Found a bug? Want a new feature? A
translation for your mother tongue? You can contribute to the
improvement of Zoof. The quality of our code is maintained by CI
that verifies our unit tests and style.
We believe that everyone should have access to good tools: Zoof is
free and always will be. Whatever business model we will adopt, the
free version shall not have any restrictions in functionality.
Zoof is build using web technologies, and can be hosted as a
web-application to e.g. drive a cloud computing platform.
Zoof is just getting started ...
Zoof can be seen as the successor of IEP and
Pyzo. Although quite successful, it’s time
to move things to the next level. Zoof essentially combines the two projects
in as single application. Further, we want to open up to other dynamic
programming languages, and we want to make the user interface more
intuitive and modern.
We start with a clean sheet, allowing us to lay a strong foundation
with a modular design, a well-documented public API, unit-tests, and
approporate coding style. From there we include the pieces from IEP and
Pyzo, while adapting them to the Zoof’s design principles. Along the
way, some functionality will be replaced by modern features (see below).
With this approach we think that we can get Zoof ready to roll in a
relative short amount of time, while achieving a healthy code-base for
future development. You can see the progress at
our github repo.
Since Januari 2015 we are actively developing Zoof. The first step is
developing a web-based GUI toolkit, which will form the basis for Zoof’s
If you would like to participate in any way, please contact
Here is the main idea of Zoof: Download Zoof and start it up, set
up an environment with the language of your choice, and start coding.
An intuitive interface will guide novice users through the process, and
will provide tutorial materials if necessary. At the same time, the
interface does not get in the way and is powerful enough to support the
workflow of advanced programmers.
Zoof supports multiple progamming languages, focusing on dynamic
languages (which support the interactve work flow of Zoof). At first we
will focus on Python and
Julia, and other languages can be added via
an extension mechanism. Over time the languages that Zoof natively
supports will be increased.
Like IEP, Zoof will be available in multiple (natural) languages. Let
us know if you want to help with the translations!
Zoof will probably support two ways to provide kernels. On the one hand
we will piggy-back on the kernel mechanisms of
project Jupyter (formerly IPython). On the
other hand, we are developing protocols that are aimed to be easy to
implement in any dynamic language, and have few dependencies.
Therefore, making Zoof work with a new language should be quite simple.
Imagine building a toy language with LLVM and being able to target it
from Zoof by spending one day implementinging a few simple protocols.
Zoof uses Conda to spawn and manage new
environments. Conda already provides full-fledged support for several
version of the Python programming language. Via
Binstar it will be straightforward to allow Zoof
to spawn other languages as well.
Some encouraging testimonials from IEP
This is fantastic IDE - exactly what I was looking for!
For quite a while now I’ve been looking for a way to switch from
Matlab to Python. The last remaining problem was a lack of descent
IDE for interactive work. I do a lot of short calculations, so a
‘cell’ execution mode is crucial for me. Thanks again for a great
I don’t even remember how I found IEP, so confused and desperate I
was testing [all available IDE’s] I could find. Installed it, and
10 minutes later I was coding, connecting with a glade created user
interface, and everything is running so well. I ain’t gonna change
now. IEP is my choice. Thank you very much, and keep up this amazing
What I like especially of iep is the plain and simple design of the
UI [...] while providing really powerful functionality.
Please, keep this project running.
It’s performing beautifully, the UI is very intuitive and stylish
(to my eyes anyway). [...] This is a very impressive app, on OSX
close to alpha dog status (I’ve used ALL the OSX alternatives).
There are some features that we plan on incorporating (or at least
experiment with). The details need to be worked out, and much is still up
- Once Zoof has started, most interaction with the file system will be
done via a proxy that runs in a dedicated thread, so that Zoof remains
responsive even if your hard drive is busy. This is already implemented in
IEP’s file browser tool. This approach can later be extended to transparently
map remote file systems (e.g. cloud computing).
- No more tabs, only one file is “open” at a time. Begone with the
old-fashioned concept of unsaved files. Just edit each file directly.
The state of each file (cursor position, undo, etc.) is preserved once you
re-open it. Open/select a file by typing in a
text field, which will smartly suggest recent files and files that match
the part of the file name that you wrote. The idea is similar to
Sublime’s “open anything” and Zed’s method for opening files. Don’t
worry, we will also include IEP’s powerful file browser that has
support for filename filters and search.
- No more menu bar. Each component of Zoof has its own small menu that only
lists functionality specific to that component. Instead of searching for
functionality in the global menu, you simply select the menu of the component
to which the required functionality applied.
- A generic “tip” mechanism to guide novel users in using Zoof, that is easily
put out of the way when (no longer) needed. Also give hints about
keyboard shortcuts to help users adopt an effective workflow. The
same system provides extra information on menu items and
user-settings. This should help keep the UI simple and clutter-free
while making it easy to get more information when needed.
- Source structure tool (like IEP has) is shown in the editor itself and is
only shown when ALT (or another key?) is pressed down. This should
reduce clutter while still making it easy to get an overview of your
code. Will need to see how this works out in practice though.
- Concept of “pages”. Much functionality is provided via pages that are
displayed in the area where your code is normally displayed. E.g.
configuration options can be accessed by selectig “zoof:config” as a
“file name”. This reduces the amount of dialogs popping up, and makes
Zoof very easy to extend. Common pages can easily be loaded via a menu
- The start page (which can be accessed using a single click) provides a quick
way to common tasks, like launching and managing environments.
- Zoof will get an extension mechanism to make it easy to register extenstions
that provide new pages, tools, and other functionality to customize Zoof
to your needs.