Next: License
Up: IPython An enhanced Interactive
Previous: Reporting bugs
Subsections
The current IPython system grew out of the following three projects:
- [ipython]by Fernando Pérez. I was working on adding Mathematica-type prompts and
a flexible configuration system (something better than $PYTHONSTARTUP) to the
standard Python interactive interpreter.
- [IPP]by Janko Hauser. Very well organized, great usability. Had an old help system.
IPP was used as the `container' code into which I added the functionality from
the other two systems.
- [LazyPython]by Nathan Gray. Simple but very powerful. The quick syntax
(auto parens, auto quotes) and verbose/colored tracebacks were all taken from here.
When I found out (see sec. 16) about IPP and LazyPython I tried to
join all three into a unified system. I thought this could provide a very nice
working environment, both for regular programming and scientific computing: shell-like
features, IDL/Matlab numerics, Mathematica-type prompt history and great object
introspection and help facilities. I think it worked reasonably well, though it
was a lot more work I had initially planned.
The above listed features work, and quite well for the most part. But until a major
internal restructuring is done (see below), only bug fixing will be done, no other
features will be added (unless very minor and well localized in the cleaner parts
of the code).
IPython consists of almost 11000 lines of pure python code, of which roughly 50%
are fairly clean. The other 50% are fragile, messy code which needs a massive
restructuring before any further major work is done. Even the messy code is fairly
well documented though, and most of the problems in the (non-existent) class design
are well pointed to by a PyChecker run. So the rewriting work isn't that bad, it
will just be time-consuming.
See the separate new_design document for details. Ultimately, I would
like to see IPython become part of the standard Python distribution as a `big brother
with batteries' to the standard Python interactive interpreter. But that will never
happen with the current state of the code, so all contributions are welcome.
Next: License
Up: IPython An enhanced Interactive
Previous: Reporting bugs
Fernando Perez
2003-08-25