##// END OF EJS Templates
doc: updated roadmap, which had become stale....
MinRK -
Show More
@@ -51,7 +51,7 b' Application: :class:`~IPython.config.application.Application`'
51 Applications always have a `log` attribute that is a configured Logger.
51 Applications always have a `log` attribute that is a configured Logger.
52 This allows centralized logging configuration per-application.
52 This allows centralized logging configuration per-application.
53
53
54 Component: :class:`~IPython.config.configurable.Configurable`
54 Configurable: :class:`~IPython.config.configurable.Configurable`
55 A configurable is a regular Python class that serves as a base class for
55 A configurable is a regular Python class that serves as a base class for
56 all main classes in an application. The
56 all main classes in an application. The
57 :class:`~IPython.config.configurable.Configurable` base class is
57 :class:`~IPython.config.configurable.Configurable` base class is
@@ -121,10 +121,10 b' attributes on it. All you have to know is:'
121
121
122 The answers to these two questions are provided by the various
122 The answers to these two questions are provided by the various
123 :class:`~IPython.config.configurable.Configurable` subclasses that an
123 :class:`~IPython.config.configurable.Configurable` subclasses that an
124 application uses. Let's look at how this would work for a simple component
124 application uses. Let's look at how this would work for a simple configurable
125 subclass::
125 subclass::
126
126
127 # Sample component that can be configured.
127 # Sample configurable:
128 from IPython.config.configurable import Configurable
128 from IPython.config.configurable import Configurable
129 from IPython.utils.traitlets import Int, Float, Unicode, Bool
129 from IPython.utils.traitlets import Int, Float, Unicode, Bool
130
130
@@ -27,13 +27,17 b' Release 0.11'
27 * Prepare to refactor IPython's core by creating a new component and
27 * Prepare to refactor IPython's core by creating a new component and
28 application system (done).
28 application system (done).
29
29
30 * Start to refactor IPython's core by turning everything into components
30 * Start to refactor IPython's core by turning everything into configurables
31 (started).
31 (mostly done).
32
32
33 Release 0.12
33 Release 0.12
34 ------------
34 ------------
35
35
36 * Continue to refactor IPython's core by turning everything into components.
36 * Continue to refactor IPython's core by turning everything into configurables.
37
38 * Merge draft html notebook (started).
39
40 * Add two-process Terminal frontend using ZMQ architecture.
37
41
38
42
39 Major areas of work
43 Major areas of work
@@ -44,78 +48,48 b' Refactoring the main IPython core'
44
48
45 During the summer of 2009, we began refactoring IPython's core. The main
49 During the summer of 2009, we began refactoring IPython's core. The main
46 thrust in this work was to make the IPython core into a set of loosely coupled
50 thrust in this work was to make the IPython core into a set of loosely coupled
47 components. The base component class for this is
51 components. The base configurable class for this is
48 :class:`IPython.core.component.Component`. This section outlines the status of
52 :class:`IPython.core.configurable.Configurable`. This section outlines the
49 this work.
53 status of this work.
50
54
51 Parts of the IPython core that have been turned into components:
55 Parts of the IPython core that have been turned into configurables:
52
56
53 * The main :class:`~IPython.core.iplib.InteractiveShell` class.
57 * The main :class:`~IPython.core.interactiveshell.InteractiveShell` class.
54 * The aliases (:mod:`IPython.core.alias`).
58 * The aliases (:mod:`IPython.core.alias`).
59 * History management (:mod:`IPython.core.history`).
60 * Plugins (:mod:`IPython.core.plugin`).
55 * The display and builtin traps (:mod:`IPython.core.display_trap` and
61 * The display and builtin traps (:mod:`IPython.core.display_trap` and
56 :mod:`IPython.core.builtin_trap`).
62 :mod:`IPython.core.builtin_trap`).
57 * The prefilter machinery (:mod:`IPython.core.prefilter`).
63 * The prefilter machinery (:mod:`IPython.core.prefilter`).
58
64
59 Parts of the IPythoncore that still need to be turned into components:
65 Parts of the IPython core that still need to be Configurable:
60
66
61 * Magics.
67 * Magics.
62 * Input and output history management.
63 * Prompts.
68 * Prompts.
64 * Tab completers.
69 * Tab completers.
65 * Logging.
66 * Exception handling.
70 * Exception handling.
67 * Anything else.
71 * Anything else.
68
72
69 Process management for :mod:`IPython.kernel`
73 Process management for :mod:`IPython.parallel`
70 --------------------------------------------
74 --------------------------------------------
71
75
72 A number of things need to be done to improve how processes are started
76 A few things need to be done to improve how processes are started
73 up and managed for the parallel computing side of IPython:
77 up and managed for the parallel computing side of IPython:
74
78
75 * All of the processes need to use the new configuration system, components
79 * Improve the SSH launcher so it is at least back to the levels of 0.10.2
76 and application.
80 * We need to add support for other batch systems (LSF, Condor, etc.).
77 * We need to add support for other batch systems.
78
79 Performance problems
80 --------------------
81
82 Currently, we have a number of performance issues in :mod:`IPython.kernel`:
83
84 * The controller stores a large amount of state in Python dictionaries. Under
85 heavy usage, these dicts with get very large, causing memory usage problems.
86 We need to develop more scalable solutions to this problem. This will also
87 help the controller to be more fault tolerant.
88
81
89 * We currently don't have a good way of handling large objects in the
90 controller. The biggest problem is that because we don't have any way of
91 streaming objects, we get lots of temporary copies in the low-level buffers.
92 We need to implement a better serialization approach and true streaming
93 support.
94
95 * The controller currently unpickles and repickles objects. We need to use the
96 [push|pull]_serialized methods instead.
97
98 * Currently the controller is a bottleneck. The best approach for this is to
99 separate the controller itself into multiple processes, one for the core
100 controller and one each for the controller interfaces.
101
82
102 Porting to 3.0
83 Porting to 3.0
103 ==============
84 ==============
104
85
105 There are no definite plans for porting of IPython to Python 3. The major
86 Dropping 2.5 support was a major step towards working with Python 3 due to
106 issue is the dependency on Twisted framework for the networking/threading
87 future syntax support in 2.6. IPython 0.11 requires 2.6 now, so 0.10.2 will
107 stuff. It is possible that it the traditional IPython interactive console
88 be the last IPython release that supports Python 2.5.
108 could be ported more easily since it has no such dependency. Here are a few
89
109 things that will need to be considered when doing such a port especially
90 We currently have a `separate repo <https://github.com/ipython/ipython-py3k>`_
110 if we want to have a codebase that works directly on both 2.x and 3.x.
91 tracking IPython development that works with Python 3. The core of IPython does
111
92 work, but the parallel computing code in :mod:`IPython.parallel` does not yet
112 1. The syntax for exceptions changed (PEP 3110). The old `except exc, var`
93 work in Python 3, though the only major dependency of the parallel code, pyzmq,
113 changed to `except exc as var`. At last count there was 78 occurrences of this
94 does work on Python 3.
114 usage in the code base. This is a particularly problematic issue, because it's
95
115 not easy to implement it in a 2.5-compatible way.
116
117 Because it is quite difficult to support simultaneously Python 2.5 and 3.x, we
118 will likely at some point put out a release that requires strictly 2.6 and
119 abandons 2.5 compatibility. This will then allow us to port the code to using
120 :func:`print` as a function, `except exc as var` syntax, etc. But as of
121 version 0.11 at least, we will retain Python 2.5 compatibility.
General Comments 0
You need to be logged in to leave comments. Login now