[SciPy-user] Thoughts on GUI development

Gael Varoquaux gael.varoquaux@normalesup....
Fri Aug 22 17:43:15 CDT 2008

On Fri, Aug 22, 2008 at 04:12:24PM -0400, Barry Wark wrote:
> I think what Stef is getting at is that effective scientific software
> may need to match its user model to the user's world model. In other
> words, the "workflow" matters. If the software requires the user
> (scientist/engineer/etc.) to deal with data or process in a different
> order than the order implied by their experiment, the software is not
> as good as it could be. In my view, this is why we build UIs--so that
> we can match the software model to the user's model such that the
> software is "invisible" to the user in doing their work. I contend
> that it is a rare case when a CLI interface is the *best* fit to the
> user's world model.

I agree, but I was talking about a CLI interface, not a notebook, or
something else, and I guess my point was that if you go in GUIs, you
should should get more than a nice-looking terminal, eg Matlab, scilab.

> Of course, as Gael points out, writing GUIs takes time. The tradeoff
> then is efficiency of use for the user versus efficiency of delivery
> time for the developer.

That is not my point however. My point is that by definition when you
move out of the nice, fuzzy environment of a terminal, and stick this
functionality in the process in which you are running the calculation,
you pay in cost in robustness and speed of your environment. Of course
you can go mutliprocess, but this is not my point here, as when you do
that, you loose the big gain of being able to introspect you calculation
cheaply as it run. If you are going this way, I think a AJAX application
is not that stupid (as sage does), as the webbrowser actually gives you a
very robust, rather easy to code, and fairly powerful canvas.

I am currently struggling with trying to define what is my model, what is
my view, what should sit where, ie how many processes we want. I am now
convinced that for a robust and powerful IDE with Python, we want several
processes communicating together. For instance, I think that the editor,
may it be written in Python, and not emacs or vim, or eclipse, should be
sitting in a different process, so that the calculation does not block
the editor, nor crashes it. I am now starting to wonder if the canvas
on which we print IO could also not be in a different process (web
browser?) as IO is just text, and transferring from a process to another is
cheaper. However, what I am really interested in for a UI, is a view on
my namespace, that I can use to dynamically explore the arrays, or the
different objects. I want this view to be dynamically, and strongly
interactive, and I don't think that sitting in a different process than
the calculation engine will get me this.

Obviously I am still trying to figure these things out and thinking out
loud here, but I am trying to push people to think out of the box, and
make people realize that the standard model of a GUI in which everything
happens is not maybe the best for our purposes, and that people have to
think about the costs and the gains.


More information about the SciPy-user mailing list