### Navigation

- index
- modules |
- next |
- previous |
- home|
- search|
- documentation »
- IPython developer’s guide »

# Development roadmap

IPython is an ambitious project that is still under heavy development. However, we want IPython to become useful to as many people as possible, as quickly as possible. To help us accomplish this, we are laying out a roadmap of where we are headed and what needs to happen to get there. Hopefully, this will help the IPython developers figure out the best things to work on for each upcoming release.

## Work targeted to particular releases

### Release 0.11

- Full module and package reorganization (done).
- Removal of the threaded shells and new implementation of GUI support based on `PyOSInputHook` (done).
- Refactor the configuration system (done).
- Prepare to refactor IPython’s core by creating a new component and application system (done).
- Start to refactor IPython’s core by turning everything into configurables (mostly done).

### Release 0.12

- Continue to refactor IPython’s core by turning everything into configurables.
- Merge draft html notebook (started).
- Add two-process Terminal frontend using ZMQ architecture.

## Major areas of work

### Refactoring the main IPython core

During the summer of 2009, we began refactoring IPython’s core. The main thrust in this work was to make the IPython core into a set of loosely coupled components. The base configurable class for this is `IPython.core.configurable.Configurable`. This section outlines the status of this work.

Parts of the IPython core that have been turned into configurables:

- The main `InteractiveShell` class.
- The aliases (`IPython.core.alias`).
- History management (`IPython.core.history`).
- Plugins (`IPython.core.plugin`).
- The display and builtin traps (`IPython.core.display_trap` and `IPython.core.builtin_trap`).
- The prefilter machinery (`IPython.core.prefilter`).

Parts of the IPython core that still need to be Configurable:

- Magics.
- Prompts.
- Tab completers.
- Exception handling.
- Anything else.

### Process management for `IPython.parallel`

A few things need to be done to improve how processes are started up and managed for the parallel computing side of IPython:

- Improve the SSH launcher so it is at least back to the levels of 0.10.2
- We need to add support for other batch systems (LSF, Condor, etc.).

## Porting to 3.0

Dropping 2.5 support was a major step towards working with Python 3 due to future syntax support in 2.6. IPython 0.11 requires 2.6 now, so 0.10.2 will be the last IPython release that supports Python 2.5.

We currently have a separate repo tracking IPython development that works with Python 3. The core of IPython does work, but the parallel computing code in `IPython.parallel` does not yet work in Python 3, though the only major dependency of the parallel code, pyzmq, does work on Python 3.

### Navigation

- index
- modules |
- next |
- previous |
- home|
- search|
- documentation »
- IPython developer’s guide »