[IPython-dev] Moving forward with the frontends

Fernando Perez fperez.net at gmail.com
Mon Jun 23 21:10:07 EDT 2008


On Mon, Jun 23, 2008 at 1:36 PM, Gael Varoquaux
<gael.varoquaux at normalesup.org> wrote:
> On Mon, Jun 23, 2008 at 01:26:18PM -0700, Barry Wark wrote:

>> >  * The feature of ipython we are interested in are magics, "?" and "??",
>> >    tab completion, history, and alike...
>> As soon as we can refactor the IPython 0.8 core so that it plays
>> nicely with the IPython.kernel.engineservice.IEngineBase interface,
>> all frontends could get this behavior for free. If you can't wait for
>> that refactoring, going with the existing Wx frontend is your only
>> option at this point.
> Fernando, Brian, Ville, what is the timeframe for this? What is the
> amount of work required?

The way I see things right now, this can be done gradually.  Min,
Brian and I just spent several hours today working on the
foolscap/security integration for the daemon work to be merged in the
next couple of weeks.  I'm also working on the testing code, writing a
custom Nose plugin to suit all our (rather complicated) testing needs.
 Those two features are what I see as being next in line for our 0.9
release.  Brian and I will meet at a conference July 7-11, so that
would be a good time to make the release, and it looks like both Min
and I can finish what we're doing for that time.

In the meantime, you can consider the WX integration work, in
conjunction with Barry, as being precisely the beginning of this
refactoring.  I don't want to draw us again into the 'once the *huge*
refactoring is done, we can do X' mindset, because that's precisely
what was paralyzing us with ipython0/1.  Instead, try to find a light
way of using the existing bits of Wx code (which you've already
identified) and work with Barry on the Twisted ideas.  Envisage
already has a million nasty dependencies, so I don't see Twisted being
a problem there.

The way I hope we'll be able to build this whole thing will be:

1. A NON-Twisted using terminal frontend like today, that is fully
blocking (no deferreds since there's no twisted).  But it uses the
same interfaces the Twisted ones will use.

2. We keep the threading hacks we have today to provide terminal-based
acccess to GUIs (the -Xthread options).  Note that this is NOT meant
to be the way to develop full GUI clients that use ipython, simply a
way to use the terminal to run GUI code like many people do today.
It's not perfect but it's lightweight and useful, and I see no need to
get rid of it.

3. For building full-blown GUI clients, we use the Twisted reactors
that know how to integrate with the various toolkits in existence,
including Cocoa.

With that as a long-term view, I'd suggest you hack away incrementally
so that you can build something that mimics what Barry is doing.  If
not all the pieces are fully elegantly refactored yet, big deal.  As
long as you have something that works, we can incrementally fix it up.
 Don't let the idea of a 'big refactor' hold back the work you and
Barry can do *now*.

Note: I'll be at a conference Wed-Saturday, mostly offline.



More information about the IPython-dev mailing list