##// END OF EJS Templates
Edits to the development roadmap.
Brian Granger -
Show More
@@ -1,73 +1,81 b''
1 .. _roadmap:
1 .. _roadmap:
2
2
3 ===================
3 ===================
4 Development roadmap
4 Development roadmap
5 ===================
5 ===================
6
6
7 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.
7 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.
8
8
9 Work targeted to particular releases
9 Work targeted to particular releases
10 ====================================
10 ====================================
11
11
12 Release 0.10
12 Release 0.10
13 ------------
13 ------------
14
14
15 * Initial refactor of :command:`ipcluster`.
15 * Initial refactor of :command:`ipcluster`.
16
16
17 * Better TextMate integration.
17 * Better TextMate integration.
18
18
19 * Merge in the daemon branch.
20
19 Release 0.11
21 Release 0.11
20 ------------
22 ------------
21
23
22 * Refactor of configuration system and command line options for
24 * Refactor the configuration system and command line options for
23 :command:`ipengine` and :command:`ipcontroller`. This will include the
25 :command:`ipengine` and :command:`ipcontroller`. This will include the
24 creation of cluster directories that encapsulate all the configuration
26 creation of cluster directories that encapsulate all the configuration
25 files, log files and security related files for a particular cluster.
27 files, log files and security related files for a particular cluster.
26
28
27 * Merge in the daemon branch.
29 * Refactor :command:`ipcluster` to support the new configuration system.
30
31 * Refactor the daemon stuff to support the new configuration system.
28
32
29 * Merge back in the core of the notebook.
33 * Merge back in the core of the notebook.
30
34
31 Release 0.12
35 Release 0.12
32 ------------
36 ------------
33
37
34 * Integrate process startup with the daemons for full process management.
38 * Fully integrate process startup with the daemons for full process
39 management.
40
41 * Make the capabilites of :command:`ipcluster` available from simple Python
42 classes.
35
43
36 Major areas of work
44 Major areas of work
37 ===================
45 ===================
38
46
39 Refactoring the main IPython core
47 Refactoring the main IPython core
40 ---------------------------------
48 ---------------------------------
41
49
42 Process management for :mod:`IPython.kernel`
50 Process management for :mod:`IPython.kernel`
43 --------------------------------------------
51 --------------------------------------------
44
52
45 Configuration system
53 Configuration system
46 --------------------
54 --------------------
47
55
48 Performance problems
56 Performance problems
49 --------------------
57 --------------------
50
58
51 Currently, we have a number of performance issues that are waiting to bite users:
59 Currently, we have a number of performance issues that are waiting to bite users:
52
60
53 * The controller stores a large amount of state in Python dictionaries. Under
61 * The controller stores a large amount of state in Python dictionaries. Under
54 heavy usage, these dicts with get very large, causing memory usage problems.
62 heavy usage, these dicts with get very large, causing memory usage problems.
55 We need to develop more scalable solutions to this problem, such as using a
63 We need to develop more scalable solutions to this problem, such as using a
56 sqlite database to store this state. This will also help the controller to
64 sqlite database to store this state. This will also help the controller to
57 be more fault tolerant.
65 be more fault tolerant.
58
66
59 * We currently don't have a good way of handling large objects in the
67 * We currently don't have a good way of handling large objects in the
60 controller. The biggest problem is that because we don't have any way of
68 controller. The biggest problem is that because we don't have any way of
61 streaming objects, we get lots of temporary copies in the low-level buffers.
69 streaming objects, we get lots of temporary copies in the low-level buffers.
62 We need to implement a better serialization approach and true streaming
70 We need to implement a better serialization approach and true streaming
63 support.
71 support.
64
72
65 * The controller currently unpickles and repickles objects. We need to use the
73 * The controller currently unpickles and repickles objects. We need to use the
66 [push|pull]_serialized methods instead.
74 [push|pull]_serialized methods instead.
67
75
68 * Currently the controller is a bottleneck. The best approach for this is to
76 * Currently the controller is a bottleneck. The best approach for this is to
69 separate the controller itself into multiple processes, one for the core
77 separate the controller itself into multiple processes, one for the core
70 controller and one each for the controller interfaces.
78 controller and one each for the controller interfaces.
71
79
72
80
73
81
General Comments 0
You need to be logged in to leave comments. Login now