[IPython-dev] Terminal-based frontend

Fernando Perez fperez.net at gmail.com
Fri Aug 6 20:37:41 EDT 2010

Hey Wendell,

Sorry for the slow reply...

On Wed, Aug 4, 2010 at 1:03 PM, Wendell Smith <wackywendell at gmail.com> wrote:
> I'm still working steadily away at a terminal frontend with fancy stuff like
> input coloring, auto-help, auto-complete, etc. - I was calling it
> 'curses-based' earlier, but now that its urwid-based, it isn't based on the
> curses library... but its the same idea. If you want to look at my progress,
> please use 'git clone git://github.com/wackywendell/ipyurwid.git', and
> follow the directions in the README.
> Anyways, although there is plenty still to do with the widgets, it's come
> far enough for me to start worrying about integrating into ipython. I
> haven't touched that as I've been waiting for the dust to settle around
> pyzmq, but... I think its time.
> What I'm looking for ideally is a ipython-frontend class I can use that lets
> me send and receive input/output, and also has methods for running help on
> an object, source lookup, completion possibilities for a word, etc. I
> noticed the old frontend classes are gone; what are the plans to replace
> them? I'd be happy to be involved with that, too, if that would be helpful -
> but I don't want to step on anyone's toes, and also there are, I'm sure, a
> lot of different things that are wanted out of that... what's the status on
> that? How could I be helpful there?
> Let me know...

Fantastic or horrible timing, depending on how you want to think of it
:)  Fantastic because we're doing a TON of work in this direction,
horrible because things are changing *right now* under you in this
regard, and it may be a few weeks before they stabilize.  And during
this big 'digging in the foundation' period, we may be a bit
bandwidth-constrained to coordinate things.  All the same, I'll try to
summarize things now in the best way possible, so you can both see
what's going on and provide feedback.  We hope to have precisely what
you are asking for in place soon (some of it already exists), so as
long as you don't mind the mess on the floor, come on in :)

The short version: we have currently three separate clients being
built for IPython, all on top of the little zeromq prototype that
Brian and I wrote a few months ago.  Two of these have been built as
part of the Google Summer of Code project by Gerardo and Omar, one by
Evan Patterson from Enthought.  Here are their branches:

- Evan: a qt-based widget with a very 'terminal-like' feel that feeds
single blocks of code to the kernel.

- Gerardo: a qt-based widget with a more 'notebook-like' feel that
feeds cells (lists of blocks) to the kernel.

- Omar: a terminal-based frontend that feels much like today's ipython.

These three ultimately are meant to share a lot of code, but because
things are all happening at the same time, right now their merge
status is a bit funky.  But the immediate plan is to finalize the
kernel/frontend protocol and have enough of a kernel in place with the
official protocol for all clients to be able to work against a common
interface.  As we work through, we'll see what can be refactored into
common codes for all frontends, what can be common to similar
frontends (qt ones, terminal ones, etc) and what will be unique to

Probably the best place for you to look at right now is Evan's work,
where the main abstractions are falling into place, and which Gerardo
and Omar are gradually merging into their own lines.

Also, we're doing our best to hang out in #ipython on the freenode IRC
server when we're actively doing IPython work, so feel free to jump in
there with questions for any of us.

Best regards,


More information about the IPython-dev mailing list