##// END OF EJS Templates
Improved autosave code. Autosave thread termination is instantaneous.
Improved autosave code. Autosave thread termination is instantaneous.

File last commit:

r2277:dc983636
r3252:a742353e
Show More
roadmap.txt
121 lines | 4.5 KiB | text/plain | TextLexer
Brian E Granger
Beginning to organize the rst documentation.
r1256 .. _roadmap:
===================
Development roadmap
===================
Brian Granger
General work on inputhook and the docs....
r2197 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.
Brian E Granger
Beginning to organize the rst documentation.
r1256
Brian Granger
Updating developer docs.
r1790 Work targeted to particular releases
====================================
Brian E Granger
Beginning to organize the rst documentation.
r1256
Brian Granger
Updating developer docs.
r1790 Release 0.11
------------
Brian E Granger
Beginning to organize the rst documentation.
r1256
Brian Granger
Updated development roadmap and fixed bug in history file naming.
r2247 * Full module and package reorganization (done).
Brian Granger
General work on inputhook and the docs....
r2197
Brian Granger
Updated development roadmap and fixed bug in history file naming.
r2247 * Removal of the threaded shells and new implementation of GUI support
based on ``PyOSInputHook`` (done).
Brian E Granger
Beginning to organize the rst documentation.
r1256
Brian Granger
Updated development roadmap and fixed bug in history file naming.
r2247 * Refactor the configuration system (done).
Brian Granger
Edits to the development roadmap.
r1792
Brian Granger
General work on inputhook and the docs....
r2197 * Prepare to refactor IPython's core by creating a new component and
Brian Granger
Updated development roadmap and fixed bug in history file naming.
r2247 application system (done).
Brian E Granger
Beginning to organize the rst documentation.
r1256
Brian Granger
Updated development roadmap and fixed bug in history file naming.
r2247 * Start to refactor IPython's core by turning everything into components
(started).
Brian E Granger
Beginning to organize the rst documentation.
r1256
Brian Granger
Updating developer docs.
r1790 Release 0.12
------------
Brian E Granger
Beginning to organize the rst documentation.
r1256
Brian Granger
Updated development roadmap and fixed bug in history file naming.
r2247 * Continue to refactor IPython's core by turning everything into components.
Brian Granger
Edits to the development roadmap.
r1792
Brian E Granger
Beginning to organize the rst documentation.
r1256
Brian Granger
Updating developer docs.
r1790 Major areas of work
===================
Brian E Granger
Beginning to organize the rst documentation.
r1256
Brian Granger
Updating developer docs.
r1790 Refactoring the main IPython core
---------------------------------
Brian E Granger
Beginning to organize the rst documentation.
r1256
Brian Granger
Major work on the documentation....
r2277 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 component class for this is
:class:`IPython.core.component.Component`. This section outlines the status of
this work.
Brian Granger
Updated development roadmap and fixed bug in history file naming.
r2247
Parts of the IPython core that have been turned into components:
Brian Granger
Major work on the documentation....
r2277 * The main :class:`~IPython.core.iplib.InteractiveShell` class.
* The aliases (:mod:`IPython.core.alias`).
Brian Granger
Updated development roadmap and fixed bug in history file naming.
r2247 * The display and builtin traps (:mod:`IPython.core.display_trap` and
:mod:`IPython.core.builtin_trap`).
* The prefilter machinery (:mod:`IPython.core.prefilter`).
Brian Granger
Major work on the documentation....
r2277 Parts of the IPythoncore that still need to be turned into components:
Brian Granger
Updated development roadmap and fixed bug in history file naming.
r2247
* Magics.
* Input and output history management.
* Prompts.
Brian Granger
Major work on the documentation....
r2277 * Tab completers.
Brian Granger
Updated development roadmap and fixed bug in history file naming.
r2247 * Logging.
* Exception handling.
* Anything else.
Brian Granger
Updating developer docs.
r1790 Process management for :mod:`IPython.kernel`
--------------------------------------------
Brian E Granger
Beginning to organize the rst documentation.
r1256
Brian Granger
Major work on the documentation....
r2277 A number of things need to be done to improve how processes are started
up and managed for the parallel computing side of IPython:
* All of the processes need to use the new configuration system, components
and application.
* We need to add support for other batch systems.
Brian Granger
Updating developer docs.
r1790 Performance problems
--------------------
Brian E Granger
Beginning to organize the rst documentation.
r1256
Brian Granger
Updated development roadmap and fixed bug in history file naming.
r2247 Currently, we have a number of performance issues in :mod:`IPython.kernel`:
Brian E Granger
Beginning to organize the rst documentation.
r1256
Brian Granger
Updating developer docs.
r1790 * The controller stores a large amount of state in Python dictionaries. Under
Brian Granger
Adding the argparse module to externals.
r1766 heavy usage, these dicts with get very large, causing memory usage problems.
Brian Granger
Updated development roadmap and fixed bug in history file naming.
r2247 We need to develop more scalable solutions to this problem. This will also
help the controller to be more fault tolerant.
Brian Granger
Updating developer docs.
r1790
Brian Granger
Adding the argparse module to externals.
r1766 * We currently don't have a good way of handling large objects in the
controller. The biggest problem is that because we don't have any way of
streaming objects, we get lots of temporary copies in the low-level buffers.
We need to implement a better serialization approach and true streaming
support.
Brian Granger
Updating developer docs.
r1790
Brian Granger
Adding the argparse module to externals.
r1766 * The controller currently unpickles and repickles objects. We need to use the
[push|pull]_serialized methods instead.
Brian Granger
Updating developer docs.
r1790
* Currently the controller is a bottleneck. The best approach for this is to
separate the controller itself into multiple processes, one for the core
controller and one each for the controller interfaces.
Brian E Granger
Beginning to organize the rst documentation.
r1256
Brian Granger
Work on documentation....
r2276 Porting to 3.0
==============
There are no definite plans for porting of IPython to Python 3. The major
issue is the dependency on Twisted framework for the networking/threading
stuff. It is possible that it the traditional IPython interactive console
could be ported more easily since it has no such dependency. Here are a few
things that will need to be considered when doing such a port especially
if we want to have a codebase that works directly on both 2.x and 3.x.
1. The syntax for exceptions changed (PEP 3110). The old `except exc, var`
Brian Granger
Major work on the documentation....
r2277 changed to `except exc as var`. At last count there was 78 occurrences of this
usage in the code base. This is a particularly problematic issue, because it's
not easy to implement it in a 2.5-compatible way.
Brian Granger
Work on documentation....
r2276
Because it is quite difficult to support simultaneously Python 2.5 and 3.x, we
will likely at some point put out a release that requires strictly 2.6 and
abandons 2.5 compatibility. This will then allow us to port the code to using
:func:`print` as a function, `except exc as var` syntax, etc. But as of
version 0.11 at least, we will retain Python 2.5 compatibility.